VPS для Rust: деплой actix-web и axum
Rust даёт скорость C и безопасность памяти, а на выходе — компактный бинарник. Соберём release-версию, поднимем сервис на actix-web или axum под systemd и закроем его nginx с TLS.
Содержание
Почему Rust хорош на сервере
['Rust-сервисы компилируются в нативный бинарник без сборщика мусора и рантайма. Производительность близка к C, а модель владения памятью исключает целый класс ошибок ещё на этапе компиляции.', 'На практике это означает предсказуемую задержку под нагрузкой и низкое потребление ресурсов. Веб-фреймворки actix-web и axum держат десятки тысяч запросов в секунду даже на скромном железе.', '- Нет GC — стабильная латентность без пауз.
- Компактный бинарник — деплой как у Go.
- Async на tokio — эффективная работа с I/O при малом числе потоков.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS для RustУстановка инструментов сборки
['Собирать Rust удобнее локально или в CI, но если нужно на сервере — ставим rustup. Для сборки понадобится компоновщик и заголовки.', "sudo apt update && sudo apt install -y build-essential pkg-config libssl-dev nginx\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\nsource $HOME/.cargo/env"]
Сборка release
['Профиль release включает оптимизации и убирает отладочную информацию. Бинарник появится в target/release.', 'cargo build --release\nls -lh target/release/myapp', 'Пример минимального сервиса на axum, который слушает локальный порт:', 'use axum::{routing::get, Router};\n\n#[tokio::main]\nasync fn main() {\n let app = Router::new().route("/", get(|| async { "ok" }));\n let listener = tokio::net::TcpListener::bind("127.0.0.1:8080").await.unwrap();\n axum::serve(listener, app).await.unwrap();\n}', 'Готовый бинарник копируем на VPS: scp target/release/myapp appuser@SERVER_IP:/opt/rustapp/. Если целевая система отличается от вашей по версии glibc, соберите статически под musl — тогда бинарник запустится на любом дистрибутиве без оглядки на системные библиотеки.', 'rustup target add x86_64-unknown-linux-musl\ncargo build --release --target x86_64-unknown-linux-musl']
systemd для Rust-сервиса
['Как и для любого бинарника, надёжнее всего доверить запуск systemd — он поднимет процесс после сбоя и ребута.', '[Unit]\nDescription=Rust web service\nAfter=network.target\n\n[Service]\nUser=appuser\nWorkingDirectory=/opt/rustapp\nExecStart=/opt/rustapp/myapp\nRestart=always\nRestartSec=3\nEnvironment=RUST_LOG=info\n\n[Install]\nWantedBy=multi-user.target', 'sudo systemctl daemon-reload\nsudo systemctl enable --now rustapp\njournalctl -u rustapp -f', 'Переменная RUST_LOG управляет уровнем логирования через крейт tracing или env_logger — на проде обычно ставят info, а debug включают точечно при разборе инцидентов. Для усиления изоляции добавьте в секцию Service директивы песочницы: NoNewPrivileges, ProtectSystem=strict и PrivateTmp — они ограничивают процесс, если приложение вдруг скомпрометируют.']
nginx, TLS и фаервол
['Наружу выставляем nginx, приложение остаётся на 127.0.0.1. Для WebSocket-соединений (частый кейс в actix) добавьте проброс заголовков Upgrade.', 'server {\n listen 80;\n server_name example.com;\n location / {\n proxy_pass http://127.0.0.1:8080;\n proxy_set_header Host $host;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection "upgrade";\n proxy_set_header X-Real-IP $remote_addr;\n }\n}', 'sudo nginx -t && sudo systemctl reload nginx\nsudo certbot --nginx -d example.com']
Ресурсы, железо и типичные грабли
['Сборка Rust любит CPU и диск: релиз крупного проекта заметно быстрее идёт на NVMe. На тарифах MAATRIX это AMD EPYC + NVMe, поэтому cargo build не превращается в ожидание, а рантайм-задержки остаются низкими. Локации UK и США плюс оплата из России (карта РФ, СБП, крипта, MAAT) закрывают вопрос зарубежного сервера.', '- Мало RAM для сборки — линковка большого крейта может упасть по OOM; собирайте в CI или дайте swap.
- Забыли --release — debug-бинарник в разы медленнее.
- Нет libssl-dev — крейты с OpenSSL не соберутся.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS для RustЧастые вопросы
actix-web или axum?
axum легче интегрируется с экосистемой tower и tokio, actix-web чуть быстрее в синтетике. Для большинства задач разница непринципиальна — берите тот, что удобнее по API.
Можно ли собирать Rust прямо на VPS?
Да, но сборка требует RAM и CPU. На младшем тарифе лучше собирать в CI и копировать готовый бинарник.
Нужен ли Docker для Rust?
Не обязательно. Статический бинарник запускается напрямую под systemd. Docker имеет смысл, если у вас уже контейнерный пайплайн.