欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

记一次前后端分离项目的部署过程

程序员文章站 2022-07-13 08:54:53
...

最近刚完成一次课设,把一个前后端项目完整的部署到了线上,其中遇到的困难和部署的方法在这里记录一下!

项目简介

该项目是根据B站上一个音乐网站教程参考来的,之所以是参考是因为代码都是自己和同学重写的一边,项目结构、代码等都是按我们自己规定的标准来写。简单说就是只参考了这个网站的想法和使用了教程给的静态资源。完整的项目是完成一个音乐网站的前台和后台界面,以及所有后端。这里我们只选取了后台管理部分的编写,因为是课设,时间也不够。

项目目录结构

web-music
	music-manage	// 后台管理前端部分
		admin	// 打包文件
		src		//源码
		...
	music-server	// 后台管理后端
		img		// 静态资源文件,存放图片
		sql		// 数据库生成文件
		logs	// 日志
		src		// 源码
		target
		pom.xml
		...

部署过程

首先,将需要的文件上传到服务器,由于是一个项目,所以我就统一放到一个目录下/root/MyCode/web-music
记一次前后端分离项目的部署过程

前端部署

前端项目是打包到admin文件下,所以配置nginxhttp部分如下:

server {
    listen       80;
    server_name  175.24.147.35;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        root   /root/MyCode/web-music/admin;
		try_files $uri $uri/ /index.html;
        index  index.html index.htm;
    }
}

记一次前后端分离项目的部署过程

这样,前端部署已经完毕了。

后端部署

后端直接运行下面命令:

nohup java -jar music-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod > temp.txt 2>&1 &

就会一直在服务器上运行后端服务。

静态资源服务器

完成前面两步后,该项目就正常部署了。但这个项目特别在静态资源需要也部署一下,不然会找不到静态资源。

一般,springboot项目的静态资源会放在resources下,这是默认的。但在这个项目中,由于图片是动态增加的,为了管理方便和打包文件大小尽可能小,我们把它(也就是img文件夹)放在了外挂目录,所以需要进行静态资源路径配置,在这里不详细说。

如果运行项目的话,在本地环境,静态资源是可以成功访问的到,但部署到线上后,会出现静态资源访问不到的情况。

解决的方法是,对服务器上的静态资源进行nginx配置,使得通过路径可以直接访问到静态资源。

这里在img文件下有三个目录:
记一次前后端分离项目的部署过程
需要对这三个目录进行nginx配置。

还是在nginx.conf下的http部分的server中,添加以下配置(该配置是我初学nginx配置的,这样配置虽然写法有些重复,但解决了问题。关于nginx我也刚入门。)

server {
    listen       80;
    server_name  175.24.147.35;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

	location /img/singerPic/ {
	    root   /root/MyCode/web-music;
	}

	location /img/userAvatar/ {
	    root   /root/MyCode/web-music;
	}
	
	location /img/songPic/ {
	   root   /root/MyCode/web-music;
	}
	
	location /song/ {
	   root   /root/MyCode/web-music;
	}
}

记一次前后端分离项目的部署过程

就拿其中一处来理解一下:

该处就是将/root/MyCode/web-music目录下的img/singerPic/下的资源,代理到/img/singerPic

这样访问http://175.24.147.35/img/singerPic/zhangjie.jpg,就会直接得到root/img/singerPic下的zhangjie.jpg文件。理解的也不是特别深。

关于nginx配置静态资源服务器,这篇文章写的很好,点击此处

	location /img/singerPic/ {
	    root   /root/MyCode/web-music;
	}

用到的一些命令

关于nginx

nginx  # 打开 nginx
nginx -t     # 测试配置文件是否有语法错误
nginx -s reopen  # 重启Nginx
nginx -s reload  # 重新加载Nginx配置文件,然后以优雅的方式重启Nginx
nginx -s stop   # 强制停止Nginx服务
nginx -s quit   # 优雅地停止Nginx服务(即处理完所有请求后再停止服务)

服务器后台挂起服务

nohup java -jar music-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod > temp.txt 2>&1 &
# 其中,--spring.profiles.active=prod是指定jar包的运行环境
# 后面: > tenp.txt 2>&1 & 是输入日志到指定文件

jobs	# 查看后台挂起的进程,jobs命令执行的结果,+表示是一个当前的作业,减号表是是一个当前作业之后的一个作业。
jobs -l # 选项可显示所有任务的PID,

# jobs的状态可以是running, stopped, Terminated
# 但当关闭该窗口在打开查看,这时候jobs已经不能使用,只能通过以下方式查看后台执行的脚本是否正在执行
ps -ef | grep music

fg JOBID # 可以将后台的任务调入前台继续运行(Foreground)。
# 如果执行完后台脚本命令,当前窗口没有关闭,可以执行jobs查看当前窗口运行的后台进程的进程号,再通过fg n,将此后台进程调到前台执行。

# 后台进程的终止:
# 方法一:通过jobs命令查看job号(假设为num),然后执行kill num
# 方法二:通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid   
相关标签: SpringBoot