Výukové programy Apache pro začátečníky

Co je Apache?

Apache je pozoruhodný kus aplikačního softwaru. Jedná se o nejrozšířenější aplikaci webového serveru na světě s více než 50% podílem na trhu komerčních webových serverů. Apache je nejrozšířenější aplikací webového serveru v operačních systémech podobných Unixu, ale lze jej použít téměř na všech platformách, jako je např. Windows, OS X, OS/2 atd. Slovo Apache bylo převzato ze jména indiánského kmene 'Apache', známého svými dovednostmi ve válčení a vytváření strategií.

Jedná se o modulární, procesně založenou aplikaci webového serveru, která vytváří nové vlákno s každým současným připojením. Podporuje řadu funkcí; mnohé z nich jsou zkompilovány jako samostatné moduly a rozšiřují jeho základní funkcionalitu a mohou poskytovat vše od podpory programovacího jazyka na straně serveru až po mechanismus ověřování. Virtuální hosting je jednou z takových funkcí, která umožňuje jedinému webovému serveru Apache obsluhovat řadu různých webových stránek.

Apache

Jak nainstalovat Apache

Existuje mnoho způsobů instalace balíčku nebo aplikace. Níže jsou uvedeny -

  1. Jedna z funkcí tohoto open zdrojová webová aplikace spočívá v tom, že si každý může vytvořit instalační program podle svého vlastního prostředí. To umožnilo různým výrobcům, jako je Debian, Red Hat, FreeBSD, Suse atd., přizpůsobit umístění souboru a konfiguraci apache s ohledem na další nainstalované aplikace a základní OS.
  2. Kromě instalace z instalačního programu založeného na dodavateli existuje vždy možnost sestavení a instalace ze zdrojového kódu. Instalace Apache ze zdrojového souboru je nezávislá na platformě a funguje pro všechny OS.

Webový server Apache je modulární aplikace, kde si administrátor může zvolit požadovanou funkcionalitu a nainstalovat různé moduly dle svých požadavků.

Všechny moduly lze zkompilovat jako a Dynamické sdílené objekty (DSO je objektový soubor, který může být sdílen více aplikacemi, když jsou spuštěny), který existuje odděleně od hlavního souboru Apache. DSO přístup je vysoce doporučován, velmi zjednodušuje přidávání/odebírání/aktualizaci modulů z konfigurace serverů.

Nainstalujte platformu Apache:Linux

Na systémech Red Hat nebo rpm

Pokud používáte linuxovou distribuci založenou na rpm (RedHat Package Manager je nástroj pro instalaci aplikací na systémech Linux), tj. Red Hat, Fedora, CentOs, Suse, můžete tuto aplikaci nainstalovat buď pomocí Správce balíčků konkrétního dodavatele, nebo přímo vytvořením souboru rpm. z dostupného zdrojového tarballu.

Apache můžete nainstalovat prostřednictvím výchozího správce balíčků, který je k dispozici na všech distribucích založených na Red Hat, jako jsou CentOs, Red Hat a Fedora.

[root@amsterdam ~]# yum install httpd

Zdrojový tarball Apache lze převést na soubor rpm pomocí následujícího příkazu.

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

Pro vytvoření souboru .rpm ze zdroje je nutné mít na svém serveru nainstalovaný balíček -devel.

Jakmile převedete zdrojový soubor na instalační program rpm, můžete k instalaci Apache použít následující příkaz.

[root@amsterdam ~]# rpm –ivh httpd-2.4.4-3.1.x86_64.rpm

Po instalaci se server nespustí automaticky, pro spuštění služby musíte použít některý z následujících příkazů na Fedoře, CentOs nebo Red Hatu.

[root@amsterdam ~]# /usr/sbin/apachectl start

[root@amsterdam ~]# service httpd start

[root@amsterdam ~]# /etc/init.d/httpd start

Nainstalujte Apache ze zdroje

Instalace apache ze zdroje vyžaduje, aby byl na vašem serveru nainstalován balíček –devel. .Najdete nejnovější dostupnou verzi Apache, můžete si ji stáhnout zde . Jakmile stáhnete zdrojový soubor, přesuňte jej do složky /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

Chcete-li zobrazit všechny možnosti konfigurace dostupné pro Apache, můžete použít volbu ./configure –help. Nejběžnější možností konfigurace je –prefix={název instalačního adresáře}.

[root@amserversterdam ~]./configure --help

[root@amserversterdam ~]./configure –prefix=/usr/local/apache –enable-so

