Встановлення та налаштування сервера Apache. Встановлення та конфігурація веб-сервера Apache з підтримкою PHP, JSP та MySQL на Windows XP Конфігураційний файл apache

Головна / Усунення несправностей

andew

2016-07-23T17:54:43+00:00

2017-08-25T04:44:37+00:00

7613

У статті наведено огляд конфігурації web сервера Apache в Ubuntu server при стандартному варіанті інсталяції LAMP в Ubuntu. Наведено логіку та структуру організації конфігураційних файлів веб-сервера. Описано призначення основних конфігів сервера. Дано базові Linux Ubuntuкоманди для маніпуляції конфігурацією, налаштування та управління веб-сервером Apache. Розглянуто сайт за промовчанням, який створюється в процесі встановлення Apache. Стаття буде корисною при налаштуванні та адмініструванні свого LAMP сервера.

Як додати підтримку PHPяк оброблювач сценаріїв у Apacheна Ubuntuабо Windowsдетально описано у статті Встановлення PHP7 на Windowsв розділі Налаштування.

Apache Default WEB Page

У процесі виконання стандартної інсталяції веб-сервера Apacheв Ubuntu serverстворюється тестовий сайт, який служить для перевірки працездатності веб-сервера після його встановлення. Цей сайт, за замовчуванням, налаштований так, що дозволяє звернення з браузера лише до файлів та каталогів усередині /var/wwwдиректорії Ubuntu server. Якщо, після завершення інсталяції Apache, ви відкриєте у браузері веб-сторінку за адресою IPвашого web сервера, то побачите стартову сторінкусервера - Apache2 Ubuntu Default Page. Це буде насамперед говорити про те, що Apacheвдало встановився та працює. Ця сторінка фізично розташовується на сервері у файлі /var/www/html/index.htmlі за її налаштування та виведення у браузері відповідає конфіг віртуального хоста за замовчуванням ( /etc/apache2/sites-available/000-default.conf), який визначає віртуальний хост(сайт) для каталогу /var/www/htmlі створюється під час інсталяції сервера Apache. Відповідно, якщо ви розмістите ваші файли в цій папці, вони будуть оброблятися web сервером. Також на цій Default Pageу секції Configuration Overviewви побачите схематичне уявлення структури конфігураційних файлів сервера. Тут потрібно розуміти, що структура, назви та розташування конфігів Apacheв Ubuntu відрізняютьсявід загальноприйнятої схеми, що зроблено для зручності керування сервером. Але тут є один аспект, який полягає в тому, що якщо ви раніше не були знайомі з організацією каталогів в домашній директорії Apacheна Ubuntu, то ця схема може лише заплутати, т.к. в ній представлені не всі папки, а лише каталоги, в яких розміщуються символьніпосилання на активованіконфігураційні файли. Тому, для більш правильного розуміння, дивіться повну схему каталогів і фалів домашньої директорії веб-сервера Apache, розташовану нижче в цій статті. З цінного в секції веб-сторінки Apache - це посилання на manDebianдля команд a2enmod, a2dismod, a2ensite, a2dissite, a2enconf, a2disconf, які використовуються для активації та деактивації тих чи інших видів конфігураційних файлів і будуть детально описані . Також тут сказано, що передачі команд web серверу ( started/stopped etc.) потрібно звертатися до /etc/init.d/apache2або до apache2ctlщо так само є особливістю сервера в Ubuntu. На сервері Ubuntu у файлі /usr/share/doc/apache2/README.Debian.gzви зможете знайти повну документацію по Apache.

Домашній каталог Apache в Ubuntu

За замовчуванням, домашнійкаталог web сервера Apacheв Ubuntuперебувати по /etc/apache2/шляхи у файловій системі. У цьому каталозі та його підкаталогах розміщуються всі конфігураційні файли Apache. Змінити значення шляху домашньої директорії web-сервера можна директивою ServerRoot "/etc/apache2" в головному конфізі apache2.conf. Там, за умовчанням, директива ServerRoot закоментована, що рівнозначно її значенню як "/etc/apache2" ( завершального слюша не повинно бути в цій директиві!). Значення шляху домашньої директорії Apache(ServerRoot ) потрібно серверу, щоб він знав, де файлової системи йому слід шукати свої конфігураційні файли. Так само значення ServerRoot може підставлятисясервером у деяких директивах, які очікують як аргумент шляху файловій системі Ubuntu. Тому, у таких випадках, якщо шлях вказати без початковогосліша, то Apacheсприйме це як відноснийшлях по відношенню до своєї домашньоїдиректорії. Так, наприклад, якщо вказати директиву AuthUserFile .htpasswd , то в такому варіанті Apacheінтерпретуватиме зазначений шлях як відноснийі перетворить його на /etc/apache2/.htpasswd, підставивши спереду значення своєї дороги домашньоїдиректорії.

Структура домашньої директорії Apache в Ubuntu

В процесі стандартною установки WEBсервера Apacheв Ubuntuстворюється наступна структура файлів та каталогів домашньої директорії веб-сервера:

