Установка і настройка сервера 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:
В інших дистрибутивах пакет програми називається або так, або httpd і його установка у вас не викличе труднощів.
Після завершення установки потрібно додати веб-сервер в автозавантаження, щоб не запускати його вручну після включення комп`ютера:
$ Vi /eta/apache2/apache2.confTimeout - вказує як довго сервер буде намагатися продовжити перервану передачу або прийом даних. 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 - заборонити для всіх, крім зазначених. Тепер ми можемо заборонити доступ до директорії для всіх: Deny from all, а потім дозволити тільки для додатки від inuasparwil.ru: Allow from inuasparwil.ru.
Тут всі ці директиви не використовуються, оскільки нас влаштовують значення за замовчуванням, але ось в файлах .htaccess вони можуть бути дуже корисні.
У нас залишився файл /etc/apache2/ports.conf:
У ньому тільки одна директива, Listen, яка вказує програмі на якому порту потрібно працювати.
Останній файл / etc / apache2 / envvars, його ви навряд чи будете використовувати, в ньому вказані змінні, які можна використовувати в інших конфігураційних файлах.
Далі поговоримо трохи про htacess. Зовсім небагато.
Налаштування сервера Apache через htaccess
Файли .htaccess дозволяють налаштовувати веб-сервер на Ubuntu для поведінки в певній директорії. Всі інструкції, зазначені в цьому файлі виконуються як би вони були обгорнуті в тег
Важливо зауважити, що для того, щоб сервер читав інструкції з .htaccess настройки для цієї папки в основному файлі або файлі віртуального хоста не повинні містити AllowOverride None, щоб могли працювати всі налаштування потрібно AllowOverride All.
А в іншому, тут може виконуватися будь-яка настройка сервера apache, від включення модулів, до звичайного зміни доступу до папки. Оскільки всі параметри ми вже розглянули просто наведемо кілька прикладів:
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 за допомогою додавання модулів виконується за допомогою спеціальних команд. Подивитися всі запущені модулі можна командою:
Включити модуль можна командою:
$ Sudo a2dismod імя_модуляПісля включення або відключення модулів потрібно перезавантажити apache:
$ Vi /etc/apache2/mods-available/deflate.loadЦе до того, що активувати модуль можна було просто додавши цей рядок в файл 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.site127.0.0.1 test.site
Ось, ну тепер буде працювати, відкривайте браузер, перевіряйте.
висновки
От і все. Установка і настройка Apache linux завершена, ви можете використовувати програму для розміщення ваших сайтів. Більш того, ви не просто налаштували її, ви розібралися з усіма подробицями і тепер знаєте трішки більше. Якщо у вас залишилися ще питання, пишіть в коментарях!
- Куди встановлюються програми в ubuntu
- Безпека php на сервері
- Як зробити свій сервер для сайту
- Налаштування сервера centos 7 після установки
- Кращі поштові сервери linux
- Кращі проксі сервери linux
- Як користуватися blender для початківців
- Що краще nginx або apache 2016
- Як налаштувати https-з`єднання?
- Обговорюється закриття проекту apache openoffice
- Налаштування файлу htaccess
- Установка owncloud ubuntu 16.04
- Установка і настройка freenx
- Установка chrome 50 ubuntu 16.04
- Openserver або denwer?
- Налаштування nfs в ubuntu 16.04
- Модулі apache
- Установка ispmanager 5 на ubuntu server
- Налаштування файлу php.ini
- Установка lamp ubuntu 16.04
- Установка lamp в centos 7