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 Virtual Hosts

Apache използва Virtual Hosts за обслужване на множество уебсайтове от един екземпляр на сървъра. Всеки уебсайт получава свой собствен конфигурационен файл, който казва на Apache как да обработва входящите заявки за този домейн — включително коренната директория на документите, пътищата на логовете, псевдонимите на сървъра и още много.

Конфигурационните файлове за Apache виртуални хостове се съхраняват в:

/etc/apache2/sites-available/

#### Създаване на конфигурационен файл на Virtual Host

За да създадете конфигурационен файл за сайт, наречен 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 Server Block

NGINX използва Server Blocks — функционалния еквивалент на Apache Virtual Hosts. Конфигурационните файлове на блока на сървъра се съхраняват в:

/etc/nginx/sites-available/

#### Създаване на конфигурационен файл на Server Block

За да създадете конфигурационен файл за 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 директиви за всеки сайт. Логовете са вашата първа линия на защита при диагностициране на проблеми, разследване на инциденти със сигурност или анализ на модели на трафик. Съхранявайте логовете в файлове, специфични за сайта, вместо да разчитате на глобалния лог по подразбиране.

6. Използвайте описателни, последователни имена на файлове

15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало