【Linux】小白部署Java服务教程

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 依稀记得大学Linux老师曾经说过,Windows系统也就打打游戏,写代码还得是Linux,今天介绍一波小白部署Java服务教程。

前言

现在的web服务大部分都采用了前后端分离的架构模式,后端提供接口服务,前端负责页面展示,不涉及任何代码耦合情况。


本篇文章介绍下在后端java服务,前端vue服务下如何在服务器中部署一套完整的web应用,哪天自己接个私活也得会一些部署相关的东西。


大体思路就是后端打成jar包,用java命令启动,前端打包成html + js + css文件,通过使用nginx代理功能,将指定端口代理到前端的html页面中,前端代码中的请求后端地址可以用127.0.0.1:port,也可以统一走nginx的路由配置。


服务器

学生的话趁着学生身份,可以在各大厂商里买到学生优惠,阿里云、腾讯云、华为云等等给学生的优惠力度还是很大的。我印象当时最猛的时候有个1核2G的配置一年10块的活动,再不济也有个99一年的活动,拿来做私活验证代码、实验些小demo或者搭个mysql数据库都不错。


这里有个点,一般的厂商都会有两层端口限制,一层服务器内置的防火墙限制,一层厂商的端口访问限制,所以部署完要在外网验证的话需要确保两层都开放。


连接linux服务器的话用厂商官网自带的控制台连接也行,windows推荐用XShell,mac直接用命令行直连即可。


以下操作以centeros操作系统举例。


配置jdk

拿到一个空机肯定是什么都没有,要部署java服务首先要有jdk运行环境。第一步先去官网下载jdk包,拿到jdk包之后用工具传到服务器上并解压,存放路径记一下,配置环境变量的时候会用到。

tar -zxvf jdk*.tar.gz

linux的环境变量存储在/etc/profile文件下,直接vi /etc/profile文件java环境配置进去

vim /etc/profile
exportJAVA_HOME=/usr/local/jdk1.8
exportJRE_HOME=${JAVA_HOME}/jre
exportCLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATHexportJAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin 
exportPATH=$PATH:${JAVA_PATH}

退出保存后还要重载一下配置文件使其生效

source /etc/profile

完事之后可以在控制台上输入java -version回车,如果打印java版本则说明配置正确。

安装docker

我们使用yum源去安装docker,如果安装失败得排查下yum源的设置。

yum -y install docker

安装成功后,直接启动docker服务

sudo systemctl start docker

把docker服务加入到开机启动项里

sudo systemctl enable docker


部署mysql


装完docker后拉一个mysql就相对简单多了

docker pull mysql
docker run -d--name mysql-test -v /data/mysql:/var/lib/mysql -eMYSQL_ROOT_PASSWORD=123456-p3306:3306 mysql
  • -d 表示在后台运行容器
  • –name 表示为后台运行的容器取别名
  • -v 用来挂载磁盘路径,将正在运行mysql的容器上的/var/lib/mysql目录映射到宿主机上的/data/mysql目录


这里有时候会有个小坑,有时候外部客户端连接数据库访问不到,这时候要进容器去调数据库一个参数

docker exec -it  mysql /bin/bash
mysql -u root -p输入密码进入mysql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'; //修改允许所有人访问权限
flush privileges //刷新权限


部署nginx

nginx的话用docker部署也可,去官网下载也可以,都挺简单的。

docker pull nginx
docker run -d--name nginx-test -p1234:80 nginx

启动之后在外部访问ip:1234接口就能访问到nginx的默认首页了。配置成功后直接进入到容器中修改配置文件

docker exec -it nginx-test bashwhereis nginx //查找nginx配置文件路径,用nginx -t也可以
vi conf.d/default.conf
server {
    listen  80;
    server_name  www.zking.com;
    location / {
        // 配置打包好的前端静态资源路径
        root   /etc/nginx/html/;
        index  index.html index.htm;
    }
    error_page   500502503504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    location ~^/api/ {
        rewrite ^/api/(.*)$ /$1 break;
        proxy_pass  http://tomcatList;
        proxy_redirect default;
    }
}

如果前端配置的后端路由也要通过nginx转发的话可以再拷贝一份server配置,转发到对应的后端服务中,也就是只对外开放一个80端口,内部再根据路由做对应的转发逻辑。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
17天前
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
39 5
linux系统服务二!
|
17天前
|
Linux 应用服务中间件 Shell
linux系统服务!!!
本文详细介绍了Linux系统(以CentOS7为例)的启动流程,包括BIOS自检、读取MBR信息、加载Grub菜单、加载内核及驱动程序、启动systemd程序加载必要文件等五个主要步骤。同时,文章还对比了CentOS6和CentOS7的启动流程图,并分析了启动流程的耗时。此外,文中还讲解了Linux的运行级别、systemd的基本概念及其优势,以及如何使用systemd管理服务。最后,文章提供了单用户模式和救援模式的实战案例,帮助读者理解如何在系统启动出现问题时进行修复。
38 3
linux系统服务!!!
|
7天前
|
Linux Python
Linux 中某个目录中的文件数如何查看?这篇教程分分钟教会你!
在 Linux 系统中,了解目录下文件数量是常见的需求。本文介绍了四种方法:使用 `ls` 和 `wc` 组合、`find` 命令、`tree` 命令以及编程实现(如 Python)。每种方法都附有详细说明和示例,适合不同水平的用户学习和使用。掌握这些技巧,可以有效提升系统管理和日常使用的效率。
46 6
|
12天前
|
Linux Python
Linux 中某个目录中的文件数如何查看?这篇教程分分钟教会你!
在 Linux 系统中,了解目录下的文件数量是常见的需求。本文介绍了多种方法,包括使用 `ls` 和 `wc` 命令组合、`find` 命令、`tree` 命令以及编程方式(如 Python)。无论你是新手还是有经验的用户,都能找到适合自己的方法。掌握这些技巧将提高你在 Linux 系统中的操作效率。
24 4
|
18天前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
18天前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
4天前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
9 0
|
5天前
|
Java 开发者
Java多线程编程中的常见误区与最佳实践####
本文深入剖析了Java多线程编程中开发者常遇到的几个典型误区,如对`start()`与`run()`方法的混淆使用、忽视线程安全问题、错误处理未同步的共享变量等,并针对这些问题提出了具体的解决方案和最佳实践。通过实例代码对比,直观展示了正确与错误的实现方式,旨在帮助读者构建更加健壮、高效的多线程应用程序。 ####
|
4天前
|
安全 Java 开发者
Java 多线程并发控制:深入理解与实战应用
《Java多线程并发控制:深入理解与实战应用》一书详细解析了Java多线程编程的核心概念、并发控制技术及其实战技巧,适合Java开发者深入学习和实践参考。
|
4天前
|
Java 开发者
Java多线程编程的艺术与实践####
本文深入探讨了Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的技术文档,本文以实战为导向,通过生动的实例和详尽的代码解析,引领读者领略多线程编程的魅力,掌握其在提升应用性能、优化资源利用方面的关键作用。无论你是Java初学者还是有一定经验的开发者,本文都将为你打开多线程编程的新视角。 ####
下一篇
无影云桌面