本次主要讲解SpringBoot+Vue前后端完全分离项目在CentOS云服务器上的环境搭建与部署过程,我们主要讲解原生部署。
原生部署是指将应用程序(一般是指软件、应用或服务)在底层的操作系统环境中直接运行和部署,而不依赖于额外的中间件、框架或虚拟化技术。
在原生部署中,应用程序直接与操作系统进行交互,并利用操作系统提供的资源和功能来执行任务。这种部署方式通常需要考虑操作系统的兼容性和依赖项,以确保应用程序能够正确地在目标操作系统上运行。
原生部署的优点包括:
存在的问题:
为了能让项目正常运行,我们需要在Linux服务器上安装了以下软件和工具:
SpringBoot项目:
Vue.js项目:
工具库:
注:左边>>右边
左边的代表所在文件目录,右边代表的是Linux指令。
我们可以通过CentOS服务器上的yum
指令快速安装好Java环境。
~>> yum install -y java-1.8.0-openjdk*
~>> java -version
#openjdk version "1.8.0_322"
#OpenJDK Runtime Environment (build 1.8.0_322-b06)
#OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)
~>> cd /root/services/
curl
在线下载Maven
安装包services>> curl -o apache-maven-3.8.5-bin.tar.gz https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz
services>> ls
#apache-maven-3.8.5-bin.tar.gz
tar
对压缩包进行解压services>> tar -zxvf apache-maven-3.8.5-bin.tar.gz
services>> ls
#apache-maven-3.8.5 #apache-maven-3.8.5-bin.tar.gz
services>> cd apache-maven-3.8.5
apache-maven-3.8.5>> cd bin
bin>> ls
#m2.conf mvn mvn.cmd mvnDebug mvnDebug.cmd mvnyjp
//这里的mvn是maven的可执行文件,咱们就是用这个文件去构建项目
bin>> pwd
#/root/services/apache-maven-3.8.5/bin
bin>> vim /etc/profile
按下shift+g将光标定位到最后一行,在path后面添加Maven可执行文件所在路径: /root/services/apache-maven-3.8.5/bin
编辑完成后按ESC键退出编辑模式,输入:wq
然后按下回车键保存退出。
bin>> source /etc/profile
bin>> cd /root/services/
services>> mvn -v
#Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)
#Maven home: /root/services/apache-maven-3.8.5
#Java version: 1.8.0_322, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/jre
#Default locale: en_US, platform encoding: UTF-8
#OS name: "linux", version: "3.10.0-1160.45.1.el7.x86_64", arch: "amd64", family: "unix"
services>> yum install -y git
services>> git --version
git version 1.8.3.1
(遇到选择都输入y即可)
services>> yum install mysql
services>> wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
services>> rpm -ivh mysql-community-release-el7-5.noarch.rpm
services>> yum install mysql-community-server
services>> yum install mysql-devel
services>> systemctl start mysqld
services>> systemctl enable mysqld
MySQL数据库相关指令:
systemctl disable mysqld //停止mysql服务开机自启动
systemctl status mysqld //查看mysql服务当前状态
systemctl restart mysqld //重启mysql服务
systemctl stop mysqld //停止mysql服务
services>> mysql -u root
#Welcome to the MySQL monitor. Commands end with ; or \g.
#Your MySQL connection id is 2
#Server version: 5.6.51 MySQL Community Server (GPL)...
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)
mysql>
mysql> set password for 'root'@'localhost' =password('root用户密码');
mysql> create user '用户名'@'%' identified by '密码' with grant option;
或者
mysql> create user '用户名'@'%' identified with mysql_native_password by '密码';
注意:mysql8.0及以上版本需要使用以下语句:
mysql> create user 用户名@'%' identified by '密码';
mysql> grant all privileges on *.* to 用户名@'%' with grant option;
mysql> FLUSH PRIVILEGES;
mysql> quit
Bye
/etc/my.cnf
配置文件,在[mysqld]下添加编码配置,配置mysql默认编码为utf-8
:>> vim /etc/my.cnf
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
输入vim /etc/my.cnf
进入到文件内,按 i 进入编辑模式,把编码配置粘贴到[mysqld]的下面。
添加完编码配置后,按ESC键退出编辑模式,输入:wq
并按回车,重新回到命令行界面
>> systemctl restart mysqld
services>> curl -o nginx-1.20.2.tar.gz http://nginx.org/download/nginx-1.20.2.tar.gz
# % Total % Received % Xferd Average Speed Time Time Time Current
# Dload Upload Total Spent Left Speed
#100 1037k 100 1037k 0 0 48743 0 0:00:21 0:00:21 --:--:-- 46562
services>> ls
# nginx-1.20.2.tar.gz
services>> tar -zxvf nginx-1.20.2.tar.gz
services>> ls
# nginx-1.20.2 nginx-1.20.2.tar.gz
nginx-1.20.2>> cd nginx-1.20.2
nginx-1.20.2>> ls
#auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
nginx-1.20.2>> yum install pcre pcre-devel -y
nginx-1.20.2>> yum install openssl openssl-devel -y
nginx-1.20.2>> ./configure --with-http_ssl_module --with-http_v2_module --with-stream
nginx-1.20.2>> make
# 如果编译报错:make: *** No rule to make target `build', needed by `default'. Stop.
# 则需要安装下面配置
# 安装下面配置
>> yum -y install make zlib-devel gcc-c++ libtool openssl openssl-devel
# 重新configure
>> ./configure
# 编译
>> make
nginx-1.20.2>> make install
nginx-1.20.2>> vim /etc/profile
# 按下shift+g将光标定位到最后一行,新增以下内容:
export PATH=$PATH:/usr/local/nginx/sbin
按 i 进入编辑模式,把新增的内容放到/etc/profile 文件内的最后一行就可以了,按ESC键退出编辑模式,然后输入:wq
再按下enter即可保存退出
source /etc/profile
nginx-1.20.2>> netstat -ntlp
Active Internet connections (only servers)
#Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
#tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 8210/nginx: master
#tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1648/sshd
#tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1120/master
#tcp6 0 0 :::22 :::* LISTEN 1648/sshd
#tcp6 0 0 ::1:25 :::* LISTEN 1120/master
#tcp6 0 0 :::3306 :::* LISTEN 10626/mysqld
~>> curl -o redis-6.2.5.tar.gz http://download.redis.io/releases/redis-6.2.5.tar.gz
~>> tar -zxvf redis-6.2.5.tar.gz
~>> yum install gcc
#切换到 redis目录
~>> cd redis-6.2.5/
# 编译
redis-6.2.5>> make
# 安装
redis-6.2.5>> make install
# 切换到安装路径
redis-6.2.5>> cd /usr/local/bin
# 查看文件
bin>> ls
bin>> redis-serve
bin>> cd /root/redis-6.2.5
redis-6.2.5>> cp redis.conf redis.conf.bak
redis-6.2.5>> vim redis.conf
在vim界面命令行模式下输入/daemonize no
进行查找,然后按i
进入编辑模式,并将该内容修改为··daemonize yes
··,然后按Esc键,输入:wq
再按enter键保存退出
重新切换到bin目录启动则是后台运行了
redis-6.2.5>> cd /usr/local/bin
bin>> redis-server /root/redis-6.2.5/redis.conf
bin>> cd /root/redis-6.2.5
redis-6.2.5>> vim redis.conf
在vim界面命令行模式下输入/requirepass
进行查找,然后按i
进入编辑模式,在右边输入密码,然后按Esc键,输入:wq
再按enter键保存退出
bin>> redis-cli shutdown
bin>> redis-server /root/redis-6.2.5/redis.conf
~>> curl -o node-v16.15.1.tar.gz https://nodejs.org/dist/v16.15.1/node-v16.15.1-linux-x64.tar.gz
~>> tar -xvf node-v16.15.1.tar.gz
~>> cd node-v16.15.1-linux-x64/bin
bin>> ./node -v
# v16.15.1
~>> pwd
# /root/node-v16.15.1-linux-x64/bin
~>> vim /etc/profile
在vim界面命令行模式下,然后按i
进入编辑模式,在最后配置bin目录所在路径/root/node-v16.15.1-linux-x64/bin
,然后按Esc键,输入:wq
再按enter键保存退出
source /etc/profile
项目所需的基本环境我们已经全部搭建完毕,上述环境并不是一定全部都得用到,我们有两套部署方案:
由于第二种方案步骤完全覆盖第一种方案,我们便主要讲解第二种方案。非常重要的一点是最后在防火墙开启项目使用到的端口号!!!
使用如下指令拉取远程代码仓库前后端项目代码即可
~>> git clone https://xxxxxxx代码地址xxxxxx
~>> cd 前端项目名
前端项目名>> npm run build
这将生成一个dist
目录,其中包含一组静态文件,包括HTML、CSS和JavaScript文件。
前端项目名>> cd /usr/local/nginx/conf
conf>> vim nginx.conf
修改文件内容为:
user root;(修改的地方)
worker_processes 1;
....(省略)....
location / {
root /root/services/前端项目名/dist;(前端项目dist目录路径)
index index.html index.htm;
}
....(省略)....
然后按ESC键退出编辑模式,按 :wq 保存退出
conf>> nginx -s reload
~>> cd 后端项目名
后端项目名>> mvn package -DskipTests
target
目录,其中包含我们需要的可执行JAR文件。后端项目名>> cd target
target>> java -jar ./自己打包出来的.jar --spring.profiles.active=prod
# 当然这么用的话,这个窗口就不能做任何事了,被这个命令占满了,按ctrl+c中断它
# 让它在后台运行
target>> nohup java -jar ./自己打包出来的.jar --spring.profiles.active=prod &
# 可以看见它正在运行
user-center-backend>> jobs
#[1]+ Running nohup java -jar ./后端项目名.jar --spring.profiles.active=prod &
//这里可以看到java在8080端口启动了
user-center-backend>> netstat -ntlp
#Active Internet connections (only servers)
#Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
#tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1393/sshd
#tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1396/master
#tcp6 0 0 :::3306 :::* LISTEN 1441/mysqld
#tcp6 0 0 :::8080 :::* LISTEN 4367/java
#tcp6 0 0 :::22 :::* LISTEN 1393/sshd
#tcp6 0 0 ::1:25 :::* LISTEN 1396/master
//用jps也可以看到运行的java程序
user-center-backend>> jps
#7298 Jps
#4367 后端项目名.jar
# 1.关闭后台Java项目
# 1.1.查看过滤出Java项目
ps -elf |grep java
# 1.2 根据pid杀死进程
kill -9 PID
# 2 查看后台启动项目
jobs # 查看后台项目
netstat -ntlp # 查看端口占用情况
jps # 查看运行的Java程序
# 3.日志查看
# 查看最新100行日志
tail -n 100 nohup.out | more
# 实时查看日志
tail -f nohup.out
至此我们便算是完成了整个项目的开发环境搭建与部署~