Swift应用部署:VPS、Docker与云平台——从创意到生产环境

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

为什么Swift不仅仅用于移动开发

\n

当听到“Swift”时,第一反应是iOS应用、Xcode和iPhone模拟器。但在过去五年中,这门语言已经发展成为服务器端开发的完整工具。Vapor、Hummingbird、SwiftNIO——这不仅仅是库,而是一个能够与Go和Rust竞争的生态系统。问题在于:许多开发者用Swift编写了出色的后端,但在部署阶段卡住了。熟悉吗?

\n

我自己走过这条路:从“部署到Heroku就忘了”到拥有自己的VPS、Docker和CI/CD。在本文中,我将介绍如何正确部署Swift应用,使它们不会在凌晨3点崩溃,用户也不会写愤怒的邮件。剧透:云平台并不总是银弹,而VPS可能比看起来更可靠。

\n\n

我们要部署什么:一个基于Vapor的示例应用

\n

为了清晰起见,我们使用一个典型的Vapor 4 REST API。这将是一个简单的服务器,只有一个端点,返回JSON。代码是最简的,但足以展示所有部署步骤。

\n\n
// Sources/App/routes.swift\nimport Vapor\n\nfunc routes(_ app: Application) throws {\n    app.get { req async in\n        return "Hello, Swift on Server!"\n    }\n    \n    app.get("api", "health") { req -> HTTPStatus in\n        return .ok\n    }\n}
\n\n

这一切通过swift run或vapor run启动。但在生产环境中没人这样做。我们需要一个稳定的流程:构建、打包、启动和监控。

\n\n

方案1:VPS——老朋友胜过新朋友

\n

虚拟专用服务器(VPS)就像自己的公寓:完全控制,但也需要负责清理。对于Swift来说,如果你想了解系统底层工作原理,这是理想的选择。

\n\n

如何为Swift准备VPS

\n

在DigitalOcean、Hetzner或Vscale上选择Ubuntu 22.04(或24.04)。Swift官方支持Ubuntu,所以不会有问题。

\n\n
    \n
  • 通过SSH连接:ssh root@your-server-ip
  • \n
  • 安装依赖:apt update && apt install -y clang libicu-dev libcurl4-openssl-dev libssl-dev
  • \n
  • 从swift.org下载Swift 5.9+并解压到/usr/local
  • \n
\n\n
# 在Ubuntu上安装Swift的示例\nwget https://download.swift.org/swift-5.9.2-release/ubuntu2204/swift-5.9.2-RELEASE/swift-5.9.2-RELEASE-ubuntu22.04.tar.gz\ntar xzf swift-5.9.2-RELEASE-ubuntu22.04.tar.gz\nmv swift-5.9.2-RELEASE-ubuntu22.04 /usr/local/swift\necho 'export PATH=/usr/local/swift/usr/bin:$PATH' >> ~/.bashrc\nsource ~/.bashrc\nswift --version
\n\n

通过Git + systemd部署

\n

最简单的方法:将仓库克隆到服务器,构建二进制文件,然后作为服务运行。

\n\n
# 在服务器上\ngit clone https://github.com/yourname/your-swift-app.git\ncd your-swift-app\nswift build -c release\ncp .build/release/Run /usr/local/bin/myapp\n\n# 创建systemd单元\nsudo nano /etc/systemd/system/myapp.service
\n\n
[Unit]\nDescription=My Swift App\nAfter=network.target\n\n[Service]\nExecStart=/usr/local/bin/myapp\nWorkingDirectory=/root/your-swift-app\nRestart=always\nUser=root\nEnvironment="PORT=8080"\n\n[Install]\nWantedBy=multi-user.target
\n\n

启动:systemctl enable myapp && systemctl start myapp。完成!现在你的应用程序作为守护进程运行,并在崩溃时自动重启。

\n\n

VPS的优点:完全控制、价格低廉(每月5-10美元)、可以安装任何工具。缺点:需要自己配置监控、更新和安全。如果你的应用增长,需要手动扩展。

\n\n

方案2:Docker——将Swift容器化

\n

Docker解决了“在我的机器上能运行”的问题。你将应用程序与运行环境一起打包,并

博客

书籍推荐