Tutoriale Apache pentru începători
Ce este Apache?
Apache este o piesă remarcabilă de aplicație software. Este cea mai utilizată aplicație Web Server din lume, cu o cotă de peste 50% pe piața serverelor web comerciale. Apache este cea mai utilizată aplicație Web Server în sistemele de operare asemănătoare Unix, dar poate fi folosită pe aproape toate platformele, cum ar fi Windows, OS X, OS/2, etc. Cuvântul, Apache, a fost preluat de la numele tribului nativ american „Apache”, renumit pentru abilitățile sale în război și crearea strategiei.
Este o aplicație de server web modulară, bazată pe procese, care creează un fir nou cu fiecare conexiune simultană. Acceptă o serie de caracteristici; multe dintre ele sunt compilate ca module separate și își extind funcționalitatea de bază și pot oferi totul, de la suport pentru limbajul de programare pe partea de server până la mecanismul de autentificare. Găzduirea virtuală este o astfel de caracteristică care permite unui singur server web Apache să deservească un număr de site-uri web diferite.
Cum se instalează Apache
Există numeroase moduri de a instala pachetul sau aplicația. Sunt înscrise mai jos -
- Una dintre caracteristicile acestui open aplicația web sursă este că oricine poate face un program de instalare conform propriului mediu. Acest lucru a permis diverșilor furnizori precum Debian, Red Hat, FreeBSD, Suse etc. să personalizeze locația fișierului și configurația Apache, ținând cont de alte aplicații instalate și sistemul de operare de bază.
- În afară de instalarea acestuia dintr-un program de instalare bazat pe furnizor, există întotdeauna opțiunea de a-l construi și instala din codul sursă. Instalarea Apache din fișierul sursă este o platformă independentă și funcționează pentru toate sistemele de operare.
Serverul web apache este o aplicație modulară în care administratorul poate alege funcționalitatea necesară și poate instala diferite module conform cerințelor sale.
Toate modulele pot fi compilate ca a Obiecte dinamice partajate (DSO este un fișier obiect care poate fi partajat de mai multe aplicații în timp ce se execută) care există separat de fișierul principal apache. Abordarea DSO este foarte recomandată, face sarcina de a adăuga/elimina/actualiza module din configurația serverelor foarte simplă.
Instalați Apache:Linux Platform
Pe sistemele Red Hat sau bazate pe rpm
Dacă utilizați o distribuție Linux bazată pe rpm (RedHat Package Manager este un utilitar pentru instalarea aplicației pe sisteme Linux), adică Red Hat, Fedora, CentOs, Suse, puteți instala această aplicație fie prin Managerul de pachete specific furnizorului, fie prin construirea directă a fișierului rpm. din tarball-ul sursă disponibil.
Puteți instala Apache prin Managerul de pachete implicit disponibil pe toate distribuțiile bazate pe Red Hat, cum ar fi CentOs, Red Hat și Fedora.
[root@amsterdam ~]# yum install httpd
Tarball-ul sursă apache ar putea fi convertit într-un fișier rpm folosind următoarea comandă.
[root@amsterdam ~]# rpmbuild -tb httpd-2.4.x.tar.bz2
Este obligatoriu să aveți pachetul -devel instalat pe server pentru a crea fișiere .rpm din sursă.
Odată ce convertiți fișierul sursă într-un program de instalare rpm, puteți utiliza următoarea comandă pentru a instala Apache.
[root@amsterdam ~]# rpm –ivh httpd-2.4.4-3.1.x86_64.rpm
După instalare, serverul nu pornește automat, pentru a porni serviciul, trebuie să utilizați oricare dintre următoarele comenzi pe Fedora, CentOs sau Red Hat.
[root@amsterdam ~]# /usr/sbin/apachectl start [root@amsterdam ~]# service httpd start [root@amsterdam ~]# /etc/init.d/httpd start
Instalați Apache din sursă
Instalarea apache din sursă necesită ca pachetul –devel să fie instalat pe serverul dumneavoastră. .Puteți găsi cea mai recentă versiune disponibilă de Apache, o puteți descărca aici . Odată ce descărcați fișierul sursă, mutați-l în folderul /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
Pentru a vedea toate opțiunile de configurare disponibile pentru Apache, puteți utiliza opțiunea ./configure –help. Cea mai comună opțiune de configurare este –prefix={nume director de instalare}.
[root@amserversterdam ~]./configure --help [root@amserversterdam ~]./configure –prefix=/usr/local/apache –enable-so [root@amserversterdam ~] make [root@amserversterdam ~] make install
Exemplul de mai sus arată compilarea Apache în directorul /usr/local/apache cu capacitatea DSO. Opțiunea –enable-so, poate încărca modulele necesare în apache în timpul rulării prin mecanismul DSO, mai degrabă decât să necesite o recompilare.
După finalizarea instalării, puteți naviga pe pagina implicită a serverelor web cu browserul dvs. preferat. Dacă firewall-ul este activat pe serverul dvs., trebuie să faceți o excepție pentru portul 80 de pe paravanul de protecție al sistemului de operare. Puteți folosi următoarea comandă pentru a deschide portul 80.
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
serviciu iptables salvați
Puteți vedea implicit Ecran de bun venit Apache2 răsfoind adresa IP a serverului dvs.
Ce este Virtual Host?
Un server web Apache poate găzdui mai multe site-uri web pe LA FEL Server. Nu aveți nevoie de un server separat și de software apache pentru fiecare site web. Acest lucru se poate realiza folosind conceptul de Gazdă virtuală or VHost.
Orice domeniu pe care doriți să îl găzduiți pe serverul dvs. web va avea o intrare separată în fișierul de configurare apache.
Tipuri de Apache Virtualhost
- Gazdă virtuală bazată pe nume
- Gazdă virtuală bazată pe adresă sau pe IP și.
Gazdă virtuală bazată pe nume
Găzduirea virtuală bazată pe nume este folosită pentru a găzdui mai multe site-uri virtuale pe o singură adresă IP.
Pentru a configura găzduirea virtuală bazată pe nume, trebuie să setați adresa IP pe care urmează să primiți solicitările Apache pentru toate site-urile web dorite. Puteți face acest lucru prin directiva NameVirutalHost în configurația Apache, adică httpd.conf/apache2.conf fișier.
Gazdă virtuală Apache Exemplu:
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>
Puteți adăuga cât mai multe gazde virtuale, conform cerințelor dvs. Puteți verifica fișierele de configurare web cu:
[root@amsterdam ~]#httpd –t Syntax OK
Dacă fișierul de configurare are o sintaxă greșită, va genera o eroare
[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
Gazdă virtuală bazată pe IP
Pentru a configura găzduirea virtuală bazată pe IP, aveți nevoie de mai mult de o adresă IP configurată pe serverul dvs. Deci, numărul de vhost apache va depinde de numărul de adrese IP configurate pe serverul dvs. Dacă serverul dvs. are 10 adrese IP, puteți crea 10 gazde virtuale bazate pe IP.
În diagrama de mai sus, două site-uri web example1.com și example2.com au primit IP-uri diferite și utilizează găzduire virtuală bazată pe 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>
Ce are nevoie Apache pentru a rula fișierul PHP?
Rularea fișierelor PHP pe Apache are nevoie mod_php activat pe serverul dvs. Acesta permite Apache să interpreteze fișierele .Php. Are handlere Php care interpretează codul PHP în apache și trimit HTML la serverul dvs. web.
Dacă mod_php este activat pe serverul dvs., veți avea un fișier numit php.conf în directorul /etc/httpd/conf.d/. O poți verifica și cu:
httpd -M | grep "php5_module"
Ieșirea va fi similară cu:
Manageri PHP în Apache
- mod_php
- CGI
- FastCGI
- suPHP
mod_phpeste cel mai vechi handler PHP, face PHP parte din apache și nu apelează niciun proces PHP extern. Acest modul este instalat implicit în fiecare depozit de distribuție Linux, așa că activarea/dezactivarea acestui modul este foarte ușoară.
Dacă utilizați FastCGI ca handler PHP, puteți seta mai multe versiuni de PHP pentru a fi utilizate de diferite conturi de pe serverul dvs.
FastCGI adică mod_fastcgi este o extensie a mod_fcgid, unde as mod_fcgid este o alternativă de înaltă performanță a CGI, adică mod_cgi. Pornește un număr suficient de instanțe CGI pentru a gestiona solicitările web concurente. De asemenea, folosește suexec pentru a sprijini diferiți utilizatori cu propriile instanțe de PHP și îmbunătățește securitatea web.
Rularea fișierelor Ruby pe Apache necesită activarea mod_ruby. Apache poate gestiona și fișierele ruby prin FastCGI. Este posibil să utilizați mai multe versiuni de ruby cu ajutorul mod_fcgid, adică FastCGI.
Puteți, de asemenea, să instalați apache Passnger și să configurați Apache să-l folosească pentru a servi pagini Ruby.
(Phusion Passenger cunoscut și sub numele de „pasager” este un modul de server web gratuit care este conceput pentru a se integra cu Apache și Nginx )
Pași pentru a instala mod_ruby pe serverul dvs. -
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
Cum să rulați Ruby cu Apache
Trebuie să adăugăm modulul mod_ruby la configurația Apache, adică /etc/httpd/conf.d/ruby.conf și să adăugăm următoarea linie.
LoadModule ruby_module modules/mod_ruby.so
Dacă doriți să activați sau să dezactivați aceste module, trebuie să editați fișierul de configurare apache și să comentați sau să decomentați aceste module, dacă serverul web este deja compilat cu aceste module.
Cum să securizați serverul web Apache
Securizarea serverului dvs. web este foarte importantă, înseamnă să permiteți altora să vadă doar informațiile dorite și să vă protejați datele și să restricționați accesul.
Acestea sunt lucruri comune care sporesc securitatea serverelor dvs. web Apache.
1) Ascunderea informațiilor despre versiunea și sistemul de operare Apache:
Apache își afișează versiunea și numele sistemului de operare în erori, așa cum se arată în captura de ecran de mai jos.
Un hacker poate folosi aceste informații pentru a lansa un atac folosind vulnerabilitățile disponibile public din versiunea specifică a serverului sau a sistemului de operare.
Pentru a preveni ca serverul web Apache să afișeze aceste informații, trebuie să modificăm
Opțiunea „semnătură server” disponibilă în fișierul de configurare apache. În mod implicit, este „pornit”, trebuie să îl setăm „oprit”.
vim /etc/httpd/conf/httpd.conf
ServerSignature Off ServerTokens Prod
De asemenea, am setat „ServerTokens Prod” care îi spune serverului web să returneze doar apache și să suprime versiunea majoră și minoră a sistemului de operare
După modificarea fișierului de configurare, trebuie să reporniți/reîncărcați serverul dvs. web apache pentru a-l face eficient.
service httpd restart
2) Dezactivați Listarea directorului
Dacă directorul rădăcină al documentului nu are un fișier index, serverul web apache va afișa în mod implicit tot conținutul directorului rădăcină al documentului.
Această caracteristică poate fi dezactivată pentru un anumit director prin „directiva opțiuni” disponibilă în fișierul de configurare Apache.
<Directory /var/www/html> Options -Indexes </Directory>
3) Dezactivarea modulelor inutile
Este o practică bună să dezactivați toate modulele inutile care nu sunt utilizate. Puteți vedea lista de module activate disponibile în fișierul dvs. de configurare apache -
[root@amsterdam ~]#httpd –M perl_module (shared) php5_module (shared) proxy_ajp_module (shared) python_module (shared) ssl_module (shared)
Multe dintre modulele enumerate pot fi dezactivate, cum ar fi mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex, deoarece sunt foarte greu utilizate de serverele web de producție.
vi /etc/httpd/conf/httpd.conf #LoadModule auth_digest_module modules/mod_auth_digest.so
Odată ce ați comentat modulul, salvați fișierul.
Reporniți serviciile Apache cu următoarea comandă.
/etc/init.d/httpd restart
4) Restricționarea accesului la fișierele din afara directorului rădăcină web
Dacă doriți să vă asigurați că fișierele care se află în afara directorului rădăcină web nu sunt accesibile, trebuie să vă asigurați că directorul este restricționat cu „Permite” și „Opțiune Deny” în fișierul de configurare a serverului web.
<Directory/> Options None AllowOverride None Order deny,allow Deny from all </Directory>
Odată ce restricționați accesul în afara directorului rădăcină web, nu veți putea accesa niciun fișier aflat în niciun alt folder de pe serverul dvs. web, veți primi codul de returnare 404.
5) Utilizarea mod_evasive pentru a respinge atacul DoS
Dacă doriți să vă protejați serverul web de Dos (de exemplu, Denial of Service) trebuie să activați modulul mod_evasive. Este un modul terță parte care detectează atacul Dos și împiedică atacul să facă atât de multe daune cât ar face dacă ar fi lăsat să-și continue cursul. Ar putea fi descărcat aici.
Descărcați fișierul de mai sus
6) Utilizarea mod_security pentru a îmbunătăți securitatea Apache
Acest modul funcționează ca un firewall pentru Apache și vă permite să monitorizați traficul în timp real. De asemenea, împiedică serverul web de atacuri de forță brută. Modulul mod_security poate fi instalat cu managerul de pachete implicit al distribuției dumneavoastră.
7) Limitarea dimensiunii cererii
Apache nu are nicio restricție cu privire la dimensiunea totală a cererii http care ar putea duce la un atac DoS. Puteți limita dimensiunea cererii unei directive Apache „LimitRequestBody” cu eticheta de director. Valoarea poate fi setată de la 0 la 2 GB (adică 2147483647 octeți) conform cerințelor dvs.
<Directory "/var/www/html/uploads"> LimitRequestBody 512000 </Directory>
Format jurnal Apache
Jurnalele Apache oferă informații detaliate care ajută la detectarea problemelor comune cu serverul.
Pentru a crea jurnalele de acces, mod_log_configmodule trebuie să fie activat.
Trei directive disponibile în fișierul de configurare apache, adică
- TransferLog: Crearea unui fișier jurnal.
- LogFormat : specificarea unui format personalizat.
- CustomLog: Crearea și formatarea unui fișier jurnal.
Directiva TransferLog este disponibilă în fișierul de configurare apache și rotește fișierele jurnal ale gazdei virtuale conform parametrilor setați.
<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>
Două tipuri de Apache Log Format
- Format comun de jurnal
- Format jurnal combinat.
Le puteți activa prin editarea fișierului de configurare apache, adică fișierul apache2.conf (Debian/ubuntu) sau httpd.conf (sisteme bazate pe rpm).
Format comun de jurnal
LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog logs/access_log common
Jurnal comun generat de 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
Format jurnal combinat
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined CustomLog log/access_log combined
Aici,
- %h este gazda la distanță
- %l este identitatea utilizatorului determinată de identd
- %u este numele de utilizator determinat de autentificarea HTTP
- %t este momentul în care serverul a terminat de procesat cererea.
- %r este linia de solicitare de la client. („GET / HTTP/1.0”)
- %>s este codul de stare trimis de la server către client (500, 404 etc.)
- %b este dimensiunea răspunsului către client (în octeți)
- Referer este pagina care trimite la această adresă URL.
- User-agent este șirul de identificare a browserului.
Jurnal combinat generat de 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)"
Jurnal personalizat creează un fișier jurnal separat pentru fiecare gazdă virtuală de pe serverul dvs. Trebuie specificat în secțiunea gazdă virtuală a fișierului de configurare.
Puteți vedea mai jos configurația gazdei virtuale menționată, jurnalul generat va fi personalizat pentru gazda virtuală respectivă și formatul va fi combinat.
Configurați primul dvs. server web de producție
1. Pentru a avea un server web de producție care rulează, aveți nevoie de un server dedicat nod (Instanță fizică/virtuală sau cloud) care rulează Linux/Unix, Windows, MacOS etc.
2. Serverul Web trebuie să aibă un conexiune directă la rețea și adresa IP statică configurat pe el.
3. Trebuie să aibă toate module necesare pentru rularea paginilor web. Dacă un server web procesează pagini PHP, trebuie să aibă modulul PHP activat.
- De asemenea, trebuie să aibă un bun Antivirus aplicație configurată și rulată pentru a securiza serverul web împotriva atacurilor malware sau viruși. De asemenea, aveți nevoie de mecanism actualizare aplicația antivirus/anti malware configurată în mod regulat, fără nicio intervenție manuală, pentru a obține beneficii maxime de pe urma acestora.
- Dacă aveți sute de domenii de găzduit pe serverul dvs. web, trebuie să implementați limitări ale cotei sistemului de fișiere pentru fiecare domeniu, numărul de baze de date pe care le poate crea fiecare domeniu, numărul de conturi de e-mail pe domeniu etc.
- Dacă serverul dvs. web a fost configurat pentru servicii de găzduire partajată, utilizatorii de pe serverul dvs. web trebuie să fie restricționați. Un utilizator de găzduire partajată ar trebui să aibă cel mai mic privilegiu de utilizator, astfel încât să nu deterioreze fișierele importante și să nu rupă întregul server. Apache nu oferă o astfel de funcționalitate și are nevoie de diferite aplicații terțe, personalizare a sistemului de operare pentru a realiza acest lucru.
- Dacă adăugați un domeniu nou pe serverul dvs. web, trebuie să editeze sute de fișiere de configurare pentru a activa toate funcțiile pentru domeniul adăugat.
- Dacă unul dintre domeniile găzduite necesită setare PHP diferită decât restul domeniilor, implementarea acestui lucru în serverul web de bază Apache este foarte complexă și necesită personalizarea serverului dvs. web în mare măsură.
- Un server web de producție are nevoie de un firewall pentru a bloca traficul nedorit care ar putea cauza o sarcină mare pe serverul dvs. Implementarea IPTABLE regulile cu linia de comandă este foarte complexă. Are nevoie de experiență în mediul Linux/Unix de bază pentru a scrie reguli de firewall eficiente pentru blocarea traficului nedorit. IPTABLE se bazează pe modulul netfilter; este un firewall la nivel de sistem de operare care permite unui administrator să creeze reguli pentru traficul de intrare/ieșire pe server.
- Un server web de producție necesită mai multe aplicații diferite, cum ar fi E-mail, FTP pentru încărcarea fișierelor, numele domeniului pentru domenii parcate. Gestionarea tuturor acestor aplicații pe un sistem Linux/Unix de bază necesită experiență în tehnologiile respective.
Deci, se poate spune că gestionarea unui server web pentru mai multe domenii este o sarcină foarte complexă și necesită editarea a sute de fișiere de configurare, personalizarea fiecărei aplicații pentru a îndeplini rezultatul dorit. Depanarea oricărei configurații greșite va fi foarte dificilă pentru începători.
Soluția folosind Cpanel sau software similar
Cpanel oferă o modalitate grafică de a vă gestiona serverul web. Este menit să ofere servicii de găzduire în masă care sunt ușor de utilizat și configurat. cPanel a redus barierele tehnice de intrare în găzduirea și managementul serverului web. Ușurează sarcinile complexe, oferă multe interfețe web utile și ușor de utilizat, care efectuează sarcini comune de administrare a sistemului necesare pentru operarea unui server web.
cPanel compilează propria versiune de software.
Dacă trebuie să vă recompilați serverul web, adică apache pe platforma Linux normală, trebuie să selectați/căutați manual modulul necesar. cPanel oferă funcționalitatea Easyapache, care este o metodă de compilare a serverului web bazată pe script.
Nu numai că vă oferă servicii web, ci și Mail, DNS, FTP și multe alte servicii care sunt necesare pentru aplicația dvs. web.
O sarcină care necesită experiență în găzduirea bazată pe Linux/Unix, cum ar fi instalarea SSL-urilor, recompilarea Apache cu diferite module PHP, actualizarea securității web, configurarea regulilor IPTABLE eficiente, adăugarea de utilizatori ftp, crearea de conturi de e-mail pentru fiecare domeniu, scanarea rădăcinii documentului cu antivirus și crearea bazelor de date este ușor de finalizat cu cPanel.
Oferă o mulțime de scripturi care repară, instalează și depanează sarcinile administrative comune.
Oferă o funcționalitate de backup și restaurare, eliminând nevoia de a copia manual fișierele în stocarea de rezervă. Dacă faceți o copie de rezervă a domeniului dvs., cPanel va crea un fișier tar care va conține folderul rădăcină a documentelor, conturi de e-mail și e-mailuri, conturi ftp, baze de date, înregistrări DNS și alte aplicații.
De asemenea, oferă o documentație solidă și are o comunitate foarte mare de utilizatori unde puteți discuta și obține soluții pentru problemele dvs.
Deci, se poate spune asta cPanel este cea mai bună aplicație pentru gestionarea serverului dvs. web cu funcțiile necesare. Vă oferă o interfață ușor de utilizat pentru gestionarea domeniului dvs. și un mecanism pentru a evita complexitatea gestionării serverului web de bază.
Există multe produse concurente pentru cPanel, cum ar fi Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel etc.