Как установить сайт на VPS: Nginx, домен и SSL за 30 минут
За 20–30 минут вы запустите свой сайт на VPS: с доменом, веб-сервером Nginx и бесплатным HTTPS-сертификатом. Инструкция подходит для статических сайтов (HTML, CSS, JS) и для сборок на React, Vue и других фреймворках. Про PHP и WordPress — коротко в шаге 6.
Что понадобится:
- VPS на Ubuntu 24.04 или 22.04 (от 1 vCPU и 1 ГБ RAM для небольшого сайта)
- IP-адрес сервера и пароль root или SSH-ключ — их присылает хостинг после заказа
- Домен, например
example.com, и доступ к его DNS-настройкам - Файлы сайта на вашем компьютере
Во всех командах ниже замените example.com на ваш домен, а 203.0.113.10 на IP вашего сервера.
Шаг 1. Подключитесь к серверу и обновите систему
Откройте Терминал (macOS, Linux) или PowerShell (Windows) и подключитесь по SSH: ssh root@203.0.113.10
При первом подключении SSH спросит, доверяете ли вы серверу, — введите yes. Затем введите пароль: символы при вводе не отображаются, это нормально.
Обновите пакеты: apt update && apt upgrade -y
Шаг 2. Привяжите домен к серверу
Зайдите в панель регистратора домена или DNS-хостинга (например, Cloudflare) и создайте две A-записи:
- Тип
A, имя@, значение203.0.113.10 - Тип
A, имяwww, значение203.0.113.10
Обычно записи начинают работать за 5–30 минут, но иногда до 24 часов. Проверить можно командой на своём компьютере: ping example.com. Если в ответе виден IP вашего сервера, домен привязан.
Шаг 3. Установите Nginx и откройте порты
Nginx — быстрый веб-сервер, который будет отдавать ваш сайт посетителям. Установите его: apt install nginx -y
Откройте в фаерволе SSH и веб-порты 80 и 443. Порт SSH открываем первым, иначе после включения фаервола вы потеряете доступ к серверу. Выполните по очереди:
ufw allow OpenSSHufw allow 'Nginx Full'ufw enable
Откройте в браузере http://203.0.113.10. Если видите страницу «Welcome to nginx!», веб-сервер работает.
Шаг 4. Загрузите сайт и настройте Nginx
Создайте папку для сайта на сервере: mkdir -p /var/www/example.com
Загрузите файлы. Выполните команду на своём компьютере, а не на сервере, находясь в папке с сайтом: scp -r ./* root@203.0.113.10:/var/www/example.com/
Удобнее с графическим интерфейсом? Подойдёт FileZilla или Cyberduck: протокол SFTP, хост — IP сервера, порт 22. В корне папки должен лежать файл index.html.
Создайте конфиг сайта на сервере: nano /etc/nginx/sites-available/example.com
Вставьте в него этот текст:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
location / { try_files $uri $uri/ /index.html; }
}
Сохраните файл: Ctrl + O, Enter, затем Ctrl + X. Затем включите сайт, проверьте конфиг и перезагрузите Nginx, выполнив по очереди:
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/rm /etc/nginx/sites-enabled/defaultchown -R www-data:www-data /var/www/example.comnginx -tsystemctl reload nginx
Команда nginx -t должна ответить syntax is ok. Теперь сайт открывается по адресу http://example.com.
Шаг 5. Подключите бесплатный SSL (HTTPS)
Без HTTPS браузеры помечают сайт как «Не защищён», а поисковики понижают его в выдаче. Бесплатный сертификат выдаёт Let's Encrypt. Установите certbot: apt install certbot python3-certbot-nginx -y
Получите сертификат: certbot --nginx -d example.com -d www.example.com
Certbot попросит email для уведомлений и согласие с условиями. Он сам пропишет сертификат в конфиг Nginx и включит перенаправление с HTTP на HTTPS.
Сертификат действует 90 дней и продлевается автоматически. Проверить, что автопродление работает: certbot renew --dry-run
Готово: сайт открывается по https://example.com с замком в адресной строке.
Шаг 6. Если сайт на PHP или WordPress
Для PHP-сайтов дополнительно установите PHP и базу данных: apt install php-fpm php-mysql mariadb-server -y
В конфиге Nginx из шага 4 замените index index.html; на index index.php index.html; и добавьте перед последней скобкой } строку обработки PHP:
location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.3-fpm.sock; }
Версия в пути (php8.3) зависит от системы: в Ubuntu 22.04 это php8.1. Узнать точную можно командой ls /run/php/. После правки выполните nginx -t и systemctl reload nginx.
Для WordPress скачайте архив с wordpress.org, распакуйте его в /var/www/example.com, создайте базу данных в MariaDB и откройте сайт в браузере: дальше установщик WordPress проведёт вас по шагам.
Частые ошибки
- Сайт не открывается по домену. DNS ещё не обновились. Подождите до 24 часов и проверьте
ping example.com. - 403 Forbidden. Нет файла
index.htmlили неверные права. Проверьте файлы и выполнитеchown -R www-data:www-data /var/www/example.com. - 502 Bad Gateway. Не запущен PHP-FPM. Выполните
systemctl restart php8.3-fpm. - Certbot выдаёт ошибку. Домен не указывает на сервер или закрыт порт 80. Проверьте A-записи и
ufw status. - В WordPress не работают ссылки на страницы. В строке
location /замените/index.htmlна/index.php?$args. - Nginx не перезапускается. В конфиге ошибка:
nginx -tпокажет строку, где она.
Итог
Ваш сайт работает на собственном VPS: с доменом, быстрым веб-сервером Nginx и бесплатным HTTPS. Чтобы обновить сайт, просто загрузите новые файлы в /var/www/example.com — перезапускать Nginx не нужно.