Alibaba Cloud Linux 3 部署指南
适用系统:Alibaba Cloud Linux 3 / OpenAnolis。
本文采用最简单的部署方式:在本地编译 Linux 程序,上传服务器后手动运行。约定使用 root 用户,部署目录为 /root/flow-talk-server,服务端口为 8080。
本地需要 Go 1.25.4 和 Make;服务器不需要安装 Go、Git 或 Make。
1. 本地打包
在本地项目目录执行:
bash
cd flow-talk-server
make package默认生成 Linux amd64 包:
text
dist/flow-talk-server-linux-amd64.tar.gz如果服务器执行 uname -m 显示 aarch64,改为生成 arm64 包:
bash
make package TARGET_ARCH=arm64打包过程会先运行测试。压缩包包含 Linux 二进制、配置目录和空的 static/ 目录,不会带上本机已有的上传文件。
2. 修改配置
编辑配置文件:
bash
cd /root/flow-talk-server
vim conf/app.ini至少检查以下配置:
ini
[mysql]
host = 127.0.0.1
port = 3306
username = root
password = 请替换成数据库密码
database = flow_talk
parse_time = true
[http]
addr = :8080
mode = release
[jwt]
secret = 请替换成至少32位随机字符串
ttl = 24h
[redis]
enabled = false单实例部署不需要 Redis,保持 enabled=false 即可。多实例部署时再启用 Redis,并配置 addr、password 等字段。
3. 启动服务
bash
# 解压
tar -zxvf flow-talk-server-linux-amd64.tar.gz
# 首次上传或替换二进制后,赋予程序执行权限
chmod 755 flow-talk-server
# 保持进程
nohup ./flow-talk-server > server.log 2>&1 &日志会直接显示在当前终端。关闭终端或按 Ctrl+C 会停止服务。
4. 验证服务
bash
curl -i http://127.0.0.1:8080/api/users接口需要登录,因此返回 401 Unauthorized 也表示服务已经正常监听。验证时需要另开一个 SSH 终端执行命令。
如果直接通过 8080 端口访问,还需要在阿里云 ECS 安全组中放行 8080/tcp。
5. Nginx 反向代理(可选)
线上环境建议让 Nginx 对外提供 80/443 端口,Go 服务只监听本机 8080。
bash
dnf install -y nginx
nginx
vim /etc/nginx/conf.d/flow-talk-server.conf示例配置:
nginx
server {
listen 80;
server_name example.com;
client_max_body_size 100m;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $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;
}
location /api/ws {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 3600s;
}
}检查并重载配置:
bash
nginx -t
nginx -s reload6. 停止
查看是否运行
bash
pgrep -af flow-talk-server
ss -lntp | grep ':8080'如果看到进程 PID,例如:
bash
20596 ./flow-talk-server手动停止
bash
kill 20596确认一下
bash
pgrep -af flow-talk-server
ss -lntp | grep ':8080'两条命令都没有输出,才表示已经停止