文章目录

前言

本篇博客是介绍Centos7云服务器上部署SpringBoot项目,若文章中出现相关问题,请指出!

  • 该篇文章是在2021年上半年做完博客项目项目后部署到服务器上的笔记,在文章中并没有使用主流Docker进行部署,而是通过手动配置JDK、MySQL的环境的方式。PS:目前主流配置环境方式使用Docker,对运维以及开发人员十分友好。

所有博客文件目录索引:博客目录索引(持续更新)

一、部署Tomcat服务器

1、安装JDK1.8

JDK下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

选择如下:

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_mysql

速度下载慢,还需要用户登录,直接提供百度网盘(jdk1.8.0_161)

链接:https://pan.baidu.com/s/1jvVvtnmPsoI-YrcRQwAkUA

提取码:v486


上传操作


通过XFtp来上传对应的jdk到​​/user/local​​目录中


解压安装


解压:​​tar -zxvf jdk-8u161-linux-x64.tar.gz​

修改jdk权限:​​chmod 777 -R jdk1.8.0_161​


设置环境变量


进入对应目录:​​vi /etc/profile​

按住​​G​​跳转到文件最后

配置内容如下(根据版本号填):

export JAVA_HOME=/usr/local/jdk1.8.0_161 
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_spring boot_02

保存退出

最后执行该命令生效(让其文件生效):​​source /etc/profile​


测试


执行​​java -version​​ 查看是否安装成功!!!下面的表示安装成功

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_nginx_03


2、安装与启动tomcat


下载上传


下载地址:https://tomcat.apache.org/download-90.cgi

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_nginx_04

使用XFtp上传到​​/user/local​​目录中


解压,运行


我们先进入到/user/local目录:​​cd /user/local​

解压tomcat:​​tar -zxvf apache-tomcat-9.0.41.tar.gz​

解压完成之后,我们进入到tomcat目录的bin目录中:​​cd apache-tomcat-9.0.41/bin​

运行tomcat:​​./startup.sh ​

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_服务器_05

停止tomcat:​​./shutdown.sh​

注意:由于我们没有配置tomcat环境变量,所以我们需要到达指定目录进行操作

​cd /usr/local/apache-tomcat-9.0.41/bin​


配置安全组(8080端口)


① 首先进入到阿里云服务器的实例界面,右边的更多-网络和安全组-安全组配置


Centos7云服务器部署SpringBoot项目(手动配置环境篇)_服务器_06


② 点击配置规则


Centos7云服务器部署SpringBoot项目(手动配置环境篇)_服务器_07

点击添加,填写8080端口以及源,进行保存

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_mysql_08

接着我们在我们的电脑上进行访问一下是否成功:使用​​ip地址:8080​​​或者​​域名:8080​

出现以下界面表示访问成功!!!

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_服务器_09


二、安装JDK8

【1】通过使用yum命令安装

//安装openjdk  -y默认安装途中选择yes
yum -y install java-1.8.0-openjdk java-1.8.0openjdk-devel

【2】配置JDK环境变量

//打开配置文件
vim /etc/profile

//按下G定位到末尾,接着按i进入到编辑模式,将下面四个配置写入
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0.171
export JRE_HOME=/$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

填入配置之后按下​​Esc​​退出编辑模式,接着输入:wq保存退出

【3】输入命令让环境生效

source /etc/profile

【4】测试是否安装成功

​java -version​

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_java_10

若是获取到指定提示信息,说明配置成功




三、Mysql5.7安装

1、下载mysql

#下载MySQL安装包
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

#安装npm源
rpm -Uvh mysql57-community-release-el7-11.noarch.rpm

#查看yum仓库MySQL的启动列表
yum repolist enabled | grep mysql

#安装MySQL数据库
yum -y install mysql-community-server

2、启动MySQL服务

#启动MySQL服务
systemctl start mysqld

#查看MySQL启动状态
systemctl status mysqld

