04.1 go-admin自動化上線到生產環境 nginx配置上線vue和go


build MIT

簡介

goadmin-ui 是一個后台基礎模塊的前端的實現,它基於 vue-element-admin實現。它實現了一套最基本的后台權限管理前端的基礎模塊。可以很快捷的開啟自己的項目,不用考慮權限功能如何實現,操作頁面如何設計,這里基本上已經滿足了,希望能夠為大家提供便利。

基於Gin + Vue + Element UI的前后端分離權限管理系統

系統初始化極度簡單,只需要配置文件中,修改數據庫連接,系統啟動后會自動初始化數據庫信息以及必須的基礎數據

一. 上線思路

1.1 首先確保項目前后端在本地可以都可以正常跑起來,如果不會可以去看一下作者的視頻教程

1.2 配置域名(ytt.haimait.com)代理到前端vue打包的文件目錄並上傳前端代碼

1.3 配置域名(ytt.haimait.com/yttapi)代理到后端服務的8877端口上並上傳后台文件

二. nginx配置

配置服務器上的配置

新建/etc/nginx/conf.d/test.haimait.com.conf

server {
  listen 80;
  server_name test.haimait.com;
  # 配置前端靜態文件目錄
  location / {
      index index.html index.htm;
      root /home/go/src/go-admin/dist;
     }
  # 配置后台go服務api接口服務 代理到8877端口  
  location ~ ^/goadminapi/ {
      proxy_set_header   Host             $http_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-Proto  $scheme;
      rewrite ^/goadminapi/(.*)$ /$1 break;
      proxy_pass  http://127.0.0.1:8877;   
      }
}

`nginx -t` //測試nginx配置是否正確
`nginx -s reload` //重啟nginx服務

三. 打包go服務

3.1 修改配置文件

修改go-admin/config/settings.yml

這里要填寫你服務器上的mysql數據庫的配置信息

application:
    enabledp: true
    host: 0.0.0.0
    mode: dev 
    name: yttAdmin
    port: 8877 #修改端口
    readtimeout: 1
    writertimeout: 2
database:
    driver: mysql
    source: root:123456@tcp(127.0.0.1:3306)/goadmindb?charset=utf8&parseTime=True&loc=Local&timeout=1000ms #數據配置
gen:
    dbname: goadmindb #數據庫名
    frontpath: ../go-admin-ui/src #前端vue/js代碼的生成路徑 ..是指在go-admin同級目錄的go-admin-ui里生成前端代碼 參考上面一.建議開發目錄 

3.2 編寫自動打包上傳的shell角本文件

a. 新建打包角本 go-admin/build-go-admin.sh

注意

​ 如果是mac和windows自己百度go交叉編譯的方法或者參考下面的地址

Go語言Mac、Linux、Windows 下交叉編譯

# !/bin/bash

# author https://www.cnblogs.com/haima/p/13234853.html

# 如果是mac使用這個打包
# CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o go-admin main.go

# 如果是windows使用這個打包 自行測試
# SET CGO_ENABLED=0
# SET GOOS=linux
# SET GOARCH=amd64
# go build -o go-admin main.go

# 如果是linux環境使用這個打包
go build -o go-admin main.go

echo "復制文件到服務器"
echo "CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go"
#調用上傳文件角本把打包好的go-admin二進制文件上傳到服務器上
expect ./scpToServer.sh $i $j
b. 新建上傳角本 /go-admin/scpToServer.sh
#!/usr/bin/expect -f

# author https://www.cnblogs.com/haima/p/13234853.html

# 復制go-admin(和上面的build-go-admin.sh打包文件名保持一致)二進制文件到服務器/home/go/src/go-admin目錄 root:服務器用戶名
spawn scp go-admin root@182.92.234.123:/home/go/src/go-admin
#######################
expect {
  -re ".*es.*o.*" {
    exp_send "yes\r"
    exp_continue
  }
  -re ".*sword.*" {
    exp_send "這里是你的服務器密碼\r"
  }
}
interact

3.3 打包並上傳

​ 命令行里運行

cd go-admin
haima@haima-PC:/media/haima/34E401CC64DD0E28/site/go/src/haimait/learn/go-admin/dome01/go-admin$ ./build-go-admin.sh 
spawn scp go-admin root@182.92.234.111:/home/go/src/go-admin
root@182.92.234.111's password: 
go-admin                                                                                                                                                100%   43MB 635.7KB/s   01:09  

​ 去服務器上查看已經上傳到服務器上了

