Підручники з Apache для початківців

Зміст

Що таке Apache?

Apache - чудова частина прикладного програмного забезпечення. Це найпоширеніший додаток Web Server у світі, який займає понад 50% частки на ринку комерційних веб-серверів. Apache - це найпоширеніший додаток веб-сервера в операційних системах, схожих на Unix, але може використовуватися майже на всіх платформах, таких як Windows, OS X, OS / 2 і т. Д. Слово Apache взято з імені Native Американське плем'я "апачі", яке славиться своїми навичками ведення війни та виробленням стратегій.

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

Як встановити Apache

Існує безліч способів встановлення пакету або програми. Вони перелічені нижче -

  1. Однією з особливостей цього веб-додатку з відкритим кодом є те, що кожен може зробити інсталятор відповідно до власного середовища. Це дозволило різним постачальникам, таким як Debian, Red Hat, FreeBSD, Suse тощо, налаштувати розташування файлів та конфігурацію apache з урахуванням інших встановлених програм та базової ОС.
  2. Окрім встановлення його від інсталятора, що базується на постачальнику, завжди є можливість побудови та встановлення з вихідного коду. Встановлення Apache з вихідного файлу не залежить від платформи та працює для всіх ОС.

Веб-сервер apache - це модульна програма, де адміністратор може вибрати необхідну функціональність та встановити різні модулі відповідно до його / її вимог.

Усі модулі можуть бути скомпільовані як динамічні спільні об'єкти (DSO - це файл об'єкта, до якого можуть спільно користуватися кілька програм під час їх виконання), який існує окремо від основного файлу apache. Настійно рекомендується підхід DSO, він робить завдання додавання / видалення / оновлення модулів з конфігурації серверів дуже простим.

Встановіть Apache: Linux Platform

На системах на базі Red Hat або rpm

Якщо ви використовуєте rpm (RedHat Package Manager - це утиліта для встановлення додатків у системах Linux), заснований на дистрибутиві Linux, тобто Red Hat, Fedora, CentOs, Suse, ви можете встановити цю програму або менеджером пакетів, що відповідає постачальнику, або безпосередньо побудувавши файл rpm з доступного джерела tarball.

Ви можете встановити Apache за допомогою менеджера пакетів за замовчуванням, доступного у всіх дистрибутивах на базі Red Hat, таких як CentOs, Red Hat та Fedora.

[root @ amsterdam ~] # yum встановити 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 ~] # служба 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 ~] зробити встановлення

У наведеному вище прикладі показано компіляцію 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 для кожного веб-сайту. Цього можна досягти за допомогою концепції Virtual Host або VHost.

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

Типи Apache Virtualhost

  1. Віртуальний хост на основі імен
  2. Віртуальний хост на основі адреси або IP.

Віртуальний хост на основі імен

Віртуальний хостинг на основі імен використовується для розміщення декількох віртуальних сайтів на одній IP-адресі.

Для того, щоб налаштувати віртуальний хостинг на основі імен, вам потрібно встановити IP-адресу, на яку ви збираєтесь отримувати запити Apache для всіх бажаних веб-сайтів. Ви можете зробити це за допомогою директиви NameVirutalHost у конфігурації apache, тобто у файлі httpd.conf / apache2.conf.

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

NameVirtualHost *: 80ServerAdmin Ця електронна адреса захищена від спам-ботів. Вам потрібно увімкнути JavaScript, щоб переглянути його.DocumentRoot /var/www/html/example1.comІм'я сервера www.example1.comServerAdmin Ця електронна адреса захищена від спам-ботів. Вам потрібно увімкнути JavaScript, щоб переглянути його. DocumentRoot /var/www/html/example2.com Ім'я сервера www.example2.com 

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

[root @ amsterdam ~] #httpd -tСинтаксис OK

Якщо файл конфігурації має неправильний синтаксис, він видасть помилку

[root @ 115 conf.d] # httpd -tПомилка синтаксису в рядку 978 /etc/httpd/conf/httpd.conf:Недійсна команда '*', можливо, неправильно написана або визначена модулем, не включеним до конфігурації сервера

Віртуальний хост на основі IP