#设置开机启动
systemctl enable mysqld
systemctl daemon-reload

3、重置密码

①查看密码

mysql在安装完之后,会默认的在/var/log/mysqld.log文件中给root生成了一个默认密码,我们来通过命令查看密码:

​grep "temporary password" /var/log/mysqld.log​

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_服务器_11



②登陆并修改密码

接着我们使用​​mysql -uroot -p​​来登陆mysql,回车后输入密码,密码输入过程中是不会显示的!!!

登陆成功之后,我们修改密码,使用命令​​ALTER user 'root'@'localhost' identified by '123';​​,这里为了演示将123作为密码

  • mysql5.7之后对于密码设置有要求必须包含大小写字母,数字及字符
  • 文章:mysql 密码强度规则设置

修改完之后​​exit​​,重新登录试试




4、数据库配置


通过在/etc/my.cnf文件中配置


打开该配置文件:​​vim /etc/my.cnf​​,再配置文件末尾写上

# 设置数据库字符集为utf8mb4
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

init_connect = 'SET NAMES utf8mb4'

lower_case_table_names = 1 # 表名不区分大小写
  • 文章:MySQL 数据库字符集 utf8 和 utf8mb4 的区别​、mysql数据库配置 my.cnf

添加号之后,我们使用​​:wq​​保存退出

注意:修改好之后重新mysql服务,使用命令​​systemctl restart mysqld​


5、数据库授权

一般我们使用可视化软件来对数据库进行连接,为了避免其他人也能连上你的数据库,那么我们就要对数据库进行授权,指定可以远程连接的数据库,没有授权的只能在localhost本地连接。

#登陆mysql
mysql -uroot -p密码

#使用数据库mysql
use mysql

#进行授权 .表示所有库所有表,第一个root表示用户名,%表示所有的ip,第二个root表示密码这里我设置了linux登陆密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

#继续使用命令刷新权限
flush privileges;

#退出mysql环境,重启服务器
service mysqld restart

我们这是博客项目,就直接配置%来让所有ip进行访问。一般情况下是将3306端口给关闭,需要连接时再把3306端口打开,这样更安全。

为了方便操作,我们可以将服务器的安全组打开修改:我使用的是阿里云,进入到安全组配置中

我们手动添加3306端口,用于数据库连接

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_服务器_12

注意:我们在使用数据库时可以将这个端口打开,若是不使用时最好关闭3306。


本地SQLyog连接数据库

确保云服务器上mysql启动,并且安全组开启了3306端口,我们接着就使用SQLyog来连接数据库:

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_spring boot_13

  • 填写云服务器地址,用户名,密码以及端口,点击连接即可!!!

四、springboot项目部署

1、打包项目

设置好生产环境下的配置文件之后,使用maven的命令,首先​​clean​​​,之后​​package​​进行打包


Centos7云服务器部署SpringBoot项目(手动配置环境篇)_java_14

注意要记得修改你的生产环境配置文件中的password、url地址,使用localhost的话在打包过程中是不行的:

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_nginx_15

若是想要跳过test测试的则将下面置灰进行打包:

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_nginx_16



当出现Build Success时,说明打包成功,我们打开项目工程中的target目录,我们等会使用红框的jar包即可!!!


Centos7云服务器部署SpringBoot项目(手动配置环境篇)_spring boot_17


2、提前准备

①连接上云服务器的数据库,导入外部sql,也就是我们在线上进行测试的数据

②关闭防火墙

# 查看防火墙状态
systemctl status firewalld
# 打开防火墙
systemctl start firewalld
# 关闭防火墙
systemctl stop firewalld

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_nginx_18

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_java_19

③安全组打开8080端口,我们设置了springboot项目的启动端口就是8080

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_服务器_20




3、线上部署

【1】将jar包上传到云服务器上

首先进入到home目录 ​​cd /home​​​,接着创建一个文件夹​​mkdir myblog​

我们使用XFtp将jar包上传到该目录

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_服务器_21



