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 V8R3 集群运维系列 -- 修改数据库服务端口
			
 案例说明: KingbaseES V8R3集群数据库服务端口(默认:54321)的配置在数据库及集群多个配置文件中都存在,修改端口需要更改所有的配置文件,本案例详细描述了数据库服务端口修改操作步骤 ...
 - 1 CSS的引入方式
			
1 CSS的引入方式 CSS样式有三种不同的使用方式,分别是行内样式,嵌入样式以及链接式.我们需要根据不同的场合不同的需求来使用不同的样式. 行内样式 行内样式,就是写在元素的style属性中的样式, ...
 - #KM算法#UVA1411 Ants
			
题目 在一个平面直角坐标系中,有 \(n\) 个黑点,\(n\) 个白点. 给出一种二分图匹配的方案,使得没有两条由黑白点连接的线段相交 分析 如果线段都不相交,根据三角形的两边之和大于第三边,那么线 ...
 - 【开源三方库】Fuse.js:强大、轻巧、零依赖的模糊搜索库
			
开源项目 OpenHarmony 是每个人的 OpenHarmony 曹天恒 公司:中国科学院软件研究所 小组:知识体系工作组 1.简介 Fuse.js是一款功能强大且轻量级的JavaScript ...
 - 初学STM32 SDIO(一)
			
1. SDIO协议简介  SDIO全称是安全数字输入/输出接口 ,控制器对SD卡进行读写通信操作一般有两种通信接口可选,一种是SPI接口,另外一种就是SDIO接口. 多媒体卡(MMC).SD卡. S ...
 - 开始学习web-sql注入
			
web内容多且杂,不知道怎么下手开始学,那就先从sql注入开始学吧 目前只在b站上找了一些课程,还有ctfwiki作为参考 链接贴在下面: ctfwiki https://www.bilibili.c ...
 - windows下配置mask2former(facebook版)
			
1.安装Anaconda 2.安装PyCharm 3.创建python3.8环境(最高3.8因为有一个依赖包最高支持python3.8) 4.安装GCC 下载地址:https://sourceforg ...
 - 【译】宣布在 Visual Studio 17.10 预览2中为 ARM64 架构提供 SSDT
			
我们很高兴地宣布在 ARM64 中为 Visual Studio 推出 SQL Server Data Tools(SSDT).这个增强是在令人兴奋的17.10预览版2中发布的.arm64 上 Vis ...
 - redis 简单整理——开发和运维中的问题[二十四]
			
前言 简单介绍一下开发和运维中的问题. 正文 从上文中介绍了,我们有了一个副本了,通过复制的方式. 这些副本可以应用于读写分 离.故障转移(failover).实时备份等场景. 那么可以关注一些开发和 ...
 - lin-view-ui Vue 2.0 组件库
			
lin-view-ui 是一款基于 Vue.js 2.0 的前端 UI 组件库,主要集成了平时在开发中使用到的 UI 组件. 特性 基于 Vue 开发的 UI 组件 使用 npm + webpack ...