15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати
30.10.2024
1 +1

Sites-Enabled та Sites-Available: Повний посібник для NGINX та Apache

NGINX та Apache залишаються двома найбільш домінуючими веб-серверами в Інтернеті — і не без причини. Обидва мають багатий досвід використання, високо конфігуровані та здатні обслуговувати складні веб-сайти з високим трафіком з легкістю. Одна з найважливіших концепцій для будь-якого системного адміністратора, який керує сервером на базі Linux, — це розуміння того, як ці веб-сервери обробляють конфігурацію веб-сайтів через структуру каталогів sites-available та sites-enabled.

Незалежно від того, чи ви запускаєте один веб-сайт або керуєте десятками віртуальних хостів на плані VPS Hosting, оволодіння цією моделлю конфігурації дасть вам точний контроль над тим, які сайти активні, які знаходяться на етапі підготовки та як розподіляються ресурси вашого сервера.

Цей посібник надає комплексний, покроковий огляд того, як увімкнути, вимкнути та керувати веб-сайтами за допомогою NGINX та Apache на системах Linux.

Розуміння sites-available та sites-enabled

Як NGINX, так і Apache використовують двокаталогову модель для розділення конфігурації сайту від активації сайту. Цей архітектурний шаблон елегантний у своїй простоті та надзвичайно потужний на практиці.

sites-available

Каталог /etc/nginx/sites-available/ або /etc/apache2/sites-available/ діє як бібліотека всіх можливих конфігурацій сайтів. Кожен веб-сайт, який ви маєте намір розміщувати на сервері, отримує свій власний файл конфігурації, збережений тут. Важливо, що файли в цьому каталозі не активні — вони визначають конфігурацію, але не обслуговують жодного трафіку, поки не будуть явно увімкнені.

sites-enabled

Каталог /etc/nginx/sites-enabled/ або /etc/apache2/sites-enabled/ містить символічні посилання, які вказують на файли конфігурації в sites-available. Лише сайти з активним симлінком у цьому каталозі завантажуються веб-сервером та обслуговуються відвідувачам.

Це розділення пропонує кілька ключових переваг:

  • Неруйнівне вимкнення: Ви можете деактивувати сайт без видалення його конфігурації.
  • Швидке розгортання: Підготовка нового сайту — це просто створення симлінка.
  • Чиста організація: Усі конфігурації існують в одному місці, незалежно від того, активні вони чи ні.

Керування веб-сайтами за допомогою Apache

1. Конфігурація віртуальних хостів Apache

Apache використовує віртуальні хости для обслуговування кількох веб-сайтів з одного екземпляра сервера. Кожен веб-сайт отримує свій власний файл конфігурації, який повідомляє Apache про те, як обробляти вхідні запити для цього домену — включаючи коренева каталог документів, шляхи логування, псевдоніми сервера та інше.

Файли конфігурації для віртуальних хостів Apache зберігаються в:

/etc/apache2/sites-available/

#### Створення файлу конфігурації віртуального хоста

Щоб створити файл конфігурації для сайту під назвою test.oo.md, виконайте:

sudo nano /etc/apache2/sites-available/test.oo.md.conf

Всередині файлу визначте блок віртуального хоста:

<VirtualHost *:80>
    ServerAdmin admin@test.oo.md
    ServerName your_domain_or_IP
    ServerAlias www.test.oo.md
    DocumentRoot /var/www/test.oo.md

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

> Примітка: Замініть your_domain_or_IP на вашу фактичну назву домену або IP-адресу сервера. Директива ServerAlias дозволяє Apache відповідати на поддомен www також.

Збережіть та закрийте файл, коли закінчите.

2. Увімкніть сайт за допомогою a2ensite

Після того, як файл конфігурації на місці, активуйте сайт за допомогою команди a2ensite (Apache 2 Enable Site):

sudo a2ensite test.oo.md.conf

Ця команда автоматично створює символічне посилання з sites-available на sites-enabled:

/etc/apache2/sites-enabled/test.oo.md.conf -> /etc/apache2/sites-available/test.oo.md.conf

Сайт тепер готовий до обслуговування, але зміни не набудуть чинності, поки Apache не буде перезавантажено.

3. Перевірте конфігурацію Apache

Перед перезавантаженням Apache завжди перевіряйте синтаксис вашої конфігурації, щоб виявити будь-які помилки:

sudo apachectl configtest

Успішний результат покаже:

Syntax OK

Якщо є помилки, Apache опише проблему та номер рядка — виправте їх перед продовженням.

4. Перезавантажте Apache, щоб застосувати зміни

sudo systemctl reload apache2

Використання reload замість restart є кращим у виробничих середовищах, оскільки воно застосовує нову конфігурацію без розривання активних з’єднань.

5. Вимкніть сайт за допомогою a2dissite

Щоб взяти сайт в офлайн без видалення його конфігурації, використовуйте команду a2dissite:

sudo a2dissite test.oo.md.conf

Це видаляє символічне посилання з sites-enabled. Файл конфігурації в sites-available залишається недоторканим. Перезавантажте Apache, щоб застосувати:

