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.
Jak nainstalovat Apache
Existuje mnoho způsobů instalace balíčku nebo aplikace. Níže jsou uvedeny -
- 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.
- 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.
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.
Typy virtuálních hostitelů Apache
- Virtuální hostitel podle jména
- 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.
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.
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ý:
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.
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.
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
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.
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>
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.
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.
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.
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
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.
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.