/etc/apache2/ ...............................Домашня директорія Apache в Ubuntu - ServerRoot |-- conf-available......................директорія, що містить різні конфіги | `-- charset.conf ...................файл для вказівки кодувань | `-- localized-error-pages.conf .....файл для завдання сторінок помилок | `-- other-vhosts-access-log.conf ...файл для завдання логів віртуальних хостів | `-- security.conf ..................файл для директив безпеки | `-- serve-cgi-bin.conf .............файл для директив конфігурації CGI |-- conf-enabled активованіконфіги з conf-available| `-- @ ..............................ПОСИЛКИ на активовані конфіги з conf-available |-- mods-available......................директорія, що містить конфіги встановлених модулів Apache | `-- ... ........................доступні конфіги модулів Apache |-- mods-enabled........................директорія, містить ПОСИЛАННЯ на активованіконфіги модулів з mods-available| `-- @ ..............................ПОСИЛКИ на активовані конфіги модулів Apache |-- sites-available.....................директорія містить доступні конфіги віртуальних хостів | `-- 000-default.conf ...............файл віртуального хоста за замовчуванням для 80 порту, створений при інсталяції Apache | `-- default-ssl.conf ...............файл віртуального хоста за замовчуванням для порту 443, створений при інсталяції Apache |-- sites-enabled.......................директорія, містить ПОСИЛАННЯ на активованіконфіги віртуальних хостів з sites-enabled| `-- @000-default.conf ..............посилання на активований конфіг віртуального хоста |-- apache2.conf........................ГОЛОВНИЙконфіг web сервера Apache в Ubuntu |-- envvars .............................файл з налаштуваннями шляхів для оточення Apache |-- magic ...............................Файл скриптів для модуля mime_magic(за замовчуванням цей модуль не активний) |-- ports.conf ..........................файл для завдання портівна яких прийматиме підключення Apache

Наведені приклади представлені з OS Ubuntu server 16.04 LTS, проте теж буде і в інших версіях і дистрибутивах Ubuntu як у серверному варіанті, так і в desktop варіанті.

Логіка організації конфігурації Apache

Як було зазначено вище, в Ubuntuвикористовується відміннавід оригінальної організаційна структура конфігураційних файлів та директорій для веб-сервера Apache.

По перше, в Ubuntu, конфігурація Apacheрозбита на безлічрізних конфігів щодо них функціональномупризначенню. Наприклад, директиви, що задають портдля сервера, винесені в окремий файл ports.conf. Директиви, відповідальні за ті чи інші параметри безпеки сервера, винесені у файл security.conf. Тим самим, директиви як би згруповані за своїм сенсуокремі конфігураційні файли. Це досить логічно та зручно при читанні, правці, активації та деактивації конфігів. При такому підході кожен окремо взятий файл стає меншим і є вузькоспеціалізованоючастиною конфігурації. Однак, потрібно розуміти, що таке дроблення зроблено виключно для зручності та автоматизації налаштування та технічно, якщо ви захочете, ви можете записати всі директиви та налаштування в один файл, просто працювати з таким файлом буде не так зручно.

По-друге: центромвсієї конфігурації виступає головнийконфіг Apacheвеб сервера - apache2.confфайл. Саме цей файл у першучерга шукає та читає web сервер Apacheпід час старту або перезавантаження. А вже в цьому файлі за допомогою директив Include, у місці їх вказівки, виконується підключення та завантаження всіх інших заданих конфігів. Таким чином, всі конфігураційні файли об'єднуються в єдинуконфігурацію web сервера і відбувається це, коли Apacheчитає файли по порядкуїх підключення, починаючи з головногоконфіг. З цього випливає важливе зауваження - порядок дотримання директив у конфігурації Apacheі відповідно, порядокпідключення файлів конфігів має значення, оскільки директиви, прочитані сервером пізніше можуть перевизначати директиви, прочитані ним раніше. Це необхідно пам'ятати при налаштуванні сервера.

По-третє: якщо ви подивитеся на структуру каталогів домашньоїдиректорії Apache, то побачите три паридиректорій із назвами виду: префікс_каталогу-available/enabled. Така логічна структура покликана для розподілу ваших конфігів на три групи, виходячи з префіксаназви каталогу, де conf-*це каталоги для інших конфігів, mods-*це каталоги для конфігів модулів Apache та sites-*це каталоги для конфігів ваших віртуальниххостів. Друга частина імені цих каталогів -available/-enabledлогічно вказує на доступні взагалі і лише активнів теперішній моментмомент конфіґі. Так у директоріях *-availableзберігаються всі доступнідля використання файли конфігурації, а вже в каталогах виду *-enabledрозташовані символьні посилання (ярлики) тільки на ті конфіги з *-availableдиректорії, які мають бути прочитані web сервером під час завантаження конфігурації. Apacheчитає лише каталоги виду *-enabledтому застосовуватися тільки ті конфіги, на які в цих каталогах є посилання. Такий підхід дає ще додатковий рівень зручності тим, що дозволяє зберігати всі ваші конфіги в каталогах домашньої директорії сервера, а задіяти тільки необхідніпоточні монети.

По-четверте: директиви конфігурації web сервера Apacheмають контекст(), у якому вони діють. Концепція контекстдирективи вказує на те, де, на якому рівні та в якому конфізі дана директива можевикористовуватись. Одна і та ж директива може бути дозволена до використання як в одному вигляді контексту, так і в декількох видах контексту. Якщо директива буде використана/записана у неприпустимому для неї вигляді контексту, то буде помилкавеб-сервера Apache при завантаженні конфігурації, яка призведе до його зупинки. Тому, при написанні ваших директив завжди звертайте увагу на контекст їх застосування, який завжди вказується в документації до директиви на сайті Apache.

У п'ятих: потрібно розуміти, що Apacheвиконує читання та застосування всіх активних конфігів тільки при стартіабо перезавантаження. Після старту Apache вже не перечитує конфігурацію. Винятком є ​​файл .htaccess, який є локальним файлом рівня каталогусайту та перечитується при кожномузвернення до цього каталогу сайту. Відповідно, якщо ви зробили зміни параметрів конфігурації поза .htaccessфайлу, то для набуття ним чинності необхідно перезавантажити webсервер Apache.

Види контексту директив:

  • server config - глобальнийрівень директиви для використання у файлах загальної конфігурації сервера поза і поза контейнерів та позафайлу .htaccess;
  • virtual host- рівень віртуальногохоста для застосування директиви в контейнері;
  • directory- рівень каталогу, директива повинна використовуватися всередині контейнерів , , , ;
  • .htaccess- рівень локального каталогусайту, директива може застосовуватись у файлі .

Команди управління конфігурацією

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

Команди увімкнення/вимкнення конфігурації

Для активації та деактивації тих чи інших конфігів у Ubuntuнадаються командипомічники співзвучні з available/enabledі префіксомкаталогу. Наприклад, команда a2enconf, яку можна розшифрувати як apache2-enable-conf, виконує активацію зазначеного в її аргументі конфігураційного файлу з conf-availableкаталогу шляхом створення на нього символьної посиланняв каталозі conf-enabled. Команда a2disconfвиконує зворотну дію, тобто. видаляє це посилання. Подібна логіка застосовна і до інших команд: a2enconf/a2disconf, a2enmod/a2dismod, a2ensite/a2dissite. Але ви також можете вручну створити/видалити символьні посилання на потрібні вам конфіги в директоріях виду *-enabled.

Увага: для набрання змін конфігів слід виконати перезавантаження конфігурації WEB сервера Apache.

a2enconf/a2disconf

Для включення або вимкнення потрібного конфігу з каталогу conf-availableу конфігурацію сервера використовуйте команди:

Увімкнути конфіг:

sudo a2enconf

Вимкнути конфіг:

sudo a2disconf

a2enmod/a2dismod

Для активації встановленого модуля Apache із каталогу mods-available

Увімкнути модуль Apache

sudo a2enmod

Вимкнути модуль Apache

sudo a2dismod

a2ensite/a2dissite

Для активації конфігурації віртуального хоста з каталогу sites-availableта деактивації його використовуйте команди:

Включити віртуальний хост в Apache

sudo a2ensite

Вимкнути віртуальний хост в Apache

sudo a2dissite

Команди управління Apache

У Ubuntu, завдяки використанню змінних середовища, для звернення до демону httpd web сервера можна застосовувати виклики виду: /etc/init.d/apache2або apache2ctlабо apache2:

sudo/etc/init.d/apache2 sudo apache2ctl sudo apache2

Apache – це ціла родина різних проектів, першим з яких був Web-сервер. Web-сервер представлений демоном httpd, тому проект Apache з розробки Web-сервера називається httpd.

Конфігураційні файли Web-сервера httpd у GNU/Linux у різних дистрибутивах розміщуються у різних каталогах: /etc/httpd/conf/, або /etc/apache2, чи іншому. Головний файл конфігурації називається httpd.conf, причому часто виділені для будь-яких груп налаштувань індивідуальні конфігураційні файли підключаються до httpd.conf за допомогою директиви include.

Загалом налаштування httpd можна розділити на три основні категорії:

r секція глобальних налаштувань;

r налаштування для головного сервера;

r налаштування для віртуальних вузлів.

Крім цих секцій можна виділити налаштування для обробки заданих типів файлів, MIME-розширень та специфікацій обробки національних мов.

До глобальних параметрів сервера відносяться ті з них, які впливають на роботу сервера Apache в цілому. Далі наводяться основні глобальні налаштування:

r ServerRoot - базовий каталог установки, щодо якого у файловій системі GNU/Linux розміщуються конфігураційні файли Apache, а також деякі файли, необхідні в його роботі;


r PidFile - файл, у який під час запуску сервера Apache заноситься PID

головного процесу сервера;

r LoadModule - команда завантажити модуль розширення Apache, скомпільований у вигляді бібліотеки, що розділяється;

r Timeout - кількість секунд перед надсиланням сигналу про втрату з'єднання;

r KeepAlive - дозвіл або заборона підтримки довготривалих з'єднань, доступних у рамках протоколу HTTP/1.1, що дозволяють залишати з'єднання в нерозірваному стані після надсилання сервером необхідної інформації;

r KeepAliveTimeOut - кількість секунд очікування наступного запиту, після якого довгоживуча з'єднання буде розірвано;

r MaxKeepAliveRequests - максимально можлива кількість запитів, дозволена для довготривалих з'єднань;

r StartServers – кількість дочірніх процесів httpd, які стартують при запуску сервера Apache;

r MinSpareServers - мінімальна кількість очікуваних з'єднань дочірніх процесів httpd (при появі з'єднань запускається стільки копій httpd, щоб кількість очікуваних з'єднань дочірніх процесів була не меншою за цю величину);

r MaxSpareServers - максимальна кількістьчекають з'єднання дочірніх процесів httpd (зайві процеси зупиняються);

r MaxClients - обмеження на максимальну кількість дочірніх процесів httpd, що визначає можливу кількість з'єднань;

r MaxRequestsPerChild - максимальна кількість запитів, яка дозволена обслуговувати одному дочірньому процесу httpd, при досягненні якого він гарантовано зупиняється для виключення можливих витоків пам'яті.

ServerRoot "/etc/httpd" PidFile run/httpd.pid Timeout 120

KeepAlive Off MaxKeepAliveRequests 100


KeepAliveTimeout 15

StartServers
MinSpareServers
MaxSpareServers
ServerLimit
MaxClients

MaxRequestsPerChild 4000

Listen 80

LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule auth_digest_module modules/mod_auth_digest.so LoadModule authn_file_module modules/mod_authn_file.so LoadModule authn_alias_module modules/mod_authn_ndas.

User apache Group apache

Слід зазначити, що модулі можуть бути не тільки підключені за допомогою директиви LoadModule, але й встановлені безпосередньо в Apache код на стадії його компіляції та складання. Щоб визначити, які модулі були встановлені в код на стадії компіляції, виконайте команду httpd –l (приклад 28.2).

$ /usr/sbin/httpd -l Compiled in modules:

core.c prefork.c http_core.c mod_so.c

Зверніть увагу на модуль prefork.c – це один з кількох різних модулів MPM (Multi-Processing Modules), наявних для Apache v2. Ці модулі орієнтовані на різні операційні системи або різні моделі багатозадачної обробки. Наприклад, модуль prefork.c орієнтований на традиційну для UNIX модель породження дочірніх процесів, а worker.c - роботу з потоками.


Серед налаштувань головного сервера найважливіші такі:

r Listen - змушує Apache слухати лише вказаний порт;

r User – користувач, від імені якого будуть запущені процеси httpd;

r Group - група, від імені якої буде запущено дочірні процеси

r DocumentRoot - каталог розміщення файлів Web-сайту;

r UserDir - ім'я каталогу для розміщення особистих Web-сторінок користувачів;

r DirectoryIndex – список імен файлів, який буде переглянутий при спробі доступу до кореневого документа каталогу;

r AccessFileName - ім'я файлу, що містить директиви керуванням доступом до каталогу;

r TypesConfig - задає місцезнаходження файлу конфігурації MIME;

r DefaultType - задає MIME-тип документа за замовчуванням;

r MimeMagicFile - задає місцезнаходження файлу магічних чисел визначення MIME-типу документа;

r HostnameLookups - задає тип занесення інформації про запити клієнтів або за IP-адресою, або на ім'я вузла;

r ErrorLog - файл журналу, до якого записуватимуться будь-які помилки

(повідомлення), що зустрілися в процесі роботи Apache;

r LogLevel – рівень інформативності журналування;

r LogFormat - директива, що визначає формат виведення інформації до журналу;

r CustomLog - вказує місцезнаходження файлу журналу;

r ServerSignature - дозволяє виводити в сторінках, згенерованих сервером Apache, інформацію про версію, віртуальний сайт тощо;

r Alias ​​- встановлює псевдоніми для шляхів доступу до каталогів сервера (довжина рядка псевдоніма менша, ніж довжина рядка шляху доступу);

r ScriptAlias ​​- робить те саме, що і Alias, але для каталогів з CGI-

сценаріями;

r IndexOptions – визначає тип індексування каталогів;

r AddIcon - вказує файл значка для відображення в конкретних ситуаціях, наприклад, при виведенні сторінки з вмістом каталогу різним типом файлів зіставляються різні значки;

r AddIconByEncoding - задає значки для конкретних MIME-кодувань;


r AddIconByType - задає значки для певних MIME-видів документів;

r DefaultIcon - значок за замовчуванням;

r AddDescription - додає рядок коментаря до певних типів документів (наприклад, .gz - gzipped document);

r ReadmeName - задає ім'я файлу README, що додається в кінець списку файлів у каталозі (directory index);

r HeaderName - задає ім'я файлу HEADER, що додається на початок списку файлів у каталозі (directory index);

r IndexIgnore - імена файлів, які ігноруватимуться при індексації;

r AddEncoding - дозволяє браузерам заданим чином обробляти інформацію на льоту (наприклад, відображати вміст стислих gzip-файлів);

r AddLanguage - відображає задані розширення імен файлів на певну мову документа (наприклад, AddLanguage ru .ru);

r AddCharset - задає відображення певного розширення імен файлів на конкретне кодування;

r LanguagePriority - порядок прямування мов;

r AddType - задає відображення розширення імен файлів на тип MIME;

r AddHandler - задає тип обробки розширення імен файлів;

r ErrorDocument - дозволяє налаштовувати повідомлення про помилки;

r BrowserMatch - визначає особливості виведення інформації для браузерів.

У файлі конфігурації httpd.conf часто трапляються умовні директиви виду . З їх допомогою встановлюють такі налаштування Apache, які можливі, якщо є даний модуль (приклад 28.3).

Alias ​​/doc /usr/share/doc

У цьому прикладі встановлено псевдонім doc для каталогу /usr/share/doc. Однак такий псевдонім буде встановлений лише у разі наявності модуля mod_alias.c. Маючи такий псевдонім (за наявності відповідних дозволів), можна буде звертатися за допомогою Web-браузера до вмісту каталогу /usr/share/doc, використовуючи URL http://localhost/doc.


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

Часто Apache поставляється з досить великою документацією в форматі HTML. Наприклад, у дистрибутивах Fedora зазвичай документація на Apache доступна після запуску Apache по URL http://localhost/manual.

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

За промовчанням параметри Apache розташовані у файлі " httpd.conf" в каталозі " conf".

Слід звернути особливу увагу на шлях до файлів конфігураційних файлів Apache і РНР. Вам часто доведеться вказувати шляхи до різних каталогів та файлів. В операційних системах UNIXта Windows застосовуються різні роздільники каталогів. У UNIX використовується пряма коса характеристика (/) у Windows - зворотна (\). У деяких директивах Apache та РНР працюють обидва види роздільників каталогів. Але оскільки Apache і РНР спочатку розроблялися під UNIX, то, застосовуючи їхній "рідний" формат, ви зможете уникнути низки проблем. Тому шляхи у конфігураційних файлах " httpd.conf"і" php.ini" рекомендується писати через слєш у форматі UNIX - "/".

Наприклад:
ScriptAlias ​​"/php_dir/" "c:/php/" Директиви файлу httpd.conf:

Port- Вказує порт TCP, який використовується Apache для встановлення з'єднання. За замовчуванням вказується порт 80. Також можна вказати порт у директиві ServerName.
Port 80 Єдина причина встановлення нестандартного порту - відсутність прав використання стандартного порту. При використанні нестандартного порту, наприклад 8080, номер порту слід вказувати на адресу " http://localhost:8080/".

ServerAdmin- містить задану адресу електронної поштиадміністратора Web-сервера. Саме ця адреса відображатиметься при помилках роботи сервера.
ServerAdmin [email protected] ServerName- містить ім'я комп'ютера для сервера.
ServerName localhost:80 ServerRoot- Вказує на каталог, що містить файли Web-сервера Apache.
ServerRoot "C:/web_server/apache" DocumentRoot- Визначає каталог, в якому розташовані файли Web-сайту.
DocumentRoot "C:/web_server/apache/htdocs" Контейнер

Сфера дії директив усередині цього контейнера поширюється на всі файли та підкаталоги всередині каталогу, заданого у директиві DocumentRoot.

Options FollowSymLinks Includes Indexes
AllowOverride All
Директива AllowOverrideвстановлена ​​у значення ALL, дозволяє перевизначати значення головного конфігураційного файлу httpd.conf" у файлах " .htaccess".

Директива Options FollowSymLinksдозволяє Apache слідувати символічним посиланням.

Директива Options Includesдозволяє виконувати директиви SSI (Server Side Includes, включення на стороні сервера) в коді сторінок Web-сайту.

Директива Options indexesвказує, що потрібно повертати вміст каталогу, якщо відсутній індексний файл.

DirectoryIndex- містить заданий список індексних файлів, які слід відображати під час звернення до каталогу без вказівки імені файлу.
DirectoryIndex index.html index.htm index.php Директива ScriptAliasвикористовується для створення псевдоніма каталогу " /cgi-bin/", в якому розташовуються програми та сценарії CGI.
ScriptAlias ​​/cgi-bin/ "C:/web_server/apache/cgi-bin/" Далі необхідно налаштувати права та обмеження на каталог cgi-bin.

AllowOverride None
Options ExecCGI
Order allow, deny
Allow from all
Ця дія необхідна для гарантії, що опції каталогу не будуть змінені, оскільки це може спричинити проблеми безпеки.

Директива AllowOverride Noneговорить про те, що опції цього каталогу не можуть бути перевизначені файлами. .htaccess".

Директива Options ExecCGIдозволяє виконання CGI-сценаріїв.

Директиви order allow, denyі Allow from allдозволяють доступ до каталогу.

AddHandler- змушує Apache розглядати файли з розширеннями ехе"і" bat"як CGI - скрипти.
AddHandler cgi-script .bat .exe DefaultTypeвстановлює заголовок файлів, тип яких може бути визначено розширення. В даному випадку все невідомі файлисприймаються як стандартні текстові файли. Для того, щоб усі невідомі розширення файлів обробляти, як HTML, змініть директиву таким чином:
DefaultType text/html AddDefaultCharset- встановлює кодування за замовчуванням, якщо кодування не задано в заголовку HTML-документа.
AddDefaultCharset windows-1251

Хостинг сайтів

Можна реалізувати чотирма способами:

    За замовчуванням у папці /var/www/html. Доступом є http://localhost/

    Налаштування основного хостингу. Наприклад, http://localhost/phpmyadmin

    У будь-якій папці за допомогою модуля віртуальних хостів. Наприклад, http://mysite/

    У папці користувача public_html (модуль userdir). Наприклад, http://localhost/~username

Встановлення

Для встановлення Apache виконайте в терміналі:

sudo apt-get install apache2

Налаштування

Для застосування змін у налаштуваннях необхідно перезапустити демон Apache: sudo service apache2 restart

У Ubuntu кінцевий файл налаштування (apache2.conf) поділено на кілька файлів, розташованих у різних піддиректоріях. Детальніше написано в коментарях файлу apache2.conf.

/etc/apache2/ |-- apache2.conf | `-- ports.conf |-- mods-enabled | |-- *.load | `-- *.conf |-- conf-enabled | `-- *.conf `-- sites-enabled `-- *.conf

