1. 1
  2. 2
  3. 3
  4. 4

# конспект · шаг 4 из 4

Конспект: установка и раскладка файлов

выжимка - её можно унести в заметки

Как поставить nginx и где потом искать его файлы.

Два способа

Контейнер - для песочницы: правки конфигов делаются на своей машине, reload применяет их не роняя сервер.

$  команда
docker run --rm --name lab -p 8080:80 \
  -v ~/nginx-lab/conf.d:/etc/nginx/conf.d:ro \
  -v ~/nginx-lab/www:/var/www/site:ro \
  nginx:1.31-alpine
docker exec lab nginx -t && docker exec lab nginx -s reload

Пакет - для сервера:

$  команда
sudo apt install nginx        # Debian, Ubuntu
sudo dnf install nginx        # Fedora, RHEL, Rocky

Где что лежит

Что Где обычно
главный конфиг /etc/nginx/nginx.conf
свои сайты /etc/nginx/conf.d/*.conf (или sites-available + sites-enabled в Debian)
логи /var/log/nginx/{access,error}.log
корень по умолчанию /usr/share/nginx/html или /var/www/html

Словарь для пришедших из другого мира

Если ты из… То server {} - это…
Django/Flask не приложение, а виртуальный хост перед ним
WordPress/Apache аналог VirtualHost, но без .htaccess: конфиг только глобальный
мира контейнеров процесс, который сам ничего не выполняет из твоего кода

Три команды и проверка

$  команда
nginx -t          # проверить синтаксис, ничего не применяя
nginx -s reload   # применить конфиг без разрыва соединений
nginx -T          # напечатать собранный конфиг целиком
curl -i http://localhost:8080/   # проверять ответ этим, а не браузером

Браузер кеширует и подставляет своё; curl -i показывает ровно то, что отдал сервер, вместе с заголовками. -H 'Host: shop.local' позволяет притвориться другим доменом, не трогая /etc/hosts.

Две ловушки первого дня

duplicate default server - в сборках Debian рядом лежит sites-enabled/default с тем же признаком. Такой блок на пару адрес-порт может быть только один. Ищется grep -rn default_server /etc/nginx/, лечится удалением ссылки, а не правкой чужого файла.

403 и Permission denied в error_log - права нужны на ВХОД в каждый каталог пути, а не только на файл. Вся цепочка показывается одной командой namei -l /path/to/index.html. Домашний каталог обычно закрыт, поэтому сайты держат в /var/www.

Ловушки джокера

  • Ставить пакет из репозитория дистрибутива и ждать свежих возможностей. Версия там обычно на год-два старше; для новых директив подключают официальный репозиторий nginx.
  • Править nginx.conf вместо conf.d/. Свои настройки живут отдельным файлом - иначе обновление пакета однажды спросит, чью версию оставить.

Комментарии

Пока нет комментариев. Будь первым!

Оставить комментарий

Комментарий появится после проверки. Email не публикуется. Войти, чтобы не вводить имя каждый раз.