Apache tutorials for begyndere
Hvad er Apache?
Apache er et bemærkelsesværdigt stykke applikationssoftware. Det er den mest udbredte webserverapplikation i verden med mere end 50% andel på det kommercielle webservermarked. Apache er den mest udbredte Web Server-applikation i Unix-lignende operativsystemer men kan bruges på næsten alle platforme som f.eks. Windows, OS X, OS/2 osv. Ordet Apache er taget fra navnet på den indianerstamme 'Apache', berømt for sine færdigheder inden for krigsførelse og strategifremstilling.
Det er en modulær, procesbaseret webserverapplikation, der skaber en ny tråd med hver samtidig forbindelse. Den understøtter en række funktioner; mange af dem er kompileret som separate moduler og udvider dens kernefunktionalitet og kan levere alt fra serversideunderstøttelse af programmeringssprog til autentificeringsmekanisme. Virtuel hosting er en sådan funktion, der gør det muligt for en enkelt Apache-webserver at betjene en række forskellige websteder.
Sådan installeres Apache
Der er adskillige måder at installere pakken eller programmet på. Der er optaget nedenfor -
- En af funktionerne i denne åbne kildewebapplikation er, at enhver kan lave installationsprogram i henhold til deres eget miljø. Dette har gjort det muligt for forskellige leverandører som Debian, Red Hat, FreeBSD, Suse osv. at tilpasse filplaceringen og konfigurationen af apache under hensyntagen til andre installerede applikationer og basis OS.
- Udover at installere det fra en leverandørbaseret installatør, er der altid mulighed for at bygge og installere det fra kildekoden. Installation af Apache fra kildefilen er en platformsuafhængig og fungerer for alle OS.
Apache-webserveren er en modulær applikation, hvor administratoren kan vælge den nødvendige funktionalitet og installere forskellige moduler efter hans/hendes behov.
Alle moduler kan sammensættes som en Dynamiske delte objekter (DSO er en objektfil, der kan deles af flere apps, mens de kører), som eksisterer separat fra apache-hovedfilen. DSO-tilgangen anbefales stærkt, den gør opgaven med at tilføje/fjerne/opdatere moduler fra serverens konfiguration meget enkel.
Installer Apache:Linux Platform
På Red Hat eller rpm baserede systemer
Hvis du bruger en rpm (RedHat Package Manager er et værktøj til at installere applikationer på Linux-systemer) baseret Linux-distribution, dvs. Red Hat, Fedora, CentOs, Suse, kan du installere denne applikation enten ved leverandørspecifik Package Manager eller direkte at bygge rpm-filen fra den tilgængelige kilde tarball.
Du kan installere Apache via standard Package Manager tilgængelig på alle Red Hat-baserede distributioner som CentOs, Red Hat og Fedora.
[root@amsterdam ~]# yum install httpd
Apache-kildens tarball kunne konverteres til en rpm-fil ved hjælp af følgende kommando.
[root@amsterdam ~]# rpmbuild -tb httpd-2.4.x.tar.bz2
Det er obligatorisk at have -devel-pakken installeret på din server for at oprette .rpm-fil fra kilden.
Når du har konverteret kildefilen til et rpm-installationsprogram, kan du bruge følgende kommando til at installere Apache.
[root@amsterdam ~]# rpm –ivh httpd-2.4.4-3.1.x86_64.rpm
Efter installationen starter serveren ikke automatisk, for at starte tjenesten skal du bruge en af følgende kommandoer på Fedora, CentOs eller Red Hat.
[root@amsterdam ~]# /usr/sbin/apachectl start [root@amsterdam ~]# service httpd start [root@amsterdam ~]# /etc/init.d/httpd start
Installer Apache fra Source
Installation af apache fra kilden kræver, at –devel-pakken er installeret på din server. .Du kan finde den seneste tilgængelige version af Apache, du kan downloade den link. . Når du har downloadet kildefilen, skal du flytte den til mappen /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
For at se alle tilgængelige konfigurationsmuligheder for Apache, kan du bruge ./configure –help-indstillingen. Den mest almindelige konfigurationsmulighed er –prefix={install directory name}.
[root@amserversterdam ~]./configure --help [root@amserversterdam ~]./configure –prefix=/usr/local/apache –enable-so [root@amserversterdam ~] make [root@amserversterdam ~] make install
Ovenstående eksempel viser kompileringen af Apache i mappen /usr/local/apache med DSO-kapaciteten. Muligheden –enable-so kan indlæse nødvendige moduler til apache under kørsel via DSO-mekanismen i stedet for at kræve en genkompilering.
Når installationen er fuldført, kan du gennemse webserverens standardside med din yndlingsbrowser. Hvis firewall er aktiveret på din server, skal du være nødt til at gøre undtagelse for port 80 på din OS firewall. Du kan bruge følgende kommando til at åbne port 80.
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
service iptables gemme
Du kan se standarden Apache2 velkomstskærm ved at gennemse din server IP-adresse.
Hvad er Virtual Host?
En Apache-webserver kan være vært for flere websteder på SAMME server. Du behøver ikke separat servermaskine og apache-software til hver hjemmeside. Dette kan opnås ved hjælp af konceptet Virtual Host or VHost.
Ethvert domæne, som du vil hoste på din webserver, vil have en separat indgang i apache-konfigurationsfilen.
Typer af Apache Virtualhost
- Navnebaseret virtuel vært
- Adressebaseret eller IP-baseret virtuel vært og.
Navnebaseret virtuel vært
Navnebaseret virtuel hosting bruges til at hoste flere virtuelle websteder på en enkelt IP-adresse.
For at konfigurere navnebaseret virtuel hosting skal du indstille den IP-adresse, som du vil modtage Apache-anmodningerne på for alle de ønskede websteder. Du kan gøre dette ved NameVirutalHost-direktivet i apache-konfigurationen, dvs httpd.conf/apache2.conf fil.
Eksempel på Apache virtuel vært:
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>
Du kan tilføje lige så mange virtuelle værter, som du ønsker. Du kan tjekke dine webkonfigurationsfiler med:
[root@amsterdam ~]#httpd –t Syntax OK
Hvis konfigurationsfilen har en forkert syntaks, vil den give en fejl
[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-baseret virtuel vært
For at opsætte IP-baseret virtuel hosting skal du have mere end én IP-adresse konfigureret på din server. Så antallet af vhost-apache vil afhænge af antallet af IP-adresser, der er konfigureret på din server. Hvis din server har 10 IP-adresser, kan du oprette 10 IP-baserede virtuelle værter.
I ovenstående diagram blev to websteder example1.com og example2.com tildelt forskellige IP'er og bruger IP-baseret virtuel hosting.
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>
Hvad Apache skal bruge for at køre Php-fil?
Det er nødvendigt at køre Php-filer på Apache mod_php aktiveret på din server. Det giver Apache mulighed for at fortolke .Php-filer. Det har Php-handlere, der fortolker Php-koden i apache og sender HTML til din webserver.
Hvis mod_php er aktiveret på din server, vil du have en fil med navnet php.conf i mappen /etc/httpd/conf.d/. Du kan også tjekke det med:
httpd -M | grep "php5_module"
Outputtet vil ligne:
Php-handlere i Apache
- mod_php
- CGI
- HurtigCGI
- suPHP
mod_phper den ældste PHP-handler, den gør PHP til en del af apache og kalder ikke nogen ekstern PHP-proces. Dette modul er installeret som standard i ethvert Linux-distributionslager, så det er meget nemt at aktivere/deaktivere dette modul.
Hvis du bruger HurtigCGI som din PHP-handler kan du indstille flere versioner af PHP til at blive brugt af forskellige konti på din server.
FastCGI dvs mod_fastcgi er en udvidelse af mod_fcgid, hvor som mod_fcgid er et højtydende alternativ til CGI, dvs. mod_cgi. Det starter et tilstrækkeligt antal forekomster af CGI til at håndtere samtidige webanmodninger. Det bruger også suexec til at understøtte forskellige brugere med deres egne forekomster af PHP og forbedrer websikkerheden.
Kørsel af ruby-filer på Apache kræver, at mod_ruby er aktiveret. Apache kan også håndtere rubinfiler gennem FastCGI. Det er muligt at bruge flere versioner af ruby ved hjælp af mod_fcgid, dvs. FastCGI.
Du kan også installere apache-passager og konfigurere Apache til at bruge den til at betjene rubinsider.
(Phusion Passenger også kendt som "passager” er et gratis webservermodul, der er designet til at integrere med Apache og Nginx)
Trin til at installere mod_ruby på din 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
Sådan kører du Ruby med Apache
Vi skal tilføje mod_ruby-modulet til Apache-konfigurationen, dvs. /etc/httpd/conf.d/ruby.conf og tilføje følgende linje.
LoadModule ruby_module modules/mod_ruby.so
Hvis du vil aktivere eller deaktivere disse moduler, skal du redigere apache-konfigurationsfilen og kommentere eller fjerne kommentarer til disse moduler, hvis webserveren allerede er kompileret med disse moduler.
Sådan sikrer du Apache Web Server
Det er meget vigtigt at sikre din webserver, det betyder, at du kun giver andre mulighed for at se den tilsigtede information og beskytte dine data og begrænse adgangen.
Disse er almindelige ting, der forbedrer din Apache-webservers sikkerhed.
1) Skjul Apache-version og OS-oplysninger:
Apache viser sin version og navnet på operativsystemet i fejl som vist på skærmbilledet nedenfor.
En hacker kan bruge disse oplysninger til at starte et angreb ved hjælp af de offentligt tilgængelige sårbarheder i den bestemte version af serveren eller operativsystemet.
For at forhindre Apache-webserveren i at vise disse oplysninger, er vi nødt til at ændre
"serversignatur" mulighed tilgængelig i apache-konfigurationsfilen. Som standard er den "til", vi skal slå den "fra".
vim /etc/httpd/conf/httpd.conf
ServerSignature Off ServerTokens Prod
Vi har også indstillet "ServerTokens Prod", der fortæller webserveren kun at returnere apache og undertrykke OS hoved- og mindreversionen
Efter at have ændret konfigurationsfilen, skal du genstarte/genindlæse din apache-webserver for at gøre den effektiv.
service httpd restart
2) Deaktiver Directory Listing
Hvis dit dokumentrodbibliotek ikke har en indeksfil, vil din apache-webserver som standard vise alt indholdet af dokumentrodmappen.
Denne funktion kan slås fra for en specifik mappe via "optionsdirektivet", der er tilgængeligt i Apache-konfigurationsfilen.
<Directory /var/www/html> Options -Indexes </Directory>
3) Deaktivering af unødvendige moduler
Det er god praksis at deaktivere alle unødvendige moduler, der ikke er i brug. Du kan se listen over aktiverede moduler, der er tilgængelige i din apache-konfigurationsfil -
[root@amsterdam ~]#httpd –M perl_module (shared) php5_module (shared) proxy_ajp_module (shared) python_module (shared) ssl_module (shared)
Mange af de anførte moduler kan deaktiveres som mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex, da de næsten ikke bruges af nogen produktionswebservere.
vi /etc/httpd/conf/httpd.conf #LoadModule auth_digest_module modules/mod_auth_digest.so
Når du har kommenteret modulet, skal du gemme filen.
Genstart apache-tjenester med følgende kommando.
/etc/init.d/httpd restart
4) Begrænsning af adgang til filer uden for webrodmappen
Hvis du gerne vil sikre dig, at filer, der er uden for webrodmappen, ikke er tilgængelige, skal du sørge for, at mappen er begrænset med "Tillad" og "Afvis mulighed" i din webserverkonfigurationsfil.
<Directory/> Options None AllowOverride None Order deny,allow Deny from all </Directory>
Når du først begrænser adgangen uden for web-rod-direktoratet, vil du ikke være i stand til at få adgang til nogen fil, der er placeret på nogen anden mappe på din webserver, du vil få 404-returkode.
5) Brug mod_evasive til at afvise DoS-angrebet
Hvis du gerne vil beskytte din webserver mod Dos (dvs. Denial of Service), skal du aktivere modulet mod_evasive. Det er et tredjepartsmodul, der detekterer Dos-angreb og forhindrer angrebet i at gøre så meget skade, som det ville gøre, hvis det lod sig køre. Den kunne downloades her.
6) Brug mod_security til at forbedre apache-sikkerheden
Dette modul fungerer som en firewall for Apache og giver dig mulighed for at overvåge trafikken i realtid. Det forhindrer også webserveren fra brute force-angreb. Mod_security-modulet kunne installeres med standardpakkehåndteringen for din distribution.
7) Begrænsende anmodningsstørrelse
Apache har ingen begrænsninger på den samlede størrelse af http-anmodningen, der kan føre til et DoS-angreb. Du kan begrænse anmodningsstørrelsen for et Apache-direktiv "LimitRequestBody" med directory-tagget. Værdien kan indstilles til alt fra 0 til 2 GB (dvs. 2147483647 bytes) efter dit krav.
<Directory "/var/www/html/uploads"> LimitRequestBody 512000 </Directory>
Apache-logformat
Apache-logfiler giver detaljerede oplysninger, der hjælper med at opdage almindelige problemer med serveren.
For at oprette adgangslogfiler skal mod_log_configmodule være aktiveret.
Tre direktiver tilgængelige i apache-konfigurationsfil, dvs
- TransferLog: Oprettelse af en logfil.
- LogFormat : Angivelse af et brugerdefineret format.
- CustomLog : Oprettelse og formatering af en logfil.
TransferLog-direktivet er tilgængeligt i apache-konfigurationsfilen, og det roterer virtuelle værtslogfiler i henhold til de indstillede parametre.
<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>
To typer Apache-logformat
- Fælles logformat
- Kombineret logformat.
Du kan aktivere dem ved at redigere apache-konfigurationsfilen, dvs. filen apache2.conf (Debian/ubuntu) eller httpd.conf (rpm-baserede systemer)
Fælles logformat
LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog logs/access_log common
Fælles log genereret af 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
Kombineret logformat
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined CustomLog log/access_log combined
Her,
- %h er fjernværten
- %l er brugerens identitet bestemt af identd
- %u er brugernavnet bestemt af HTTP-godkendelse
- %t er det tidspunkt, hvor serveren afsluttede behandlingen af anmodningen.
- %r er anmodningslinjen fra klienten. ("GET / HTTP/1.0")
- %>s er statuskoden sendt fra serveren til klienten (500, 404 osv.)
- %b er størrelsen af svaret til klienten (i bytes)
- Referer er den side, der linkede til denne URL.
- User-agent er browserens identifikationsstreng.
Kombineret log genereret af 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 opretter separat logfil for hver Virtual Host på din server. Det skal angives i den virtuelle værtssektion af konfigurationsfilen.
Du kan se nedenfor nævnte virtuelle værtskonfiguration, den genererede log vil blive tilpasset til den virtuelle vært, og formatet vil blive kombineret.
Konfigurer din allerførste produktionswebserver
1. For at have en kørende produktionswebserver skal du bruge en dedikeret node (fysisk/virtuel eller cloud-instans) kører Linux/Unix, Windows, MacOS osv.
2. Webserveren skal have en direkte netværksforbindelse og en statisk IP-adresse konfigureret på den.
3. Den skal have alle de moduler kræves for at køre websider. Hvis en webserver behandler PHP-sider, skal den have PHP-modulet aktiveret.
- Det skal også have et godt Antivirus program, der er konfigureret og kører til at sikre webserveren mod malware- eller virusangreb. Du skal også bruge mekanisme til opdatering den konfigurerede antivirus/anti-malware-applikation på regelmæssig basis uden nogen manuel indgriben for at få maksimalt udbytte af dem.
- Hvis du har hundredvis af domæner, der skal hostes på din webserver, skal du implementere begrænsninger på filsystemkvoter for hvert domæne, antal databaser hvert domæne kan oprette, antal e-mailkonti pr. domæne osv.
- Hvis din webserver er sat op til delte hostingtjenester, skal brugere på din webserver begrænses. En delt hosting-bruger bør have mindst brugerrettigheder, så han ikke beskadiger vigtige filer og ødelægger hele serveren. Apache giver ikke nogen sådan funktionalitet og har brug for forskellige tredjepartsapplikationer, tilpasning af OS for at opnå dette.
- Hvis du tilføjer en nyt domæne på din webserver skal den redigeres i hundredvis af konfigurationsfiler for at aktivere alle funktioner for det tilføjede domæne.
- Hvis et af de hostede domæner kræver forskellige PHP-indstillinger end resten af domænerne, er implementeringen af dette i Apache-kernewebserveren meget kompleks og kræver i høj grad tilpasning af din webserver.
- En produktionswebserver har brug for en firewall at blokere uønsket trafik, der kan forårsage høj belastning på din server. Implementerer IPTABLE regler med kommandolinje er meget komplekse. Det har brug for ekspertise i det centrale Linux/Unix-miljø for at skrive effektive firewall-regler til blokering af uønsket trafik. IPTABLE er baseret på netfiltermodul; det er en firewall på OS-niveau, der giver en administrator mulighed for at oprette regler for indgående/udgående trafik på serveren.
- En produktionswebserver kræver flere forskellige applikationer som f.eks E-mail, FTP til fil upload, Domain Name System for parkerede domæner. Håndtering af alle disse applikationer på et kerne Linux/Unix-system kræver ekspertise inden for de respektive teknologier.
Så man kan sige, at styring af en webserver for flere domæner er en meget kompleks opgave og kræver redigering af hundredvis af konfigurationsfiler, der tilpasser hver applikation til at opfylde det ønskede resultat. Fejlfinding af enhver fejlkonfiguration vil være meget vanskelig for begyndere.
Løsningen ved hjælp af Cpanel eller lignende software
Cpanel giver en grafisk måde at administrere din webserver på. Det er beregnet til at levere massehostingtjenester, der er nemme at bruge og konfigurere. cPanel har reduceret de tekniske barrierer for adgang til hosting og webserverstyring. Det gør komplekse opgaver lettere, det giver mange nyttige og brugervenlige webgrænseflader, der udfører almindelige systemadministrationsopgaver, der kræves for at drive en webserver.
cPanel kompilerer sin egen version af software.
Hvis du skal rekompilere din webserver, dvs. apache på normal Linux platform, skal du manuelt vælge/søge det modul, der er påkrævet. cPanel giver Easyapache-funktionalitet, der er en script-baseret webserver-kompileringsmetode.
Det giver dig ikke kun webtjenester, men også Mail, DNS, FTP og mange flere tjenester, der kræves til din webapplikation.
En opgave, der kræver ekspertise om kerne Linux/Unix-baseret hosting som installation af SSL'er, genkompilering af Apache med forskellige PHP-moduler, opdatering af websikkerhed, konfiguration af effektive IPTABLE-regler, tilføjelse af ftp-brugere, oprettelse af mailkonti for hvert domæne, scanning af din dokumentrod med antivirus og oprettelse af databaser er let at fuldføre med cPanel.
Det giver en masse scripts, der løser, installerer og fejlfinder almindelige administrative opgaver.
Det giver en sikkerhedskopierings- og gendannelsesfunktionalitet, der eliminerer behovet for manuelt at kopiere filer til backuplager. Hvis du sikkerhedskopierer dit domæne, vil cPanel oprette en tar-fil, der vil indeholde dokumentets rodmappe, e-mail-konti og mails, ftp-konti, databaser, DNS-poster og andre applikationer.
Det giver også en robust dokumentation og har et meget stort fællesskab af brugere, hvor du kan diskutere og få en løsning på dine problemer.
Så det kan man sige cPanel er den bedste applikation til at administrere din webserver med nødvendige funktioner. Det giver dig en brugervenlig grænseflade til at administrere dit domæne og en mekanisme til at undgå kompleksitet i at administrere kernewebserveren.
Der er mange konkurrerende produkter til cPanel som Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel osv.