Налаштування модулів розташовані в директорії /etc/apache2/mods-available. Для підключення або вимкнення модулів (налаштувань модулів) слід використовувати відповідні команди a2enmod або a2dismod. Приклад підключення модуля:

sudo a2enmod< mod-name>

Свої налаштування слід зберігати у файлах, що містяться в директорії /etc/apache2/conf-available. Для підключення або вимкнення своїх налаштувань слід використовувати відповідні команди a2enconf або a2disconf. Приклад підключення файлу зі своїми налаштуваннями:

sudo a2enconf< config-name>

Налаштування віртуальних хостів слід зберігати у файли, розташовані в директорії /etc/apache2/sites-available. Для підключення віртуальних хостів слід використовувати відповідні команди a2ensite або a2dissite. Приклад підключення віртуального хоста:

sudo a2ensite< site-name>

Кодування за замовчуванням

Для вказівки кодування за промовчанням слід використовувати директиву AddDefaultCharset у файлі /etc/apache2/conf-available/charset.conf(або розкоментувати відповідний рядок):

AddDefaultCharset UTF-8

Віртуальні хости

Файли налаштувань віртуальних хостів зберігаються в /etc/apache2/sites-available/*.conf. За замовчуванням Apache вже налаштований один віртуальний хост. Його налаштування лежать у файлі 000-default.conf. Ви можете використовувати цей віртуальний хост як приклад.

Приклад налаштування віртуального хоста:

#Ім'я хоста ServerName host1.server1 #Корнева папка хоста DocumentRoot /var/www/host1.server1 #Дозвіл на перезапис усіх директив за допомогою.htaccess AllowOverride All

Назвіть файл налаштування ім'ям хоста host1.server1.conf і збережіть.

Після створення файлу налаштувань допишіть ім'я вашого хоста в /etc/hosts:

127.0.0.1 host1.server1

Для включення створеного віртуального хоста використовується утиліта a2ensite:

sudo a2ensite host1.server1

Вимикається хост аналогічно утиліті a2dissite:

sudo a2dissite host1.server1

Модулі

mod_userdir

Модуль mod_userdir дозволяє використовувати каталоги, що знаходяться в домашніх каталогах користувачів для зберігання веб-сторінок. За замовчуванням Apache шукає сторінки, що запитуються в директорії ~/public_html

mkdir ~/ public_html

Щоб увімкнути mod_userdir , виконайте:

sudo a2enmod userdir

і додайте необхідного користувачадо групи www-data:

sudo adduser $USER www-data

після чого перезавантажте Apache:

Сторінки будуть доступні за адресою http://localhost/~username, де username - ім'я користувача.

CGI

Якщо Ви бажаєте запускати на сервері cgi-скрипти, підключіть модуль cgi командою

sudo a2enmod cgi

За замовчуванням cgi-скрипти розміщуються у директорії /usr/lib/cgi-bin, але ви можете розмістити їх будь-де, вказавши це в налаштуваннях свого віртуального хоста, або глобально для всіх хостів у файлі /etc/apache2/conf-enabled/serve-cgi-bin.conf.

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

Налаштування HTTPS в Apache

Веб-сервер Apache повністю підтримує роботу з HTTPS. Щоб активувати підтримку HTTPS на вже встановленому Apache, потрібно виконати таке.

Створення ключа та ssl-сертифіката

Використання самопідписаних сертифікатів хоч і захищає від пасивного прослуховування, проте не гарантує клієнтам, що сервер є тим сервером, який їм потрібен. Перевагою самопідписаних сертифікатів є їхня безкоштовність. Сертифікат, підписаний компанією-сертифікатором (Certificate authority), коштує грошей.

Для створення ключа та сертифіката вводимо команду:

Openssl req -new -x509 -days 30 -keyout server.key -out server.pem

На запитання «Enter PEM pass phrase:» відповідаємо паролем, підтверджуємо та запам'ятовуємо.

На всі наступні запитання відповідаємо довільно, можна просто клацати по Enter , погоджуючись із запропонованими варіантами, тільки на питання Common Name (eg, YOUR name): відповідаємо ім'ям сайту, для якого створюємо сертифікат, наприклад www.example.com.

Після відповіді на всі запитання в директорії повинні з'явитися два нових файли – server.pem (ключ) та server.crt (сертифікат).

Щоб використовувати згенерований ключ, потрібно знати пароль, введений нами, і Apache запитуватиме його у нас при завантаженні, а до чого нам зайві питання від демонів? :) Тому знімаємо пароль із ключа:

cp server.key( ,.orig) openssl rsa -in server.key.orig -out server.key rm server.key.orig

Скопіюємо їх у /etc/ssl та призначимо файлу ключа права читання тільки адміністратору:

sudo cp server.pem / etc / ssl / certs / sudo cp server.key / etc / ssl / private / sudo chmod 0600 / etc / ssl / private / server.key

Налаштування Apache

Для початку необхідно активувати mod_ssl:

sudo a2enmod ssl

А потім увімкнути налаштування HTTPS сайту за промовчанням:

sudo a2ensite default-ssl

Тепер необхідно відредагувати файл з налаштуваннями HTTPS сайту за промовчанням, вказавши у ньому шляхи до ваших сертифікатів. Сам файл називається /etc/apache2/sites-enabled/default-ssl (або /etc/apache2/sites-enabled/default-ssl.conf).

SSLEngine on

додати рядок

SSLProtocol all -SSLv2

щоб заборонити використання застарілого протоколу SSLv2.

# Публічний сертифікат сервера SSLCertificateFile /etc/ssl/certs/server.pem # Приватний ключ сервера SSLCertificateKeyFile /etc/ssl/private/server.key

Тепер просто перезавантажте Apache:

sudo service apache2 restart

І якщо всі параметри вказані вірно, ваші сайти будуть доступні через HTTPS.

Протокол HTTPS працює по 443 порту, тому якщо сервер знаходиться за шлюзом, необхідно на ньому прокинути даний порт.

Перенаправлення HTTP запитів на HTTPS

Якщо ви хочете заборонити використання HTTP , то найрозумнішим буде перенаправляти всі HTTP запити до сторінок на їхню HTTPS адресу. Зробимо це за допомогою mod_alias. Якщо він не включений - вмикаємо:

sudo a2enmod alias sudo service apache2 restart

Потім змінюємо файл /etc/apache2/sites-enabled/000-default , який відповідає за віртуальний хост за промовчанням для HTTP запитів. У цей файл додаємо директиву

Redirect / https://example.com/

При цьому всі налаштування директорій можна видалити, оскільки HTTP на ваші сайти все одно не потрапить.

Тепер ще раз перезапустіть Apache і переконайтеся, що при заході по HTTP ви автоматично перенаправляєтеся на HTTPS-сторінку.

Apache – найпопулярніший веб-сервер у мережі Інтернет, який обслуговує більше половини активних сайтів.

У цій статті ми розглянемо загальні конфігураційні файли та основні параметри Apache у системі Ubuntu/Debian

Примітка: Файли Apache відрізняються в залежності від дистрибутива, тому ця стаття не підходить користувачам RHEL

Встановлення Apache в Ubuntu/Debian

Якщо веб-сервер Apache ще не інстальовано, використовуйте команди:

sudo apt-get update
sudo apt-get install apache2

Щоб переконатися, що інсталяція пройшла успішно, відкрийте в браузері IP-адресу свого сервера. На екрані з'явиться вітальна сторінка Apache:

It works!
Це являє собою детальну веб-сторінку для цього сервера.
The web server software is running but no content has been added, yet.

Ієрархія файлів Apache

У Ubuntu та Debian Apache зберігає конфігураційні файли в папці /etc/apache2.

cd /etc/apache2
ls -F
apache2.conf envvars magic mods-enabled/ sites-available/
conf.d/ httpd.conf mods-available/ ports.conf sites-enabled/

Ця папка містить ряд простих текстових файлівта підкаталогів. Найважливіші з них:

  • apache2.conf: головний файл конфігурації сервера. У ньому можна виконати багато конфігурацій.
  • ports.conf: цей файл задає порти, які прослуховуються віртуальними хостами. Перевірте цей файл під час налаштування SSL.
  • conf.d/: цей каталог керує окремими аспектами конфігурації Apache. Наприклад, з допомогою часто визначається конфігурація SSL і стандартна політика безпеки.
  • sites-available/: цей каталог зберігає всі доступні віртуальні хости, які визначають, який контент обслуговуватиметься на сайті. Ці хости не активні.
  • sites-enabled/: цей каталог визначає активні віртуальні хости. Зазвичай він містить символічні посилання на файли, визначені в каталозі sites-available.
  • mods-/: ці каталоги працюють за тим же принципом, що і sites-available та sites-enabled. Вони зберігають модулі.

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

Конфігураційний файл Apache

Основні налаштування Apache зберігаються у /etc/apache2/apache2.conf.

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

У Ubuntu та Debian більша частина файлу відведена під глобальні налаштування, а конфігурація сервера за умовчанням та налаштування віртуальних хостів обробляються в кінці файлу за допомогою директиви Include.

Наприкінці файлу ви знайдете безліч налаштувань Include. Вони визначають модулі, додають документ ports.conf, певні файли з каталогу conf.d/ та налаштування віртуальних хостів із каталогу sites-enabled/.

Зосередимося на глобальних налаштуваннях веб-сервера Apache.

Глобальні налаштування Apache

Цей розділ розглядає важливі параметри глобальних параметрів Apache.

Timeout

За замовчуванням цей параметр має значення 300. Це означає, що на виконання кожного запиту сервер має максимум 300 секунд. Найчастіше це значення дуже велике, і його рекомендують зменшити до 30-60 секунд.

KeepAlive

Якщо цей параметр має значення On, сервер дозволить клієнту вимагати кілька об'єктів у межах одного з'єднання. Якщо параметр має значення Off, кожен новий запит буде створювати індивідуальне з'єднання. Така поведінка може призвести до перенавантаження сайту з великим трафіком.

MaxKeepAliveRequests

Цей параметр дозволяє визначити максимальну кількість запитів для одного з'єднання. Це дозволяє збільшити продуктивність Apache.

Значення 0 дозволить веб-серверу обробляти необмежену кількість запитів у межах одного з'єднання.

KeepAliveTimeout

Цей параметр визначає проміжок часу між запитами. Якщо протягом зазначеного часу клієнт не створив наступного запиту. Веб-сервер перерве з'єднання. Якщо надалі клієнт відправить запит, сервер створить нове з'єднання.

Налаштування MPM

Щоб дізнатися, за допомогою яких модулів було скомпільовано Apache, відкрийте термінал і наберіть:

apache2 -l
Compiled in modules:
core.c
mod_log_config.c
mod_logio.c
prefork.c
http_core.c
mod_so.c

Як бачите, у цьому випадку веб-сервер скомпільований з модулем prefork.c та файлом apache2.conf.

Конфігурації віртуальних хостів

Стандартний віртуальний хост знаходиться у файлі default у каталозі sites-available.

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

sudo nano /etc/apache2/sites-available/default

ServerAdmin [email protected]
DocumentRoot /var/www

Options FollowSymLinks
AllowOverride None


Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all

. . .

За умовчанням віртуальний хост обробляє запити порту 80.

Це не означає, що веб-сервер обов'язково оброблятиме кожен запит через цей порт. Apache може перевизначати конфігурації.

Налаштування віртуального хоста найвищого рівня

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

Параметр ServerAdmin вказує контактну адресу електронної пошти, яка буде використовуватись у разі виникнення проблем на сервері. Цю адресу можна вставити на сторінку помилки. Для цього параметр ServerSignature (у файлі /etc/apache2/conf.d/security) повинен мати значення Email.

Директива ServerName задає доменне ім'яабо IP-адресу сервера. Це індивідуальний параметр кожного віртуального хоста, який може перевизначити параметри за замовчуванням, якщо він збігається зі значенням ServerName.

Параметр ServerAlias ​​дозволяє додати аліаси сайту - альтернативні імена та шляхи, що ведуть до одного контенту. Так, наприклад, часто встановлюється аліас домену з www.

DocumentRoot задає каталог, де веб-сервер зберігає контент даного віртуального хоста. У Ubuntu для цього за промовчанням використовується /var/www.

Налаштування каталогів

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

Спочатку віртуальний хост пропонує набір правил для каталогу/(root-каталог). Цей розділ забезпечить базову конфігурацію віртуального хоста, оскільки він стосується всіх файлів, які обслуговуються у файловій системі.

За замовчуванням Ubuntu не накладає жодних обмежень на файлову систему. Apache рекомендує додати кілька стандартних обмежень доступу, наприклад:


Options FollowSymLinks
AllowOverride None
Order Deny,Allow
Deny from All

Це заблокує доступ до всього контенту, якщо в наступних визначеннях каталогів не зазначено інше.

Параметр AllowOverride дозволяє налаштувати перевизначення конфігурацій за допомогою .htaccess файлів. Щоб перевизначити налаштування, файл.htaccess повинен знаходитись у каталозі з контентом. За замовчуванням цю функцію вимкнено.

Налаштування Alias ​​та ScriptAlias

Іноді перед розділом Directory йдуть параметри Alias ​​та ScriptAlias.

Директива Alias ​​дозволяє додавати до контенту, що обслуговується, каталоги поза DocumentRoot.

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

Наприклад, такий рядок у віртуальному хості для сайту example.com відкриє доступ до контенту в каталозі /path/to/content/ за запитом example.com/content/.

Alias ​​/content/ /path/to/content/

Пам'ятайте, що, відкриваючи доступ до додаткових каталогів, потрібно встановлювати обмежені привілеї на них.

Включення сайтів та модулів в Apache

Створивши файл віртуального хоста, ви можете увімкнути його. Для цього потрібно створити символічне посилання на файл у каталозі sites-enabled:

sudo a2ensite файл_віртуального_хоста

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

sudo service apache2 reload

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

sudo a2dissite файл_віртуального_хоста

Після цього потрібно знову перезапустити веб-сервер:

sudo service apache2 reload

Увімкнути та вимкнути модуль Apache можна за допомогою наступних команд (відповідно):

a2enmod
a2dismod

Вони працюють так само, як і раніше згадані команди a2ensite та a2dissite. Після ввімкнення або вимкнення модуля потрібно перезапустити веб-сервер.

Висновок

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

Якщо вам потрібна додаткова інформаціяпро веб-сервер, зверніться до

© 2022 androidas.ru - Все про Android