Деплой Swift приложения на VPS: пошаговое руководство от А до Я

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Введение: Зачем деплоить Swift на VPS?

Swift — это не только язык для iOS и macOS приложений. Благодаря фреймворку Vapor и нативной поддержке Linux, вы можете создавать высокопроизводительные серверные решения на Swift. Деплой такого приложения на VPS (Virtual Private Server) открывает возможности для создания собственных API, веб-сайтов и микросервисов.

В этой статье мы разберём полный цикл деплоя Swift-приложения на удалённый сервер с Ubuntu 22.04. Вы узнаете, как подготовить окружение, скомпилировать проект, настроить автозапуск и прокси-сервер. Руководство подойдёт как для новичков, так и для опытных разработчиков, желающих систематизировать знания.

1. Подготовка сервера и установка Swift

Первый шаг — аренда VPS (рекомендуем 2 ядра, 2 ГБ RAM). После подключения по SSH выполните обновление системы и установку зависимостей.

1.1. Базовые настройки

ssh root@ваш-сервер-ip
apt update && apt upgrade -y
apt install curl git build-essential pkg-config libssl-dev zlib1g-dev -y

1.2. Установка Swift Toolchain

Для Ubuntu 22.04 используйте официальный дистрибутив Swift. Проверьте актуальную версию на swift.org.

# Скачать Swift 5.9 (пример)
wget https://download.swift.org/swift-5.9-release/ubuntu2204/swift-5.9-RELEASE/swift-5.9-RELEASE-ubuntu22.04.tar.gz

# Распаковать
tar -xzf swift-5.9-RELEASE-ubuntu22.04.tar.gz
mv swift-5.9-RELEASE-ubuntu22.04 /usr/share/swift

# Добавить в PATH
echo 'export PATH=/usr/share/swift/usr/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

# Проверка
swift --version

2. Компиляция и настройка приложения

Рассмотрим деплой типичного Vapor-приложения. Предположим, ваш проект уже находится в Git-репозитории.

2.1. Клонирование и сборка

cd /var/www/
git clone https://github.com/ваш-username/ваш-репозиторий.git myapp
cd myapp

# Сборка в режиме Release
swift build -c release

После успешной компиляции исполняемый файл будет находиться в .build/release/Run. Для Vapor по умолчанию используется порт 8080.

2.2. Запуск и тестирование

# Временный запуск (Ctrl+C для остановки)
.build/release/Run serve --hostname 0.0.0.0 --port 8080

Проверьте работу: откройте в браузере http://ваш-сервер-ip:8080. Если видите ответ — всё работает.

3. Настройка systemd для автозапуска

Чтобы приложение запускалось автоматически после перезагрузки сервера, создадим systemd-сервис.

3.1. Создание сервиса

nano /etc/systemd/system/myapp.service

Вставьте следующий код (замените пути на свои):

[Unit]
Description=Swift Vapor Application
After=network.target

[Service]
Type=simple
User=www-data
Group=www-data
WorkingDirectory=/var/www/myapp
ExecStart=/var/www/myapp/.build/release/Run serve --hostname 127.0.0.1 --port 8080
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

3.2. Активация и запуск

systemctl daemon-reload
systemctl enable myapp
systemctl start myapp
systemctl status myapp

Если статус active (running) — сервис работает. Теперь приложение будет стартовать автоматически.

4. Настройка Nginx и SSL (HTTPS)

Прокси-сервер Nginx необходим для обработки статики, балансировки и добавления SSL-сертификата.

4.1. Установка Nginx

apt install nginx -y

4.2. Конфигурация прокси

Создайте файл конфигурации для вашего домена или IP:

nano /etc/nginx/sites-available/myapp
server {
    listen 80;
    server_name ваш-домен.ru;

    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;
    }
}

Активируйте сайт и перезагрузите Nginx:

ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

4.3. Установка SSL через Certbot

apt install certbot python3-certbot-nginx -y
certbot --nginx -d ваш-домен.ru

Следуйте инструкциям. После успешной установки ваш сайт будет доступен по HTTPS.

Заключение

Мы разобрали полный цикл деплоя Swift-приложения на VPS: от установки компилятора до настройки HTTPS. Теперь ваше приложение работает стабильно, автоматически перезапускается при сбоях и защищено SSL-сертификатом.

Рекомендации для продакшена:

  • Используйте Docker для изоляции окружения.
  • Настройте мониторинг через Prometheus или аналоги.
  • Регулярно обновляйте Swift Toolchain и зависимости.
  • Для баз данных (PostgreSQL, MySQL) настройте отдельный сервис.

Swift на сервере — это быстро, безопасно и современно. Начните деплой уже сегодня!

Блоги

Рекомендаций по книгам