Конфігураційні файли Apache Apache & PHP - зручні технології

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

Власний HTTP: Apache, PHP, MySQL

Веб-сервер Apache впевнено лідирує з минулого століття, оскільки забезпечує швидку, надійну та безпечну роботу. Фізична машина та сервер під керуванням Linuxабо Windows - це фундамент, HTTP - це надбудова, хоча насправді це протокол передачі. Як сервер може бути використана Windows-машина, але перевага надається сімейству лінуксоїдів.

Apache в середовищі Windows- це локальний варіант, який використовується одному комп'ютері для дублювання розробки ресурсів, розміщених зовнішніх серверах. Установка на допустима, але не надто популярна. Налаштування Apache на CentOs дає більше можливостей та використовується для організації серверів у локальній та глобальній мережах.

Вважається, що сервери Apache обслуговують понад 50% всіх активних веб-ресурсів, решта припадає на подібні вироби від Microsoft, Sun та ін. Власне, фізичний сервер та його операційна система можуть бути будь-якими. HTTP-сервер ставиться на готову платформу та працює паралельно з іншими програмами на ній. Apache вважається рідним для всього сімейства лінуксоїдів, але в кожному конкретному випадку він має особливості.

Безкоштовність, простота, надійність відрізняють лінукс-системи та їх застосування. Не важливо, що використовувати: встановлення та налаштування Apache на Ubuntu не набагато відрізняється від CentOs, Debian або FreeBSD. Часто відіграє роль насиченість тієї чи іншої операційної системидодаткове програмне забезпечення.

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

В реальності для вирішення конкретного завдання підняти хостинг необхідно визначитися з потрібним функціоналом, необхідною продуктивністю, концептуальними пріоритетами та конкретним вибором представника Linux, або зупинитися на Windows Server.

Зміщення пріоритетів локальної розробки

Важко оцінити роль глобальної мережі у розвитку програмування, але легко помітити реальне усунення центру тяжіння: локальні програми стало прийнято виконувати як веб-ресурс. Просто написати програму для локального комп'ютера- це драйвера, антивіруси, невеликі проекти із простим функціоналом. Мова програмування... VBA, хоча можна застосувати C/C++ чи C#.

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

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

При цьому локальне може бути розподіленим: офіси компанії можуть бути де завгодно, але це не Інтернет, а розподілена локальна мережа компанії.

MySQL, PHP, Apache налаштування в локальній формі:

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

Якщо врахувати, що MySQL і Apache в середовищі Windows - це служби, а PHP-код - це звичайний текст, що обробляється інструментом (інтерпретатор PHP), що викликається в потрібний момент часу HTTP-сервером, то рівень змінності, мобільності та переносимості коду буде значно вищим. ніж у локальних інструментів розробки.

Підготовка до інсталяції Apache

Ще в епоху "початку почав" операційна система Unix визначила негласні принципи лояльності. З того часу все, що робилося під юнікоподібні системи, автоматично транслювалося на інші платформи. Налаштування Apache на Windows виконується вкрай просто, але для вирішення серйозних завдань буде потрібна хороша кваліфікація та детальне уявлення про конфігурацію HTTP-сервера.

Насамперед потрібно скачати останню версіюсервера (сьогодні це версія 2.4.33 від 17.03.2018) з офіційного сайту у форматі zip-архіву. Слід пам'ятати спочатку, що версії серверів численні і пропонуються на безлічі сторонніх ресурсів, тому важливо вибрати офіційну реалізацію, розміщену на веб-ресурсі, що викликає довіру.

Раніше популярною була установка сервера за допомогою спеціального інсталятора. Тепер повсюдно практикується просте розгортання zip-архіву. Це простіше і дозволяє зрозуміти суть процесу конфігурування, що дуже важливо і згодом дозволяє оптимізувати сервер під потрібне навантаження і функціональність.

Редагування файлу конфігурації

Конфігурація сервера визначається набором файлів конфігурації, розташованих у папці conf. Основний файл конфігурації Apache – httpd.conf.

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

Для успішного запуску сервера достатньо внести редагування лише в один рядок (по порядку - 38-й) - і налаштування Apache завершено.

У попередніх варіантах конфігурації сервера потрібно було вносити численні редагування під реальну ситуацію, але тепер є «універсальна» змінна SRVROOT. Варто вказати її правильне значення (шлях до місця розташування сервера), і все одразу почне працювати.

Процедура розміщення сервера

До розташування сервера потрібно поставитися уважно. Сам по собі Apache цікавий, але коли він оснащений PHP та MySQL, він цікавий подвійно. Найкраще, коли все, що пов'язане з веб-розробкою, знаходиться в одному місці. Можна погодитися на дефолтні шляхи, але сучасне програмування не настільки ідеальне у своїй реалізації, тому тримати руку на пульсі доведеться однозначно і часто. Крім того, при виборі зручного місця будуть доступні всі файли ініціалізації та конфігурування, а також логи для роботи встановлених продуктів.

Завантажений офіційний zip-архів Apache потрібно розгорнути у вибраному місці, розмістивши окремо інструмент та роботу. У даному прикладіпапка C:SCiA - це інструмент (Apache24, PHP, MySQL, ...), а папка SCiB - це робота, власне, сайтів, які створюються, супроводжуються або модернізуються.

В результаті першого етапу роботи в папку C: SCIA Apache24 потрапляють тільки підпапки bin, cgi-bin, conf, error, ... з усім їх вмістом.

Редагування файлу hosts

Другий етап полягає в тому, щоб правильно налаштувати файл hosts- вказівка ​​на те, які IP-адреси на даному комп'ютерізіставлені з якими іменами. Якщо на комп'ютері буде вестися розробка або супровід лише одного сайту, можна нічого не змінювати.

Базовий IP-127.0.0.1 зазвичай завжди вказує на localhost. Робочий файл hosts знаходиться за адресою c:\Windows\System32\drivers\etc і виглядає так, як показано нижче.

Щоб помістити файл hosts у потрібне місце, потрібно скористатися командним рядком у режимі адміністратора. Підготувати правильний зміст файлу можна в будь-якому місці файлової системи комп'ютера, але записати його за адресою c:\Windows\System32\drivers\etc можна тільки тим інструментом, який має права адміністратора. Через командний рядок це зробити найпростіше.

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

Немає нічого простішого. Достатньо запустити командний рядок від імені адміністратора та перейти до папки C:SCIAApache24. Оскільки це шлях у системі Windows, то використовуються прямі слеші. У разі шлях може бути іншим. Але якщо з ім'ям папки для розміщення святої трійці – Apache, PHP та MySQL – ще можна якось експериментувати, то міняти імена папок для кожного з них недоцільно.

У цьому випадку архів сервера розгорнутий у папці С:/SCiA/Apache24, отже, потрібно в папці bin написати команду:

  • httpd.exe -k install

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

Вікно (1) командного рядка- Встановлення сервісу, вікно (2) - список служб, в яких з'явився сервер, вікно (3) - вихідний файл index.html, розташований за адресою C:/SCiB/localhost/www, вікно (4) - результат роботи сервера.

У цьому прикладі навмисне було допущено помилку: замість встановлення значення змінної SRVROOT було внесено численні правки «по-старому»: вручну все було змінено. Це не саме краще рішення. Перед використанням знань слід ознайомитися з поточною версією продукту. Як правило, все швидко змінюється, і знання слід застосовувати зі знанням справи і розумінням поточної ситуації.

Практика розгортання zip-архіву

Сучасні сайти далеко не завжди пишуться на системах керування сайтами. Є багато ручної праці. Проблема перенесення сайту на інший хостинг зумовила гарне рішення – zip-архів. Згорнули контент в одному місці, розгорнули – в іншому.

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

При встановленні сервера важливо вказати:

  • де він знаходиться;
  • де є веб-ресурс (localhost);
  • використання ssl;
  • віртуальні хости.

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

Джентльменські набори

Простота розгортання zip-архіву очевидна, Apache (установка та налаштування) - всього два-три кліки. Однак результат, коли були популярні інсталятори, був еквівалентним. Розробник просто витрачав більше часу на створення чергової версії свого продукту. Установка сервера, серверної мови та бази даних - це, по суті, просто набори файлів, запуск сервісів, файл hosts та шляхи за умовчанням у змінній операційній системі path.

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

Налаштування сервера Apache - це серйозна процедура, до якої потрібно поставитися дуже уважно і зробити все так, щоб завтра можна було щось змінювати і уточнювати.

У більшості випадків розробка веб-ресурсів - це досить тривалі процеси, в яких вимоги до сервісів (Apache, PHP, MySQL, ...) змінюються швидко, але завжди є час на розуміння чергового завдання та його оптимальне рішення. Але це не привід йти щодо джентльменських наборів. Час тече, а джентльмен – не змінюється, це набагато вагоміший аргумент, ніж декларація «денвер» – це просто, швидко і доступно.

Декілька сайтів - один сервер

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

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

Один сервер може підтримувати скільки завгодно веб-ресурсів, для цього потрібно у файлі httpd.conf зняти коментар з рядка 501:

  • # Include conf/extra/httpd-vhosts.conf

та описати всі необхідні хости у файлі

  • extra\httpd-vhosts.conf.

Може знадобитися уточнити, які порти та IP слухає сервер, але це окрема тема, спочатку можна обмежитися тим, що є.

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

Налаштування Apache SSL доступне аналогічним чином. У файлі httpd.conf потрібно просто залишити "як" рядки з 524 по 531, які відповідають за роботу SSL.

Простота та складність Apache

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

Три простих дії:

  • розгорнути архів;
  • змінити конфігураційний файл;
  • інсталювати сервер.

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

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

Налаштування Apache на будь-якій лінуксовій системі відкриває перед розробником набагато більше можливостей та дає вихід у локальну мережу та Інтернет. За традицією Windows-комп'ютер - це локальна робоча станція, і сервер там внутрішній. Linux-комп'ютер – і вузол локальної мережі чи точка в інтернет-просторі.

Професійне середовище розробника

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

Ця логіка передбачає наявність хоча б одного сервера в мережі на платформі CentOS, Ubuntu, FreeBSD, робочих станцій Windows. Оптимально мати два Linux-сервери (основний та допоміжний), налаштування Apache для локального комп'ютера в середовищі Windows. У разі вірусної атаки чи непередбаченої ситуації допоміжний сервер стане заміну основному, а основний - ремонт і відновлення. Замінити локальну установку Apache робочої станції (під Windows) можна з архіву.

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

andew

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

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

6254

У статті представлений огляд конфігурації 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

Поняття:конфігурування, директиви. Конфігураційні файли, директиви. Основні конфігураційні директиви. Серверні процеси. Контроль доступу до каталогів та файлів.

Конфігурування (лат. configuratio - взаємне розташування) - особливий логіко-методологічний прийом, розумова техніка синтезування різнопредматних знань, різних уявлень про один і той самий об'єкт.

Директиви, ж. (Від латин. Directio - напрямок). Загальна керівна вказівка, що надається вищим органом підлеглому (сервером для робочої станції тощо) .

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

Apache конфігурується зміною службових файлів у каталозі /etc/httpd/conf/. Головний файл конфігурації веб-сервера -httpd.conf. Конфігураційні директиви можуть розміщуватись у різних файлах, які включають в основну конструкцію Include имя_файла.conf.

Якщо розміщення будь-якого файлу або каталогу в конфігураційному файлі вказано неявно (явне розміщення починається з кореня файлової системи - з символу "/"), Apache використовує каталог, заданий у директиві ServerRoot для визначення реального розташування мети.

Опис модулів та конфігураційних директив Apache

Директиви можуть бути використані на таких рівнях:

A рівень конфігурації сервера – директива може бути використана лише у головному конфігураційному файлі.

V рівень - Директиву можна використовувати по-різному для різних віртуальних хостів.

D рівень - для будь-якого каталогу директивою цього рівня можна встановити налаштування.

H рівень файлів.htaccess - директиву можна використовувати у файлах.htaccess у місцях, де вони дозволені сервером.

У будь-якій точці використання в директиві параметра filename означає абсолютний (починається з "/") або відносний від каталогу ServerRoot шлях до файлу.

CORE – ядро ​​веб-сервера (основний модуль Apache)

AccessConfig filename

Встановлює розташування конфігураційного файлу. Системний конфігураційний файл за замовчуванням - conf/access.conf; для скасування читання файлу рекомендується встановлювати /dev/null.

AccessFileName file file ...

Встановлює імена файлів доступу, які використовуються для налаштування конфігурації "на льоту" за промовчанням - .htaccess.

AddModule module module ... [A]

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

AddModule module module ...

Активує модуль, що динамічно завантажується, що постачається у вигляді окремого бібліотечного файлу або скомпілованого всередину головного модуля httpd.

AllowOverride param param ...

Встановлює правила, якими Apache використовує директиви внутрішніх файлів.htaccess;

None – ігнорує;

All – використовує всі директиви;

Options - дозволяє використовувати Options та XBitHack;

Indexes – директиви управління індексуванням каталогів;

FileInfo - директиви управління типами файлів та їх обробниками;

AuthConfig – директиви доступу до каталогів Auth*;

Limit – директиви allow/deny/order.

AuthName realm

AuthType type

Використовується для визначення способу запиту та передачі імені користувача та пароля для доступу до каталогів веб-сайтів. Найчастіше використовують Basic, рідше – Digest та інші.

BindAddress address [A]

Задає адресу, на якій Apache прийматиме з'єднання. Можна використовувати ім'я хоста, IP-адресу або *.

ClearModuleList [A]

Директива очищає список завантажених модулів. Після цієї директиви слід використовувати директиви AddModule для роботи з необхідними модулями.

ContentDigest on|off

Включає або вимикає пересилання MD5 хеш даних. Обчислюється для всіх сторінок, що передаються, і не кешується.

CoreDumpDirectory dirname [A]

Вказує Apache на каталог, де зберігатимуться файли дампа пам'яті (core), створювані при аварійних помилках.

DefaultType mimetype

Задає тип MIME, що надсилається клієнтам, якщо Apache не може визначити тип через файл mime.types або директиви AddType. За промовчанням встановлено як text/plain.

...

Об'єднує групу директив, що задають поведінку Apache при зверненнях до документів, які розташовані в цій директорії. Дозволено використовувати маски імен – символи *, ? за правилами shell. У разі використання маски перед ім'ям міститься знак тильда ~.

...

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

DocumentRoot dirname

Вказує серверу місце розташування кореня дерева каталогів, нижче якого розташована структура даних веб-сервера.

ErrorDocument filename|string|URL

У разі помилки робить редирект на вказані сторінки. Також можна встановити коментар до ситуації, що має починатися з однієї лапки. Приклад:

ErrorDocument 500 http://foo.example.com/cgi-bin/tester

ErrorDocument 404 /cgi-bin/bad_urls.pl

ErrorDocument 401 /subscription_info.html

ErrorDocument 403 "Соррі може бути"неможливим доступом досі"

ErrorLog filename

Назва файлу протоколу помилок. Якщо рядок параметра починається з (/), шлях до файлу потрібно вказувати від ServerRoot; якщо вона починається з (|), тоді повідомлення помилок передаються зазначеній команді стандартний вхід. Зокрема, таким чином, наприклад, можна реалізувати збереження журналу відразу в SQL СУБД або зберігати їх відразу стислими, передаючи, наприклад, gzip. Apache версії 1.3 і вище за замовчуванням виводить повідомлення у syslog, якщо система підтримує таку можливість; але це можна заборонити, використовуючи syslog:facility.

...

Контролює доступ до файлу. Розділи обробляються в тому ж порядку, що й у файлі конфігурації після того, як прочитані розділи директиви та файли.htaccess, але перед тим, як прочитані розділи директорії . Аргумент повинен містити ім'я фала чи маску, у якій "?" - будь-який символ, "*" - будь-який рядок. З додатковим символом ~ можуть використовуватися розширені рег. вирази (див. REGULAR EXPRESSIONS секцію в grep(1)) Наприклад: буде відповідати графічним файлам, що використовуються в Internet.

...

Те саме що і але використовує регулярні вирази.

Має відношення тільки до запуску Apache та відфоркування процесів в оточенні та з правами відповідного даного імені.

HostNameLookups on|off|double

Керує можливістю визначення імені хоста відвідувача по реверсному ДНР. Працює повільно і за умовчанням вважається вимкненою. Double вказує, що ім'я хоста має бути піддане додаткової перевірки на відповідність цього імені IP адресою хоста, що надіслав запит.

IdentityCheck on|off

Вмикання RFC1413 аутентифікації. Увімкнення функції значно збільшить час доступу до сервера.

...

іповинні бути виконані лише якщо цей параметр визначений у внутрішніх структурах Apache. Попередній параметр [!] вказує, що блок директив буде прочитаний тільки якщо параметр не визначений.

...

Вказує, що директиви, поміщені всередині блоку, утвореного парою директив іповинні бути виконані тільки якщо даний модуль відкомпільовано Apache. Попередній модулю знак [ !] вказує, що блок директив буде прочитаний, лише якщо параметр не визначений.

Include filename [A]

Директива дозволяє включати конфігураційні файли в конфігурацію сервера.

KeepAlive on | off [A]

Дозволяє клієнту послідовно вимагати кілька файлів без розриву TCP з'єднання.

KeepAliveTimeout sec [A]

Вказується час (у секундах) до розриву TCP з'єднання, на яке Apache чекатиме наступного запиту від клієнта.

...

Дозволяє вказувати до якого HTTP методу (наприклад GET або POST) відносяться поміщені всередину ... команди обмеження доступу.

Можуть використовуватися методи: GET, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK.

Listen port [A]

Примушує Apache слухати вказані адресита порти. Наприклад, щоб змусити сервер слухати порти 80 і 8000, використовуйте:

Щоб Apache працював на різних інтерфейсах із зазначеними номерами портів, використовуйте:

Listen 192.170.2.1:80

Listen 192.170.2.5:8000

ListenBacklog length [A]

Максимальна довжина черги обробки підключень.

...

Подробиці в apache-manual:)

...

Подробиці в apache-manual

Lockfile filename [A]

Директива встановлює шлях до lockfile.

LogLevel emerg|alert|crit|error|warn|notice|info|debug

Встановлює рівень інформативності протоколу (лог-файл роботи сервера). Рекомендується використання принаймні рівня crit.

MaxClients count [A]

Директива встановлює межу кількості одночасних запитів до серверу. Насправді це число не може перевищувати число дочірніх процесів сервера, яких за умовчанням не може бути більше 256. Щоб виправити ситуацію редагуйте HARD_SERVER_LIMIT в httpd.h і компілюйте його.

MaxKeepAliveRequest count [A]

Дозволяє клієнту послідовно вимагати вказану кількість файлів без розриву TCP з'єднання, якщо включена KeepAlive. Якщо параметр встановлено в 0, то Apache розриватиме з'єднання лише з огляду на параметр KeepAliveTimeout.

MaxRequestsPerChild count [A]

Директива встановлює межу кількості запитів які може обробити індивідуальний дочірній процес. Якщо MaxRequestsPerChild встановлено в 0, кількість запитів не обмежена.

MaxSpareServers count [A]

Директива встановлює бажану максимальну кількість неактивних процесів сервера. Директива марна, якщо використовується версія Apache для Microsoft Windows.

MinSpareServers count [A]

Директива встановлює бажану мінімальну кількість неактивних процесів сервера. Директива марна, якщо використовується версія Apache для Microsoft Windows.

NameVirtualHost port [A]

Вказує, що запити до цього порту-імені слід розділяти на ім'я хоста, до якого здійснюється звернення (заголовок "Host:" HTTP). Дозволяє визначати кілька віртуальних хостів для однієї IP-адреси.

Options param param ...

Визначає налаштування дій Apache для зазначеного контенту. Докладно всі можливі установки описані в apache-manual. Часто використовувані: Indexes - включає показ вмісту каталогу, якщо в ньому не знайдено індексний файл (директива DirectoryIndex); ExecCGI - включає можливість розміщення в даному каталозі файлів, що виконуються (cgi, perl скриптів); Includes - включає можливість розміщення у каталозі SSI файлів. Кожна установка підтримується відповідним модулем, що її використовує, і може не діяти, якщо потрібний модуль не підвантажений. Кожна директива Options вважається доповнює вже відомі Options, визначені для батьківських каталогів. Кожна установка може супроводжуватися префіксом + або - для її "ввімкнення-вимкнення" в даному контексті.

PidFile filename [A]

Директива встановлює ім'я файлу, в який сервер записує ідентифікатор процесу.

Вказує Apache порт - число від 0 до 65535 (слід пам'ятати, деякі порти можуть використовуватися іншими протоколами, див. /etc/servises). Стандартний портдля http протоколу – 80.

require userid|groupid|valid-user|file-owner|group-owner [A]

Визначає, які користувачі мають доступ до каталогу.

Require user userid - лише ці користувачі мають доступ

Require group ім'я-групи [ім'я-групи] - всі користувачі цих груп

Require valid-user – всі адекватні користувачі.

ResourceConfig filename [A]

Сервер читає з цього файлу подальші директиви після прочитання httpd.conf. Ім'я файлу задається щодо ServerRoot.Може бути відключена: ResourceConfig /dev/null

RLimitCPU max|sec[ max|sec] [A]

RLimitMEM max|bytes[ max|bytes] [A]

RLimitNPROC max|count[ max|count] [A]

Satisfy any|all [A]

Визначає політику доступу, якщо одночасно використовуються Allow та Require. Використовується в тому випадку, коли доступ до області обмежений ім'ям/паролем та адресою клієнта. У цьому випадку за промовчанням ("all") потрібно, щоб клієнт пройшов перевірку за адресою та ввів правильне ім'я та пароль. У разі параметра "any" клієнт отримає доступ, якщо ввів правильне ім'я та пароль або пройшов обмеження по хосту. Може використовуватися, щоб обмежити доступ через пароль, але пропустити клієнтів із певної адреси без пароля.

ScoreBoardFile filename [A]

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

SendBufferSize bytes [A]

Встановить розмір буфера TCP.

ServerAdmin email

Встановлює адресу електронної пошти, яка сервер показує клієнту в повідомлення про помилки.

ServerAlias ​​hostname

Задає альтернативне віртуальне ім'я хоста.

ServerName hostname

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

ServerPath path

Директива встановлює успадковане ім'я для хоста.

ServerRoot path [A]

Встановлює каталог, де живе сервер. Зазвичай містить підкаталоги conf/ та logs/. Шляхи для інших файлів конфігурації будуються щодо цього каталогу.

ServerSignature on|ff|mail

Конфігурує рядок унизу згенерованого сервером документа. За замовчуванням вимкнено, On - показує версію сервера та ServerName віртуального хоста, Email додає посилання mailto: на ServerAdmin

ServerTokens Minimal|OS|Full [A]

Контролює заголовок, що надсилається клієнту сервером з описом ОС сервера та скомпілованих модулів.

ServerType standalone | inetd [A]

Визначає, як сервер запускається системою. inetd – запускається із системного процесу inetd. standalone - як daemon-процес.

StartServers count [A]

Встановлює кількість дочірніх процесів, створюваних під час запуску. Число все одно динамічно змінюється в залежності від завантаження, зазвичай немає причин змінювати цей параметр.

Час, на який Apache чекатиме: отримання запиту GET, отримання пакетів TCP на запитах POST і PUT, пауза між ACK"ами при передачі пакетів TCP у відповідях.

UseCanonicalName on|off

Примушує Apache генерувати назви сторінок, які він створює, використовуючи значення SERVER_NAME з SERVER_PORT.

User username

Встановлює userid, яким сервер буде відповідати на запити. Щоб використовувати директиву, сервер має бути запущений як root.

...[A]

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

mod_env - встановлює та передає змінні для обробки в CGI/SSI файли

PassEnv variable[ variable] ...

Передає змінну оточення (напр. HOME) обробникам.

SetEnv variable value

Записує задане значення у вказану змінну оточення.

UnsetEnv variable[ variable] ...

Скидає змінну, що унеможливлює її прочитання з обробників.

mod_setenvif - використовує умовні вирази для встановлення змінних оточення

BrowserMatch regex env-variable[=value] ] ... [A]

Використовує передане регулярний виразяк фільтр заголовка User-Agent від броузера клієнта. При успішному попаданні ініціалізує змінну цим значенням. Якщо вказано лише ім'я змінної - вона ініціалізується числом 1. Якщо вказано змінну з попереднім знаком "!" - Змінна скидається.

BrowserMatchNoCase regex env-variable[=value] ] ... [A]

Діє аналогічно BrowserMatch, допускаючи відмінності в регістрі символів переданого значення User-Agent і використовується як фільтр регулярного виразу.

SetEnvIf attribute regex env-variable[=value] ] ... [A]

Дія, що виконується директивою, повністю аналогічна BrowserMatch, але замість User-Agent може бути використаний будь-який інший заголовок: Remote_Host; Remote_Addr; Remote_User; Request_Method; Request_URI; Referer

SetEnvIfNoCase attribute regex env-variable[=value] ] ... [A]

Відмінність від SetEnvIf така сама як у BrowserMatchNoCase від BrowserMatch вище.

mod_unique_id - генеруючий унікальну змінну оточення UNIQUE_ID

Змінна генерується випадково з IP адреси сервера, номери працюючого процесу, тимчасовими відмітками та додатковими внутрішніми лічильниками.

Змінна призначена для використання в складових документах, коли неможливо відстежити той самий запит іншими методами.

mod_mime - призначений визначення mime типу файлу під час передачі його клієнту

AddCharset charset extension ...

Для зазначених розширень файлів вказує Apache необхідність передачі даного charset у відповідь клієнту.

AddEncoding MIME-enc extension ...

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

AddHandler handler-name extension ...

Вказує Apache, що файли з цими розширеннями мають бути передані конкретному обробнику. Обробник може бути внутрішнім (cgi-sript та інші), і зовнішнім, описаним раніше директивою Action.

AddLanguage MIME-lang extension ...

Встановлює зв'язок між розширеннями файлів і кодом мови, що передається у відповіді.

AddType MIME-type extension ...

Доповнює таблицю MIME - типів новим відповідністю розширень файлів та коду MIME відповіді клієнту.

DefaultLanguage MIME-lang

Встановлює мову відповіді, що передається завжди, якщо це неможливо зробити іншими засобами.

ForceType MIME-type

Форсує відповідь з цим MIME-типом у каталозі, до якого віднесено цю директиву.

RemoveEncoding extension ...

Видаляє код MIME-кодування у відповіді для файлів із цими розширеннями.

RemoveHandler extension ...

Вказує Apache не запускати обробників файлів з цими розширеннями.

RemoveType extension ...

Скидає MIME-тип у відповіді клієнту тип MIME за замовчуванням

SetHandler handler

Форсує виклик даного оброблювачадля всіх файлів, до яких віднесена дана директива.

TypesConfig filename [A]

Вказує розташування таблиці відповідності MIME типів. За промовчанням - conf.mime.types

mod_mime_magic - модуль, що використовує складні правиладля визначення MIME-типу файлу, що передається у відповіді

MimeMagicFile filename

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

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

CacheNegotiatedDocs [A]

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

LanguagePriority MIME-lang ... [A]

Визначає пріоритет мов, які використовуються у відповіді клієнту, коли точно не вдається визначити або знайти мову документа, яку ви потребували.

mod_alias - дозволяє розміщувати документи в каталогах веб-сервера більш довільним чином

Alias ​​URL-path filesystem-path

Вказує Apache, що документи, розташовані "нижче" даного URL, слід шукати "нижче" даного розташування у файловій системі.

AliasMatch URL-regexp filesystem-path

Визначає складніші правила пошуку даних у файловій системі за результатами порівняння URL із регулярним виразом.

Redirect URL-path URL

У відповідь на запит URL-path та "нижче" розміщених документів повертає вказаний код відповіді (302 за замовчуванням) і перенаправляє клієнта на інший URL. Статус може задаватися як число або символічно: permanent (301), temp (302), seeother (303), gone (410). Для коду відповіді 410 URL відповіді має бути опущений.

RedirectMatch URL-regexp URL

Аналогічно Redirect, з використанням для порівняння переданого URL не точної відповідності, а заданого регулярного виразу.

RedirectTemp URL-path URL

Аналогічно Redirect із використанням коду відповіді 302.

RedirectPermanent URL-path URL

Аналогічно Redirect із використанням коду відповіді 301.

ScriptAlias ​​URL-path filesystem-path

Діє аналогічно Alias ​​але автоматично задає запуск cgi-handler обробника для всіх файлів усередині цільової директорії.

ScriptMatch URL-regexp filesystem-path

Аналогічно ScriptAlias, з перевіркою URL регулярним виразом.

mod_rewrite - керуючий розташуванням документів на сервері

У коротких зборах опису директив Apache складно описати завдання, які вирішуються цим складним модулем. Як посібник до дії найкраще використовувати спеціальні розділи apache-manual "Module mod_rewrite URL Rewriting Engine" та "URL Rewriting Guide". Навчитися використанню даного модуля найпростіше розглядаючи конкретні завдання та їх вирішення з його використанням.

Існує єдиний основний (батьківський) процес, відповідальний за створення дочірніх процесів, які у свою чергу прислухаються до зв'язків і обробляють запити клієнта. Apache завжди пробує тримати в запасі кілька серверних процесів, що не використовуються, які готові обробити запити, що надходять. Таким чином, клієнти не повинні чекати створення нових дочірніх процесів, які будуть розгалужені перш, ніж їх запит обслуговується. батьківський процес створює дочірні процеси для обслуговування запитів.

Взагалі, Apache дуже автономен, таким чином більшість веб-сайтів немає необхідності зміни цих дирректив від значень за умовчанням (default).

Для сайтів, які повинні обслуговувати більше 256 одночасних запитів, можливо, слід збільшити MaxClients, а для сайтів, розташованих на серверах з обмеженою пам'яттю, можливо, слід зменшити значення MaxClients, щоб не довести сервер до необхідності свапа пам'яті на диск (swapping memory to disk and back), що призведе до сильних уповільнень у роботі.

Вибір модулів - один із найважливіших кроків у забезпеченні гарного захисту Apache Web server. Ми повинні керуватися одним добрим правилом: чим менше, тим краще. Щоб задіяти потрібні нам функціональні можливості та забезпечити гарний захист, повинні бути включені такі модулі:

httpd_core - Ядро Apache, потрібне при кожній установці Apache.

mod_access - Контроль доступу до каталогів сервера залежно від IP-адреси чи імені вузла клієнта.

mod_auth - Потрібно, щоб авторизувати користувачів, використовуючи текстові файли.

mod_dir - Потрібно шукати індексні файли: "index.html", "default.html", і т.д.

mod_log_config - Забезпечує реєстрацію запитів, що надсилаються серверу. mod_mime - Містить директиви, що сприяють організації на сервері різних типів MIME.

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

Також варто звернути увагу, що два модулі Apache (mod_autoindex і mod_info) є найнебезпечнішими. Перший модуль дозволяє автоматично проіндексувати каталог і він увімкнений за замовчуванням. Щоб подивитися, як він працює, введіть, наприклад, http://server_name/icons/ і якщо в цьому каталозі немає індексних файлів, буде виведено зміст всього каталогу. Другий модуль mod_info ніколи не повинен бути доступний через Інтернет, тому що він показує всю конфігурацію Web сервера Apache.

Наступне питання – як компілювати модулі. Мені здається, що статичний метод - найкращий (коди вбудовуються у файли, що виконуються), ніж динамічна (коди збираються в момент запуску програми). Вибираючи статичний метод, ми також усуваємо потребу ще одного модуля - mod_so.

Самостійна робота:Робота із сервером баз даних MySQL. Створення таблиць. Вставка, вилучення та оновлення даних у базі даних.

Лабораторна робота №12.Встановлення та налаштування web-сервера Apache.

Самостійна робота:Робота із сервером баз даних MySQL.

Apache - найбільш використовуваний інтернет-сервер на лінукс-системах. Інтернет-сервера використовуються для видачі інтернет-сторінок на запит клієнтських комп'ютерів. Клієнти зазвичай запитують і переглядають веб-сторінки використовуючи програми веб-браузерів, таких як Firefox, Opera, Chromium або Mozilla.

Користувачі вводять єдиний покажчик ресурсів (URL) для визначення інтернет-сервера за його повністю кваліфікованим доменному імені(FQDN) та шляхи до необхідного ресурсу. Наприклад, щоб побачити домашню сторінку інтернет-сайту Ubuntu, користувач має ввести лише FQDN:

Www.ubuntu.com

SymLinksIfOwnerMatch- Слід за символічними посиланнями, якщо цільовий файл або каталог має того ж власника, що й посилання.

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

Цей розділ розкриває деякі основні конфігураційні установки сервісу httpd.

LockFile- інструкція LockFile встановлює шлях до блокуючого файлу (lockfile), коли сервер скомпільований з опцією USE_FCNTL_SERIALIZED_ACCEPT або USE_FLOCK_SERIALIZED_ACCEPT. Він повинен зберігатись на локальному диску. Варто залишити значення за замовчуванням, якщо каталог журналів не розташований на NFS ресурсі. Інакше вихідне значення варто змінити на каталог локального дисказ правами на читання лише для root.

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

User- інструкція User встановлює userid (ID користувача), використовуваний сервером відповіді запити. Ця установка визначає права доступу до сервера. Будь-які файли, недоступні цьому користувачу, також будуть недоступними для відвідувачів вашого сайту. За промовчанням використовується користувач "www-data".

Group- інструкція Group аналогічна директиві User. Group встановлює групу, під якою сервер буде відповідати на запити. Значення за замовчуванням також є «www-data».

Модулі Apache2

Apache2 – модульний сервер. Це означає, що тільки базова функціональність включена в ядро ​​сервера. Розширені можливості доступні через модулі, які можна завантажити в Apache2. За замовчуванням базовий набір модулів включається до сервера на етапі компіляції. Якщо сервер скомпільований для використання модулів, що динамічно завантажуються, то модулі можуть бути скомпільовані окремо і додані в будь-який час з використанням інструкції LoadModule. В іншому випадку Apache2 повинен бути перекомпільований для додавання або видалення модулів.

Ubuntu компілює Apache2 із можливістю динамічного завантаження модулів. Конфігураційні директиви можуть бути включені за умовами присутності відповідного модуля в блоці .

Ви можете встановити додаткові модулі Apache2 та використовувати їх з вашим інтернет-сервером. Наприклад, запустіть наступну команду в терміналі для встановлення модуля авторизації MySQL:

Sudo apt-get install libapache2-mod-auth-mysql

Шукайте додаткові модулі у каталозі /etc/apache2/mods-available.

Використовуйте утиліту a2enmod для включення модуля:

sudo a2enmod auth_mysql sudo service apache2 restart

Аналогічно a2dismod вимкне модуль:

sudo a2dismod auth_mysql sudo service apache2 restart

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

Модуль mod_sslдодає важливу можливість для сервера Apache2 – можливість шифрованих з'єднань. Таким чином, коли ваш браузер з'єднується з використанням SSL, використовується префікс https:// на початку адреси URL у рядку навігації.

Модуль mod_sslдоступний у пакеті apache2-common. Виконайте наступну команду в терміналі, щоб увімкнути цей модуль:

Sudo a2enmod ssl

Параметри за промовчанням HTTPS знаходяться у файлі /etc/apache2/sites-available/default-ssl. Щоб Apache2 надавав HTTPS, також потрібні файли ключа та сертифіката. Початкове налаштування HTTPS використовує сертифікат та ключ, створені пакетом ssl-cert. Вони підходять для тестування, але повинні бути замінені на сертифікат, який відповідає вашому сайту або серверу. Для створення ключів та отримання сертифікатів дивіться розділ Сертифікати .

Щоб настроїти Apache2 для HTTPS, введіть наступне:

Sudo a2ensite default-ssl

Каталоги /etc/ssl/certs та /etc/ssl/private використовуються за замовчуванням. Якщо ви встановили сертифікат і ключ в інші каталоги, переконайтеся, що змінили відповідно опції SSLCertificateFile та SSLCertificateKeyFile.

З Apache2, тепер налаштованим на HTTPS, перезапустимо сервіс для вирішення нових налаштувань:

Sudo service apache2 restart

Залежно від того, як ви випускали сертифікат, вам може знадобитися ввести кодову фразупри старті Apache2.

Ви можете отримати доступ до сторінок захищеного сервера, набравши https://your_hostname/url/ в адресному рядкувашого браузера.

Права розділення запису

Щоб більше одного користувача мали право запису в той самий каталог, необхідно надати право запису групі, яка їх об'єднує. Наступний приклад надає права на запис у каталог /var/www для групи webmasters.

Sudo chgrp -R webmasters /var/www sudo find /var/www -type d -exec chmod g=rwxs "()" \; sudo find /var/www -type f -exec chmod g=rws "()" \;

Якщо доступ має бути наданий більш ніж одній групі на каталог, використовуйте Списки керованого доступу (ACL).

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

У більшості пакетів основний конфігураційний файл Apache має ім'я httpd.conf. Залежно від версії системи цей файл може бути у різних каталогах, але формат його залишається незмінним. У системах Caldera та SuSE файл httpd.conf міститься в каталозі /etc/httpd; в Debian і Slackware він розміщується в /etc/apache (Slackware надає файл-зразок /etc/apache/httpd.conf.default; для забезпечення роботи сервера треба лише перейменувати даний файлта внести до нього необхідні зміни); у Red Hat і TurboLinux файл httpd.conf розміщується в каталозі /etc/httpd/conf/.

Як завжди, рядки файлу httpd.conf, що починаються з символу #, містять коментарі. Опції, що визначають конфігурацію сервера, задаються у такому вигляді:

Директива Значення

Директива - це ім'я, з яким може бути пов'язане певне значення. Значення може бути число, ім'я файлу або довільний рядок символів. Деякі директиви дозволяють задавати кілька підопцій. У цьому випадку ім'я директиви поміщається у кутові дужки. Приклад такої директиви наведено нижче.

Options FollowSymLinks

AllowOverride None

Останній рядок містить ім'я тієї ж директиви, яка вказана на початку, але для неї не задається жодне значення. Ім'я директиви, що завершує блок, передує коса характеристика.

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

Access.conf. Посилання на цей файл формується за допомогою директиви AccessConfig і міститься у файлі httpd.conf. У файлі access.conf найчастіше задаються директиви , що визначають особливості доступу до зазначених у них каталогів В даний час цей файл зазвичай залишається порожнім, а іноді як значення AccessConfig задається /dev/null , що забороняє використання access.conf .

Mime.types. Щоб повідомити Web-броузеру у тому, як мають оброблятися дані, Web-сервер використовує стандарт MIME (Multipurpose Internet Mail Extensions - багатоцільові поштові розширень Internet). Наприклад, MIME-тип text/plain означає, що дані є звичайним текстом, а image/jpeg визначає графічні дані в форматі JPEG(Joint Photographic Experts Group – об'єднана група експертів з обробки фотографій). Файл mime.types містить інформацію про відповідність між MIME-типами та розширеннями файлів. Наприклад, імена файлів, що закінчуються. Якщо така відповідність неправильна, Web-броузер буде відчувати труднощі при обробці деяких типів файлів. Файл, що поставляється у складі пакета, забезпечує обробку практично будь-яких типів даних, які можуть бути розміщені на веб-сторінці. Якщо ж вам потрібно використовувати типи, що рідко зустрічаються, вам доведеться додати в цей файл нові записи.

Magic. Цей файл також дозволяє визначати відповідність між MIME-типами та даними. При аналізі інформації можна знайти специфічні ознаки тієї чи іншої типу. Так, наприклад, багато файлів містять спеціальні ключі - "магічні" байтові послідовності. Ці послідовності, перетворені на текстовий вигляд, вказуються у файлі magic . Якщо ви докладно не вивчили формат цього файлу, вносити зміни до нього не рекомендується. Структура файла magic у цій главі розглядатися нічого очікувати.

З книги Linux для користувача автора Костромін Віктор Олексійович

8.2.2. Основні конфігураційні файли Якщо ви прочитали розд. 8.2.1 (або якщо дивилися файл /etc/inittab), то уявляєте, що у звичайній ситуації процес init крім запуску процесів getty виконує дві основні дії: запускає скрипт rc.sysinit з каталогу /etc/rc.d; запускає скрипт rc

З книги Linux-сервер своїми руками автора

12.5. SSL та Apache 12.5.1. Установка SSL SSL (Secure Sockets Layer) є методом шифрування, розробленим компанією Netscape для забезпечення безпеки в Інтернеті. Цей метод підтримує кілька способів шифрування та забезпечує аутентифікацію як на рівні клієнта, так і на рівні

З книги Asterisk™: майбутнє телефонії Друге видання автора Меггелен Джим Ван

З книги Мережеві засоби Linux автора Сміт Родерік В.

З книги Linux: Повне керівництво автора Колісниченко Денис Миколайович

Конфігураційні файли DHCP Більшість дистрибутивних пакетів Linuxмістить сервер DHCP, розроблений Internet Software Consortium (http://www.isc.org/products/DHCP/). Internet Software Consortium (ISC) наприкінці 2000 р. випустив версію 3.0 DHCP, але на початку 2002 р. багато версії Linuxвсе ще поставлялися з старою версією 2.0

Із книги Ubuntu 10. Короткий посібниккористувача автора Колісніченко Д. М.

З книги Мова Сі - посібник для початківців автора Прата Стівен

Конфігураційні файли Exim Головний файл конфігурації Exim називається exim.conf. Зазвичай він знаходиться в каталозі / etc. До складу цього файлу входять записи, представлені в наступному форматі: опція = значення Як зазвичай, рядки, що містять коментарі, починаються з символу #.

З книги Linux очима хакера автора Фльонов Михайло Євгенович

З книги Розробка ядра Linux автора Лав Роберт

16.1. Встановлення Apache Залежно від дистрибутива, пакет, з якого встановлюється веб-сервер Apache, може називатися apache або httpd, а пакет документації - apache-docs або httpd-manual відповідно. У першому випадку вам доведеться встановити ще пакет apache-common, що містить

З книги автора

16.2. Налаштування Apache. Файли конфігурації Після встановлення Apache слід відредагувати такі файли:? /etc/httpd/conf/httpd.conf – основний файл конфігурації. Для Apache 2.x. цей файл може також називатися httpd2.conf; /etc/logrotate.d/apache або /etc/logrotate.d/httpd (у версії 2.0) - файл ротації

З книги автора

16.10. SSL та Apache 16.10.1. Установка SSL SSL (Secure Sockets Layer) є методом шифрування, розробленим компанією Netscape для забезпечення безпеки передачі даних. Цей метод підтримує кілька методів шифрування та забезпечує аутентифікацію як на рівні клієнта, так і на

З книги автора

19.2. Конфігураційні файли завантажувача У лістингу 19.1 наведено основний конфігураційний файл GRUB2 - /boot/grub/grub.cfg. Він не піддається редагування вручну. Для створення використовується утиліта /usr/sbm/grub-mkconfig, яка генерує цей конфігураційний файл на основі шаблонів,

З книги автора

26.2.3. Конфігураційні файли сервера Файли конфігурації сервера знаходяться у каталозі /etc/apache2. Основний конфігураційний файл називається apache2.conf. За замовчуванням його настроїть більшість користувачів. Якщо ви плануєте використовувати Web-сервер не лише локально (для

З книги автора

Вихідні файли та файли Наша чудова програма, незважаючи на свою лаконічність і простоту, для комп'ютера є абсолютно безглуздим набором символів, оскільки він "не розуміє" директив типу #include або printf. Він розуміє лише спеціальну мову,

З книги автора

5.3.1. Конфігураційні файли Усі настроювальні файли протоколу SSH знаходяться в директорії /etc/ssh. Тут можна побачити наступний список:? файл конфігурації SSH-сервера – sshd_config;? файл конфігурації SSH-клієнта – ssh_config;? файли ключів для різних

З книги автора

Конфігураційні параметри налагодження ядра Існує кілька параметрів конфігурації, які допомагають у налагодженні та тестуванні коду ядра і які включаються під час компіляції. Ці параметри доступні в меню Kernel hacking меню редактора конфігурації ядра. Всі ці