Уроци за Apache за начинаещи

Какво е Apache?

Apache е забележителна част от приложен софтуер. Това е най-широко използваното приложение за уеб сървър в света с повече от 50% дял в пазара на търговски уеб сървъри. Apache е най-широко използваното уеб сървърно приложение в Unix-подобни операционни системи, но може да се използва на почти всички платформи като Windows, OS X, OS/2 и т.н. Думата Apache е взета от името на индианското племе „Apache“, известно с уменията си във война и правене на стратегии.

Това е модулно приложение за уеб сървър, базирано на процеси, което създава нова нишка с всяка едновременна връзка. Поддържа редица функции; много от тях са компилирани като отделни модули и разширяват основната му функционалност и могат да осигурят всичко от поддръжка на език за програмиране от страна на сървъра до механизъм за удостоверяване. Виртуалният хостинг е една такава функция, която позволява на един уеб сървър на Apache да обслужва редица различни уебсайтове.

Apache

Как да инсталирате Apache

Има много начини за инсталиране на пакет или приложение. По-долу са изброени –

  1. Една от характеристиките на този отворен изходното уеб приложение е, че всеки може да направи инсталатор според собствената си среда. Това позволи на различни доставчици като Debian, Red Hat, FreeBSD, Suse и т.н. да персонализират местоположението на файла и конфигурацията на apache, като вземат предвид други инсталирани приложения и базова операционна система.
  2. Освен да го инсталирате от базиран на доставчика инсталатор, винаги има опция за изграждане и инсталиране от изходния код. Инсталирането на Apache от изходния файл е независимо от платформата и работи за всички операционни системи.

Уеб сървърът Apache е модулно приложение, където администраторът може да избере необходимата функционалност и да инсталира различни модули според неговите/нейните изисквания.

Всички модули могат да бъдат компилирани като a Динамични споделени обекти (DSO е обектен файл, който може да бъде споделен от множество приложения, докато се изпълняват), който съществува отделно от основния apache файл. Подходът на DSO е силно препоръчителен, той прави задачата за добавяне/премахване/актуализиране на модули от конфигурацията на сървърите много проста.

Инсталирайте платформата Apache:Linux

На системи, базирани на Red Hat или rpm

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

Можете да инсталирате Apache чрез пакетния мениджър по подразбиране, наличен във всички базирани на Red Hat дистрибуции като CentOs, Red Hat и Fedora.

[root@amsterdam ~]# yum install httpd

Изходният архив на apache може да бъде преобразуван в rpm файл с помощта на следната команда.

[root@amsterdam ~]# rpmbuild -tb httpd-2.4.x.tar.bz2

Задължително е да имате инсталиран пакет -devel на вашия сървър за създаване на .rpm файл от източника.

След като конвертирате изходния файл в 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 може да хоства множество уебсайтове на ЕДИН И СЪЩ сървър. Не се нуждаете от отделна сървърна машина и софтуер Apache за всеки уебсайт. Това може да се постигне с помощта на концепцията за Виртуален домакин or VHost.

Всеки домейн, който искате да хоствате на вашия уеб сървър, ще има отделен запис в конфигурационния файл на apache.

Виртуален домакин

Видове Apache Virtualhost

  1. Базиран на име виртуален хост
  2. Базиран на адрес или 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 базирани виртуални хоста.

Базиран на 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"

Резултатът ще бъде подобен на:

От какво се нуждае Apache, за да стартира Php файл

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.

Можете също да инсталирате apachepassion и да конфигурирате 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 и да коментирате или декоментирате тези модули, ако уеб сървърът вече е компилиран с тези модули.

Стартирайте Ruby с Apache

Как да защитите уеб сървъра Apache

Защитата на вашия уеб сървър е много важна, това означава да позволите на другите да виждат само предвидената информация и да защитите вашите данни и да ограничите достъпа.

Това са обичайни неща, които подобряват сигурността на вашите уеб сървъри Apache.

1) Скриване на версията на Apache и информацията за ОС:

Apache показва своята версия и името на операционната система при грешки, както е показано на екранната снимка по-долу.

Скриване на версията на Apache и информацията за ОС

Хакер може да използва тази информация, за да започне атака, използвайки публично достъпните уязвимости в конкретната версия на сървъра или операционната система.

За да попречим на уеб сървъра на Apache да показва тази информация, трябва да променим

опцията „подпис на сървъра“, налична в конфигурационния файл на apache. По подразбиране е „включено“, трябва да го настроим „изключено“.

vim /etc/httpd/conf/httpd.conf
ServerSignature Off

ServerTokens Prod

Също така сме задали „ServerTokens Prod“, който казва на уеб сървъра да връща само apache и да потиска основната и второстепенната версия на ОС

След като модифицирате конфигурационния файл, трябва да рестартирате/презаредите вашия apache уеб сървър, за да стане ефективен.

service httpd restart

Скриване на версията на Apache и информацията за ОС

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 може да бъде инсталиран с мениджъра на пакети по подразбиране на вашата дистрибуция.

Използване на mod_security за подобряване на сигурността на Apache

7) Ограничаване на размера на заявката

Apache няма никакво ограничение за общия размер на http заявката, което може да доведе до DoS атака. Можете да ограничите размера на заявката на Apache директива „LimitRequestBody“ с маркера на директорията. Стойността може да бъде зададена от 0 до 2 GB (т.е. 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 Log Format

  • Общ формат на дневника
  • Комбиниран лог формат.

Можете да ги активирате, като редактирате конфигурационния файл на 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)"

