Підручники Apache для початківців
Що таке Apache?
Apache — чудова прикладна програма. Це найпоширеніша програма для веб-серверів у світі з часткою понад 50% на ринку комерційних веб-серверів. Apache є найбільш поширеною програмою веб-сервера в Unix-подібних операційних системах, але її можна використовувати майже на всіх платформах, таких як Windows, OS X, OS/2 тощо. Слово «Апачі» походить від назви індіанського племені «Апачі», відомого своїми навичками ведення війни та розробки стратегій.
Це модульна веб-серверна програма на основі процесів, яка створює новий потік із кожним одночасним підключенням. Він підтримує низку функцій; багато з них скомпільовані як окремі модулі та розширюють його основну функціональність і можуть надавати все, від підтримки мови програмування на стороні сервера до механізму автентифікації. Віртуальний хостинг є однією з таких функцій, яка дозволяє одному веб-серверу Apache обслуговувати кілька різних веб-сайтів.
Як встановити Apache
Існує багато способів встановлення пакета або програми. Нижче перераховані –
- Одна з особливостей цього відкрита вихідний веб-додаток полягає в тому, що будь-хто може створити інсталятор відповідно до свого середовища. Це дозволило різним постачальникам, таким як Debian, Red Hat, FreeBSD, Suse тощо, налаштувати розташування файлів і конфігурацію apache з урахуванням інших встановлених програм і базової ОС.
- Окрім встановлення за допомогою інсталятора від постачальника, завжди є можливість зібрати та встановити його з вихідного коду. Встановлення Apache із вихідного файлу не залежить від платформи та працює для всіх ОС.
Веб-сервер Apache — це модульна програма, де адміністратор може вибрати необхідну функціональність і встановити різні модулі відповідно до своїх вимог.
Усі модулі можна зібрати як a Динамічні спільні об’єкти (DSO — це об’єктний файл, який може використовуватися кількома програмами під час їх виконання), який існує окремо від основного файлу apache. Настійно рекомендується підхід DSO, він дуже спрощує завдання додавання/видалення/оновлення модулів із конфігурації серверів.
Встановіть платформу Apache:Linux
У системах на основі Red Hat або rpm
Якщо ви користуєтеся дистрибутивом Linux на основі rpm (RedHat Package Manager — це утиліта для встановлення програм у системах Linux), наприклад Red Hat, Fedora, CentOs, Suse, ви можете встановити цю програму або за допомогою спеціального менеджера пакетів постачальника, або безпосередньо створюючи файл rpm з доступного вихідного архіву.
Ви можете інсталювати Apache за допомогою диспетчера пакунків за замовчуванням, доступного для всіх дистрибутивів Red Hat, таких як CentOs, Red Hat і Fedora.
[root@amsterdam ~]# yum install httpd
Вихідний архів Apache можна перетворити на файл rpm за допомогою наступної команди.
[root@amsterdam ~]# rpmbuild -tb httpd-2.4.x.tar.bz2
Для створення файлу .rpm із джерела на вашому сервері обов’язково має бути встановлений пакет -devel.
Після того, як ви перетворите вихідний файл у інсталятор rpm, ви можете використати наступну команду для встановлення Apache.
[root@amsterdam ~]# rpm –ivh httpd-2.4.4-3.1.x86_64.rpm
Після встановлення сервер не запускається автоматично, щоб запустити службу, потрібно використати будь-яку з наведених нижче команд у Fedora, CentOs або Red Hat.
[root@amsterdam ~]# /usr/sbin/apachectl start [root@amsterdam ~]# service httpd start [root@amsterdam ~]# /etc/init.d/httpd start
Встановіть Apache з вихідного коду
Щоб установити apache із джерела, на вашому сервері потрібно встановити пакет –devel. .Ви можете знайти останню доступну версію Apache, ви можете її завантажити тут . Після завантаження вихідного файлу перемістіть його до папки /usr/local/src.
[root@amserversterdam ~] cd /usr/local/src [root@amserversterdam ~] gzip -d httpd-2.2.26.tar.gz [root@amserversterdam ~] tar xvf httpd-2.2.26.tar [root@amserversterdam ~] httpd-2.2.26
Щоб переглянути всі параметри конфігурації, доступні для Apache, ви можете скористатися параметром ./configure –help. Найпоширенішим варіантом конфігурації є –prefix={назва каталогу встановлення}.
[root@amserversterdam ~]./configure --help [root@amserversterdam ~]./configure –prefix=/usr/local/apache –enable-so [root@amserversterdam ~] make [root@amserversterdam ~] make install
Наведений вище приклад демонструє компіляцію Apache у каталозі /usr/local/apache із можливістю DSO. Параметр –enable-so може завантажувати необхідні модулі в apache під час виконання через механізм DSO, а не вимагати повторної компіляції.
Після завершення інсталяції ви зможете переглядати сторінку веб-серверів за замовчуванням за допомогою улюбленого браузера. Якщо на вашому сервері ввімкнено брандмауер, вам потрібно зробити виняток для порту 80 на брандмауері ОС. Ви можете скористатися такою командою, щоб відкрити порт 80.
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
сервіс iptables зберегти
Ви можете побачити значення за замовчуванням Екран привітання Apache2 переглядаючи IP-адресу вашого сервера.
Що таке віртуальний хост?
Веб-сервер Apache може розміщувати кілька веб-сайтів на САМЕ сервер. Вам не потрібні окремий сервер і програмне забезпечення Apache для кожного веб-сайту. Цього можна досягти за допомогою концепції Віртуальний хост or VHost.
Будь-який домен, який ви хочете розмістити на своєму веб-сервері, матиме окремий запис у файлі конфігурації apache.
Типи Apache Virtualhost
- Віртуальний хост на основі імен
- Віртуальний хост на основі адреси або IP.
Віртуальний хост на основі імен
Віртуальний хостинг на основі імен використовується для розміщення кількох віртуальних сайтів на одній IP-адресі.
Щоб налаштувати віртуальний хостинг на основі імені, вам потрібно встановити IP-адресу, на яку ви збираєтеся отримувати запити Apache для всіх потрібних веб-сайтів. Ви можете зробити це за допомогою директиви NameVirutalHost у конфігурації apache, тобто файл httpd.conf/apache2.conf.
Приклад віртуального хосту Apache:
NameVirtualHost *:80 <VirtualHost 192.168.0.108:80> ServerAdmin webmaster@example1.com DocumentRoot /var/www/html/example1.com ServerName www.example1.com </VirtualHost> <VirtualHost 192.168.0.108:80> ServerAdmin admin@example2.com DocumentRoot /var/www/html/example2.com ServerName www.example2.com </VirtualHost>
Ви можете додати скільки завгодно віртуальних хостів відповідно до ваших вимог. Ви можете перевірити файли веб-конфігурації за допомогою:
[root@amsterdam ~]#httpd –t Syntax OK
Якщо файл конфігурації має якийсь неправильний синтаксис, він видасть помилку
[root@115 conf.d]# httpd -t Syntax error on line 978 of /etc/httpd/conf/httpd.conf: Invalid command '*', perhaps misspelled or defined by a module not included in the server configuration
Віртуальний хост на основі IP
Щоб налаштувати віртуальний хостинг на основі IP, на вашому сервері потрібно налаштувати більше однієї IP-адреси. Отже, кількість vhost apache залежатиме від кількості IP-адрес, налаштованих на вашому сервері. Якщо ваш сервер має 10 IP-адрес, ви можете створити 10 віртуальних хостів на основі IP.
На наведеній вище діаграмі двом веб-сайтам example1.com і example2.com призначено різні IP-адреси, і вони використовують віртуальний хостинг на основі IP.
Listen 192.168.0.100:80 <VirtualHost 192.168.10.108:80> ServerAdmin webmaster@example1.com DocumentRoot /var/www/html/example1.com ServerName www.example1.com </VirtualHost> <VirtualHost 192.168.10.109:80> ServerAdmin admin@example2.com DocumentRoot /var/www/html/example2.com ServerName www.example2.com </VirtualHost>
Що потрібно Apache для запуску файлу Php?
Запуск файлів Php на потребах Apache mod_php на вашому сервері. Це дозволяє Apache інтерпретувати файли .Php. Він має обробники Php, які інтерпретують код Php у apache та надсилають HTML на ваш веб-сервер.
Якщо mod_php увімкнено на вашому сервері, ви матимете файл під назвою php.conf у каталозі /etc/httpd/conf.d/. Ви також можете перевірити це за допомогою:
httpd -M | grep "php5_module"
Результат буде подібним до:
Обробники PHP в Apache
- mod_php
- CGI
- FastCGI
- suPHP
mod_phpє найстарішим обробником PHP, він робить PHP частиною apache і не викликає жодних зовнішніх процесів PHP. Цей модуль встановлено за замовчуванням у кожному репозиторії дистрибутива Linux, тому ввімкнути/вимкнути цей модуль дуже легко.
Якщо ви використовуєте FastCGI як ваш обробник PHP, ви можете налаштувати кілька версій PHP для використання різними обліковими записами на вашому сервері.
FastCGI тобто mod_fastcgi є розширенням mod_fcgid, де як mod_fcgid є високопродуктивною альтернативою CGI, тобто mod_cgi. Він запускає достатню кількість екземплярів CGI для обробки одночасних веб-запитів. Він також використовує suexec для підтримки різних користувачів із їхніми власними екземплярами PHP і покращує веб-безпеку.
Для запуску ruby-файлів на Apache потрібно ввімкнути mod_ruby. Apache також може обробляти файли ruby через FastCGI. Можна використовувати декілька версій ruby за допомогою mod_fcgid, тобто FastCGI.
Ви також можете встановити apachepassenger і налаштувати Apache, щоб використовувати його для обслуговування ruby-сторінок.
(Phusion Passenger також відомий як "пасажир” — це безкоштовний модуль веб-сервера, призначений для інтеграції з Apache і Nginx )
Кроки для встановлення mod_ruby на вашому сервері –
cd /tmp wget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gz tar zxvf mod_ruby-1.2.6.tar.gz cd mod_ruby-1.2.6/ ./configure.rb --with-apr-includes=/usr/include/apr-1 make make install
Як запустити Ruby з Apache
Ми повинні додати модуль mod_ruby до конфігурації Apache, тобто /etc/httpd/conf.d/ruby.conf, і додати наступний рядок.
LoadModule ruby_module modules/mod_ruby.so
Якщо ви бажаєте ввімкнути або вимкнути ці модулі, вам потрібно відредагувати файл конфігурації apache і прокоментувати або розкоментувати ці модулі, якщо веб-сервер уже скомпільовано з цими модулями.
Як захистити веб-сервер Apache
Захист вашого веб-сервера дуже важливий, це означає надання іншим доступу лише до потрібної інформації та захист ваших даних і обмеження доступу.
Це звичайні речі, які підвищують безпеку веб-серверів Apache.
1) Приховування інформації про версію та ОС Apache:
Apache відображає свою версію та назву операційної системи в помилках, як показано на знімку екрана нижче.
Хакер може використовувати цю інформацію для здійснення атаки, використовуючи загальнодоступні вразливості в конкретній версії сервера або ОС.
Щоб веб-сервер Apache не відображав цю інформацію, ми маємо змінити
Параметр «підпис сервера», доступний у файлі конфігурації apache. За замовчуванням він «увімкнено», нам потрібно встановити його «вимкнено».
vim /etc/httpd/conf/httpd.conf
ServerSignature Off ServerTokens Prod
Ми також встановили «ServerTokens Prod», який повідомляє веб-серверу повертати лише apache і придушувати основну та проміжну версії ОС
Після зміни конфігураційного файлу вам потрібно перезапустити/перезавантажити веб-сервер apache, щоб зробити його ефективним.
service httpd restart
2) Вимкнути список каталогів
Якщо в кореневому каталозі вашого документа немає файлу індексу, веб-сервер Apache за умовчанням відображатиме весь вміст кореневого каталогу документа.
Цю функцію можна вимкнути для певного каталогу за допомогою «директиви параметрів», доступної у файлі конфігурації Apache.
<Directory /var/www/html> Options -Indexes </Directory>
3) Відключення непотрібних модулів
Хорошою практикою є відключення всіх непотрібних модулів, які не використовуються. Ви можете переглянути список увімкнених модулів, доступних у вашому конфігураційному файлі apache –
[root@amsterdam ~]#httpd –M perl_module (shared) php5_module (shared) proxy_ajp_module (shared) python_module (shared) ssl_module (shared)
Багато модулів у списку можна вимкнути, наприклад mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex, оскільки вони майже не використовуються будь-якими робочими веб-серверами.
vi /etc/httpd/conf/httpd.conf #LoadModule auth_digest_module modules/mod_auth_digest.so
Після того, як ви прокоментували модуль, збережіть файл.
Перезапустіть служби Apache за допомогою такої команди.
/etc/init.d/httpd restart
4) Обмеження доступу до файлів поза кореневим каталогом веб-сайту
Якщо ви хочете переконатися, що файли, які знаходяться за межами кореневого веб-каталогу, недоступні, ви повинні переконатися, що каталог обмежено за допомогою «Дозволити» та «Заборонити» у файлі конфігурації веб-сервера.
<Directory/> Options None AllowOverride None Order deny,allow Deny from all </Directory>
Якщо ви обмежите доступ за межами кореневого веб-каталогу, ви не зможете отримати доступ до файлів, розташованих у будь-якій іншій папці на вашому веб-сервері, ви отримаєте код повернення 404.
5) Використання mod_evasive для спростування DoS-атаки
Якщо ви бажаєте захистити свій веб-сервер від Dos (тобто відмови в обслуговуванні), вам слід увімкнути модуль mod_evasive. Це сторонній модуль, який виявляє Dos-атаку та запобігає завданню такої шкоди атаці, як якщо б її не було. Його можна завантажити тут.
6) Використання mod_security для підвищення безпеки Apache
Цей модуль працює як брандмауер для Apache і дозволяє контролювати трафік в режимі реального часу. Це також запобігає веб-сервер від атак грубою силою. Модуль mod_security можна встановити за допомогою менеджера пакетів за замовчуванням вашого дистрибутива.
7) Обмеження розміру запиту
Apache не має жодних обмежень щодо загального розміру http-запиту, який може призвести до DoS-атаки. Ви можете обмежити розмір запиту директиви Apache “LimitRequestBody” за допомогою тегу каталогу. Значення може бути від 0 до 2 ГБ (тобто 2147483647 байт) відповідно до ваших вимог.
<Directory "/var/www/html/uploads"> LimitRequestBody 512000 </Directory>
Формат журналу Apache
Журнали Apache містять детальну інформацію, яка допомагає виявити типові проблеми з сервером.
Щоб створити журнали доступу, потрібно ввімкнути mod_log_configmodule.
У конфігураційному файлі apache доступні три директиви, тобто
- TransferLog: Створення файлу журналу.
- LogFormat: вказівка спеціального формату.
- CustomLog : Створення та форматування файлу журналу.
Директива TransferLog доступна у файлі конфігурації apache і повертає файли журналу віртуального хоста відповідно до встановлених параметрів.
<VirtualHost www.example.com> ServerAdmin webmaster@example.com DocumentRoot /usr/www/example/httpd/htdocs/ ServerName www.example.com ServerAlias example.com www.example ErrorLog /usr/www/example/httpd/logs/error_log TransferLog/usr/www/example/httpd/logs/accesslog CustomLog /usr/www/example/httpd/logs/accesslog combined </VirtualHost>
Два типи формату журналу Apache
- Загальний формат журналу
- Комбінований формат журналу.
Ви можете ввімкнути їх, відредагувавши файл конфігурації apache, наприклад файл apache2.conf (Debian/ubuntu) або httpd.conf (системи на базі rpm).
Загальний формат журналу
LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog logs/access_log common
Загальний журнал, створений Apache
[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test
Комбінований формат журналу
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined CustomLog log/access_log combined
Тут,
- %h є віддаленим хостом
- %l – це ідентифікатор користувача, визначений identd
- %u — ім’я користувача, визначене автентифікацією HTTP
- %t – це час, коли сервер завершив обробку запиту.
- %r — рядок запиту від клієнта. («GET / HTTP/1.0»)
- %>s – код стану, надісланий із сервера клієнту (500, 404 тощо)
- %b — розмір відповіді клієнту (у байтах)
- Реферер – це сторінка, яка посилається на цю URL-адресу.
- User-agent — рядок ідентифікації браузера.
Комбінований журнал, створений Apache:
199.187.122.91 - - [06/Mar/2014:04:22:58 +0100] "GET /robots.txt HTTP/1.1" 404 1228 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
Спеціальний журнал створює окремий файл журналу для кожного віртуального хосту на вашому сервері. Його потрібно вказати в розділі віртуального хоста конфігураційного файлу.
Нижче можна побачити згадану конфігурацію віртуального хосту, згенерований журнал буде користуватись для цього віртуального хосту, а формат буде об’єднано.
Налаштуйте свій перший виробничий веб-сервер
1. Щоб мати робочий веб-сервер, вам потрібен виділений вузол (Фізичний/віртуальний або хмарний екземпляр) під керуванням Linux/Unix, Windows, MacOS тощо.
2. Веб-сервер повинен мати a пряме підключення до мережі і статичну IP-адресу налаштований на ньому.
3. Потрібно мати все Модулі необхідні для запуску веб-сторінок. Якщо веб-сервер обробляє PHP-сторінки, він повинен мати включений модуль PHP.
- Воно також повинно бути хорошим антивірус програму, налаштовану та запущену для захисту веб-сервера від шкідливих програм або вірусних атак. Вам також потрібен механізм оновлення налаштовану програму захисту від вірусів/зловмисного програмного забезпечення на регулярній основі без ручного втручання, щоб отримати від них максимальну користь.
- Якщо у вас є сотні доменів, які будуть розміщені на вашому веб-сервері, вам потрібно впровадити обмеження на квоту файлової системи для кожного домену, кількість баз даних, які може створити кожен домен, кількість облікових записів електронної пошти на домен тощо.
- Якщо ваш веб-сервер налаштовано для служби загального хостингу, користувачів вашого веб-сервера потрібно обмежити. Користувач спільного хостингу повинен мати найменші привілеї користувача, щоб він не пошкодив важливі файли та не зламав весь сервер. Apache не надає жодних подібних функцій і потребує різних програм сторонніх розробників, налаштування ОС для досягнення цього.
- Якщо ви додаєте a новий домен на вашому веб-сервері потрібно відредагувати сотні файлів конфігурації, щоб увімкнути всі функції для доданого домену.
- Якщо потрібно один із розміщених доменів різні налаштування PHP ніж інші домени, реалізація цього в основному веб-сервері Apache дуже складна і потребує значного налаштування вашого веб-сервера.
- Робочий веб-сервер потребує a брандмауер для блокування небажаного трафіку, який може спричинити високе навантаження на ваш сервер. Реалізація IPTABLE правила з командним рядком дуже складні. Щоб написати ефективні правила брандмауера для блокування небажаного трафіку, йому потрібні знання ядра середовища Linux/Unix. IPTABLE базується на модулі netfilter; це брандмауер рівня ОС, який дозволяє адміністратору створювати правила для вхідного/вихідного трафіку на сервері.
- Робочий веб-сервер вимагає кількох різних програм, наприклад Електронна пошта, Ftp для завантаження файлів, Система доменних імен для паркованих доменів. Керування всіма цими програмами в ядрі системи Linux/Unix вимагає досвіду роботи з відповідними технологіями.
Отже, можна сказати, що керування веб-сервером для кількох доменів є дуже складним завданням і вимагає редагування сотень конфігураційних файлів, налаштування кожної програми для досягнення бажаного результату. Усунення несправностей будь-якої конфігурації промахів буде дуже складним для новачків.
Рішення за допомогою Cpanel або подібного програмного забезпечення
Cpanel забезпечує графічний спосіб керування веб-сервером. Він призначений для надання послуг масового хостингу, простих у використанні та налаштуванні. cPanel зменшив технічні бар’єри для доступу до хостингу та управління веб-сервером. Це полегшує складне завдання, надає багато корисних і простих у використанні веб-інтерфейсів, які виконують звичайні завдання системного адміністрування, необхідні для роботи веб-сервера.
cPanel компілює власну версію програмного забезпечення.
Якщо вам потрібно перекомпілювати веб-сервер, наприклад apache, на звичайній платформі Linux, вам потрібно вручну вибрати/шукати потрібний модуль. cPanel надає функціональні можливості Easyapache, які є методом компіляції веб-сервера на основі сценаріїв.
Він не лише надає вам веб-послуги, але й Mail, DNS, FTP та багато інших служб, необхідних для вашої веб-програми.
Завдання, яке потребує досвіду роботи з основним хостингом на базі Linux/Unix, як-от встановлення SSL, перекомпіляція Apache з різними модулями PHP, оновлення веб-захисту, налаштування ефективних правил IPTABLE, додавання користувачів ftp, створення облікових записів електронної пошти для кожного домену, сканування кореневої частини документа антивірусом і створення баз даних легко виконати за допомогою cPanel.
Він надає багато сценаріїв, які виправляють, встановлюють і усувають типові адміністративні завдання.
Він забезпечує функції резервного копіювання та відновлення, усуваючи необхідність вручну копіювати файли в резервне сховище. Якщо ви створюєте резервну копію свого домену, cPanel створить файл tar, який міститиме кореневу папку документів, облікові записи електронної пошти та листи, облікові записи ftp, бази даних, записи DNS та інші програми.
Він також надає надійну документацію та має дуже велику спільноту користувачів, де ви можете обговорити та отримати рішення своїх проблем.
Отже, можна так сказати cPanel це найкраща програма для керування веб-сервером із необхідними функціями. Він надає простий у користуванні інтерфейс для керування вашим доменом і механізм, щоб уникнути складності керування основним веб-сервером.
Існує багато конкуруючих продуктів cPanel, таких як Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel тощо.