[root@amserversterdam ~] make

[root@amserversterdam ~] make install

Výše uvedený příklad ukazuje kompilaci Apache v adresáři /usr/local/apache s funkcí DSO. Volba –enable-so může načíst požadované moduly do Apache za běhu prostřednictvím mechanismu DSO namísto nutnosti rekompilace.

Po dokončení instalace můžete procházet výchozí stránku webových serverů pomocí svého oblíbeného prohlížeče. Pokud je na vašem serveru povolena brána firewall, musíte udělat výjimku pro port 80 na bráně firewall operačního systému. K otevření portu 80 můžete použít následující příkaz.

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

služba iptables uložit

Můžete vidět výchozí Úvodní obrazovka Apache2 procházením IP adresy vašeho serveru.

Nainstalujte Apache ze zdroje

Co je virtuální hostitel?

Webový server Apache může hostit více webových stránek na STEJNÝ server. Pro každou webovou stránku nepotřebujete samostatný server a software Apache. Toho lze dosáhnout pomocí konceptu Virtuální hostitel or VHost.

Každá doména, kterou chcete hostovat na svém webovém serveru, bude mít samostatnou položku v konfiguračním souboru Apache.

Virtuální hostitel

Typy virtuálních hostitelů Apache

  1. Virtuální hostitel podle jména
  2. Virtuální hostitel založený na adrese nebo na IP.

Virtuální hostitel založený na názvu

Virtuální hosting založený na jménu se používá k hostování více virtuálních stránek na jedné IP adrese.

Virtuální hostitel založený na názvu

Chcete-li nakonfigurovat virtuální hosting založený na názvu, musíte nastavit IP adresu, na kterou budete přijímat požadavky Apache pro všechny požadované weby. Můžete to udělat direktivou NameVirutalHost v konfiguraci apache, tzn httpd.conf/apache2.conf soubor.

Příklad virtuálního hostitele 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>

Můžete přidat libovolný počet virtuálních hostitelů podle svých požadavků. Webové konfigurační soubory můžete zkontrolovat pomocí:

[root@amsterdam ~]#httpd –t
Syntax OK

Pokud má konfigurační soubor nějakou špatnou syntaxi, vyvolá chybu

[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

Virtuální hostitel založený na IP

Abyste mohli nastavit virtuální hosting založený na IP, potřebujete na svém serveru nakonfigurovat více než jednu IP adresu. Takže počet vhost apache bude záviset na počtu IP adres nakonfigurovaných na vašem serveru. Pokud má váš server 10 IP adres, můžete vytvořit 10 virtuálních hostitelů založených na IP.

Virtuální hostitel založený na IP

Ve výše uvedeném diagramu byly dvěma webovým stránkám example1.com a example2.com přiřazeny různé adresy IP a používají virtuální hosting založený na 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>

Co Apache potřebuje ke spuštění souboru PHP?

Spouštění souborů PHP na Apache potřebuje mod_php povoleno na vašem serveru. Umožňuje Apache interpretovat soubory .Php. Má obslužné programy PHP, které interpretují kód Php v Apache a odesílají HTML na váš webový server.

Pokud je na vašem serveru povolen mod_php, budete mít soubor s názvem php.conf v adresáři /etc/httpd/conf.d/. Můžete to také zkontrolovat pomocí:

httpd -M | grep "php5_module"

Výstup bude podobný:

Co Apache potřebuje ke spuštění souboru PHP

Manipulátory PHP v Apache

  • mod_php
  • CGI
  • FastCGI
  • suPHP

mod_phpje nejstarší PHP handler, dělá PHP součástí apache a nevolá žádný externí PHP proces. Tento modul je standardně nainstalován v každém repozitáři distribuce Linuxu, takže zapnutí/vypnutí tohoto modulu je velmi snadné.

Pokud používáte FastCGI jako ovladač PHP můžete nastavit více verzí PHP, které budou používat různé účty na vašem serveru.

FastCGI tzn mod_fastcgi je rozšíření mod_fcgid, zatímco mod_fcgid je vysoce výkonná alternativa CGI, tj. mod_cgi. Spustí dostatečný počet instancí CGI pro zpracování souběžných webových požadavků. Používá také suexec k podpoře různých uživatelů s jejich vlastními instancemi PHP a zlepšuje zabezpečení webu.

Spouštění souborů ruby ​​na Apache vyžaduje povolení mod_ruby. Apache také zvládne rubínové soubory prostřednictvím FastCGI. Je možné použít více verzí ruby ​​pomocí mod_fcgid tj. FastCGI.

Můžete také nainstalovat apache cestující a nakonfigurovat Apache tak, aby jej používal pro poskytování rubínových stránek.

(Phusion Passenger také známý jako „cestující“ je bezplatný modul webového serveru, který je navržen pro integraci s Apache a Nginx)

Kroky k instalaci mod_ruby na váš server –

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

Jak spustit Ruby s Apache

Musíme přidat modul mod_ruby do konfigurace Apache tj /etc/httpd/conf.d/ruby.conf a přidat následující řádek.

LoadModule ruby_module modules/mod_ruby.so

Pokud chcete tyto moduly povolit nebo zakázat, musíte upravit konfigurační soubor apache a okomentovat nebo odkomentovat tyto moduly, pokud je webový server již s těmito moduly zkompilován.

Spusťte Ruby s Apache

Jak zabezpečit webový server Apache

Zabezpečení vašeho webového serveru je velmi důležité, znamená to umožnit ostatním vidět pouze zamýšlené informace a chránit vaše data a omezit přístup.

To jsou běžné věci, které zvyšují bezpečnost vašich webových serverů Apache.

1) Skrytí informací o verzi Apache a OS:

