Apache-tutorials voor beginners

Inhoudsopgave

Wat is Apache?

Apache is een opmerkelijk stukje applicatiesoftware. Het is de meest gebruikte webserver-applicatie ter wereld met een aandeel van meer dan 50% in de commerciële webserver-markt. Apache is de meest gebruikte webservertoepassing in Unix-achtige besturingssystemen, maar kan op bijna alle platforms worden gebruikt, zoals Windows, OS X, OS / 2, enz. Het woord Apache is ontleend aan de naam van de Native Amerikaanse stam 'Apache', beroemd om zijn vaardigheden in oorlogsvoering en strategievorming.

Het is een modulaire, procesgebaseerde webservertoepassing die bij elke gelijktijdige verbinding een nieuwe thread creëert. Het ondersteunt een aantal functies; veel van hen zijn gecompileerd als afzonderlijke modules en breiden de kernfunctionaliteit uit, en kunnen alles bieden, van server-side programmeertaalondersteuning tot authenticatiemechanismen. Virtuele hosting is zo'n functie waarmee een enkele Apache-webserver een aantal verschillende websites kan bedienen.

Hoe Apache te installeren

Er zijn talloze manieren om het pakket of de applicatie te installeren. Er zijn hieronder aangeworven -

  1. Een van de kenmerken van deze open source webapplicatie is dat iedereen een installatieprogramma kan maken volgens zijn eigen omgeving. Hierdoor konden verschillende leveranciers zoals Debian, Red Hat, FreeBSD, Suse enz. De bestandslocatie en configuratie van apache aanpassen, rekening houdend met andere geïnstalleerde applicaties en het basisbesturingssysteem.
  2. Afgezien van het installeren vanaf een installateur van een leverancier, is er altijd de mogelijkheid om het vanaf de broncode te bouwen en te installeren. Apache installeren vanaf het bronbestand is platformonafhankelijk en werkt voor alle besturingssystemen.

De apache-webserver is een modulaire applicatie waarbij de beheerder de vereiste functionaliteit kan kiezen en verschillende modules kan installeren volgens zijn / haar vereisten.

Alle modules kunnen worden gecompileerd als een Dynamic Shared Objects (DSO is een objectbestand dat door meerdere apps kan worden gedeeld terwijl ze worden uitgevoerd) dat los van het hoofdapache-bestand bestaat. De DSO-benadering wordt sterk aanbevolen, het maakt het toevoegen / verwijderen / bijwerken van modules uit de serverconfiguratie zeer eenvoudig.

Installeer Apache: Linux-platform

Op Red Hat of op rpm gebaseerde systemen

Als u een op rpm (RedHat Package Manager is een hulpprogramma voor het installeren van applicaties op Linux-systemen) gebaseerde Linux-distributie gebruikt, dwz Red Hat, Fedora, CentOs, Suse, kunt u deze applicatie installeren door een van de leverancierspecifieke Package Manager of door het rpm-bestand rechtstreeks te bouwen van de beschikbare tarball-bron.

Je kunt Apache installeren via de standaard Pakketbeheerder die beschikbaar is op alle op Red Hat gebaseerde distributies zoals CentOs, Red Hat en Fedora.

[root @ amsterdam ~] # yum installeer httpd

De apache source-tarball kan worden geconverteerd naar een rpm-bestand met behulp van de volgende opdracht.

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

Het is verplicht om het pakket -devel op uw server te hebben geïnstalleerd om een ​​.rpm-bestand vanaf de broncode te kunnen maken.

Nadat u het bronbestand naar een rpm-installatieprogramma hebt geconverteerd, kunt u de volgende opdracht gebruiken om Apache te installeren.

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

Na de installatie start de server niet automatisch, om de service te starten, moet je een van de volgende commando's gebruiken op Fedora, CentOs of Red Hat.

[root @ amsterdam ~] # / usr / sbin / apachectl start[root @ amsterdam ~] # service httpd start[root @ amsterdam ~] # /etc/init.d/httpd start

Installeer Apache vanaf de bron

