Skip to content

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 reload

6. 停止 ​

查看是否运行

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'

两条命令都没有输出,才表示已经停止

基于 MIT 许可发布