Що не повинні дозволяти конфігураційні файли apache. Встановлення та налаштування сервера Apache. Перенаправлення HTTP запитів на HTTPS

💖 Подобається?Поділися з друзями посиланням

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

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

    За замовчуванням у папці /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 - це найпопулярніший вільний веб-сервер. Станом на 2016 рік він використовується на 33% всіх сайтів інтернету, а це приблизно 304 мільярди сайтів. Цей веб-сервер був розроблений в далекому 1995, як заміна для популярного сервера NCSA і виправив безліч його проблем. Ходять чутки що його ім'я походить від a patchy, латки, тому що він виправляв помилки NCSA. Зараз, це кросплатформова програма, що підтримує Windows, Linux і MacOS і забезпечує достатню гнучкість, налаштовуваність та функціональність. Програма має модульну структуру, що дозволяє розширювати її функціональність майже нескінченно за допомогою модулів.

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

на Наразі, сама Нова версіяпрограми 2.4 тому і буде розглянуто налаштування apache 2.4. Як я вже казав, у Linux програмавстановлюється буквально у пару команд. Для встановлення в Ubuntu спочатку оновимо систему до найновішої версії:

sudo apt update
$ sudo apt upgrade

Потім установка apache2:

sudo apt install apache2

В інших дистрибутивах пакет програми називається або так, або httpd і його установка у вас не викликає труднощів.

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

sudo systemctl enable apache2

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

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

Усі налаштування містяться в папці /etc/apache/:

  • Файл /etc/apache2/apache2.confвідповідає за основні налаштування
  • /etc/apache2/conf-available/* - додаткові налаштуваннявеб-сервера
  • /etc/apache2/mods-available/*- Налаштування модулів
  • /etc/apache2/sites-available/*- настоянки віртуальних хостів
  • /etc/apache2/ports.conf- порти, на яких працює apache
  • /etc/apache2/envvars

Як ви помітили, є дві папки для conf, mods і site. Це available та enabled. При включенні модуля або хоста створюється символічне посилання з папки available (доступно) до enable (включено). Тому налаштування краще виконувати саме в папках available. Взагалі кажучи, можна було б обійтися без цих папок, взяти все і по-старому звалити в один файл, і все працювало б, але зараз так ніхто не робить.

Спочатку давайте розглянемо головний файл конфігурації:

vi /eta/apache2/apache2.conf

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

KeepAlive On- дуже корисний параметр, що дозволяє передавати кілька файлів, за одне з'єднання, наприклад, не тільки саму html сторінку, але і картинки та css файли.

MaxKeepAliveRequests 100- максимальна кількість запитів за одне з'єднання, чим більше, тим краще.

KeepAliveTimeout 5- таймати з'єднання, зазвичай для завантаження сторінки достатньо 5-10 секунд, так що більше ставити не потрібно, але і рвати з'єднання раніше, ніж завантажилися всі дані теж не потрібно.

User, Group- користувач та група, від імені яких працюватиме програма.

HostnameLookups- Записувати в логи замість ip адрес доменні іменакраще відключити, щоб прискорити роботу.

LogLevel- Рівень логування помилок. За замовчуванням використовується warn, але щоб логи заповнювалися повільніше, достатньо включити error

Include- всі директиви include відповідають за підключення розглянутих вище конфігураційних файлів.

Директиви Directory відповідають за налаштування прав доступу до тієї чи іншої директорії в файловій системі. Синтаксис тут такий:


Параметр значення

Тут доступні такі основні опції:

AllowOverride- вказує, чи потрібно читати.htaccess файли з цієї директорії, це такі ж файли налаштувань і таким же синтаксисом. All - дозволяти все, None - не читати ці файли.

DocumentRoot- встановлює з якої папки потрібно брати документи для відображення користувача

Options- вказує, які особливості веб-сервера потрібно дозволити в цій папці. Наприклад, All - дозволити все, FollowSymLinks - переходити за символічними посиланнями, Indexes - відображати вміст каталогу, якщо немає файлу індексу.

Require- Встановлює, які користувачі мають доступ до цього каталогу. Require all denied – всім заборонити, Require all granted – усім дозволити. можна використовувати замість all директиву user або group, щоб явно вказати користувача.

Order- дозволяє керувати доступом до директорії. Приймає два значення Allow,Deny - дозволити всім, крім зазначених чи Deny,Allow - заборонити всім, крім зазначених..ru.

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

У нас залишився файл /etc/apache2/ports.conf:

У ньому лише одна директива, Listen, яка вказує програмі на якому порту потрібно працювати.

Останній файл /etc/apache2/envvars, його ви навряд чи використовуватимете, в ньому вказані змінні, які можна використовувати в інших конфігураційних файлах.

Налаштування сервера Apache через htaccess

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

Важливо помітити, що для того, щоб сервер читав інструкції з. AllowOverride Noneщоб могли працювати всі налаштування потрібно AllowOverride All.

А в іншому, тут може виконуватися будь-яке налаштування сервера apache, від включення модулів до звичайної зміни доступу до папки. Оскільки всі параметри ми вже розглянули, просто наведемо пару прикладів:

Order Deny,Allow
Deny from all

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

RewriteEngine on
RewriteRule ^product/([^/\.]+)/?$ product.php?id=$1 [L]

Але це дуже велика тема і виходить за межі цієї статті.

Налаштування модулів Apache

Як я вже казав, Apache – модульна програма, її функціональність можна розширювати за допомогою модулів. Усі доступні модулі завантажувачі та конфігураційні файли модулів знаходяться у папці /etc/apache/mods-available. А активовані /etc/apache/mods-enable.

Але вам необов'язково аналізувати вміст цих папок. Налаштування Apache 2.4 за допомогою додавання модулів виконується за допомогою спеціальних команд. Переглянути всі запущені модулі можна командою:

Увімкнути модуль можна командою:

sudo a2enmod ім'я_модуля

А відключити:

sudo a2dismod ім'я_модуля

Після увімкнення або вимкнення модулів потрібно перезавантажити apache:

sudo systemctl restart apache2

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

vi /etc/apache2/mods-available/deflate.load

Це до того, що активувати модуль можна було просто додавши цей рядок у файл apache2.conf. Але заведено робити саме так, щоб уникнути плутанини.

Налаштування модулів знаходяться в тій же папці, тільки у файлі розширення.conf замість load. Наприклад, подивимося налаштування того ж модуля для стиснення deflate:

vi /etc/apache2/mods-available/deflate.conf

Файли в папці conf-available, це такі ж модулі, тільки вони встановлені окремо від apache, це можуть бути конфігураційні файли для включення php модуля або будь-якої іншої мови програмування. Тут працює все так само, тільки команди для включення та відключення цих модулів трохи інші:

a2enconf ім'я_модуля

a2disconf ім'я модуля

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

sudo a2enmod expires
$ sudo a2enmod headers
$ sudo a2enmod rewrite
$ sudo a2enmod ssl

Модулі expires та headers зменшують навантаження на сервер. Вони повертають заголовок Not Modified, якщо документ не змінено з останнього запиту. Модуль expiries дозволяє встановити час, на який браузер повинен кешувати отриманий документ. Rewrite дозволяє змінювати запитувані адреси на льоту, дуже корисно при створенні ЧПУ посилань і т.д. А останній для включення підтримки шифрування SSL. Не забудьте перезавантажити apache2 після завершення налаштувань.

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

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

Параметри хостів Apache розташовані в папці /etc/apache2/hosts-available/. Для створення нового хоста достатньо створити файл з будь-яким ім'ям (краще закінчено з ім'ям хоста) та заповнити його потрібними даними. Повернути всі ці параметри потрібно в директиву VirtualHost.Крім розглянутих параметрів, тут будуть використовуватися такі:

  • ServerName- основне ім'я домену
  • ServerAlias- додаткове ім'я, за яким буде доступний сайт
  • ServerAdmin- електронна пошта адміністратора
  • DocumentRoot- папка з документами для цього домену

Наприклад:

vi /etc/apache2/sites-available/test.site.conf

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

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

Редагування файлу httpd.conf

1. Для завантаження модуля mod_rewrite знайдіть і розкоментуйте (приберіть на початку рядка символ "#") цей рядок:
LoadModule rewrite_module modules/mod_rewrite.so
2. Для завантаження PHP інтерпретатора, до кінця блоку завантаження модулів необхідно додати рядок:
LoadModule php5_module "C:/php/php5apache2_2.dll"
3. Визначте каталог, що містить конфігураційний файл PHP, додавши нижче наступний рядок:
PHPIniDir "C:/php"
4. Знайдіть та розкоментуйте рядок:
ServerName localhost:80
5. Знайдіть рядок:
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
Призначте кореневу директорію управління сайтами (трохи раніше ви її вже створили):
DocumentRoot "C:/apache"
6. Знайдіть цей блок:

Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all

І замініть його на наступний:

Options Includes Indexes FollowSymLinks
AllowOverride All
Allow from all

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

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

8. Знайдіть блок:

DirectoryIndex index.html

Замініть його на:

DirectoryIndex index.html index.htm index.shtml index.php

9. Знайдіть рядок:
ErrorLog "logs/error.log"
Замініть на наступну (у цьому випадку переглядати глобальний файл помилок сервера буде зручніше):
ErrorLog "C:/apache/error.log"
10. Знайдіть рядок:
CustomLog "logs/access.log" common
Замініть на:
CustomLog "C:/apache/access.log" common
11. Для роботи SSI (увімкнення на стороні сервера) наступні рядки, що знаходиться в блоці , необхідно знайти та розкоментувати:
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
12. Додайте нижче, до того ж блоку , два рядки:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
13. І, нарешті, знайдіть та розкоментуйте рядки:
Include conf/extra/httpd-autoindex.conf
Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-manual.conf
Include conf/extra/httpd-default.conf
Збережіть зміни та закрийте файл "httpd.conf"

Тепер відкрийте файл "httpd-vhosts.conf", що знаходиться в директорії "conf\extra", і зробіть у ньому наступні зміни:

Існуючі блоки прикладів віртуальних хостів необхідно закоментувати, або видалити, і вставити наступне:

DocumentRoot "C:/apache/localhost/www"
ServerName localhost
ErrorLog "C:/apache/localhost/error.log"
CustomLog "C:/apache/localhost/access.log" common

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

За необхідності встановлення власних віртуальних хостів зробіть таке:

Відкрийте файл "httpd-vhosts.conf", і створіть у ньому блок приблизно такого змісту:

# Папка, де буде корінь вашого хоста.
DocumentRoot "C:/apache/test.ru/www"
# Домен за яким ви зможете звертатися до віртуального хоста.
ServerName test.ru
# Аліас (додаткове ім'я) домену.
ServerAlias ​​www.test.ru
# Файл, у якому записуватимуться помилки.
ErrorLog "C:/apache/test.ru/error.log"
# Файл журналу доступу до хоста.
CustomLog "C:/apache/test.ru/access.log" common

Потім в каталозі "apache" створіть папку "test.ru" (прямо так, з точкою), в якій, у свою чергу, створіть папку "www".

Наступний крок створення віртуального хоста – це зміна файлу C:\WINDOWS\system32\drivers\etc\hosts операційної системи. Відкрийте даний файлі додайте до нього два рядки:
127.0.0.1 test.ru
127.0.0.1 www.test.ru

Тепер перезапустіть сервер Apache ярликом "Restart", що знаходиться в меню "Start", відкрийте браузер, введіть в адресному рядку test.ru або www.test.ru і ви опинитеся у своєму віртуальному хості. Тільки будьте уважні, тепер ви зможете потрапити на оригінальний сайт з ім'ям віртуального хоста (www.test.ru якщо така існує), тільки закоментувавши або видаливши рядок: 127.0.0.1 www.test.ru, у вищезгаданому файлі "hosts".

Документація Apache при запущеному сервері доступна за адресою http://localhost/manual/

Встановлення та налаштування веб-сервера Apache завершено.

Створення пакетних файлів для запуску та зупинення сервісів

Погодьтеся, що вручну редагувати файл "hosts" при кожному запуску сервісів – це не зручно, тому для зручнішого, одночасного запуску сервісів Apache, MySQL та зміни файлу "hosts" ми створимо два пакетні файли: на запуск та зупинку, які будуть виконувати всю рутинну роботуавтоматично.

При використанні віртуальних хостів необхідно створити в директорії C:\apache два файли: vhosts-off.txt - що містить початковий вміст файлу "hosts" і vhosts-on.txt - що містить всі віртуальні хости. Зверніть увагу, що при створенні нових віртуальних хостів вам необхідно буде додавати їх у файл vhosts-on.txt, а не в C:WINDOWSsystem32driversetchosts. Подивіться на приклади нижче.

Файл vhosts-off.txt (може містити один рядок):
127.0.0.1 localhost

Приклад файлу vhosts-on.txt з віртуальними хостами www.test.ru та test.ru:

127.0.0.1 localhost
127.0.0.1 www.test.ru
127.0.0.1 test.ru

У тій же директорії C:\apache, створіть два пакетні файли: start-webserver.bat – для запуску сервісів та заміни файлу "hosts", та stop-webserver.bat – для зупинення сервісів та очищення файлу "hosts".

Файл запуску start-webserver.bat:

@echo off
echo.
if not exist C:\apache\vhosts-on.txt goto no_vhosts
echo Create virtual hosts:
copy /v /y C:\apache\vhosts-on.txt C:\WINDOWS\system32\drivers\etc\hosts
echo.
:no_vhosts
NET start Apache2.2
NET start MySQL

Файл зупинки stop-webserver.bat:

@echo off
echo.
if not exist C:\apache\vhosts-off.txt goto no_vhosts
echo Restore hosts file:
copy /v /y C:\apache\vhosts-off.txt C:\WINDOWS\system32\drivers\etc\hosts
echo.
:no_vhosts
NET stop Apache2.2
NET stop MySQL

Якщо ви не використовуєте віртуальні хости або хочете запустити сервіси без заміни файлу "hosts", просто приберіть з директорії C:\apache файли vhosts-on.txt і vhosts-off.txt.

Раніше в нашій серії по основ Linuxми розглядали основи роботи з веб-сервером Apache. Він є найбільш широко використовуваним у світі веб-сервером в Інтернеті (станом на липень 2015 року частка Apache становила 38%, IIS - займав 26%, а Nginx - 15%). Тому чим більше ви про нього знаєте і розумієте як він працює, тим більших успіхів ви досягнете за його злому.

Сьогодні ми розглянемо основи налаштування сервера Apache. Як ми писали раніше, конфігурування та налаштування майже всіх додатків у Linux або Unix здійснюється через конфігураційні файли, які є звичайним текстом. Apache тут не є винятком. Тому в цій статті ми зосередимося на файлі конфігурації apache2.conf, який знаходиться в директорії /etc/apache2.

Крок 1. Запустіть Apache2

Почнемо з того, що запустимо Apache2. Зробимо це через графічну оболонку оточення Kali, перейшовши в Applications -> Kali Linux -> System Services -> HTTP -> apache2 start, як показано на скріншоті нижче.

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

Kali >service apache2 start

Це запускає демон Apache2 і з цього моменту веб-сервер повинен обробляти наш контент в Інтернеті.

Крок 2. Перевірте працездатність сервера

Щоб перевірити, чи працює наш сервер Apache, просто перейдемо в браузері по localhost або 127.0.0.1. Якщо ви бачите сторінку як на скріншоті нижче, це означає, що сервер працює нормально!

Крок 3. Відкрийте конфігураційний файл

Щоб налаштувати Apache, нам потрібно перейти до директорії /etc/apache2.

Kali > cd /etc/apache2

Виведемо на екран список усіх файлів у цій директорії:

Kali > ls -l

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

Ми можемо відкрити apache2.conf у будь-якому текстовому редакторіале тут ми будемо використовувати Leafpad. Файл можна відкрити просто набравши в консолі:

Kali > leafpad /etc/apache2/apache2.conf

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

Крок 4. ServerRoot

Прокрутимося вниз, пропустивши всі коментарі, і знайдемо рядок #70, де починається розділ глобальних налаштувань. Тут ми бачимо налаштування ServerRoot. Це вершина дерева директорій, де сервер Apache зберігає всі пов'язані з роботою сервера файли. Рядок #84 визначає ServerRoot. Ми можемо просто розкоментувати цей рядок, якщо хочемо встановити /etc/apache2 як ServerRoot. Ми радимо вам це зробити.

Крок 5. Timeout

У наступному розділі ми маємо змінні, які визначають значення параметрів: Timeout, KeepAlive, MaxKeepAliveRequests і KeepAliveTimeout.

  • Timeout: це час, протягом якого сервер повинен виконати запит користувача. Його значення за замовчуванням – 300, а це означає, що сервер повинен обробити кожен запит протягом 300 секунд або 5 хвилин. Це, безперечно, занадто довго і це значення можна встановити в 30 секунд.
  • KeepAlive: це означає, що сервер залишається живим (тримає з'єднання) для декількох запитів від одного клієнта. За замовчуванням встановлено значення On (ввімкнено). Це означає, що клієнтам не потрібно створювати нове з'єднання кожного запиту до нашого сервера. Такий підхід дозволяє заощаджувати ресурси сервера.
  • MaxKeepAliveRequests: це значення визначає максимальну кількість секунд, допустиму між запитами, отриманими від з'єднання з одним клієнтом. Якщо ми встановимо це значення 0, то кількість часу не обмежена.
  • KeepAliveTimeout: Це кількість часу між запитами для визначення того, що з'єднання ще живе (встановлене).

Ми пропонуємо вам залишити всі значення за промовчанням, крім параметра "Timeout". Кожна ситуація відрізняється, і вам може знадобитися змінити ці значення за умовчанням для того, щоб адаптувати продуктивність сервера до конкретного середовища.

Крок 6. Користувач та групи Apache2

Давайте знову прокрутимо кілька рядків у файлі apache2.conf, поки не дійдемо до рядка #177. Тут ми можемо встановити користувача та групи Apache2. Зверніть увагу на коментар до рядка #177. Там зазначено, що ми можемо встановити ці змінні у файлі envvars ( змінні оточення). Залишимо це питання для майбутніх статей, але поки що просто майте на увазі, що і User (користувач) і Group (група) є змінними, значення яких беруться з файлу /etc/apache2/envvars.

І, нарешті, останній розділ, що має величезне значення для безпеки Apache, починається з рядка #193. Цей розділ дає гарантії, що веб-клієнти не зможуть отримати доступ до файлів .htaccess та .htpasswd.

Крок 7. Логування

У наступному розділі описано, як Apache керує логами (журналами).

У першому підрозділі ми звертаємось до параметра HostNameLookups. Ця директива повідомляє Apache2, чи повинен виконувати пошук DNS, коли він записує в лог встановлене з'єднання. За умовчанням "Off" (вимкнено) Apache2 працює набагато краще.

Крок 8. Доступні сайти

Тепер подивимося на директорію site_available (доступні сайти) і, найголовніше, на файл, який знаходиться в ній за умовчанням. Його часто називають файлом віртуальних хостів (Virtual Hosts) за промовчанням. Відкрийте цей файл, набравши в консолі:

Kali > leafpad /etc/apache2/site_available/default

Як бачите, у цьому файлі є три критичні області. Перший рядок визначає, який порт слухає веб-сервер. Тут визначено, що слухає будь-який інтерфейс на 80-му порту (*: 80). Другий рядок визначає адресу електронної пошти, на яку потрібно надсилати повідомлення у разі виникнення проблем із сервером. За замовчуванням там стоїть адреса Якщо ви є системним адміністратором, то тут ви можете вказати вашу адресу електронної пошти. Третій елемент може бути найважливішим – DocumentRoot. Він визначає, де буде розміщуватись контент для цього віртуального хоста, значенням за замовчуванням є директорія /var/www. Ми пропонуємо вам залишити все у тому вигляді, в якому це було визначено розробниками.

Крок 9. Порти

Нарешті, ми можемо перейти у файлі apache2.conf ще нижче до рядка #248 - "include port.conf". Ця директива просто повідомляє Apache про необхідність перейти до файлу port.conf, щоб знайти порти, які він повинен прослуховувати.



Розповісти друзям