Виртуальный хостинг прост, но VPS даёт скорость, root-доступ и отсутствие шумных соседей. Это руководство за примерно двадцать минут доводит свежий сервер на Ubuntu 24.04 или 22.04 до работающего сайта с HTTPS на Nginx. Каждую команду можно копировать как есть.
Что вам понадобится
- VPS как минимум с 1 vCPU и 1 ГБ RAM (наших базовых тарифов хватает для большинства небольших сайтов).
- Доменное имя, указывающее на IP-адрес сервера (см. наше руководство по привязке домена к VPS).
- Доступ по SSH под пользователем с правами sudo. Если сервер совсем новый, сначала выполните базовую защиту.
1. Установите Nginx
sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginx
Откройте IP-адрес сервера в браузере. Вы должны увидеть стандартную приветственную страницу Nginx. Если нет, проверьте, что брандмауэр разрешает порты 80 и 443:
sudo ufw allow "Nginx Full"
sudo ufw status
2. Создайте папку сайта
sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com
echo "<h1>It works</h1>" > /var/www/example.com/html/index.html
Везде заменяйте example.com на ваш собственный домен.
3. Добавьте блок server
sudo nano /etc/nginx/sites-available/example.com
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Включите его, проверьте конфигурацию и перезагрузите:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
4. Добавьте бесплатный HTTPS с Let's Encrypt
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
Certbot редактирует ваш блок server, перенаправляет HTTP на HTTPS и устанавливает таймер, который автоматически продлевает сертификат. Проверить таймер можно командой systemctl list-timers | grep certbot.
5. Ускорьте работу
Включите сжатие и кеширование в браузере для статических файлов. Добавьте это внутрь блока server:
gzip on;
gzip_types text/css application/javascript application/json image/svg+xml;
location ~* \.(css|js|png|jpg|jpeg|webp|svg|woff2)$ {
expires 30d;
add_header Cache-Control "public";
}
После этого перезагрузите Nginx. Для динамических сайтов, например WordPress, установите PHP-FPM и передавайте ему запросы .php или поставьте перед ними плагин кеширования.
Типичные проблемы
- 403 Forbidden: Nginx не может прочитать папку. Проверьте владельца и то, что все родительские каталоги исполняемы (
chmod o+x). - Certbot завершается ошибкой: домен ещё не указывает на сервер или порт 80 заблокирован.
- Всё ещё показывается страница по умолчанию: удалите
/etc/nginx/sites-enabled/defaultи перезагрузите.