Om apache vanaf de broncode te installeren, moet het pakket -devel op uw server worden geïnstalleerd ... U kunt de laatste beschikbare versie van Apache vinden, u kunt deze hier downloaden. Nadat u het bronbestand heeft gedownload, verplaatst u het naar de map / 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

Om alle beschikbare configuratie-opties voor Apache te zien, kunt u de ./configure -help-optie gebruiken. De meest gebruikelijke configuratieoptie is -prefix = {installatiedirectorynaam}.

[root @ amserversterdam ~] ./ configureer --help[root @ amserversterdam ~] ./ configure -prefix = / usr / local / apache -enable-so[root @ amserversterdam ~] make[root @ amserversterdam ~] make install

Het bovenstaande voorbeeld toont de compilatie van Apache in de / usr / local / apache directory met de DSO-mogelijkheid. De optie -enable-so kan de vereiste modules tijdens runtime in apache laden via het DSO-mechanisme in plaats van dat een hercompilatie vereist is.

Zodra de installatie is voltooid, kunt u met uw favoriete browser door de standaardpagina van de webservers bladeren. Als de firewall is ingeschakeld op uw server, moet u een uitzondering maken voor poort 80 op uw OS-firewall. U kunt de volgende opdracht gebruiken om poort 80 te openen.

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

service iptables opslaan

U kunt het standaard Apache2-welkomstscherm zien door te bladeren door het IP-adres van uw server.

Wat is een virtuele host?

Een Apache-webserver kan meerdere websites op DEZELFDE server hosten . U hebt niet voor elke website een aparte servermachine en apache-software nodig. Dit kan worden bereikt met behulp van het concept van Virtual Host of VHost.

Elk domein dat u op uw webserver wilt hosten, heeft een aparte vermelding in het apache-configuratiebestand.

Soorten Apache Virtualhost

  1. Op naam gebaseerde virtuele host
  2. Adresgebaseerde of IP-gebaseerde virtuele host en.

Op naam gebaseerde virtuele host

Op naam gebaseerde virtuele hosting wordt gebruikt om meerdere virtuele sites op één IP-adres te hosten.

Om op naam gebaseerde virtuele hosting te configureren, moet u het IP-adres instellen waarop u de Apache-verzoeken voor alle gewenste websites gaat ontvangen. U kunt dit doen met de NameVirutalHost-instructie binnen de apache-configuratie, dwz het bestand httpd.conf / apache2.conf.

Apache virtuele host Voorbeeld:

NaamVirtualHost *: 80ServerAdmin Dit e-mailadres wordt beveiligd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken.DocumentRoot /var/www/html/example1.comServernaam www.example1.comServerAdmin Dit e-mailadres wordt beveiligd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken. DocumentRoot /var/www/html/example2.com Servernaam www.example2.com 

U kunt zoveel virtuele hosts toevoegen als u wilt. U kunt uw webconfiguratiebestanden controleren met:

[root @ amsterdam ~] #httpd -tSyntaxis OK

Als het configuratiebestand een verkeerde syntaxis heeft, zal het een foutmelding geven

[root @ 115 conf.d] # httpd -tSyntaxisfout op regel 978 van /etc/httpd/conf/httpd.conf:Ongeldig commando '*', misschien verkeerd gespeld of gedefinieerd door een module die niet in de serverconfiguratie is opgenomen

IP-gebaseerde virtuele host

Om IP-gebaseerde virtuele hosting in te stellen, heeft u meer dan één IP-adres nodig dat op uw server is geconfigureerd. Het aantal vhost-apache is dus afhankelijk van het aantal IP-adressen dat op uw server is geconfigureerd. Als uw server 10 IP-adressen heeft, kunt u 10 IP-gebaseerde virtuele hosts maken.

In het bovenstaande diagram kregen twee websites example1.com en example2.com verschillende IP's toegewezen en gebruiken ze IP-gebaseerde virtuele hosting.

Luister 192.168.0.100:80ServerAdmin Dit e-mailadres wordt beveiligd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken.DocumentRoot /var/www/html/example1.comServernaam www.example1.comServerAdmin Dit e-mailadres wordt beveiligd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken. DocumentRoot /var/www/html/example2.com Servernaam www.example2.com 

Welke Apache heeft nodig om PHP-bestand uit te voeren?

Voor het draaien van php-bestanden op Apache moet mod_php zijn ingeschakeld op uw server. Hiermee kan Apache .Php-bestanden interpreteren. Het heeft php-handlers die de php-code in apache interpreteren en HTML naar uw webserver sturen.

Als mod_php is ingeschakeld op uw server, heeft u een bestand met de naam php.conf in /etc/httpd/conf.d/ directory. U kunt het ook controleren met:

httpd -M | grep "php5_module"

De uitvoer is vergelijkbaar met:

PHP-handlers in Apache

  • mod_php
  • CGI
  • FastCGI
  • suPHP

mod_php is de oudste PHP-handler, het maakt PHP onderdeel van apache en roept geen extern PHP-proces op. Deze module wordt standaard geïnstalleerd in elke Linux-distributierepository, dus het in- / uitschakelen van deze module is heel eenvoudig.

Als u FastCGI als uw PHP-handler gebruikt, kunt u meerdere versies van PHP instellen voor gebruik door verschillende accounts op uw server.

FastCGI dwz mod_fastcgi is een uitbreiding van mod_fcgid , terwijl mod_fcgid een hoogwaardig alternatief is voor CGI, dwz mod_cgi. Het start een voldoende aantal instanties van CGI om gelijktijdige webverzoeken af ​​te handelen. Het gebruikt ook suexec om verschillende gebruikers te ondersteunen met hun eigen PHP-instances en verbetert de webbeveiliging.

Voor het draaien van ruby-bestanden op Apache moet mod_ruby zijn ingeschakeld. Apache kan ook ruby-bestanden verwerken via FastCGI. Het is mogelijk om meerdere versies van ruby ​​te gebruiken met behulp van mod_fcgid oftewel FastCGI.

U kunt ook apache passagier installeren en Apache configureren om het te gebruiken voor het aanbieden van ruby-pagina's.

(Phusion Passenger ook wel bekend als " passagier " is een gratis webservermodule die is ontworpen om te integreren met Apache en Nginx)

Stappen om mod_ruby op uw server te installeren -

cd / tmpwget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gztar zxvf mod_ruby-1.2.6.tar.gzcd mod_ruby-1.2.6 /./configure.rb --with-apr-include = / usr / include / apr-1makenmake install

Ruby uitvoeren met Apache

We moeten de module mod_ruby toevoegen aan de Apache-configuratie, dwz /etc/httpd/conf.d/ruby.conf en de volgende regel toevoegen.

LoadModule ruby_module modules / mod_ruby.so

Als u deze modules wilt in- of uitschakelen, moet u het apache-configuratiebestand bewerken en commentaar geven op deze modules of opmerkingen verwijderen als de webserver al is gecompileerd met deze modules.

Hoe Apache-webserver te beveiligen

Het beveiligen van uw webserver is erg belangrijk, het betekent dat anderen alleen de bedoelde informatie kunnen zien, uw gegevens beschermen en de toegang beperken.

Dit zijn veelvoorkomende dingen die de beveiliging van uw Apache-webservers verbeteren.

1) Apache-versie en OS-informatie verbergen:

Apache geeft de versie en de naam van het besturingssysteem weer in fouten, zoals weergegeven in de onderstaande schermafbeelding.

Een hacker kan deze informatie gebruiken om een ​​aanval uit te voeren met behulp van de openbaar beschikbare kwetsbaarheden in de specifieke versie van de server of het besturingssysteem.

Om te voorkomen dat de Apache-webserver deze informatie weergeeft, moeten we wijzigingen aanbrengen

"Server handtekening" optie beschikbaar in het apache configuratiebestand. Standaard is het "aan", we moeten het "uit" zetten.

vim /etc/httpd/conf/httpd.conf
Server handtekening uitgeschakeldServerTokens Prod

