目录

简介

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://172.16.70.25:8877; #这里写自己的服务器的内网ip地址,不要写127.0.0.1
}
}
`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目录文件了

04.1 go-admin自动化上线到生产环境 nginx配置上线vue和go的更多相关文章

  1. 分离Webpack开发环境与生产环境的配置

    这是Webpack+React系列配置过程记录的第五篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...

  2. 【Spring】使用@Profile注解实现开发、测试和生产环境的配置和切换,看完这篇我彻底会了!!

    写在前面 在实际的企业开发环境中,往往都会将环境分为:开发环境.测试环境和生产环境,而每个环境基本上都是互相隔离的,也就是说,开发环境.测试环境和生产环境是互不相通的.在以前的开发过程中,如果开发人员 ...

  3. Yarn 生产环境核心配置参数

    目录 Yarn 生产环境核心配置参数 ResourceManager NodeManager Container Yarn 生产环境核心配置参数 ResourceManager 配置调度器 yarn. ...

  4. Spring.profile实现开发、测试和生产环境的配置和切换

    软件开发过程一般涉及“开发 -> 测试 -> 部署上线”多个阶段,每个阶段的环境的配置参数会有不同,如数据源,文件路径等.为避免每次切换环境时都要进行参数配置等繁琐的操作,可以通过spri ...

  5. 【netcore基础】ubuntu 16.04 搭建.net core 2.1 linux 运行环境 nginx反向代理 supervisor配置自启动

    今天来整理下 netcore 在 linux(ubuntu) 上的运行环境搭建 对应版本 ubuntu 16.04 .net core 2.1 nginx version: nginx/1.10.3 ...

  6. vue-cli 3.0 axios 跨域请求代理配置及生产环境 baseUrl 配置

    1. 开发环境跨域配置 在 vue.config.js 文件中: module.exports = { runtimeCompiler: true, publicPath: '/', // 设置打包文 ...

  7. IDEA开发、测试、生产环境pom配置及使用

    pom文件 一般放在最下面,project里 <!--开发环境.测试环境.生产环境--> <!--生产环境--> <profiles> <profile> ...

  8. 如何使用SSDT进行SQL数据库的自动化部署到生产环境和版本控制

    简介 在开发过程,我们常常会遇到数据库环境部署的问题,当部署正式环境中,数据库产生的多文件脚本在管理上就容易出现混乱,特别是你还没有权限访问正式环境的情况,就更为困难.SSDT为我们提供了很好的解决方 ...

  9. [转]Docker 生产环境之配置容器 - 限制容器资源

    默认情况下,容器没有资源限制,可以使用主机内核调度程序允许的给定资源.Docker 提供了一些方法来控制容器可以使用多少内存.CPU 或块 IO,并设置 docker run 命令的运行时配置标志.本 ...

  10. ubuntu 常用生产环境部署配置测试调优

    1,ubuntu monogdb 安装配置 2,ubuntu jdk1.7,tomcat7安装 3,ubuntu LAMP部署 4,mongodb 远程热备份及恢复 使用自带的mongodump和mo ...

随机推荐

  1. KingbaseES 原生XML系列一 -- XML构造函数

    KingbaseES 原生XML系列一--XML构造函数(XML,XMLPARSE,XMLSERIALIZE,IS-DOCUMENT,XML_IS_WELL_FORMED,XML_IS_WELL_FO ...

  2. archlinux 格式化分区并创建文件系统后,分区的文件系统没有改变

    这就需要格式化分区并创建文件系统后 再执行partprobe应该就可以看到分区的文件系统改变了 partprobe partprobe命令用于通知操作系统重新读取分区表,以便识别新创建的分区或者删除的 ...

  3. Kubernetes(K8S)命令指南

    本文提供了一份全面的Kubernetes(K8S)命令指南,旨在帮助用户掌握和运用K8S的各种命令. 关注[TechLeadCloud],分享互联网架构.云服务技术的全维度知识.作者拥有10+年互联网 ...

  4. 【FAQ】接入华为帐号服务过程中常见问题总结

    华为帐号服务(Account Kit)为开发者提供简单.安全的登录授权功能,用户不必输入帐号.密码和繁琐验证,就可以通过华为帐号快速登录应用,即刻使用App.这篇文章收集了开发者们集成华为帐号服务中会 ...

  5. 宝塔面板配置MongoDB数据库

    1-安装MongoDB 在面板中的[软件商店]搜索MongoDB并安装,推荐下载4.x以上的版本(可视化工具MongoDB Compass对高版本兼容比较好). 下载完成后,可以点击[设置],[版本切 ...

  6. Prometheus之node_exporter安装

    一.简介 node_exporter用来安装到被监控的主机上,暴露被监控主机的指标数据,服务器端基于http协议调用的端口9100(默认)来获取被监控服务器信息. 二.安装部署 下载地址 https: ...

  7. BZOJ 4403序列统计

    假设存在一个满足条件的长度为i的不下降序列(显然是一定存在的)那么只需要从中选出i个数即可 (不必在意选出具体数的大小,可以把满足条件的序列写下来,选几个数感受一下). 但是$n \choose m ...

  8. 抓包整理————ip 协议二[十三]

    前言 介绍一下什么是nat协议和napt协议,和简单带一下LVS. 正文 什么是nat(Network Address Translation) 协议呢? 比如现在你家分配了一个ip,但是你家有10个 ...

  9. mmdetection训练自己的模型【数据集转变,数据集划分,数据集gt可视化,mmdetection配置文件生成及修改,开始训练,gradio部署】

    针对有一点mmdetction基础的,然后想根据自己的数据集,熟练训练自己的模型.需要改成自己配置的地方,我会在代码中做好标记,方便修改. 我们先了解一下mmdetection的基本流程,你想训练一个 ...

  10. 第四章:if else switch使用

    /* * @Issue: 输入整数a和b,若a²+b²大于100,则输出a²+b²之和的百位以上的数字,否则直接输出a²+b²的和 * @Author: 一届书生 * @LastEditTime : ...