Установка і настройка сервера apache

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

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

установка Apache

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


$ Sudo apt upgrade

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

$ Sudo apt install apache2

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

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

$ Vi /eta/apache2/apache2.conf

apache

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

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

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

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

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

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

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

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

apache1

Директиви 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 - заборонити для всіх, крім зазначених. Тепер ми можемо заборонити доступ до директорії для всіх: Deny from all, а потім дозволити тільки для додатки від inuasparwil.ru: Allow from inuasparwil.ru.

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

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

apache2




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

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

apache3

Далі поговоримо трохи про htacess. Зовсім небагато.

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

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

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

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

Order Deny, Allow
Deny from all

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


RewriteRule ^ product /([^/.]+)/?$ product.php? Id = "$ 1" [L]

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

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

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

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

$ Apache2ctl -M

apache4

Включити модуль можна командою:

$ Sudo a2dismod імя_модуля

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

$ Vi /etc/apache2/mods-available/deflate.load

apache5

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

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

$ A2enconf імя_модуля $ 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 - папка з документами для цього домену

наприклад:

ServerName test.site
ServerAlias ​​test.site
ServerAdmin webmaster @ localhost
DocumentRoot /var/www/test.site/public_html
ErrorLog $ {APACHE_LOG_DIR} /error.log
CustomLog $ {APACHE_LOG_DIR} /access.log combined

Віртуальні хости, як і модулі потрібно активувати. Для цього є спеціальні утиліти. Щоб активувати наберіть:

$ Sudo a2dissite test.site

Налаштування віртуальних хостів Apache завершена і на публічному сервері це все б вже працювало, але якщо вам потрібна настройка Apache на домашній машині, то ви ваш новий сайт не відчиняться в браузері. Браузер не знає такого сайту. І звідки йому знати? DNS служби не можуть нічого повідомити про це доменне ім`я. Але в системі Linux ми можемо самі вказати ip адреси для доменних імен в файлі / etc / hosts. Тому додаємо в кінець файлу такі рядки:

127.0.0.1 test.site
127.0.0.1 test.site

Ось, ну тепер буде працювати, відкривайте браузер, перевіряйте.

висновки

От і все. Установка і настройка Apache linux завершена, ви можете використовувати програму для розміщення ваших сайтів. Більш того, ви не просто налаштували її, ви розібралися з усіма подробицями і тепер знаєте трішки більше. Якщо у вас залишилися ще питання, пишіть в коментарях!

Поділися в соціальних мережах:

Схожі
Що краще nginx або apache 2016Що краще nginx або apache 2016
Безпека php на серверіБезпека php на сервері
Установка nginx ubuntu 16.04Установка nginx ubuntu 16.04
Налаштування сервера centos 7 після установкиНалаштування сервера centos 7 після установки
Openserver або denwer?Openserver або denwer?
Кращі поштові сервери linuxКращі поштові сервери linux
Обговорюється закриття проекту apache openofficeОбговорюється закриття проекту apache openoffice
Як зробити свій сервер для сайтуЯк зробити свій сервер для сайту
Як користуватися blender для початківцівЯк користуватися blender для початківців
Як налаштувати https-з`єднання?Як налаштувати https-з`єднання?
» » Установка і настройка сервера apache