We hebben ook "ServerTokens Prod" ingesteld die de webserver vertelt om alleen apache te retourneren en de primaire en secundaire versie van het besturingssysteem te onderdrukken

Na het wijzigen van het configuratiebestand, moet u uw apache-webserver herstarten / herladen om deze effectief te maken.

service httpd herstart

2) Schakel Directory Listing uit

Als de hoofdmap van uw document geen indexbestand heeft, toont uw apache-webserver standaard alle inhoud van de hoofdmap van het document.

Deze functie kan worden uitgeschakeld voor een specifieke map via de "options richtlijn" die beschikbaar is in het Apache-configuratiebestand.

Opties - Indexen

3) Onnodige modules uitschakelen

Het is een goede gewoonte om alle onnodige modules die niet in gebruik zijn uit te schakelen. U kunt een lijst met ingeschakelde modules zien die beschikbaar zijn in uw apache-configuratiebestand -

[root @ amsterdam ~] #httpd -Mperl_module (gedeeld)php5_module (gedeeld)proxy_ajp_module (gedeeld)python_module (gedeeld)ssl_module (gedeeld)

Veel van de vermelde modules kunnen worden uitgeschakeld zoals mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex, aangezien ze nauwelijks worden gebruikt door productiewebservers.

vi /etc/httpd/conf/httpd.conf#LoadModule auth_digest_module modules / mod_auth_digest.so

Sla het bestand op nadat u de module hebt becommentarieerd.

Start apache-services opnieuw met de volgende opdracht.

/etc/init.d/httpd herstart

4) Toegang beperken tot bestanden buiten de hoofddirectory van het web

Als u er zeker van wilt zijn dat bestanden die zich buiten de web-root-directory bevinden, niet toegankelijk zijn, moet u ervoor zorgen dat de directory is beperkt met de opties "Toestaan" en "Weigeren" in uw webserverconfiguratiebestand.

Opties GeenAllowOverride GeenBestelling weigeren, toestaanWeigeren van iedereen

Zodra u de toegang buiten de webroot-directoy beperkt, kunt u geen enkel bestand openen dat zich in een andere map op uw webserver bevindt, u krijgt de 404-retourcode.

5) Mod_evasive gebruiken om de DoS-aanval te weerleggen

Als u uw webserver wilt beschermen tegen Dos (ie Denial of Service), moet u de module mod_evasive inschakelen. Het is een module van een derde partij die Dos-aanval detecteert en voorkomt dat de aanval zoveel schade aanricht als wanneer het zijn gang zou gaan. Het kan hier worden gedownload.

Download het bovenstaande bestand

6) Mod_security gebruiken om apache-beveiliging te verbeteren

Deze module werkt als een firewall voor Apache en stelt u in staat om het verkeer in realtime te volgen. Het voorkomt ook dat de webserver brute force-aanvallen krijgt. De module mod_security kan worden geïnstalleerd met de standaard pakketbeheerder van uw distributie.

7) Verzoekgrootte beperken

Apache heeft geen enkele beperking op de totale grootte van het http-verzoek die tot een DoS-aanval zou kunnen leiden. U kunt de aanvraaggrootte van een Apache-instructie "LimitRequestBody" beperken met de directory-tag. De waarde kan worden ingesteld van 0 tot 2 GB (dwz 2147483647 bytes) volgens uw vereisten.

LimitRequestBody 512000

Apache-logboekformaat

Apache-logboeken bieden gedetailleerde informatie die helpen bij het opsporen van veelvoorkomende problemen met de server.

Om toegangslogboeken te maken, moet mod_log_configmodule zijn ingeschakeld.

Drie richtlijnen beschikbaar in het apache-configuratiebestand, dwz

  • TransferLog: een logboekbestand maken.
  • LogFormat: specificeert een aangepast formaat.
  • CustomLog: een logboekbestand maken en opmaken.

TransferLog-instructie is beschikbaar in het apache-configuratiebestand en het roteert virtuele host-logbestanden volgens ingestelde parameters.