[root@iZ2ze505h9bgsbp83ct28pZ ~]# cd /home/go/src/go-admin/
[root@iZ2ze505h9bgsbp83ct28pZ go-admin]# ll
總用量 43868
-rwxr-xr-x 1 root root 44920528 7月   7 06:53 go-admin

3.4 編寫后台啟動go服務角本

a.在服務器上新建go-admin/restart.sh文件
#!/bin/bash
echo "刪除進程"
killall go-admin #殺死運行中的go-admin服務進程
echo "啟動進程"
nohup ./go-admin server -c=config/settings.yml >> access.log 2>&1 & #后台啟動服務將日志寫入access.log文件
ps -aux | grep go-admin #查看運行用的進程
b. 上傳config配置到服務器上

[root@iZ2ze505h9bgsbp83ct28pZ go-admin]# tree
.
├── config
│ ├── db.sql
│ ├── rbac_model.conf
│ ├── READMEN.md
│ ├── settings.dev.yml
│ ├── settings.yml
│ └── sqlite.sql
├── go-admin
└── restart.sh

c. 啟動服務

./restart

d. 后台啟動服務
[root@iZ2ze505h9bgsbp83ct28pZ go-admin]# ./restart.sh 
刪除進程
go-admin: 未找到進程
啟動進程
root      4033  0.0  0.0  12324  1080 pts/0    R+   07:39   0:00 grep go-admin

3.5 查看啟動的服務

下面可以看到go-admin 的8877服務已經運行

[root@iZ2ze505h9bgsbp83ct28pZ go-admin]# netstat -tpln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      27650/redis-server  
tcp        0      0 0.0.0.0:5355            0.0.0.0:*               LISTEN      921/systemd-resolve 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1733/nginx: master  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1041/sshd           
tcp6       0      0 :::3306                 :::*                    LISTEN      14732/mysqld        
tcp6       0      0 :::8811                 :::*                    LISTEN      27758/./mindoc      
tcp6       0      0 :::5355                 :::*                    LISTEN      921/systemd-resolve 
tcp6       0      0 :::8877                 :::*                    LISTEN      4031/./go-admin     
tcp6       0      0 :::80                   :::*                    LISTEN      1733/nginx: master  
tcp6       0      0 :::8887                 :::*                    LISTEN      16252/./power       
[root@iZ2ze505h9bgsbp83ct28pZ go-admin]# 

3.6 更新go服務

每次修改來代碼后,想要更新到服務器上步驟.

a. 先刪除服務器上的/home/go/src/go-admin/go-admin二進制文件
b. 重復3.4和3.5步驟即可

四.打包前端文件並上傳

4.1 修改配置文件

修改生產環境請求api接口的配置文件

a.修改go-admin/dome01/go-admin-ui/.env.production文件里的

VUE_APP_BASE_API = 'http://test.haimait.com/goadminapi'

這里的域名地址和1.2nginx里配置的go后台api接口地址 保持一致 ,它是指請求后台接口的根地址

b.修改go-admin/dome01/go-admin-ui/vue.config.js文件里的

publicPath: '/' 改為 publicPath: './'

打成靜態文件后,是指以index.html所在目錄找js/css文件的地址,所以'./'就是找當前前目錄里的js/css文件夾

所以這樣配置后,在本地可以直接使用,上傳到服務器后,再用nginx配置一個域名代理就可以了

4.2 編寫自動打包上傳的shell角本文件

a. 新建/go-admin-ui/npmbuild.sh
# !/bin/bash

# author https://www.cnblogs.com/haima/p/13234853.html

npm run build:prod
echo "復制dist文件到服務器"
#調用scpToServer文件把本把打包好的dist文件夾上傳到服務器上
expect ./scpToServer.sh $i $j
b. 新建/go-admin-ui/scpToServer.sh
#!/usr/bin/expect -f

# author https://www.cnblogs.com/haima/p/13234853.html

# 復制go-admin(和上面的build-go-admin.sh打包文件名保持一致)二進制文件到服務器/home/go/src/go-admin目錄 root:服務器用戶名
spawn scp -rC dist root@182.92.234.123:/home/go/src/go-admin
#######################
expect {
  -re ".*es.*o.*" {
    exp_send "yes\r"
    exp_continue
  }
  -re ".*sword.*" {
    #exp_send "這里是你的服務器密碼\r"
  }
}
interact

4.3 執行角本文件

執行角本文件,打包並上傳到服務器

./npmbuild.sh

4.4 登陸后台頁面

http://test.haimait.com

已經成功部署到線上了

4.5 更新前端代碼到服務器

重復4.3步驟,就會重新打包並覆蓋到線上的dist目錄文件了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM