goframe 打包部署

mysql 数据库

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

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

打包应用

查看打包配置

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

生成的文件在 temp/linux_amd64/reURL

部署应用

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

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

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

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

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

创建部署脚本

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

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 文件确认应用是否启动成功!

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

但是这样还不能被外网访问到因为是本地服务 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 为以下内容

sh 复制代码
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/ 不出意外会显示这个页面

https 访问

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

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

添加证书

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

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

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

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

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

配置 https

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

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

然后执行 systemctl reload nginx 重启 nginx

sh 复制代码
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 配置完成了

往期文章

相关推荐
CopyLower几秒前
Automattic 裁员16%,Matt Mullenweg称此举旨在提升盈利能力并增强投资实力
面试·职场和发展
好_快18 分钟前
Lodash源码阅读-baseProperty
前端·javascript·源码阅读
风象南31 分钟前
基于Spring Boot与大模型的自然语言数据库交互实践:智能语义化更新操作实现
java·spring boot·后端
BillKu34 分钟前
java后端对时间进行格式处理
java·开发语言·前端
excel36 分钟前
webpack 格式化模块工厂 第 二 节
前端
excel37 分钟前
webpack 格式化模块工厂 第 三 节
前端
小石潭记丶38 分钟前
sqlalchemy查询json
java·前端·json
好_快3 小时前
Lodash源码阅读-baseMatchesProperty
前端·javascript·源码阅读
好_快3 小时前
Lodash源码阅读-hasPath
前端·javascript·源码阅读
褚瑱琅3 小时前
T-SQL语言的压力测试
开发语言·后端·golang