目录

简介

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. 字符串 Hash 的一些应用

    字符串 Hash 可以快速的解决一类需要字符串匹配的问题.同时还可以以较小的思维量和代码量通过一些难题. P3809 [模板]后缀排序,这题的正解显然是 $\mathcal{O}(n\log n)$ ...

  2. #双指针#洛谷 7405 [JOI 2021 Final] 雪玉

    题目传送门 分析 无论怎样刮风,雪球的相对位置不会改变, 实际上每一个空段都由左右两个雪球瓜分(边界空段除外), 那么按照空段长度从小到大排序,用双指针找到恰好第一个未瓜分的位置 代码 #includ ...

  3. #长链剖分#CF208E Blood Cousins

    题目 给你一片森林,每次询问一个点与多少个点拥有共同的 \(K\) 级祖先 分析 设\(dp[x][d]\)表示以\(x\)为根节点时深度为\(d\)的个数, 那么\(dp[x][d]=\sum\{d ...

  4. #矩阵树定理,高斯消元,容斥定理#洛谷 4336 [SHOI2016]黑暗前的幻想乡

    题目 分析 这很明显是矩阵树定理,但是每个建筑公司都恰好修建一条边非常难做, 考虑如果一个建筑公司在某个方案中并没有恰好修建一条边, 那么这种方案一定能在不选其它任意一个公司的方案中被减掉, 那就可以 ...

  5. MogDB 安装解压错误:cannot run bzip2: No such file or directory

    MogDB 安装解压错误:cannot run bzip2: No such file or directory 本文出处:https://www.modb.pro/db/403662 问题症状 Mo ...

  6. Hypium框架使能ArkTS应用高效测试

     原文链接:https://mp.weixin.qq.com/s/Ncc-x_4zy4wBZmSjknw1lQ,点击链接查看更多技术内容:   HarmonyOS发布了声明式开发框架ArkUI,带来了 ...

  7. Python/Spring Cloud Alibaba开发--前端复习笔记(1)———— html5和css3.html基础

    Python/Spring Cloud Alibaba开发–前端复习笔记(1)---- html5和css3.html基础 1)概述和基本结构 超文本标记语言.超文本指超链接,标记指的是标签. 基本结 ...

  8. redis 简单整理——内存的管理[二十六]

    前言 redis 是一个内存型数据库,那么就需要重点关注一下内存了. 正文 理解Redis内存,首先需要掌握Redis内存消耗在哪些方面.有些内存消 耗是必不可少的,而有些可以通过参数调整和合理使用来 ...

  9. wandb一个简单demo

    wandb绘制曲线:sin函数,cos函数,log函数. wandb绘制本地图片 wandb绘制matplotlib图片 wandb绘制numpy图片 import math import wandb ...

  10. esp8266,arduino,网页显示dht11温湿度,控制继电器开关,局域网智能家居

    不说了,上代码,用arduino实现esp8266代码 #include <ESP8266WiFi.h> #include <WiFiClient.h> #include &l ...