簡介
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交叉編譯的方法或者參考下面的地址
# !/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 登陸后台頁面
已經成功部署到線上了
4.5 更新前端代碼到服務器
重復4.3步驟,就會重新打包並覆蓋到線上的dist目錄文件了