【2】运行jar包

# 进入jar包文件夹
cd /home/myblog

# 后台运行jar包 -jar后面是你的jar包名称
nohup java -jar springboot-blog-0.0.1-SNAPSHOT.jar &

第二条命令输入回车之后,下面会有对应pid号表示已启动

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_java_22

我们浏览器访问:​​ip地址:8080/​​即可访问成功!!!



【3】关闭进程

回车之后,一般直接就杀死指定pid进程即可,你也可以先使用命令​​netstat -nlp | grep 8080​​查看8080端口(根据自己项目运行的端口)的进程id,如下:

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_spring boot_23

接着我们根据这个pid来强制停止对应线程​​kill 31941​




五、配置域名

1、域名解析

购买域名官网:​​腾讯云​

接下来我们进行域名解析,我使用的腾讯云购买的域名,这里不进行购买域名以及域名备案演示。

【1】点击进入域名管理

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_spring boot_24

  • 由于之前图片已失效,这里就拿阿里云域名管理页(两个服务商大差不差)。


【2】添加记录

点击域名记录右边的解析:

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_java_25

记录类型的相关介绍

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_spring boot_26

一个服务器可以跑多个服务,每个服务也都是可以使用一个二级域名来进行访问。我这里也添加了个二级域名。

耐心等待几分钟之后,我们就可以打开cmd来测试是否解析成功!使用命令​​ping 域名​

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_spring boot_27

说明:此时我们域名解析工作已经完成,不过这还不够,因为当我们浏览器访问如www.changlu.xyz它是默认访问的80端口,而我们的项目使用的是8080端口,所以我们要进行端口转发,将端口8080转发到域名,这就需要使用​​nginx​​反向代理了。




2、反向代理

反向代理(Reverse Proxy):位于用于与服务器之间,反向代理服务器相当于目标服务器,用于可以通过访问反向代理服务器就可以获取目标服务器的资源,可用来作为web加速。在这里需要使用​​nginx​​反向代理,将80端口转发到8080端口。


下载并配置nginx


①下载安装Nginx

# 下载NGINX:-y表示安装过程中都默认yes
yum -y install nginx

# 启动nginx:
systemctl start nginx

# 加入开机启动:
systemctl enable nginx

# 查看nginx的状态:
systemctl status nginx

此时已经nginx已经是启动状态了,如下图:

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_服务器_28




②配置nginx(含https配置)


这里是采用自定义一个配置文件的方式,其实也可以直接在主配置文件上修改


我们要对nginx进行配置,首先在linux中通过命令找到nginx.conf:​​find / -name "nginx.conf"​

  • /:表示linux系统下所有文件查找
  • -name:根据指定文件名查询
  • 配置文件路径:​​/etc/nginx/nginx.conf​

找到配置文件之后,我们来进行编辑nginx配置文件:​​vim /etc/nginx/nginx.conf​

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_nginx_29

  • ​include​​:表示头文件包含,这里会包含在/etc/nginx/conf.d/目录下所有以.conf为后缀的文件,之后可以在其目录下创建指定xxx.conf配置文件,添加指定配置。
  • ​server​​:也就是上图红框包裹内容,我们暂且对其自带配置不进行使用,之后自定义配置文件就是相关这类参数。

说明:可以将​​/etc/nginx/nginx.conf​​看做总的nginx配置文件,添加一个服务,可以再在目录中添加一个子配置文件即可。



我们通过nginx来进行配置​​https​​​,点击ssl进行下载,将nginx目录下的两个文件放置的/etc/nginx/certs目录中(借助xftp传递):​​Nginx 服务器 SSL 证书安装部署​

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_服务器_30

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_java_31

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_服务器_32

接下来我们开始自定义配置文件,配置过程如下:

# 1、添加一个配置文件到/etc/nginx/conf.d目录下,只要以.conf结尾即可,这里直接进行编辑,之后编辑好会直接保存到目录下
vim /etc/nginx/conf.d/blog.conf

# 2、将以下内容添加到blog.conf中
server {
listen 443 ssl; # 监听服务器的80端口
server_name blog.changlu.xyz;# 你之前配置的二级域名 若是没有域名的话,填ip地址也是可以的,无非进行访问ip地址转发
ssl_certificate certs/1_blog.changlu.xyz_bundle.crt;
ssl_certificate_key certs/2_blog.changlu.xyz.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8099; # 表示代理到指定的ip地址,就是你之前服务器访问的地址带上端口号
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
access_log /home/logs/blog.changlu.xyz.log; # 注意注意:需要提前创建在对应路径下创建logs目录,后面的blog.changlu.xyz.log可以不创
}

# http=>https:进行重定向
server {
listen 80;
server_name blog.changlu.xyz;
return 301 https://$server_name$request_uri;
}


# 3、保存编辑内容之后,我们重启nginx
nginx -s reload

# 4、nginx测试是否成功运行
nginx -t
  • 注意要在/home目录下创建logs文件夹,​​cd /home​​​​mkdir logs​​,之后再重启nginx。

在使用nginx测试命令:​​nginx -s reload​​,出现以下信息表示测试成功

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_java_33

还有重启好​​nginx​​之后,要记得开启云服务器的443与80端口噢,80端口是为了使用http访问的请求重定位https所以也要开放:

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_mysql_34

我们打开浏览器试着访问一下:

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_nginx_35

由于我服务器暂时还没有备案所以无法访问,不过也表明能够进行访问。

后来买了腾讯云部署完成

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_spring boot_36

此时是配置了https之后的:

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_nginx_37




nginx测试命令(本地转发)

​nginx -t​​:测试配置文件是否有误


解决问题


问题描述

设置了的子配置文件,本地转发端口80到8080,配置如下:

server {
listen 80;
server_name 8.131.232.19; # 对应服务器ip地址 也可以填127.0.0.1
location / {
proxy_pass http://8.131.232.19:8080; # 对应服务器ip地址及端口号 ip地址也可以换为127.0.0.1
index index.html index.htm;
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
access_log /logs/blog.changlu.xyz.log;
}

实际浏览器访问该ip地址无法跳转,再三核对配置文件没有错误,但是就是不行,接着我们就使用测试命令,出现以下错误描述

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_nginx_38



解决过程:第二行意思就是没有该文件的目录,我们在指定路径创建目录即可,该log文件可以不创建

  • 不同端口转发情况见文章:nginx端口转发(80端口到tomcat的8080端口)具体步骤以及配置



云服务器开放端口

主要需要开放的端口如下

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_java_39




阿里云备案


前言描述,配置域名之后,出现无法访问的情况


Centos7云服务器部署SpringBoot项目(手动配置环境篇)_mysql_40


备案过程


服务器是阿里云的:​​阿里云备案地址​​​、​​阿里云备案文档​

前提条件:需要你的服务器购买三个月以上。

​ICP​​(Internet Content Provider)备案:网络内容服务商。ICP可以理解为向广大用户提供互联网信息业务和增值业务的电信运营商,是经国家主管部门批准的正式运营企业或部门。

大致流程如下

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_spring boot_41

前两个填写相应身份证信息及地址以及服务器的用途,

网站信息填写如下

Centos7云服务器部署SpringBoot项目(手动配置环境篇)_服务器_42


参考文章

[1]. [阿里云服务器] 部署Tomcat服务器运行环境

[2]. ​​腾讯云如何绑定域名(腾讯云域名如何绑定ip)​

[3]. 【SpringBoot搭建个人博客】- 线上部署(十三)

[4]. OpenJDK和JDK区别


我是长路,感谢你的耐心阅读。如有问题请指出,我会积极采纳!
欢迎关注我的公众号【长路Java】,分享Java学习文章及相关资料
Q群:851968786 我们可以一起探讨学习
注明:转载可,需要附带上文章链接