ServerAdmin Dit e-mailadres wordt beveiligd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken.DocumentRoot / usr / www / voorbeeld / httpd / htdocs /Servernaam www.example.comServerAlias ​​example.com www.exampleErrorLog / usr / www / example / httpd / logs / error_logTransferLog / usr / www / example / httpd / logs / accesslogCustomLog / usr / www / example / httpd / logs / accesslog gecombineerd

Twee soorten Apache-logboekindeling

  • Algemeen logboekformaat
  • Gecombineerd logboekformaat.

U kunt ze inschakelen door het apache-configuratiebestand te bewerken, dwz apache2.conf (Debian / ubuntu) of httpd.conf (op rpm gebaseerde systemen) bestand

Algemeen logboekformaat

LogFormat "% h% l% u% t \"% r \ "%> s% b" gemeenschappelijkCustomLog logs / access_log algemeen

Algemeen logboek gegenereerd door Apache

[Wo 11 oktober 14:32:52 2000] [fout] [client 127.0.0.1] client geweigerd door serverconfiguratie: / export / home / live / ap / htdocs / test

Gecombineerd logboekformaat

LogFormat "% h% l% u% t \"% r \ "%> s% b \"% {Referer} i \ "\"% {User-agent} i \ "" gecombineerdCustomLog log / access_log gecombineerd

Hier,

  • % h is de externe host
  • % l is de identiteit van de gebruiker bepaald door identd
  • % u is de gebruikersnaam bepaald door HTTP-authenticatie
  • % t is de tijd dat de server klaar was met het verwerken van het verzoek.
  • % r is de verzoekregel van de klant. ("GET / HTTP / 1.0")
  • %> s is de statuscode die van de server naar de client wordt gestuurd (500, 404 etc.)
  • % b is de grootte van het antwoord op de client (in bytes)
  • Referer is de pagina die naar deze URL linkt.
  • User-agent is de identificatiereeks van de browser.

Gecombineerd logboek gegenereerd door Apache:

199.187.122.91 - - [06 / Mar / 2014: 04: 22: 58 +0100] "GET /robots.txt HTTP / 1.1" 404 1228 "-" "Mozilla / 4.0 (compatibel; MSIE 6.0; Windows NT 5.1; SV1 ; .NET CLR 2.0.50727) "

Aangepast logboek maakt een afzonderlijk logboekbestand voor elke virtuele host op uw server. Het moet worden gespecificeerd in de virtuele host-sectie van het configuratiebestand.

U kunt de onderstaande virtuele hostconfiguratie zien, het gegenereerde logboek zal aangepast zijn voor die virtuele host en het formaat zal worden gecombineerd.

Configureer uw allereerste Production Web Server

1. Om een ​​draaiende productiewebserver te hebben, hebt u een speciaal knooppunt nodig (fysiek / virtueel of cloudinstantie) met Linux / Unix, Windows, MacOS enz.

2. De webserver moet een directe netwerkverbinding hebben en er moet een statisch IP-adres op geconfigureerd zijn.

