这时候,使用go的优势就体现出来了
在服务器上完全不需要golang的环境,即可运行项目
打包
前端打包之前注意环境地址有没有问题
前端,后端都打包好
// 前端打包命令
npm run build
// 后端打包 windows命令
set GOARCH=amd64
set GOOS=linux
go build -o main
这里使用了golang的交叉编译,即在windows上编译linux平台的可执行文件
上传文件
文件分别放在对应位置
我是存放在/www/wwwroot/gin_vue_blog下
├── dist # 前端打包后的文件
├── nginx_start.conf # 项目的nginx配置文件
└── server # 后端项目目录
├── blog.sql
├── main # 打包后的文件
├── settings.yaml # 后端项目的配置文件
└── uploads # 静态文件
服务器配置
因为项目中用到了es,redis,mysql
所以要保证服务器上有这些环境
ElasticSearch
使用docker安装es即可
docker配置es
docker pull elasticsearch:7.12.0
mkdir -p ./es/config & mkdir -p ./es/data & mkdir -p ./es/plugins
chmod 777 ./es/data
echo "http.host: 0.0.0.0" > ./es/config/elasticsearch.yml
docker run --name es --restart=always -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms84m -Xmx512m" -v /www/wwwroot/gvb/server/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /www/wwwroot/gvb/server/es/data:/usr/share/elasticsearch/data -v /www/wwwroot/gvb/server/es/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:7.12.0
Redis
Mysql
docker配置mysql
docker pull mysql:5.7
cd /www/wwwroot/gvb/server
mkdir -p ./mysql/conf ./mysql/datadir
docker run -itd --name mysql --restart=always -p 3307:3306 -v /www/wwwroot/gvb/server/mysql/conf:/etc/mysql/conf.d -v /www/wwwroot/gvb/server/mysql/datadir:/var/lib/mysql -v /www/wwwroot/gvb/server/mysql/gvb.sql:/opt/gvb.sql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=gvd_db mysql:5.7
Nginx
配置nginx
server {
listen 80;
server_name blog.fengfengzhidao.com;
location / {
try_files $uri $uri/ /index.html; # 解决刷新404问题
root /www/wwwroot/gin_vue_blog/dist;
index index.html index.htm;
}
location /api/ {
# rewrite ^/(api/.*) /$1 break;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_pass http://127.0.0.1:7000/api/;
}
location /uploads/ {
# proxy_pass http://127.0.0.1:7000/uploads/;
alias /www/wwwroot/gin_vue_blog/server/uploads/;
}
location /ws/ {
proxy_pass http://127.0.0.1:7000/api/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_read_timeout 3600s; # 长连接时间
}
}
使用supervisor
supervisor是python的一个项目管理器
安装supervisor
// 安装第三方源
yum install epel-release
// 安装supervisor
yum install -y supervisor
// 设置supervisor开启启动
systemctl enable supervisord
// 启动supervisor服务
systemctl start supervisord
// 查看服务状态
systemctl status supervisord
安装好之后,会有一个 /etc/supervisord.conf的文件,还有 /etc/supervisord.d的目录
supervisord.conf这个文件是supervisor的总配置文件
supervisord.d这个目录用于存放子程序的配置文件
项目配置文件编写
创建一个项目配置文件
vim /etc/supervisord.d/gvb.ini
[program:gvb]
command= /www/wwwroot/gin_vue_blog/server/main
directory= /www/wwwroot/gin_vue_blog/server
autorestart=true
autostart=true
stderr_logfile=/www/wwwroot/gin_vue_blog/server/err.log
stdout_logfile=/www/wwwroot/gin_vue_blog/server/out.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal=INT
startsecs=10
stopasgroup=true
killasgroup=true
启动,重启,停止
加载配置文件
supervisorctl reload
启动,停止,重启项目进程
supervisorctl start gvb
supervisorctl stop gvb
supervisorctl restart gvb
更新脚本
git pull
go build -o main
supervisorctl restart gvb