likes
comments
collection
share

goframe 打包部署

作者站长头像
站长
· 阅读数 44

mysql 数据库

执行 create database kkdl; 创建数据库;

导入对应 sql 文件,sql 文件存放在项目manifest/deploy/sql目录;

goframe 打包部署

打包应用

查看打包配置

goframe 打包部署

执行 gf build 打包应用程序,完成后控制台输出如下:

goframe 打包部署

生成的文件在 temp/linux_amd64/reURL

部署应用

作者使用了阿里云99\1年的云服务器 2核2g

进入服务器控制台修改服务器的安全组将需要使用的端口开放 goframe 打包部署

goframe 打包部署

作者使用finalshell作为连接服务器的工具

goframe 打包部署

填写完服务器信息保存然后双击进行登录

goframe 打包部署

将打包后的文件上传到服务器部署目录中 作者的部署目录是 /usr/local/kk/kkdl/

创建部署脚本

将以下内容保存为deployment.sh文件并上传到部署目录

#!/bin/bash

# 定义端口号
PORT=6001

# 根据端口杀死进程
PID=$(netstat -nlp | grep :$PORT | awk '{print $7}' | cut -d/ -f1)
if [ -n "$PID" ]; then
    echo "Killing process $PID"
    kill -9 $PID
fi

# 赋予 ./reURL 文件可执行权限
chmod +x ./reURL

# 执行 nohup ./reURl --gf.gcfg.file=./config.pro.yaml > nohup.log 2>&1 & 进行部署
nohup ./reURL --gf.gcfg.file=./config.pro.yaml > nohup.log 2>&1 &

echo "Deployment completed"

执行部署脚本

执行 sh deployment.sh 进行部署完成后可查看 nohup.log 文件确认应用是否启动成功!

goframe 打包部署 启动成功与本地开发启动成功输出信息类似,失败则会输出对应的错误提示

但是这样还不能被外网访问到因为是本地服务 127.0.0.1:6001 需要使用 nginx 将服务映射出去

阿里云安装nginx

执行 yum update && yum -y install nginx

执行 systemctl start nginx 启动 nginx

http 访问

执行 /etc/nginx/conf.d 进入到 nginx 配置文件目录

修改 app.conf 为以下内容

server {
    listen       6001;
    server_name  goframe.org;

    access_log   /var/log/kkdl.log;
    error_log    /var/log/kkdl.log;

    location ~ .*.(gif|jpg|jpeg|png|js|css|eot|ttf|woff|svg|otf)$ {
        access_log off;
        expires    1d;
        root       /var/www/kkdl/public;
        try_files  $uri @backend;
    }

    location / {
        try_files $uri @backend;
    }

    location @backend {
        proxy_pass                 http://127.0.0.1:6001;
        proxy_redirect             off;
        proxy_set_header           Host             $host;
        proxy_set_header           X-Real-IP        $remote_addr;
        proxy_set_header           X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}

然后执行 systemctl reload nginx 重启 nginx

浏览器输入 http://你的服务器公网地址:6001/swagger/ 不出意外会显示这个页面

goframe 打包部署

https 访问

需要一个域名将域名解析到云服务器的公网地址

域名是需要备案的一般云服务器是那个云服务商就在那进行备案,比如作者的云服务器是阿里云那域名就需要在阿里云进行备案才可以正常使用,备案一般需要一个周以上

goframe 打包部署

添加证书

证书可以在阿里云申请免费的,时间虽然短了点凑合用(腾讯云免费证书是一年!)

goframe 打包部署

申请完成后下载证书文件然后登录云服务器进行以下操作

执行 /etc/nginx/conf.d 进入到 nginx 配置文件目录

执行 mkdir cert 创建存放ssl证书的目录

执行 cd cert 进入存放ssl证书的目录,上传ssl证书到目录

goframe 打包部署

配置 https

阿里云安全组开放 443 端口 (443 https 默认端口)

进入 /etc/nginx/conf.d 修改 app.conf 为以下内容

然后执行 systemctl reload nginx 重启 nginx

server {
    #HTTPS的默认访问端口443。
     #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
     listen 443 ssl;
     
     #填写证书绑定的域名
     server_name vaebe.cn;
 
     #填写证书文件绝对路径
     ssl_certificate /etc/nginx/conf.d/cert/vaebe.cn.pem;
     #填写证书私钥文件绝对路径
     ssl_certificate_key /etc/nginx/conf.d/cert/vaebe.cn.key;
 
     ssl_session_cache shared:SSL:1m;
     ssl_session_timeout 5m;
     
     #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
     #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
     ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

     #表示优先使用服务端加密套件。默认开启
     ssl_prefer_server_ciphers on;


    access_log   /var/log/kkdl-access.log;
    error_log    /var/log/kkdl-error.log;

    location ~ .*.(gif|jpg|jpeg|png|js|css|eot|ttf|woff|svg|otf)$ {
        access_log off;
        expires    1d;
        root       /var/www/kkdl/public;
        try_files  $uri @backend;
    }

    location / {
        try_files $uri @backend;
    }
    
    # 将 ws 升级为 wss
    # http://127.0.0.1:6001 是服务本地启动的端口
    location /api/login/ws {
        proxy_pass http://127.0.0.1:6001/api/login/ws;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 600s; # Set a longer timeout if necessary
    }

    location @backend {
        proxy_pass                 http://127.0.0.1:6001;
        proxy_redirect             off;
        proxy_set_header           Host             $host;
        proxy_set_header           X-Real-IP        $remote_addr;
        proxy_set_header           X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}

访问 https://你的域名 进行访问测试,如果显示访问不通请重启云服务器

显示这个页面就代表 https 配置完成了

goframe 打包部署

往期文章

转载自:https://juejin.cn/post/7348474490757054504
评论
请登录