04.1 go-admin自动化上线到生产环境 nginx配置上线vue和go
简介
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交叉编译的方法或者参考下面的地址
# !/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目录文件了

04.1 go-admin自动化上线到生产环境 nginx配置上线vue和go的更多相关文章
- 分离Webpack开发环境与生产环境的配置
这是Webpack+React系列配置过程记录的第五篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...
- 【Spring】使用@Profile注解实现开发、测试和生产环境的配置和切换,看完这篇我彻底会了!!
写在前面 在实际的企业开发环境中,往往都会将环境分为:开发环境.测试环境和生产环境,而每个环境基本上都是互相隔离的,也就是说,开发环境.测试环境和生产环境是互不相通的.在以前的开发过程中,如果开发人员 ...
- Yarn 生产环境核心配置参数
目录 Yarn 生产环境核心配置参数 ResourceManager NodeManager Container Yarn 生产环境核心配置参数 ResourceManager 配置调度器 yarn. ...
- Spring.profile实现开发、测试和生产环境的配置和切换
软件开发过程一般涉及“开发 -> 测试 -> 部署上线”多个阶段,每个阶段的环境的配置参数会有不同,如数据源,文件路径等.为避免每次切换环境时都要进行参数配置等繁琐的操作,可以通过spri ...
- 【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 ...
- vue-cli 3.0 axios 跨域请求代理配置及生产环境 baseUrl 配置
1. 开发环境跨域配置 在 vue.config.js 文件中: module.exports = { runtimeCompiler: true, publicPath: '/', // 设置打包文 ...
- IDEA开发、测试、生产环境pom配置及使用
pom文件 一般放在最下面,project里 <!--开发环境.测试环境.生产环境--> <!--生产环境--> <profiles> <profile> ...
- 如何使用SSDT进行SQL数据库的自动化部署到生产环境和版本控制
简介 在开发过程,我们常常会遇到数据库环境部署的问题,当部署正式环境中,数据库产生的多文件脚本在管理上就容易出现混乱,特别是你还没有权限访问正式环境的情况,就更为困难.SSDT为我们提供了很好的解决方 ...
- [转]Docker 生产环境之配置容器 - 限制容器资源
默认情况下,容器没有资源限制,可以使用主机内核调度程序允许的给定资源.Docker 提供了一些方法来控制容器可以使用多少内存.CPU 或块 IO,并设置 docker run 命令的运行时配置标志.本 ...
- ubuntu 常用生产环境部署配置测试调优
1,ubuntu monogdb 安装配置 2,ubuntu jdk1.7,tomcat7安装 3,ubuntu LAMP部署 4,mongodb 远程热备份及恢复 使用自带的mongodump和mo ...
随机推荐
- KingbaseES 的oracle兼容性参数
KingbaseES用户可通过设置相关的数据库兼容参数,部分或全部启用Oracle兼容特性. 常用的兼容性参数有以下这些: 参数名称 参数说明 ora_forbid_func_polymorphism ...
- JavaScript二代公民身份证号验证
身份证号码中的校验码是身份证号码的最后一位,是根据[中华人民共和国国家标准GB 11643-1999]中有关公民身份号码的规定, 根据精密的计算公式计算出来的,公民身份号码是特征组合码,由十七位数字本 ...
- 黄吉:如何适配OpenHarmony自有音频框架ADM?
编者按:在 OpenHarmony 生态发展过程中,涌现了大批优秀的代码贡献者,本专题旨在表彰贡献.分享经验,文中内容来自嘉宾访谈,不代表 OpenHarmony 工作委员会观点. 黄吉 中国科学院软 ...
- 网络组件axios可以在OpenHarmony上使用了
什么是axios 上古浏览器页面在向服务器请求数据时,因为返回的是整个页面的数据,页面都会强制刷新一下,这对于用户来讲并不是很友好.并且我们只是需要修改页面的部分数据,但是从服务器端发送的却是整个页面 ...
- RabbitMQ 07 发布订阅模式
发布订阅模式 发布订阅模式结构图: 比如信用卡还款日临近了,那么就会给手机.邮箱发送消息,提示需要去还款了,但是手机短信和邮件发送并不一定是同一个业务提供的,但是现在又希望能够都去执行,就可以用到发布 ...
- 编译opencv: Linux编译opencv
opencv官网:https://opencv.org/releases/ github下载地址:https://github.com/opencv/opencv/releases mkdir ...
- MogDB 使用向量化执行引擎进行调优
MogDB 使用向量化执行引擎进行调优 本文出处:https://www.modb.pro/db/430318 MogDB 数据库支持行执行引擎和向量化执行引擎,分别对应行存表和列存表. 一次一个 b ...
- 容器开发运维人员的 Linux 操作机配置优化建议
"工欲善其事必先利其器", 作为一个PAAS平台架构师, 容器相关技术(docker, k8s等)是必不可少的. 本文简单介绍下我自己的Linux操作机配置. 提升工作效率, 提高 ...
- Perm 排列计数——Lucas&dfs
思路:这道题给出的公式看明白后即可得出正解,我们可以把他想象成一颗二叉树,任意一个点的任意一个子孙一直除以2后最终都会到达一终点,终点则为以该点为根的子树的最小值. so--我们可以将根节点作为最后终 ...
- 什么是报表工具?和 EXCEL 有什么区别?
报表是什么? 带数据的表格和图表就都是报表,像工资表,考勤表,成绩表,资产负载表等等都是报表. 那报表工具,顾名思义就是用来做报表的工具,那 Excel 是不是也算报表工具?广义上讲当然也算.但 IT ...