go项目部署 gvb博客项目
这时候,使用go的优势就体现出来了 在服务器上完全不需要golang的环境,即可运行项目 打包 前端打包之前注意环境地址有没有问题 前端,后端都打包好 // 前端打包命令 npm run b

go项目部署 gvb博客项目

发布时间:2023-10-12 (2023-10-12)

这时候,使用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