网页前后端在云服务器上的部署教程

  • 1.前端部署
  • 1.1 安装nginx服务器
  • 1.2 前端文件部署和环境配置
  • 2.后端部署
  • 2.1 服务器环境配置
  • 2.2 后端文件部署
  • 2.2.1 把打包好的文件放在服务器上
  • 2.2.2 执行jar包



本文为前后端在云服务器上的部署教程,其中系统镜像为CentOS 8,前端部署使用nginx,后端为maven打包的springboot项目,注意使用快照来保存进度。

1.前端部署

1.1 安装nginx服务器

假设把文件都放在services下

创建services目录,用来存放所有项目的依赖和安装包(可选)

>> mkdir services

>> cd services

可以参考其他安装方式 Nginx三种安装方式

下载nginx包并更名

注意这里的链接是从官网复制出来的,可能会变化

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
# mysql-community-release-el7-5.noarch.rpm  nginx-1.20.2.tar.gz

解压

services>> tar -zxvf nginx-1.20.2.tar.gz

如果产生下列报错,证明上面的链接无效

tar: This does not look like a tar archive

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now

//可以验证一下文件类型,是HTMLdocument就是链接文件,无效,重新在官网复制链接,下面下载maven同理
[root@aaa services] file nginx-1.20.2.tar.gz
nginx-1.20.2.tar.gz: HTML document, ASCII text

进入nginx目录

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

安装依赖,本文参考Centos 8 安装 nginx

#一次安装4个插件
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
#一次安装如果有问题,可以试一下分开安装(上面命令执行成功了就就无需执行以下命令了)
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel

配置并编译,然后安装

//configure
>> ./configure 
//编译
>> make
//安装
>> make install

环境变量配置

nginx-1.20.2>> vim /etc/profile 
# 按下shift+g将光标定位到最后一行,新增以下内容:
export PATH=$PATH:/usr/local/nginx/sbin	

# 使文件生效
nginx-1.20.2>> source /etc/profile
nginx-1.20.2>> nginx
# 没有报错,环境变量配置完毕
nginx-1.20.2>>

查看端口启动情况,看看有没有nginx

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

复制nginx.conf配置文件,并重命名为nginx.default.conf作为备份,以备不时之需

nginx-1.20.2>> cd /usr/local/nginx/conf

conf>> cp nginx.conf nginx.default.conf

回到services目录

conf>> cd /root/services
services>>

1.2 前端文件部署和环境配置

把前端构建的dist文件传到服务器上,一般通过远程连接工具直接拖拽文件即可,博主用的是Xshell,传输速率一直为0的话需要

#-y单纯是避免询问
yum -y install lrzsz

Xshell还不能拖拽文件夹,得先打包成zip,zip拖拽到services目录下后,需要unzip解压

这里解压后顺便改名成user-center-frontend

unzip dist.zip -d user-center-frontend

修改nginx配置文件

user-center-front>> cd /usr/local/nginx/conf
conf>> vim nginx.conf
修改文件内容为:
user  root;(修改的地方)
worker_processes  1;
....(省略)....
location / {
  root   /root/services/user-center-front;(修改的地方)
  index  index.html index.htm;
}
....(省略)....
然后按ESC键退出编辑模式,按 :wq  保存退出

更新配置

conf>> nginx -s reload

防火墙设置

conf>> firewall-cmd --zone=public --add-port=80/tcp --permanent
#success
//防火墙重新加载配置
conf>> firewall-cmd --reload
#success
//查看开放的端口
conf>> firewall-cmd --list-ports
#3306/tcp 80/tcp

然后就可以用公网IP访问了

2.后端部署

2.1 服务器环境配置

安装java

conf>> yum install -y java-1.8.0-openjdk*
//yum安装不用配置环境变量,它直接帮我们安装好了
//查看java版本,安装成功
conf>> 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)

安装maven

conf>> cd /root/services/
services>> curl -o apache-maven-3.8.6-bin.tar.gz https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz
services>> ls
#apache-maven-3.8.6-bin.tar.gz             nginx-1.20.2         user-center-front
#mysql-community-release-el7-5.noarch.rpm  nginx-1.20.2.tar.gz
//解压
services>> tar -zxvf apache-maven-3.8.6-bin.tar.gz
services>> ls
#apache-maven-3.8.6             mysql-community-release-el7-5.noarch.rpm  nginx-1.20.2.tar.gz
#apache-maven-3.8.6-bin.tar.gz  nginx-1.20.2                              user-center-front

进入到maven

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将光标定位到最后一行,把刚刚复制的路径粘贴到nginx环境变量后面:
export PATH=$PATH:/user/local/nginx/sbin:/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"
//可以查看maven命令的帮助
services>> mvn --help

2.2 后端文件部署

2.2.1 把打包好的文件放在服务器上

一是直接把target文件夹移动到服务器上

二是使用git下载上传到github的文件,再通过前面下载的mvn编译

安装git,但是服务器上使用git可能会有一些错误,所以执行之前一定要保存快照

>> yum install -y git

进入项目文件

services>> cd user-center-backend
user-center-backend>> ls
#mvnw  mvnw.cmd  pom.xml  README.md  sql  src

用mvn编译

//打包构建,跳过测试
user-center-backend>> mvn package -DskipTests
//这个构建完之后就是之前后端打包的jar,可以直接用之前的jar
//拖到user-center-backend目录中去执行,因为maven默认会去国外下载依赖,很慢
//直接用我们之前打包好的也行
user-center-backend>> ls
#mvnw  mvnw.cmd  pom.xml  README.md  sql  src  user-center-backend-0.0.1-SNAPSHOT.jar

2.2.2 执行jar包

以下是“踩坑的命令”,只是为了表明这些命令的思路,不用全试

cd target
user-center-backend>> java -jar ./user-center-backend-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

//执行后如果显示没有权限;给这个文件添加可执行权限
user-center-backend>> chmod a+x user-center-backend-0.0.1-SNAPSHOT.jar
//再ls就会发现user-center-backend-0.0.1-SNAPSHOT.jar变成绿色了
user-center-backend>> ls
//再次执行
user-center-backend>> java -jar ./user-center-backend-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

//当然这么用的话,这个窗口就不能做任何事了,被这个命令占满了,按ctrl+c中断它
//让它在后台运行nohup命令
user-center-backend>> nohup java -jar ./user-center-backend-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod &
//可以看见它正在运行
user-center-backend>> jobs
#[1]+  Running                 nohup java -jar ./user-center-backend-0.0.1-SNAPSHOT.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 user-center-backend-0.0.1-SNAPSHOT.jar

实际上有用的命令

cd target

chmod a+x user-center-backend-0.0.1-SNAPSHOT.jar

//让它在后台运行
nohup java -jar ./user-center-backend-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod &

//可以看见它正在运行
jobs
#[1]+  Running                 nohup java -jar ./user-center-backend-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod &
//这里可以看到java在8080端口启动了
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程序
jps
#7298 Jps
#4367 user-center-backend-0.0.1-SNAPSHOT.jar

部署完成!