部署到自己的云服务器
本地能跑通只是第一步,让别人也能通过域名访问,才算真正交付。这篇讲最实用的路径:买一台 Ubuntu 云服务器,用 Docker 跑数据库,把 Vapor 应用跑起来,再用 nginx 把 80/443 转给 8080。
一、部署有哪些选择
官方早年提供过 Vapor Cloud,但把项目部署到自己买的云服务器更可控、也更常见于生产。整体思路是:服务器上装好 Swift 运行环境(或 Docker),启动应用,再用反向代理暴露到公网。
二、准备一台 Ubuntu 服务器
任意云厂商买一台 Ubuntu(20.04 / 22.04 均可)实例,拿到公网 IP。登录后先装基础工具:
sudo apt update
sudo apt install -y git curl
curl -sL https://install.swiftenv.sh | bash或者直接用 Docker 镜像,省去在服务器上装 Swift 工具链的麻烦——这也是更推荐的方式。
三、用 Docker 跑数据库
Docker 比虚拟机轻,一条命令就能起一个 PostgreSQL 容器:
docker run --name postgres \
-e POSTGRES_DB=vapor \
-e POSTGRES_USER=vapor \
-e POSTGRES_PASSWORD=password \
-p 5432:5432 \
-d postgres这样数据库就在容器里跑起来了,应用通过 postgres://vapor:password@localhost:5432/vapor 连它。
四、构建并运行 Vapor 应用
把代码推到服务器(或 git clone),然后构建发布版本:
swift build -c release
# 或用工具箱
vapor build --env production启动应用,并让它监听所有网卡(否则外网访问不到):
vapor run --hostname=0.0.0.0 --port=80800.0.0.0 表示「接受来自任意网卡的请求」,8080 是你的应用端口。生产环境通常会用 supervisor 或 systemd 把它托管成后台服务,避免终端一关进程就死。
五、用 nginx 做反向代理
让用户访问标准的 80(HTTP)/443(HTTPS),再由 nginx 转发到 8080:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}配好后在云控制台放开 80/443 端口,把域名解析(A 记录)指向服务器 IP,用户就能用 https://yourdomain.com 访问你的 API 了。要上 HTTPS,用 Certbot 一行命令申请免费证书即可。
六、收尾
走到这一步,你已经有了一个「能在公网访问、带数据库、可扩展」的 Vapor 服务。余下的就是不断加功能、写测试、做监控。拿起键盘就是干——教程只是地图,真正的路况得你自己跑才知道。