- Опубликовано: 23 июн 2026
- 144
Поднимаем свой сайт на VPS за вечер: честный пошаговый путь
Часть 7 из 12 · Серия «Свой сервер с нуля»
К этому моменту у вас уже многое есть. Сервер арендован, вы заходите на него по SSH, вход закрыт ключом — мы прошли это в прошлых статьях. Не хватает главного: собственно сайта. Того, что откроется по вашему адресу, с зелёным замочком в браузере, и будет вашим.
Честно о том, что нас ждёт. За вечер вы реально успеете поднять универсальный каркас, на котором стоит любой сайт: веб-сервер, ваши файлы, домен и HTTPS. В качестве примера возьмём простой сайт — так нагляднее, — но эти же шаги лежат в основе и лендинга, и блога на WordPress, и приложения. Первые восемьдесят процентов пути у всех одинаковые.
И ещё честность: вряд ли всё взлетит идеально с первого раза. Где-то закрадётся опечатка в конфиге, где-то придётся подождать, пока домен «доедет». Это не ваша криворукость — так у всех. Я заранее покажу, где обычно спотыкаются.
На выходе у вас будет: ваши файлы, которые отдаёт nginx, по адресу https://ваш-домен.ru.
Что понадобится на старте
Сервер с доступом по SSH — он у нас есть. Домен — его покупают отдельно у регистратора, в стоимость VPS он не входит и обходится в считаные сотни рублей в год. Файлы сайта — для начала хватит одного index.html с парой строк. И час-два спокойного вечера без спешки.
Шаг 0. Быстрый чек сервера
Зайдите по SSH, обновите систему и убедитесь, что работаете под обычным пользователем с sudo, а не под root:
sudo apt update && sudo apt upgrade
Если вы шли по прошлым статьям, тут уже всё готово, и можно идти дальше.
Шаг 1. Ставим веб-сервер
Веб-сервер — это программа, которая принимает запросы браузеров и отдаёт им страницы. Берём nginx: лёгкий, быстрый и для нового проекта выбор по умолчанию, как мы разбирали в статье про холивар с Apache.
sudo apt install nginx
Если на сервере включён файрвол (а после статьи про ошибки новичка он у вас включён), не забудьте открыть веб-порты — ровно так же, как когда-то не забыли про SSH:
sudo ufw allow 'Nginx Full'
Теперь откройте в браузере http://IP_вашего_сервера. Должна появиться заглушка «Welcome to nginx». Это первый маленький триумф: на вашем сервере уже что-то живёт и отвечает всему интернету.
Шаг 2. Кладём файлы сайта
По умолчанию nginx отдаёт страницы из папки /var/www/html. Но чище завести под свой сайт отдельную папку — так проще, когда сайтов станет несколько:
sudo mkdir -p /var/www/ваш-сайт
Положите туда index.html. Для проверки достаточно простейшей страницы — пары строк текста хватит. Увидеть, что сервер отдаёт именно ваше содержимое, на этом этапе важнее красоты. Файлы с компьютера на сервер удобно доставлять по scp или через SFTP-клиент — это тот же SSH, только для передачи файлов.
Шаг 3. Направляем домен на сервер
Этот шаг делается не на сервере, а в личном кабинете у регистратора домена. В настройках DNS нужно добавить A-запись, которая связывает ваш домен с IP-адресом сервера: имя @ указывает на IP вашего сервера, и отдельной записью то же самое для www.
Здесь — самая честная оговорка вечера. Изменения DNS расходятся по интернету не мгновенно. Обычно это минуты, но иногда — несколько часов. Если домен сразу не открылся, это не ошибка, это нормальная задержка. Пока он «едет», можно спокойно заниматься следующим шагом.
Шаг 4. Настраиваем nginx под ваш домен
Теперь объясним nginx, что для вашего домена нужно отдавать файлы из вашей папки. Создайте конфиг сайта в /etc/nginx/sites-available/ваш-сайт примерно такого содержания:
server {
listen 80;
server_name ваш-домен.ru www.ваш-домен.ru;
root /var/www/ваш-сайт;
index index.html;
}
Включите этот сайт, создав ссылку на него в папке sites-enabled, и обязательно проверьте конфигурацию перед применением:
sudo nginx -t
Вот именно здесь чаще всего и вылезает опечатка — забытая точка с запятой, лишняя скобка. Не переживайте: nginx прямо скажет, в какой строке проблема. Поправили, добились ответа «syntax is ok» — и перезагружаете:
sudo systemctl reload nginx
Если домен уже доехал, http://ваш-домен.ru теперь отдаёт ваш сайт.
Шаг 5. Включаем HTTPS — бесплатно
Тот самый зелёный замочек — это шифрование соединения, и сегодня оно бесплатно. Сертификаты выдаёт Let's Encrypt, а ставит и настраивает их утилита certbot:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d ваш-домен.ru -d www.ваш-домен.ru
Certbot сам получит сертификат, пропишет всё в конфиг nginx и настроит переадресацию с http на https — вам останется ответить на пару вопросов. Важное условие: к этому моменту домен уже должен указывать на сервер (шаг 3 должен «доехать»), иначе certbot не сможет подтвердить, что домен действительно ваш.
Сертификат живёт 90 дней, но беспокоиться об этом не нужно — certbot настраивает автоматическое продление и обновляет его сам, без вашего участия.
Готово — и что вы сейчас видите
Откройте https://ваш-домен.ru. Замок в адресной строке, ваш домен, ваше содержимое. Вот ради этого момента всё и затевалось — от чёрного экрана пару статей назад до работающего сайта с шифрованием на собственном адресе.
Честно про то, что дальше
Если ваш сайт — статика, лендинг или обычный HTML, вы закончили. Всё работает.
Если планируется WordPress или динамика, добавляется ещё один слой. Для WordPress это PHP и база данных (MariaDB или MySQL). Для приложения на Node или Python — среда выполнения и менеджер процессов, который держит его постоянно запущенным. Но — и это важно — первые пять шагов остаются ровно теми же. Сервер, nginx, домен и HTTPS — это фундамент, на который потом ставится любой движок. Так что считайте, что половину работы для будущего блога вы уже сделали сегодня. Сам движок — тема отдельного вечера.
Если что-то не открылось
Не открывается даже по IP — проверьте, запущен ли nginx (sudo systemctl status nginx) и пропускает ли файрвол порты 80 и 443. Открывается по IP, но не по домену — значит, DNS ещё не доехал или A-запись смотрит не на тот адрес. Certbot не выдал сертификат — почти всегда дело в том, что домен пока не указывает на сервер или закрыт порт 80. Ошибка при перезагрузке nginx — запустите sudo nginx -t, он покажет строку с проблемой.
| Шаг | Что делаем |
|---|---|
| 1 | Ставим nginx: sudo apt install nginx |
| 2 | Кладём файлы в /var/www/ваш-сайт |
| 3 | A-запись у регистратора → IP сервера |
| 4 | Конфиг в sites-available, nginx -t, reload |
| 5 | HTTPS: sudo certbot --nginx -d ваш-домен.ru |
За один вечер вы прошли путь от пустого сервера до сайта с замочком на своём домене. Получилось не с первого клика — это нормально, опечатка в конфиге и задержка DNS случаются у всех. Главное другое: теперь это ваш сервер и ваш сайт, и вы понимаете, из каких деталей он собран. А это уже совсем не то же самое, что нажать «опубликовать» в чужом конструкторе.
Серия «Свой сервер с нуля»
Полный цикл — от выбора хостинга до рабочего сайта с почтой, Docker и бэкапами. Вы читаете часть 7 из 12.
- VDS, VPS, хостинг, облако — что это
- Nginx vs Apache: холивар, который пора закрыть
- Зачем арендовать сервер, если есть хостинг за 100 ₽
- SSH для тех, кто боится чёрного экрана
- Как не запороть сервер в первый день: топ ошибок
- SSH-ключи за 10 минут: вход без пароля
- Поднимаем свой сайт на VPS за вечер — вы здесь
- Ставим WordPress на свой VPS
- Свой почтовый сервер — героизм или мазохизм?
- Docker на VPS: спасение или пушка по воробьям
- Настраиваем домен и SSL, чтобы браузер не ругался
- Бэкапы, которые реально спасут
← Предыдущая: SSH-ключи за 10 минут: вход без пароля · Следующая: Ставим WordPress на свой VPS →
Была статья полезной: