Lxf113-114 apache

Матеріал з Linuxformat.

Мережі Зв'яжемо Linux-машини і змусимо їх обслуговувати нас

Apache. Твій web-сервер

ЧАСТИНА 1. Нейл Ботвік запускає нову серію уроків для любителів поворожити над проводами і роз'ємами. Тобто, для нас з вами!

У даній серії уроків ми розглянемо типи серверів, що встановлюються в Linux, навчимося їх налаштовувати і дізнаємося, яку користь можна з цього отримати. Фізичних мереж торкатися не будемо - про це подбає інсталятор вашого дистрибутива; опустимо також подробиці установки додатків - збережемо місце для речей важливіші. Більшість наведених тут програм цілком рядові: ви без зусиль знайдете їх в репозиторії будь-якого дистрибутива і встановіть стандартним менеджером пакетів. Якщо знадобиться скомпілювати щось сверхновое з вихідних - ми зробимо це, коли (і якщо) знадобиться. Деякі сервери ми відвідаємо не раз, повертаючись до них на все більш складних рівнях освоєння. Але головне - ми дізнаємося, що і як з ними можна зробити.

Частина 1 Де живе Apache і файли його налаштування

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

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

  • Розробка і тестування web-сайтів перед передачею їх на «живий» сервер.
  • Спільна робота з документами в локальній мережі.
  • Організація приватного сайту для сім'ї та друзів.
  • Експерименти з різними web-програмами.
  • Просто тому, що ви це можете!

З чого почати

Розташування HTML-сторінок, які обслуговує Apache. встановлюється у файлі конфігурації, в різних дистрибутивах по-різному. Стандартне місце для них - / var / www / localhost / htdocs. але деякі використовують / srv / www / htdocs або просто / var / www. Яка б директорія була обрана в якості базової для сайтів Apache. найбільш популярне і загальноприйняте місце для зберігання їх HTML- файлів - hostname / htdocs. Таким чином ви можете утримувати сайти більш ніж для одного хоста в єдиній структурі. Підкаталог htdocs тут потім, що існують деякі необхідні сайту файли, доступ до яких з web-браузера повинен бути закритий: наприклад, файли паролів. Їх можна сміливо вміщувати в hostname. Apache нічого «вище» htdocs не обслуговує. Потрапити, скоро стане ясніше.

Деякі дистрибутиви не тримають окремих каталогів для кожного сайту: Ubuntu, наприклад, поміщає все підряд в / var / www - і для особистих файлів безпечного місця зберігання немає. Для початку, виправимо це.

Файли конфігурації Apache знаходяться в / etc / apache2. але внутрішню будову цього каталогу залежить від дистрибутива. Головний файл - httpd.conf. Його редагують рідко: вся інформація про сайти береться з інших файлів і каталогів, що підключаються директивою Include. Наприклад, OpenSUSE зберігає настройки сайту за замовчуванням в default-server.conf. а інші сайти - в каталозі vhosts.d. В Ubuntu налаштування всіх сайтів зберігаються в sites-available і варіант за замовчуванням має очевидне ім'я default. На файли в цьому каталозі створюються символьні посилання з sites-enabled ( «активні сайти»), так що включення і виключення сайту зводиться до створення і видалення символьного посилання. Самі налаштування залишаються в недоторканності.

Не забувайте перезапускати Apache після кожної зміни налаштувань. Інакше будете дивуватися: куди поділися зміни?

Розберемо його через підрядник. Конфігурація Apache ієрархічна за двома напрямками: файли та каталоги в / etc / apache2 спрощують організацію кількох сайтів, але це тільки для зручності користувача, адже використання Include означає, що при передачі Apache всі дані об'єднуються в один великий файл. Усередині цієї купи параметрів існує інша ієрархія: настройки можуть бути глобальними, а можуть ставитися до конкретних розділів. Наш блок Directory - приклад другого випадку: його налаштування стосуються тільки зазначеного каталогу і його підкаталогів (для яких вони також можуть бути змінені відповідним блоком Directory). Тут ми бачимо дві опції: Indexes наказує Apache генерувати HTML-список вмісту каталогу (індекс), якщо за вказаною URL невиявлений файл index.html. Без цього параметра, при спробі входу в каталог без індексного файлу буде повернуто повідомлення про помилку.

лист адміну

Своєю налаштуванням ми «навчили» Apache обслуговувати статичні HTML-файли з доречно названого каталогу, тому скопіюйте туди контент і подивіться, як все це діє. Зазвичай Apache працює під користувачем apache: apache. Може знадобитися перевірка прав доступу користувачів і груп; подбайте, щоб користувач apache мав право на читання ваших файлів. Налаштувань для файлів у Apache безліч, але зараз досить буде перевірити всього пару.

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

  • Daemon (демон) Програма, що працює у фоновому режимі в очікуванні підключень. Зазвичай це сервери, які мають назву з закінченням на 'd', наприклад sshd або ftpd. Колишні версії Apache прикидалися httpd. але тепер свого імені не ховають.
  • Inetd Особливий демон, іноді званий «супердемоном»; він прослуховує всі підключення поспіль, а потім роздає їх відповідними програмами. Деякі сервери можуть очікувати виклику від inetd або його «спадкоємця» xinetd. замість того щоб постійно працювати в фоні і чекати підключення. Apache не такий.
  • Directive (інструкція, директива) Так в документації Apache (а її нам доведеться перечитати чимало) називається елемент настройки в будь-якому файлі конфігурації.

Частина 2 Стій, хто йде !?

Якщо ви маєте намір запускати на одному комп'ютері кілька серверів, використовуйте директиву Listen для прослуховування ними різних портів, і відповідним чином налаштуйте маршрутизатор.

Якщо у вас дві мережеві карти (одна підключена до Інтернету, а інша - до локальної мережі), то інструкцією Listen можна наказати Apache відповідати тільки на запити LAN-інтерфейсу:

або комбінації інтерфейсу і порту:

Доступом управляє і інструкція Allow. Вище ми вже бачили Allow from all ( «Приймати від усіх»), що пояснень не потребує. А можна і так:

і пройдуть тільки 192.168.1. * і * .example.com. Інструкцій Allow може бути кілька, а доступ отримають підключення, які відповідають хоча б одній з них. Інструкція Deny працює точно так само, але блокує доступ; а інструкція Order встановлює порядок їх взаємодії:

У першому випадку спочатку обробляються Allow і запит відхиляється, якщо немає жодного збігу; потім обробляються Deny і запит відхиляється, якщо є хоча б один збіг. Будь-який запит, який не відповідає ні Allow ', ніDeny, відхиляється, і щоб бути прийнятим, він повинен відповідати як мінімум одному Allow і жодному Deny. У другому випадку Deny обробляються першими і відхиляють будь-які збіги, якщо тільки вони потім не відповідають Allow. На противагу першим методом, запит, який не відповідає ні Deny. ні Allow. приймається.

чарівні слова

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

Ці користувачі та групи визначаються у файлі AuthUserFile. і щоб виключити його завантаження сторонніми, він повинен розташовуватися поза DocumentRoot. Одна з причин, по якій ми використовували / var / www / hostname / htdocs як DocumentRoot - в цьому випадку ми можемо помістити файл паролів рівнем вище, і він залишиться «прив'язаним» до певного хосту. Створіть файл і додайте користувача, ось так:

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

Контроль доступу

А чи не можна скомбінувати методи контролю доступу? Наприклад, на сайті локальної мережі є сторінки, до яких потрібно забезпечити доступ ззовні, але не всім. Інструкція Satisfy дозволить об'єднати обидва методи управління доступом.

доступ root

Ця команда спрацює на Ubuntu і інших дистрибутивах, які використовують sudo. У деяких системах потрібно ввести su і пароль суперкористувача. Пам'ятайте, що, працюючи в такому режимі, ви здатні змінити важливі системні файли, тому будьте гранично обережні! Дізнатися про те, що ви увійшли як root, можна по зміні системного запрошення з '$' на '#'

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

Повторіть все це для кожного створюваного віртуального хоста, потім вкажіть Apache на них, помістивши

в / etc / hosts. і запит на будь-який з цих імен поверне 192.168.1.1. але Apache. працює на даному сервері, поверне різні сайти для кожного домена. До речі про маршрутизаторах: якщо у вас NAT-маршрутизатор (а це так, якщо у вас типовий широкосмугового інтернет-доступ), то необхідно прописати йому перенаправлення всіх запитів на порт 80 на комп'ютер з Apache.

Реєстрація домену

Що далі?

Налагодивши працює сервер, зробіть резервну копію каталогу конфігурації. Раптом ви забудете або втратите щось: неважко буде відновити.

Якщо Apache вдалося налаштувати і запустити, з ним можна зробити все що завгодно. Деякі програми мають web-інтерфейси, і цим можна скористатися: встановіть MythWeb і записуйте телепередачі MythTV звідки хочете через інтернет-підключення. А можна використовувати PhpMyAdmin як графічний інтерфейс адміністрування баз даних MySQL. Gallery перетворить ваш сервер в повноцінний сайт фотогалерей. Можна випробувати роботу з wiki, блогом або CMS, перш ніж розкрити всі це великому і жахливому Інтернету. Багато з цих програм використовують PHP. працює на сервері, тому може знадобитися установка деяких додаткових пакетів на кшталт Apache-php. в залежності від вашого дистрибутива. LXF

Схожі статті