本地部署前后端项目教程
思路
由于部署的是前后端项目,有三种方式:
-
前后端一起部署
打包前端代码生成
dist
文件夹,将dist文件夹中的复制到后端的static
中,然后打包后端生成jar
包,直接运行即可(无需安装nginx)简单,但不易修改,不提倡(自己也没试成功嘻嘻)
-
前后端分离部署
前端后端分别打包,分别运行,前端是通过
nginx
代理的,后端启动jar
包,前端的请求使用nginx代理发送到后端。 -
宝塔面板部署
适用于新手搭建,之前用过还挺快,就不知道老师那边过不过关(doge)
教程:
以下是第二种方法的步骤👇
实验设备及需求
-
前后端项目一份(前端
Vue
、后端Spring
) -
VM虚拟机
Ubuntu
一台(用于存放前后端,及运行环境)Centos7
两台(用于放置数据库和Redis)
这里因人而异,我分开是为了方便操作,如果嫌麻烦的话,集成到一台中也是可以的。
前端部署
安装nginx
参考文章:ubuntu安装nginx
启动nginx
1 | cd /usr/local/nginx/sbin # 进入nginx启动目录 |
1 | //重启命令: 安装路径下 |
查看是否启动
启动后浏览器访问自己的IP地址即可访问到下面的页面
或者终端输入命令,如图
1 | ps -aux | grep nginx |
出现以上即为启动成功
退出
1 | ./nginx -s stop |
打包前端
把项目中的后端接口改成Ubuntu
的ip
终端输入ifconfig
查看ip
1 | npm run build # 打包前端生成dist文件夹 |
生成dist文件夹(前端静态文件)
在Linux的目录下 mkdir 建一个放打包文件的文件夹(这里我用的是/site/
)
nginx配置
在/usr/local/nginx/conf/nginx.conf
文件中添加代码,添加位置如下:
代码如下
1 | upstream javaboy.org{ |
配置完后重启nginx即可。
浏览器访问http://your-ip/index.html
查看效果
后端部署
准备
修改项目中的数据库IP
为 数据库服务器IP
, 其他不变
打包后端项目
点击IDEA右侧的Maven
> package
,如图
在target
文件夹中生成jar
,我们需要的也正是这个jar包
运行后端
将打包好的jar包
放入上面建好的文件夹中
直接运行打包好的后端jar包,运行日志
会显示出来,ctrl+C
可关闭后端
1 | java -jar xxx.jar |
或
1 | nohup java -jar xxx.jar & |
nohup
意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
当用 nohup
命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。
数据库部署
Centos7下载mysql8
👉 Linux:CentOS7安装MySQL8【完整】(推荐)👈
问题解决,参考以下文章:
MySQL导出sql文件(Window下)
-
终端导出
1
2
3C:\> mysqldump -u 用户名 -p 数据库名 > 导出的文件名
例:
C:\> mysqldump -u root -p dbname > E:\mysql\mydb.sql -
Navicat导出
选择自己要导出的
数据库
-> 右键选择转储SQL文件
-> 选择结构和数据
Mysql导入数据库(Linux下)
-
首先进入
Mysql
中,创建空数据库1
mysql> create database dbname;
-
导入
方法一:(须进入
Mysql
中)1
2
3mysql> use dbname; # 选择数据库
mysql> set names utf8; # 设置数据库编码
mysql> source /home/xxxx/dbname.sql; # 导入数据(注意sql文件的路径)方法二:(无须进入
Mysql
中)1
mysql -u用户名 -p密码 数据库名 < 数据库名.sql
允许Mysql远程登陆
如果是本机,进入mysql终端: mysql -u [username] -p [password]
如果是远程主机,进入mysql终端: mysql -h [host] -u [username] -p [password]
执行以下代码👇:
1 | 进入数据库mysql |
远程连接可能出现的问题👇
Ubuntu远程连接MySQL(connection refused)解决方法
关闭防火墙
关闭防火墙是为了让服务器间能够互相访问
参考文章:ubuntu:防火墙配置详细讲解(全)
可能会出现的错误,参考下面的方法 👇
Ubuntu使用iptables配置防火墙提示:unrecognized service(Ubuntu配置iptables防火墙)
防火墙常用命令
-
查看防火墙状态
1
2
3systemctl status firewalld
或
service iptables status绿色
active
为已开启,loaded
为已关闭 -
暂时关闭防火墙
1
2
3systemctl stop firewalld
或
service iptables stop -
永久关闭防火墙
1
2
3systemctl disable firewalld
或
chkconfig iptables off -
重启防火墙
1
2
3systemctl enable firewalld
或
service iptables restart -
永久关闭后重启
1
2//暂时还没有试过
chkconfig iptables on
Redis部署
查看之前的博客进行安装:Centos 安装 Redis 及相关操作
Redis安装不是很难,我这里是部署到云服务器上的,如果没有用到Redis的可以直接跳过了
最后
附上完成部署的图片
时间有点紧,赶忙写出这篇文章,有什么问题会及时更新的,如果有什么不对的地方还望大佬们指点指点!