Для того, щоб налаштувати віртуальний хостинг на основі IP, вам потрібно мати більше однієї IP-адреси, налаштованої на вашому сервері. Отже, кількість vhost apache буде залежати від кількості IP-адрес, налаштованих на вашому сервері. Якщо ваш сервер має 10 IP-адрес, ви можете створити 10 віртуальних хостів на основі IP.

На наведеній вище схемі двом веб-сайтам example1.com та example2.com були призначені різні IP-адреси та вони використовують віртуальний хостинг на основі IP.

Слухайте 192.168.0.100:80ServerAdmin Ця електронна адреса захищена від спам-ботів. Вам потрібно увімкнути JavaScript, щоб переглянути його.DocumentRoot /var/www/html/example1.comІм'я сервера www.example1.comServerAdmin Ця електронна адреса захищена від спам-ботів. Вам потрібно увімкнути JavaScript, щоб переглянути його. DocumentRoot /var/www/html/example2.com Ім'я сервера www.example2.com 

Що 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 та покращує веб-безпеку.

Для запуску рубінових файлів на Apache потрібно активувати mod_ruby. Apache також може обробляти рубінові файли за допомогою FastCGI. Можна використовувати декілька версій ruby ​​за допомогою mod_fcgid, тобто FastCGI.

Ви також можете встановити Apache для пасажирів і налаштувати Apache на використання його для обслуговування рубінових сторінок.

(Phusion Passenger, також відомий як " пасажир " - це безкоштовний модуль веб-сервера, призначений для інтеграції з Apache та Nginx)

Кроки для встановлення mod_ruby на ваш сервер -

CD / TMPwget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gztar zxvf mod_ruby-1.2.6.tar.gzcd mod_ruby-1.2.6 /./configure.rb --with-apr-includes = / usr / include / apr-1зробитизробити встановлення

Як запустити Ruby за допомогою Apache

Ми повинні додати модуль mod_ruby до конфігурації Apache, тобто /etc/httpd/conf.d/ruby.conf і додати наступний рядок.

LoadModule ruby_module модулі / mod_ruby.so

Якщо ви хочете увімкнути або вимкнути ці модулі, вам доведеться відредагувати файл конфігурації apache та прокоментувати або розкомментирувати ці модулі, якщо веб-сервер вже скомпільований з цими модулями.

Як захистити веб-сервер Apache

Захист веб-сервера дуже важливий, це означає, що дозволити іншим бачити лише передбачувану інформацію, захистити ваші дані та обмежити доступ.

Це загальні речі, які покращують безпеку веб-серверів Apache.

1) Приховування версії Apache та інформації про ОС:

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

Зловмисник може використовувати цю інформацію для запуску атаки, використовуючи загальнодоступні уразливості в певній версії сервера або ОС.

Для того, щоб веб-сервер Apache не відображав цю інформацію, ми маємо змінити

Опція “підпис сервера”, доступна у файлі конфігурації apache. За замовчуванням він увімкнений, нам потрібно вимкнути його.

vim /etc/httpd/conf/httpd.conf
Підпис сервера вимкненоServerTokens Prod

Ми також встановили “ServerTokens Prod”, який повідомляє веб-серверу повертати лише apache і придушувати основну та другорядну версію ОС

Змінивши файл конфігурації, вам доведеться перезапустити / перезавантажити веб-сервер apache, щоб зробити його ефективним.

послуга httpd перезапустити

2) Вимкнути перелік каталогів

Якщо у кореневому каталозі документа немає файлу індексу, за замовчуванням веб-сервер apache покаже весь вміст кореневого каталогу документа.

Цю функцію можна вимкнути для певного каталогу за допомогою "директиви параметрів", доступної у файлі конфігурації Apache.

Параметри -Індекси

3) Вимкнення непотрібних модулів

Доброю практикою є вимкнення всіх непотрібних модулів, які не використовуються. Ви можете побачити список увімкнених модулів, доступних у вашому конфігураційному файлі apache -

[root @ amsterdam ~] #httpd -Mperl_module (спільний)php5_module (спільний доступ)proxy_ajp_module (спільний доступ)python_module (спільний)ssl_module (спільний доступ)

Багато з перерахованих модулів можна відключити likemod_imap, mod_include, mod_info, mod_userdir, mod_autoindex, оскільки вони навряд чи використовуються будь-якими робочими веб-серверами.

vi /etc/httpd/conf/httpd.conf#LoadModule auth_digest_module модулі / mod_auth_digest.so

Після того, як ви прокоментували модуль, збережіть файл.

Перезапустіть служби Apache наступною командою.

/etc/init.d/httpd перезапустити

4) Обмеження доступу до файлів за межами веб-кореневого каталогу

Якщо ви хочете переконатися, що файли, що знаходяться поза веб-кореневим каталогом, недоступні, вам слід переконатися, що в каталозі обмежено параметри «Дозволити» та «Заборонити» у файлі конфігурації веб-сервера.

<Каталог />Варіанти НемаєAllowOverride NoneЗамовлення відмовити, дозволитиЗаперечувати від усіх

Після обмеження доступу за межами веб-кореневого директора ви не зможете отримати доступ до будь-якого файлу, який знаходиться в будь-якій іншій папці вашого веб-сервера, ви отримаєте код повернення 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 байт) відповідно до вашої вимоги.

<Каталог "/ var / www / html / uploads">LimitRequestBody 512000

Формат журналу Apache

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

Для створення журналів доступу потрібно ввімкнути mod_log_configmodule.

Три директиви доступні у файлі конфігурації apache, тобто

  • TransferLog: Створення файлу журналу.
  • LogFormat: Вказівка ​​користувацького формату.
  • CustomLog: Створення та форматування файлу журналу.

Директива TransferLog доступна у файлі конфігурації apache, і вона обертає файли журналу віртуального хосту відповідно до заданих параметрів.

ServerAdmin Ця електронна адреса захищена від спам-ботів. Вам потрібно увімкнути JavaScript, щоб переглянути його.DocumentRoot / usr / www / example / httpd / htdocs /Ім'я сервера www.example.comServerAlias ​​example.com www.exampleErrorLog / usr / www / example / httpd / logs / error_logTransferLog / usr / www / example / httpd / logs / accesslogКомбінований CustomLog / usr / www / example / httpd / logs / accesslog

Два типи формату журналу Apache

  • Формат загального журналу
  • Комбінований формат журналу.

Ви можете їх увімкнути, відредагувавши файл конфігурації apache, тобто файл apache2.conf (Debian / ubuntu) або httpd.conf (системи на базі rpm)

Формат загального журналу

Формат журналу "% h% l% u% t \"% r \ "%> s% b" загальнийЖурнали CustomLog / access_log загальні

Загальний журнал, згенерований Apache

[Середа, 11 жовтня 14:32:52, 2000] [помилка] [клієнт 127.0.0.1] клієнту відмовлено конфігурацією сервера: / export / home / live / ap / htdocs / test

Комбінований формат журналу

Формат журналу "% h% l% u% t \"% r \ "%> s% b \"% {Referer} i \ "\"% {User-agent} i \ "" об'єднаноКомбінований журнал / журнал доступу CustomLog

Ось,

  • % h - віддалений хост
  • % l - ідентичність користувача, визначена identd
  • % u - це ім'я користувача, визначене аутентифікацією HTTP
  • % t - час, коли сервер закінчив обробку запиту.
  • % r - рядок запиту від клієнта. ("GET / HTTP / 1.0")
  • %> s - це код стану, надісланий із сервера клієнту (500, 404 тощо)
  • % b - розмір відповіді клієнту (у байтах)
  • Referer - це сторінка, яка посилається на цю URL-адресу.
  • User-agent - це ідентифікаційний рядок браузера.

Комбінований журнал, згенерований Apache:

199.187.122.91 - - [06 / березня 2014: 04: 22: 58 +0100] "GET /robots.txt HTTP / 1.1" 404 1228 "-" "Mozilla / 4.0 (сумісний; MSIE 6.0; Windows NT 5.1; SV1 ; .NET CLR 2.0.50727) "

Спеціальний журнал створює окремий файл журналу для кожного віртуального хосту на вашому сервері. Його потрібно вказати у розділі віртуального хосту файлу конфігурації.

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

Налаштуйте свій перший виробничий веб-сервер

1. Для того, щоб мати запущений робочий веб-сервер, вам потрібен виділений вузол (фізичний / віртуальний або хмарний екземпляр) під управлінням Linux / Unix, Windows, MacOS тощо.

2. Веб-сервер повинен мати пряме підключення до мережі та налаштовану на ньому статичну IP-адресу .

3. Він повинен мати усі модулі, необхідні для запуску веб-сторінок. Якщо веб-сервер обробляє сторінки PHP, йому потрібно ввімкнути модуль PHP.

  1. Він також повинен мати хорошу антивірусну програму, налаштовану та працюючу для захисту веб-сервера від шкідливих програм або атак вірусів. Вам також потрібен механізм для регулярного оновлення налаштованого антивірусного / зловмисного програмного забезпечення без будь-якого втручання вручну, щоб отримати від них максимальну користь.
  2. Якщо у вас є сотні доменів для розміщення на вашому веб-сервері, вам доведеться запровадити обмеження щодо квоти файлової системи для кожного домену, кількості баз даних, які кожен домен може створити, кількості облікових записів електронної пошти на домен тощо.
  3. Якщо ваш веб-сервер був налаштований на послуги спільного хостингу, користувачі вашого веб-сервера повинні бути обмежені . Користувач спільного хостингу повинен мати мінімум привілеїв, щоб він не пошкодив важливі файли та не зламав весь сервер. Apache не надає жодної такої функціональності і потребує різних сторонніх програм, налаштування ОС для досягнення цього.
  4. Якщо ви додаєте новий домен на свій веб-сервер, йому потрібно редагувати сотні конфігураційних файлів, щоб увімкнути всі функції для доданого домену.
  5. Якщо для одного з розміщених доменів потрібні інші налаштування PHP, ніж для інших доменів, реалізація цього в основному веб-сервері Apache дуже складна і потребує значної настройки вашого веб-сервера.
  6. Виробничому веб-серверу потрібен брандмауер, щоб блокувати небажаний трафік, який може спричинити велике навантаження на ваш сервер. Реалізація правил IPTABLE за допомогою командного рядка дуже складна. Для написання ефективних правил брандмауера для блокування небажаного трафіку йому потрібні знання основного середовища Linux / Unix. IPTABLE базується на модулі netfilter; це брандмауер рівня ОС, який дозволяє адміністратору створювати правила для вхідного / вихідного трафіку на сервері.
  7. Виробничий веб-сервер вимагає декількох різних програм, таких як електронна пошта , FTP для завантаження файлів, система доменних імен для припаркованих доменів. Управління всіма цими програмами в основній системі Linux / Unix вимагає знання відповідних технологій.

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

Рішення за допомогою Cpanel або подібного програмного забезпечення

Cpanel надає графічний спосіб управління вашим веб-сервером . Він призначений для надання послуг масового хостингу, простих у використанні та налаштуванні. cPanel зменшив технічні бар'єри для входу в систему управління хостингом та веб-серверами. Це полегшує складне завдання, забезпечує безліч корисних та простих у використанні веб-інтерфейсів, які виконують загальні завдання системного адміністрування, необхідні для роботи веб-сервера.

cPanel компілює власну версію програмного забезпечення.

Якщо вам потрібно перекомпілювати веб-сервер, тобто apache, на звичайній платформі Linux, вам доведеться вручну вибрати / шукати необхідний модуль. cPanel надає функціонал Easyapache, який є методом компіляції веб-серверів на основі сценаріїв.

Він надає не лише веб-послуги, але також пошту, DNS, FTP та багато інших послуг, необхідних для вашого веб-додатку.

Завдання, яке потребує знань з основного хостингу на базі Linux / Unix, таких як встановлення SSL, перекомпіляція Apache за допомогою різних модулів PHP, оновлення веб-безпеки, налаштування ефективних правил IPTABLE, додавання ftp-користувачів, створення поштових облікових записів для кожного домену, сканування кореневого документа антивірусом та створення баз даних легко завершити за допомогою cPanel.

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

Він забезпечує функцію резервного копіювання та відновлення, усуваючи необхідність вручну копіювати файли в резервне сховище. Якщо ви створюєте резервну копію домену, cPanel створить файл tar, який буде містити кореневу папку документа, облікові записи електронної пошти та пошту, облікові записи ftp, бази даних, записи DNS та інші програми.

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

Отже, можна сказати, що cPanel - найкраща програма для управління веб-сервером із необхідними функціями. Він надає вам простий у використанні інтерфейс для управління вашим доменом та механізм для уникнення складності управління основним веб-сервером.

Існує багато конкуруючих продуктів для cPanel, таких як Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel тощо.

Цікаві статті...