文章目录
打包发布前端资源
使用ng build
或ng 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
可以通过命令行对配置好的应用进行管理