部署到自己的云服务器 封面
Vapor 教程

部署到自己的云服务器

本地能跑通只是第一步,让别人也能通过域名访问,才算真正交付。这篇讲最实用的路径:买一台 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 连它。

为什么用 Docker:它打包了整个运行环境,换机器、换同事电脑都能一键复现,避免「在我机器上能跑」的经典惨剧。

四、构建并运行 Vapor 应用

把代码推到服务器(或 git clone),然后构建发布版本:

swift build -c release
# 或用工具箱
vapor build --env production

启动应用,并让它监听所有网卡(否则外网访问不到):

vapor run --hostname=0.0.0.0 --port=8080

0.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 服务。余下的就是不断加功能、写测试、做监控。拿起键盘就是干——教程只是地图,真正的路况得你自己跑才知道。


本系列其他文章