Введение: Зачем деплоить 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 на сервере — это быстро, безопасно и современно. Начните деплой уже сегодня!