sudo systemctl reload apache2

Керування веб-сайтами за допомогою NGINX

1. Конфігурація блоку сервера NGINX

NGINX використовує блоки сервера — функціональний еквівалент віртуальних хостів Apache. Файли конфігурації блоку сервера зберігаються в:

/etc/nginx/sites-available/

#### Створення файлу конфігурації блоку сервера

Щоб створити файл конфігурації для test.oo.md, виконайте:

sudo nano /etc/nginx/sites-available/test.oo.md

Визначте блок сервера всередині файлу:

server {
    listen 80;
    server_name test.oo.md www.test.oo.md;

    root /var/www/test.oo.md;
    index index.html index.htm;

    access_log /var/log/nginx/test.oo.md_access.log;
    error_log  /var/log/nginx/test.oo.md_error.log;

    location / {
        try_files $uri $uri/ =404;
    }
}

> Пояснення ключових директив:

> – listen 80 — Інструктує NGINX слухати HTTP-трафік на порту 80.

> – server_name — Визначає, на які назви доменів цей блок відповідає.

> – root — Встановлює каталог коренева документів для файлів сайту.

> – try_files — Намагається обслужити запитаний файл або каталог; повертає 404, якщо не знайдено.

2. Увімкніть сайт, створивши символічне посилання

На відміну від Apache, NGINX не надає вбудовану команду на кшталт a2ensite. Замість цього ви вручну створюєте символічне посилання:

sudo ln -s /etc/nginx/sites-available/test.oo.md /etc/nginx/sites-enabled/

Це пов’язує файл конфігурації з каталогом sites-enabled, роблячи його придатним для завантаження NGINX.

3. Перевірте конфігурацію NGINX

Завжди перевіряйте конфігурацію NGINX перед перезавантаженням:

sudo nginx -t

Успішна перевірка повертає:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Якщо повідомляються помилки, перегляньте вказані рядки у вашому файлі конфігурації та виправте їх перед продовженням.

4. Перезавантажте NGINX, щоб застосувати зміни

sudo systemctl reload nginx

Як і з Apache, reload плавно застосовує зміни конфігурації без переривання активних з’єднань — завжди краще за повне restart у живих середовищах.

5. Вимкніть сайт у NGINX

Щоб вимкнути сайт, видаліть його символічне посилання з каталогу sites-enabled:

sudo rm /etc/nginx/sites-enabled/test.oo.md

Потім перезавантажте NGINX, щоб застосувати зміну:

sudo systemctl reload nginx

Файл конфігурації в sites-available зберігається та може бути повторно увімкнений у будь-який час.

Швидкий довідник: Керування сайтами Apache та NGINX

ЗавданняКоманда ApacheКоманда NGINX
Створити файл конфігураціїnano /etc/apache2/sites-available/site.confnano /etc/nginx/sites-available/site
Увімкнути сайтsudo a2ensite site.confsudo ln -s /etc/nginx/sites-available/site /etc/nginx/sites-enabled/
Перевірити конфігураціюsudo apachectl configtestsudo nginx -t
Перезавантажити веб-серверsudo systemctl reload apache2sudo systemctl reload nginx
Вимкнути сайтsudo a2dissite site.confsudo rm /etc/nginx/sites-enabled/site

Найкращі практики керування сайтами за допомогою NGINX та Apache

1. Один файл конфігурації на сайт

Завжди створюйте спеціальний файл конфігурації для кожного домену або поддомену в каталозі sites-available. Змішування кількох сайтів в один файл створює проблеми з обслуговуванням та значно ускладнює усунення несправностей.

2. Завжди перевіряйте перед перезавантаженням

Зробіть неухильною звичкою запускати apachectl configtest або nginx -t перед кожним перезавантаженням. Помилка синтаксису у файлі конфігурації може вивести з ладу всі сайти на сервері — не лише той, який ви редагуєте.

3. Використовуйте контроль версій для файлів конфігурації

Для серверів, які розміщують кілька сайтів або складні конфігурації, відстежуйте ваші файли конфігурації за допомогою Git:

cd /etc/nginx/sites-available/
git init
git add .
git commit -m "Initial configuration snapshot"

Це дає вам повну історію змін та можливість миттєво повернутися до відомого хорошого стану.

4. Завжди примусово використовуйте HTTPS з SSL-сертифікатами

Обслуговування сайтів через простий HTTP більше неприйнятно. Налаштуйте SSL-сертифікати для кожного сайту, яким ви керуєте. Let’s Encrypt надає безкоштовні, автоматично поновлювані сертифікати та безперебійно інтегрується як з Apache (через mod_ssl та Certbot), так і з NGINX.

Після отримання сертифіката оновіть блок сервера або віртуальний хост, щоб слухати на порту 443 та перенаправляти весь HTTP-трафік на HTTPS.

5. Налаштуйте комплексне логування

Завжди визначайте директиви access_log та error_log для кожного сайту. Логи — ваша перша лінія захисту при діагностиці проблем, розслідуванні інцидентів безпеки або аналізі закономірностей трафіку. Зберігайте логи в файлах, специфічних

15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати