Как установить и настроить статический сайт на VPS
Статический сайт на VPS — это самый быстрый, безопасный и дешёвый в обслуживании способ разместить в интернете набор готовых HTML, CSS и JS: визитку, портфолио, документацию или промо-страницу. Разместить статический сайт на VPS проще, чем любую CMS: не нужны база данных и PHP, достаточно веб-сервера, который отдаёт файлы. В этом руководстве развернём статический сайт с нуля на Nginx: установим веб-сервер, загрузим файлы, настроим виртуальный хост под ваш домен, выставим права, выпустим бесплатный SSL и включим кэширование для максимальной скорости. Сразу о том, почему статика так хороша и когда она подходит. Раз сервер просто отдаёт готовые файлы, страница грузится мгновенно, выдерживает огромный трафик на минимальном VPS и почти неуязвима для взлома — нет базы, которую можно сломать, и нет исполняемого кода, через который проникают. Обратная сторона: контент правится в файлах, а не через админку, поэтому статика идеальна для сайтов, которые меняются нечасто. Если вам нужен именно быстрый и надёжный сайт-визитка или лендинг без сложной динамики — это ваш вариант. Установку выполняем по SSH под пользователем с sudo.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Установка веб-сервера Nginx
Для отдачи статики возьмём Nginx — он лёгкий, быстрый и создан в том числе для этой задачи. Обновите систему и установите его:
apt update && apt -y upgrade
apt -y install nginx
Запустите и включите автозапуск:
systemctl enable --now nginx
Откройте порты веб-сервера в фаерволе:
ufw allow 'Nginx Full'
ufw allow OpenSSH
Проверьте, что Nginx работает: откройте IP сервера в браузере — покажется стандартная страница приветствия Nginx. Если она видна, веб-сервер готов принимать сайты. Apache тоже справился бы с задачей, но для чистой статики Nginx экономичнее по памяти и быстрее под нагрузкой, поэтому берём именно его.
Загрузка файлов сайта
Создайте каталог для сайта. Хорошая практика — держать сайты в /var/www/ в папке с именем домена:
mkdir -p /var/www/vashdomen.ru/html
Загрузите туда файлы сайта. Если они у вас локально, удобно перенести их по SFTP/SCP. Например, скопировать локальную папку на сервер:
scp -r ./mysite/* root@IP_сервера:/var/www/vashdomen.ru/html/
В каталоге обязательно должен быть файл index.html — это точка входа, которую Nginx отдаёт при обращении к домену. Если сайт собран из шаблона или конструктора, просто выгрузите весь его каталог. После загрузки назначьте владельцем файлов пользователя веб-сервера и корректные права:
chown -R www-data:www-data /var/www/vashdomen.ru/html
find /var/www/vashdomen.ru/html -type d -exec chmod 755 {} \;
find /var/www/vashdomen.ru/html -type f -exec chmod 644 {} \;
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPSНастройка виртуального хоста Nginx
Чтобы Nginx отдавал ваш сайт по домену, создайте конфиг виртуального хоста. Создайте файл /etc/nginx/sites-available/vashdomen.ru с указанием корня сайта на каталог html, точки входа index.html и имени сервера — вашего домена. Ключевые директивы: root /var/www/vashdomen.ru/html;, index index.html; и server_name vashdomen.ru www.vashdomen.ru;. Директива try_files $uri $uri/ =404; обеспечит корректную отдачу файлов и понятную ошибку 404 для несуществующих.
Активируйте конфиг символической ссылкой и проверьте синтаксис перед перезагрузкой:
ln -s /etc/nginx/sites-available/vashdomen.ru /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
Если nginx -t сообщает об ошибке, он укажет файл и строку — исправьте и повторите. Чтобы дефолтная страница Nginx не перехватывала запросы, при необходимости удалите симлинк сайта по умолчанию: rm /etc/nginx/sites-enabled/default.
Привязка домена и проверка
Чтобы сайт открывался по адресу, направьте A-запись домена на IP сервера у регистратора домена. Пропишите A-запись для vashdomen.ru и, при желании, для www. Дождитесь распространения DNS и проверьте резолвинг:
dig +short vashdomen.ru
Адрес в ответе должен совпадать с IP вашего VPS. После того как DNS разошёлся, откройте http://vashdomen.ru — увидите свой сайт. Если вместо сайта показывается стандартная страница Nginx, значит запрос не попал в ваш виртуальный хост: проверьте server_name в конфиге и что домен действительно резолвится на сервер. Если 404 — проверьте наличие index.html и правильность пути root.
Выпуск бесплатного SSL Let's Encrypt
HTTPS сегодня обязателен даже для простой визитки — браузеры помечают http-сайты как небезопасные. Выпустите бесплатный сертификат Let's Encrypt через certbot:
apt -y install certbot python3-certbot-nginx
certbot --nginx -d vashdomen.ru -d www.vashdomen.ru
Certbot автоматически пропишет сертификат в конфиг Nginx и предложит включить редирект с HTTP на HTTPS — согласитесь. Для успешного выпуска домен уже должен резолвиться на сервер, а порт 80 быть открыт. Сертификаты действуют 90 дней и продлеваются автоматически по таймеру systemd — вручную следить не нужно. После выпуска сайт откроется по https:// с «замочком».
Кэширование, скорость и обслуживание
Статика и так быстра, но пара настроек Nginx делает её ещё быстрее. Включите сжатие gzip для текстовых файлов (HTML, CSS, JS) — это уменьшает объём передачи в разы. Добавьте заголовки кэширования для статических ресурсов (изображения, шрифты, стили), чтобы браузер повторно не скачивал их — директивой expires с длительным сроком для файлов, которые редко меняются. Эти настройки прописываются в конфиге виртуального хоста.
Обслуживание статического сайта минимально: обновляете файлы — просто перезаписываете их в каталоге сайта, перезагрузка Nginx не нужна. Бэкап тоже прост: держите исходники сайта у себя (или в git-репозитории) — это и есть резервная копия. Держите систему обновлённой (apt update && apt upgrade) и Nginx — тоже. Ресурсов статике почти не нужно, минимального VPS хватает даже под заметный трафик. На VPS MAATRIX при необходимости легко добавить ресурсы без переустановки, если рядом появятся другие сервисы.
Стоит сказать и о том, как удобно вести несколько статических сайтов на одном VPS. Поскольку статика почти не потребляет ресурсов, на одном сервере спокойно живут десятки сайтов-визиток и лендингов: для каждого создаёте отдельный каталог в /var/www/ и отдельный конфиг виртуального хоста с его доменом и server_name. Nginx по имени домена сам направляет запрос в нужный каталог. Такой подход экономичен: вместо оплаты отдельного хостинга под каждую визитку вы держите их все на одном VPS, а SSL для каждого домена выпускаете тем же certbot. Это частый сценарий для веб-студий и фрилансеров, ведущих сайты нескольких клиентов.
Отдельно про безопасность статики: хотя взламывать тут почти нечего, базовую гигиену соблюдайте. Закройте лишние порты фаерволом, оставив 80, 443 и SSH, настройте вход по SSH-ключу вместо пароля, отключите листинг директорий (он и так выключен по умолчанию) и не храните в каталоге сайта ничего лишнего вроде архивов с исходниками или служебных файлов — всё, что лежит в корне, потенциально доступно снаружи по прямой ссылке.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPSОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Чем статический сайт лучше сайта на CMS?
Он грузится мгновенно, выдерживает большой трафик на минимальном сервере и почти неуязвим для взлома — нет базы и исполняемого кода. Минус — контент правится в файлах, а не через админку, поэтому статика подходит для сайтов, которые меняются нечасто.
Нужны ли база данных и PHP?
Нет. Статический сайт — это готовые HTML, CSS и JS, которые веб-сервер просто отдаёт. Ни база, ни PHP не требуются, что и делает такой сайт быстрым и безопасным. Достаточно одного Nginx.
Обязателен ли SSL для простого сайта?
Да. Браузеры помечают http-страницы как небезопасные, а поисковики учитывают HTTPS в ранжировании. Выпуск Let's Encrypt через certbot бесплатен и занимает минуту, так что настраивать его нужно всегда.
Хватит ли минимального VPS?
Для статики — с большим запасом: отдача готовых файлов почти не нагружает сервер, и минимального тарифа достаточно даже под высокий трафик. На VPS MAATRIX ресурсы увеличиваются без переустановки, если добавите динамику или другие сервисы.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.