Springboot + Angular8 整合发布到linux服务器(CentOS7)

打包发布前端资源

使用ng buildng build --prod将Angular项目打包发布到文件夹中,后者发布的包采用预编译,体积较小,但很多情况下如果不严格遵照ts的规范,例如对js对象动态增添字段就会报错,可以用前者代替。
在angular.json文件中的"projectes"–>“项目名”–>“architect”–>“build”–>“options”–>"outpath"字段下可以指定输出的路径
在这里插入图片描述

整合到后端

指定输出路径为springboot项目下的src/main/static文件夹,或将生成的文件夹内容拷贝至其下即可
再次开启后端项目,访问java服务器监听端口,可以看到前端网页内容
在这里插入图片描述

发布整合后的springboot项目

这里为了包含我们之前生成的前端资源文件,选择使用maven生成war包
首先在pom.xml里将打包方式定义为war,并加入war插件
在这里插入图片描述
在这里插入图片描述
进入springboot项目根目录运行mvn clean install,或者在idea/eclipse里选择maven install进行打包
成功后在target目录下可以看到war包
在这里插入图片描述
使用ftp将war包上传至linux服务器即可。

使用Docker部署

以上步骤生成war包后,如果服务器拥有一样的java版本环境,便可以直接将war包拷贝至服务器并运行,然后添加nginx反向代理和守护进程/脚本等;但我们也可以使用docker将项目更方便地部署到服务器上。

安装Docker

首先安装所需的软件包和依赖

$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

设置docker仓库

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安装最新版本的 Docker Engine-Community 和 containerd

$ sudo yum install docker-ce docker-ce-cli containerd.io

配置Docker环境

启动Docker服务

$ sudo service docker start

从远程仓库拉取Jdk镜像到本地

$ docker pull java:8u111

创建镜像

切换到war包所在的目录,并创建DockerFile文件

$ vim DockerFile
FROM java:8u111
# 将当前路径下的war包添加到容器中并重命名
ADD exam-server-0.0.1-SNAPSHOT.war examsys.war 
# 运行war包
RUN bash -c 'touch /examsys.war'
ENTRYPOINT ["java","-jar","/examsys.war"]

在当前路径下创建镜像

$ docker build -t examsys . #自定义镜像名(examsys) + 当前目录(.)

启动docker镜像

将docker镜像实例化为容器并在指定外网->内网端口映射,在后台运行

#--name后的参数为自定义容器名
$ docker run --name examsys -d -p 8081:8080 examsys

输入docker ps可以看到运行中的docker容器
在这里插入图片描述
在浏览器中输入https://主机外网ip:docker端口即可访问到部署好的springboot应用
在这里插入图片描述

使用nginx+守护进程部署

安装jdk

点击此处进入选择对应服务器系统的jdk下载,并将其拷贝至服务器中
将安装包解压

$ tar -zxvf jdk-8u231-linux-x64.tar.gz

配置java环境变量

vi /etc/profile
#在文件中末尾添加如下配置
JAVA_HOME=/usr/java/jdk1.8.0_191  #jdk压缩包解压后的文件夹
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH

输入java -version测试是否配置成功
在这里插入图片描述

安装nginx

$ curl -o  nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
$ sudo rpm -ivh nginx.rpm
$ sudo yum install nginx

启动nginx并设置开机启动

$ sudo systemctl start nginx 
$ sudo systemctl enable nginx 

配置防火墙

#开放80端口
$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent 
#重启防火墙以使配置即时生效
$ sudo systemctl restart firewalld

此时在浏览器输入http://服务器公网ip出现如下页面说明nginx启动成功
在这里插入图片描述

配置nginx

输入vi /etc/nginx/conf.d/default.conf修改nginx配置文件,使nginx从其监听的外网端口(80)将数据包转发至我们springboot服务器的本地监听端口(8080)。
将文件内容替换为

server {
    listen 80;
    location / {
        proxy_pass http://localhost:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

此时运行nginx –s reload 使nginx配置即时生效
在浏览器中输入https://主机外网ip:springboot服务器监听端口即可访问到部署好的springboot应用
在这里插入图片描述

安装配置守护进程

配置守护进程是为了实现服务器的自动化部署和管理

#安装supervisor
$ sudo yum install python-setuptools
$ easy_install supervisor

修改supervisor全局配置文件

$ sudo mkdir /etc/supervisor
$ echo_supervisord_conf > /etc/supervisor/supervisord.conf

输入vim /etc/supervisor/supervisord.conf来编辑supervisor全局配置文件,将最后两行开头的分号去掉,变为非注释状态。
在这里插入图片描述
接着为我们的springboot项目创建一个配置文件

$ sudo touch /etc/supervisor/conf.d
$ vim examsys.conf #自定义配置文件名

输入如下内容

[program:ExamSys]
#命令行
command=java -jar exam-server-0.0.1-SNAPSHOT.war
#jar包/war包目录
directory=/root/xusysh/ExamSys
autorestart=true
#日志文件路径,需要提前创建
stderr_logfile=/root/xusysh/ExamSys/logfiles/err.log
stdout_logfile=/root/xusysh/ExamSys/logfiles/output.log
stopsignal=INT

输入supervisord -c /etc/supervisor/supervisord.conf使配置即时生效,即可完成springboot应用的部署。
使用supervisorctl可以通过命令行对配置好的应用进行管理
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值