Custom Log създава отделен лог файл за всеки виртуален хост на вашия сървър. Тя трябва да бъде посочена в раздела за виртуален хост на конфигурационния файл.

Можете да видите по-долу споменатата конфигурация на виртуален хост, генерираният журнал ще бъде персонализиран за този виртуален хост и форматът ще бъде комбиниран.

Комбиниран дневник, генериран от Apache

Конфигурирайте първия си производствен уеб сървър

1. За да имате работещ производствен уеб сървър, имате нужда от специален възел (Физически/виртуален или облачен екземпляр), работещ под Linux/Unix, Windows, MacOS и др.

2. Уеб сървърът трябва да има a директна мрежова връзка и staticIP адрес конфигуриран върху него.

3. Трябва да има всички модули необходими за стартиране на уеб страници. Ако уеб сървър обработва PHP страници, той трябва да има активиран PHP модул.

Конфигуриране на производствен уеб сървър

  1. Също така трябва да има добро антивирусен приложение, конфигурирано и работещо за защита на уеб сървъра от злонамерен софтуер или вирусни атаки. Имате нужда и от механизъм за актуализация конфигурираното антивирусно/антизловреден софтуер приложение редовно без ръчна намеса, за да извлечете максимална полза от тях.
  2. Ако имате стотици домейни, които да бъдат хоствани на вашия уеб сървър, трябва да внедрите ограничения на квотата на файловата система за всеки домейн, брой бази данни, които всеки домейн може да създаде, брой имейл акаунти на домейн и т.н.
  3. Ако вашият уеб сървър е настроен за споделени хостинг услуги, потребителите на вашия уеб сървър трябва да бъдат ограничени. Потребителят на споделен хостинг трябва да има най-малко потребителски привилегии, така че да не повреди важни файлове и да не повреди целия сървър. Apache не предоставя такава функционалност и се нуждае от различни приложения на трети страни, персонализиране на операционната система, за да постигне това.
  4. Ако добавяте a нов домейн на вашия уеб сървър, той трябва да редактира стотици конфигурационни файлове, за да активира всички функции за добавения домейн.
  5. Ако някой от хостваните домейни изисква различна PHP настройка в сравнение с останалите домейни, внедряването на това в основния уеб сървър на Apache е много сложно и изисква персонализиране на вашия уеб сървър в голяма степен.
  6. Производственият уеб сървър се нуждае от a защитна стена за блокиране на нежелан трафик, който може да причини високо натоварване на вашия сървър. Внедряване IPTABLE правила с команден ред е много сложно. Нуждае се от опит в основната Linux/Unix среда, за да напише ефективни правила за защитна стена за блокиране на нежелан трафик. IPTABLE е базиран на модул netfilter; това е защитна стена на ниво ОС, която позволява на администратора да създава правила за входящ/изходящ трафик на сървъра.
  7. Един производствен уеб сървър изисква няколко различни приложения като Имейл, FTP за качване на файл, Domain Name System за паркирани домейни. Управлението на всички тези приложения на основна Linux/Unix система изисква опит в съответните технологии.

Така че може да се каже, че управлението на уеб сървър за множество домейни е много сложна задача и изисква редактиране на стотици конфигурационни файлове, персонализиране на всяко приложение, за да постигне желания резултат. Отстраняването на всяка пропускаща конфигурация ще бъде много трудно за начинаещи.

Решението с помощта на Cpanel или подобен софтуер

Cpanel предоставя графичен начин за управление на вашия уеб сървър. Той е предназначен да предоставя масови хостинг услуги, които са лесни за използване и конфигуриране. cPanel намали техническите бариери за влизане в управлението на хостинг и уеб сървър. Улеснява сложната задача, предоставя много полезни и лесни за използване уеб интерфейси, които изпълняват общи задачи за системно администриране, необходими за работа с уеб сървър.

Решението с помощта на Cpanel или подобен софтуер

cPanel компилира своя собствена версия на софтуера.

Ако трябва да прекомпилирате вашия уеб сървър, т.е. apache на нормална Linux платформа, трябва ръчно да изберете/търсите модула, който се изисква. cPanel предоставя функционалност на Easyapache, която е базиран на скрипт метод за компилиране на уеб сървър.

Решението с помощта на Cpanel или подобен софтуер

Той не само ви предоставя уеб услуги, но и Mail, DNS, FTP и много други услуги, необходими за вашето уеб приложение.

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

Той предоставя много скриптове, които коригират, инсталират и отстраняват общи административни задачи.

Той осигурява функция за архивиране и възстановяване, като елиминира необходимостта от ръчно копиране на файлове в архивно хранилище. Ако архивирате вашия домейн, cPanel ще създаде tar файл, който ще съдържа главната папка на документа, имейл акаунти и имейли, ftp акаунти, бази данни, DNS записи и други приложения.

Той също така предоставя солидна документация и има много голяма общност от потребители, където можете да обсъждате и да получите решение на вашите проблеми.

Така че, може да се каже така Cpanel е най-доброто приложение за управление на вашия уеб сървър с необходимите функции. Той ви предоставя лесен за използване интерфейс за управление на вашия домейн и механизъм за избягване на сложността на управлението на основния уеб сървър.

Има много конкурентни продукти на cPanel като Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel и др.