3. Het moet alle modules hebben die nodig zijn om webpagina's te laten draaien. Als een webserver PHP-pagina's verwerkt, moet de PHP-module ingeschakeld zijn.

  1. Er moet ook een goede antivirustoepassing zijn geconfigureerd en uitgevoerd om de webserver te beveiligen tegen malware of virusaanvallen. U hebt ook een mechanisme nodig om de geconfigureerde antivirus- / antimalwaretoepassing regelmatig bij te werken zonder handmatige tussenkomst om er maximaal van te profiteren.
  2. Als u honderden domeinen op uw webserver wilt hosten, moet u beperkingen op de bestandssysteemquota voor elk domein implementeren , het aantal databases dat elk domein kan aanmaken, het aantal e-mailaccounts per domein enz.
  3. Als uw webserver is ingesteld voor gedeelde hostingservices, moeten gebruikers op uw webserver worden beperkt . Een shared hosting-gebruiker moet de minste gebruikersrechten hebben, zodat hij geen belangrijke bestanden beschadigt en de hele server kapot maakt. Apache biedt dergelijke functionaliteit niet en heeft verschillende applicaties van derden nodig, aanpassing van het besturingssysteem om dit te bereiken.
  4. Als u een nieuw domein aan uw webserver toevoegt , moet u honderden configuratiebestanden bewerken om alle functies voor het toegevoegde domein in te schakelen.
  5. Als een van de gehoste domeinen een andere PHP-instelling vereist dan de rest van de domeinen, is het implementeren van dit in de kern van de Apache-webserver erg complex en moet je webserver in hoge mate worden aangepast.
  6. Een productiewebserver heeft een firewall nodig om ongewenst verkeer te blokkeren dat een hoge belasting van uw server kan veroorzaken. Het implementeren van IPTABLE- regels met de opdrachtregel is erg complex. Het heeft expertise van de Linux / Unix-kernomgeving nodig om effectieve firewallregels te schrijven voor het blokkeren van ongewenst verkeer. IPTABLE is gebaseerd op netfilter module; het is een firewall op OS-niveau waarmee een beheerder regels kan maken voor inkomend / uitgaand verkeer op de server.
  7. Een productiewebserver vereist verschillende toepassingen, zoals e-mail , FTP voor het uploaden van bestanden, Domain Name System voor geparkeerde domeinen. Het beheren van al deze applicaties op een Linux / Unix-kernsysteem vereist expertise op het gebied van de respectievelijke technologieën.

Men kan dus zeggen dat het beheren van een webserver voor meerdere domeinen een zeer complexe taak is en dat er honderden configuratiebestanden moeten worden bewerkt, waarbij elke applicatie moet worden aangepast om het gewenste resultaat te bereiken. Het oplossen van een mislukte configuratie zal erg moeilijk zijn voor beginners.

De oplossing met behulp van Cpanel of vergelijkbare software

Cpanel biedt een grafische manier om uw webserver te beheren . Het is bedoeld om massa-hostingservices te bieden die gemakkelijk te gebruiken en te configureren zijn. cPanel heeft de technische barrières voor toegang tot het hosting- en webserverbeheer verlaagd. Het maakt complexe taken gemakkelijker, het biedt veel handige en gebruiksvriendelijke webinterfaces die algemene systeembeheertaken uitvoeren die nodig zijn om een ​​webserver te bedienen.

cPanel stelt zijn eigen softwareversie samen.

Als u uw webserver, dwz apache, opnieuw moet compileren op een normaal Linux-platform, moet u de vereiste module handmatig selecteren / doorzoeken. cPanel biedt Easyapache-functionaliteit, een op scripts gebaseerde webserver-compilatiemethode.

Het biedt u niet alleen webservices, maar ook e-mail, DNS, FTP en nog veel meer services die nodig zijn voor uw webtoepassing.

Een taak die expertise vereist op het gebied van core Linux / Unix-gebaseerde hosting, zoals het installeren van SSL's, het opnieuw compileren van Apache met verschillende PHP-modules, het updaten van Web Security, het configureren van effectieve IPTABLE-regels, het toevoegen van ftp-gebruikers, het aanmaken van mailaccounts voor elk domein, het scannen van je document root met antivirus en het aanmaken van databases is eenvoudig te voltooien met cPanel.

Het biedt veel scripts die algemene beheertaken repareren, installeren en problemen oplossen.

Het biedt een back-up- en herstelfunctie waardoor het niet meer nodig is om bestanden handmatig naar de back-upopslag te kopiëren. Als u een back-up van uw domein maakt, maakt cPanel een tar-bestand aan dat de hoofdmap van het document, e-mailaccounts en mails, ftp-accounts, databases, DNS-records en andere toepassingen bevat.

Het biedt ook robuuste documentatie en heeft een zeer grote gemeenschap van gebruikers waar u uw problemen kunt bespreken en oplossen.

Je kunt dus zeggen dat cPanel de beste applicatie is voor het beheren van je webserver met de vereiste functies. Het biedt u een gebruiksvriendelijke interface voor het beheer van uw domein en een mechanisme om de complexiteit van het beheer van de kernwebserver te vermijden.

Er zijn veel concurrerende producten voor cPanel zoals Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel etc.

Interessante artikelen...