zoukankan      html  css  js  c++  java
  • go-admin自动化上线到生产环境 nginx配置上线vue和go

    build MIT

    简介

    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数据库的配置信息

    settings:
      application:
        domain: localhost:8877
        host: 0.0.0.0
        ishttps: false
        mode: dev
        name: testApp
        port: "8877" #修改端口,按自己需要
        readtimeout: 1
        writertimeout: 2
      database:
        dbtype: mysql
        host: 127.0.0.1
        name: goadmindb
        password: 123456
        port: 3306
        username: root
      jwt:
        secret: go-admin
        timeout: 3600
      log:
        dir: temp/logs
      ssl:
        key: keystring
        pem: temp/pem.pem
    
    

    3.2 修改默认端口的代码文件

    修改go-admin/cmd/api/server.go

    run方法里

    //if mode != "" {
    if mode == "" {
       config2.SetConfig(config, "settings.application.mode", mode)
    }
    
    
    //if port != "" {
    	if port == "" {
    		config2.SetConfig(config, "settings.application.port", port)
    	}
    

    3.3 编写自动打包上传的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
    "
        exp_continue
      }
      -re ".*sword.*" {
        exp_send "这里是你的服务器密码
    "
      }
    }
    interact
    

    3.4 打包并上传

    ​ 命令行里运行

    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.5 编写后台启动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.6 查看启动的服务

    下面可以看到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.7 更新go服务

    每次修改来代码后,想要更新到服务器上步骤.

    a. 先删除服务器上的/home/go/src/go-admin/go-admin二进制文件
    b. 重复3.4和3.5步骤即可

    四.打包前端文件并上传

    4.1 修改配置文件

    修改生产环境请求接口的配置文件

    修改go-admin/dome01/go-admin-ui/.env.production文件里的

    VUE_APP_BASE_API = 'http://test.haimait.com/goadminapi'

    这里的域名地址和1.2nginx里配置的go后台api接口地址 保持一致

    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
    "
        exp_continue
      }
      -re ".*sword.*" {
        #exp_send "这里是你的服务器密码
    "
      }
    }
    interact
    

    4.3 执行角本文件

    执行角本文件,打包并上传到服务器

    ./npmbuild.sh

    4.4 登陆后台页面

    http://test.haimait.com

    已经成功部署到线上了

    4.5 更新前端代码到服务器

    重复4.3步骤,就会重新打包并覆盖到线上的dist目录文件了

  • 相关阅读:
    一段获取windows环境变量的代码
    尝试word2007的blog发布
    如何求一表所有行所有字段实际占用的空间
    如何查询全表扫描SQL
    Oracle 33个等待事件
    如何使用RMAN
    如何使用Diagnostics工具监控应用服务器
    如何查询每行数据的数据块信息
    如何理解recursive calls,db block gets和consistent gets
    如何编写批处理与SQLPLUS(例子)
  • 原文地址:https://www.cnblogs.com/haima/p/13234853.html
Copyright © 2011-2022 走看看