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
文件并上传到部署目录
#!/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 为以下内容
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
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
配置完成了
往期文章
转载自:https://juejin.cn/post/7348474490757054504