Apache zobrazuje svou verzi a název operačního systému v chybách, jak je znázorněno na obrázku níže.

Skrytí informací o verzi Apache a OS

Hacker může tyto informace použít ke spuštění útoku pomocí veřejně dostupných zranitelností v konkrétní verzi serveru nebo OS.

Abychom zabránili tomu, aby webový server Apache zobrazoval tyto informace, musíme je upravit

možnost „podpis serveru“ dostupná v konfiguračním souboru Apache. Ve výchozím nastavení je „zapnuto“, musíme jej nastavit na „vypnuto“.

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

ServerTokens Prod

Nastavili jsme také „ServerTokens Prod“, který říká webovému serveru, aby vrátil pouze apache a potlačil hlavní a vedlejší verzi OS.

Po úpravě konfiguračního souboru musíte restartovat/znovu načíst webový server Apache, aby byl účinný.

service httpd restart

Skrytí informací o verzi Apache a OS

2) Zakázat výpis adresáře

Pokud váš kořenový adresář dokumentů nemá indexový soubor, váš webový server Apache standardně zobrazí veškerý obsah kořenového adresáře dokumentu.

Zakázat výpis adresáře

Tato funkce může být pro konkrétní adresář vypnuta pomocí „direktivy možností“ dostupné v konfiguračním souboru Apache.

<Directory /var/www/html>

    Options -Indexes

</Directory>

Zakázat výpis adresáře

3) Vypnutí nepotřebných modulů

Je dobrou praxí zakázat všechny nepotřebné moduly, které se nepoužívají. Seznam povolených modulů, které jsou k dispozici, můžete vidět v konfiguračním souboru Apache –

[root@amsterdam ~]#httpd –M

perl_module (shared)

php5_module (shared)

proxy_ajp_module (shared)

python_module (shared)

ssl_module (shared)

Mnoho z uvedených modulů lze deaktivovat likemod_imap, mod_include, mod_info, mod_userdir, mod_autoindex, protože je téměř nepoužívají žádné produkční webové servery.

vi /etc/httpd/conf/httpd.conf

#LoadModule auth_digest_module modules/mod_auth_digest.so

Jakmile modul okomentujete, uložte soubor.

Restartujte služby apache pomocí následujícího příkazu.

/etc/init.d/httpd restart

4) Omezení přístupu k souborům mimo kořenový adresář webu

Pokud se chcete ujistit, že soubory, které jsou mimo kořenový adresář webu, nejsou přístupné, musíte se ujistit, že adresář je v konfiguračním souboru webového serveru omezen na možnosti „Povolit“ a „Zakázat“.

<Directory/>

Options None

AllowOverride None

Order deny,allow

Deny from all

</Directory>

Jakmile omezíte přístup mimo webový kořenový adresář, nebudete mít přístup k žádnému souboru umístěnému v jakékoli jiné složce na vašem webovém serveru, dostanete návratový kód 404.

Omezení přístupu k souborům mimo webový kořenový adresář

5) Použití mod_evasive k vyvrácení DoS útoku

Pokud chcete chránit svůj webový server před Dos (tj. Denial of Service), musíte povolit modul mod_evasive. Jedná se o modul třetí strany, který detekuje útok Dos a brání útoku napáchat tolik škody, jako by napáchal, kdyby se nechal běžet. Dalo by se to stáhnout zde.

Stáhněte si výše uvedený soubor

6) Použití mod_security ke zvýšení zabezpečení Apache

Tento modul funguje jako firewall pro Apache a umožňuje sledovat provoz v reálném čase. Také to brání webovému serveru před útoky hrubou silou. Modul mod_security lze nainstalovat pomocí výchozího správce balíčků vaší distribuce.

Použití mod_security ke zvýšení zabezpečení Apache

7) Omezení velikosti požadavku

Apache nemá žádné omezení na celkovou velikost http požadavku, které by mohlo vést k DoS útoku. Velikost požadavku direktivy Apache „LimitRequestBody“ můžete omezit pomocí značky adresáře. Hodnota může být nastavena od 0 do 2 GB (tj. 2147483647 bajtů) podle vašeho požadavku.

<Directory "/var/www/html/uploads">

   LimitRequestBody 512000

</Directory>

Formát protokolu Apache

Protokoly Apache poskytují podrobné informace, které pomáhají odhalit běžné problémy se serverem.

Aby bylo možné vytvářet přístupové protokoly, musí být povolen mod_log_configmodule.

V konfiguračním souboru Apache jsou k dispozici tři direktivy, tzn

  • TransferLog: Vytvoření souboru protokolu.
  • LogFormat : Určení vlastního formátu.
  • CustomLog : Vytváření a formátování souboru protokolu.

Direktiva TransferLog je k dispozici v konfiguračním souboru apache a rotuje soubory protokolu virtuálního hostitele podle nastavených parametrů.

<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>

Dva typy formátu protokolu Apache

  • Common Log Format
  • Kombinovaný formát protokolu.

Můžete je povolit úpravou konfiguračního souboru apache, tj. souboru apache2.conf (Debian/ubuntu) nebo httpd.conf (systémy založené na rpm)

Common Log Format

LogFormat "%h %l %u %t \"%r\" %>s %b" common

CustomLog logs/access_log common

Common Log generovaný 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

Kombinovaný formát protokolu

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined

CustomLog log/access_log combined

Zde,

  • %h je vzdálený hostitel
  • %l je identita uživatele určená pomocí identd
  • %u je uživatelské jméno určené HTTP autentizací
  • %t je čas, kdy server dokončil zpracování požadavku.
  • %r je řádek požadavku od klienta. („GET / HTTP/1.0“)
  • %>s je stavový kód odeslaný ze serveru klientovi (500, 404 atd.)
  • %b je velikost odpovědi klientovi (v bajtech)
  • Referer je stránka, která odkazuje na tuto adresu URL.
  • User-agent je identifikační řetězec prohlížeče.

Kombinovaný protokol generovaný 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)"

Vlastní protokol vytvoří samostatný soubor protokolu pro každého virtuálního hostitele na vašem serveru. Musí být specifikován v sekci virtuálního hostitele konfiguračního souboru.

Níže můžete vidět konfiguraci virtuálního hostitele, vygenerovaný protokol bude přizpůsoben pro daného virtuálního hostitele a formát bude kombinován.

Kombinovaný protokol generovaný Apache

Nakonfigurujte svůj úplně první produkční webový server

1. Abyste mohli mít spuštěný produkční webový server, potřebujete dedikovaný uzel (fyzická/virtuální nebo cloudová instance) se systémem Linux/Unix, Windows, MacOS atd.

2. Webový server musí mít a přímé připojení k síti a statická IP adresa na něm nakonfigurovaný.

3. Potřebuje mít všechny moduly nutné pro provozování webových stránek. Pokud webový server zpracovává stránky PHP, musí mít povolený modul PHP.

