念念不忘,必有迴響

Golang在Linux下的部署

  国庆前期网络不好的确挺闹心的,接下来应该会慢慢好起来吧。
  断断续续的用 beego + vue-element-admin 写的小站也基本弄完了(普通的CURD,效果站,低调,低调。。。),主要想通过这个过程了解一下Go的使用。开发环境是在Windows下,移到Linux上部署,貌似也不是很繁琐。

Linux下安装Golang

  • 下载 Go 语言文件
    wget https://studygolang.com/dl/golang/go1.13.1.linux-amd64.tar.gz
  • 解压二进制文件到 /usr/local 目录
    sudo tar -xzf go1.13.1.linux-amd64.tar.gz -C /usr/local
  • 使用 vi 在环境变量配置文件 /etc/profile 中增加如下内容:
    # 设置go的环境变量
    export PATH=$PATH:/usr/local/go/bin
    # 指定gopath工作路径
    export GOPATH=/www/golang
    # 启用 Go Modules 功能
    export GO111MODULE=on
    # 配置 GOPROXY 代理
    export GOPROXY=https://goproxy.cn,direct
  • 查看go版本
    go version // 如果提示没有该命令,运行 source /etc/profile

部署

  • 获取git仓库代码
    git clone ...
  • 使用 screen 启动/常驻go进程
    screen -S go_start go run main.go --daemon // screen -S 会话描述 运行的命令 --daemon
    // 如果一切正常,访问IP:port即可访问项目
  • nginx 配置反向代理,配置80端口

    server {
    add_header Strict-Transport-Security "max-age=31536000";
    
    listen 80;
    listen 443 ssl http2;
    server_name  gvb.hezhizheng.com;  #golang.video.blog
    
    ssl on;  
    ssl_certificate ssl.cer;   
    ssl_certificate_key ssl.key;   
    ssl_session_timeout  5m;  
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;  
    ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;  
    ssl_prefer_server_ciphers  on;
    
    # 强制跳转https
    if ($server_port !~ 443){
        rewrite ^/.*$ https://$host$uri;
    }
    
    if ($http_host !~ "^gvb.hezhizheng.com$") {
        rewrite  ^(.*)    https://gvb.hezhizheng.com$1 permanent;
    }
    
    charset utf-8;
    access_log  /home/a.com.access.log;
    
    # sm.sm 代理
    location ^~/sm.ms/ {
         proxy_pass https://sm.ms/;
         proxy_method POST;
    }
    
    location /(css|js|fonts|img)/ {
        access_log off;
        expires 1d;
    
        root "/path/to/app_a/static";
        try_files $uri @backend;
    }
    
    location / {
        try_files /_not_exists_ @backend;
    }
    
    location @backend {
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host            $http_host;
    
        proxy_pass http://127.0.0.1:8966; # 反向代理的端口
    }
    }

VUE 打包之后在beego中的静态访问配置

// 配置这个倒是花了一点时间,暂时的解决方案
// 在 main.go 的 bee.Run 之前配置静态文件的映射
vueStaticDir := beego.AppConfig.String("vueStaticDir") // app.conf 配置文件中的绝对路径

beego.SetStaticPath("/vue-admin", vueStaticDir+"index.html")
beego.SetStaticPath("/vue-admin/css",vueStaticDir+"css")
beego.SetStaticPath("/vue-admin/fonts",vueStaticDir+"fonts")
beego.SetStaticPath("/vue-admin/img",vueStaticDir+"img")
beego.SetStaticPath("/vue-admin/js",vueStaticDir+"js") 

-- END

写的不错,赞助一下主机费

扫一扫,用支付宝赞赏
扫一扫,用微信赞赏

暂无评论~~