Konfigurace produkčního webového serveru

  1. Také je potřeba mít dobrý antivirus aplikace nakonfigurovaná a spuštěná pro zabezpečení webového serveru před útoky malwaru nebo virů. K tomu potřebujete také mechanismus aktualizovat nakonfigurovanou antivirovou/antimalwarovou aplikaci pravidelně bez jakéhokoli ručního zásahu, abyste z nich získali maximální užitek.
  2. Pokud máte na svém webovém serveru hostovat stovky domén, musíte je implementovat omezení kvóty souborového systému pro každou doménu, počet databází, které může každá doména vytvořit, počet e-mailových účtů na doménu atd.
  3. Pokud byl váš webový server nastaven pro sdílené hostingové služby, uživatelé na vašem webovém serveru musí být omezeni. Uživatel sdíleného hostingu by měl mít co nejmenší uživatelská oprávnění, aby nepoškodil důležité soubory a nepoškodil celý server. Apache neposkytuje žádné takové funkce a potřebuje různé aplikace třetích stran, přizpůsobení OS, aby toho dosáhl.
  4. Pokud přidáváte a nová doména na vašem webovém serveru potřebuje upravit stovky konfiguračních souborů, aby byly povoleny všechny funkce pro přidanou doménu.
  5. Pokud jedna z hostovaných domén vyžaduje jiné nastavení PHP než u ostatních domén je implementace tohoto na základním webovém serveru Apache velmi složitá a vyžaduje přizpůsobení vašeho webového serveru do značné míry.
  6. Produkční webový server potřebuje a firewall blokovat nežádoucí provoz, který by mohl způsobit vysoké zatížení vašeho serveru. Provádění IPTABLE pravidla s příkazovým řádkem je velmi složitá. K napsání účinných pravidel firewallu pro blokování nežádoucího provozu potřebuje odborné znalosti základního prostředí Linux/Unix. IPTABLE je založen na modulu netfilter; je firewall na úrovni OS, který umožňuje správci vytvářet pravidla pro příchozí/odchozí provoz na serveru.
  7. Produkční webový server vyžaduje několik různých aplikací, např Email, FTP pro nahrávání souborů, Domain Name System pro zaparkované domény. Správa všech těchto aplikací na základním systému Linux/Unix vyžaduje odborné znalosti příslušných technologií.

Dá se tedy říci, že správa webového serveru pro více domén je velmi složitý úkol a vyžaduje úpravu stovek konfiguračních souborů, přizpůsobení každé aplikace tak, aby dosahovala požadovaného výsledku. Odstraňování problémů s jakoukoli chybnou konfigurací bude pro začátečníky velmi obtížné.

Řešení pomocí CPanel nebo podobného softwaru

Cpanel poskytuje grafický způsob správy vašeho webového serveru. Má poskytovat hromadné hostingové služby, které se snadno používají a konfigurují. cPanel omezil technické překážky vstupu do správy hostingu a webového serveru. Usnadňuje složité úlohy, poskytuje mnoho užitečných a snadno použitelných webových rozhraní, která provádějí běžné úlohy správy systému potřebné pro provoz webového serveru.

Řešení pomocí Cpanel nebo podobného softwaru

cPanel kompiluje svou vlastní verzi softwaru.

Pokud musíte překompilovat váš webový server, tj. apache na normální platformě Linux, musíte ručně vybrat/prohledat modul, který je potřeba. cPanel poskytuje funkci Easyapache, což je metoda kompilace webového serveru založená na skriptech.

Řešení pomocí Cpanel nebo podobného softwaru

Poskytuje vám nejen webové služby, ale také Mail, DNS, FTP a mnoho dalších služeb, které vaše webová aplikace vyžaduje.

Úloha, která vyžaduje odborné znalosti o základním hostingu založeném na Linuxu/Unixu, jako je instalace SSL, překompilování Apache s různými moduly PHP, aktualizace Web Security, konfigurace efektivních pravidel IPTABLE, přidávání uživatelů ftp, vytváření poštovních účtů pro každou doménu, skenování kořenového adresáře dokumentů pomocí antiviru a vytváření databází lze snadno dokončit pomocí cPanel.

Poskytuje mnoho skriptů, které opravují, instalují a řeší běžné administrativní úlohy.

Poskytuje funkce zálohování a obnovy, což eliminuje potřebu ručního kopírování souborů do úložiště záloh. Pokud zálohujete svou doménu, cPanel vytvoří soubor tar, který bude obsahovat kořenovou složku dokumentů, e-mailové účty a e-maily, ftp účty, databáze, záznamy DNS a další aplikace.

Poskytuje také rozsáhlou dokumentaci a má velmi velkou komunitu uživatelů, kde můžete diskutovat a získat řešení svých problémů.

Takže se to dá říct cPanel je nejlepší aplikace pro správu vašeho webového serveru s požadovanými funkcemi. Poskytuje vám snadno použitelné rozhraní pro správu vaší domény a mechanismus, jak se vyhnout složitosti správy jádra webového serveru.

Pro cPanel existuje mnoho konkurenčních produktů jako Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel atd.