Apache-tutorials för nybörjare

Vad är Apache?

Apache är en anmärkningsvärd mjukvara. Det är den mest använda webbserverapplikationen i världen med mer än 50 % andel på den kommersiella webbservermarknaden. Apache är den mest använda webbserverapplikationen i Unix-liknande operativsystem men kan användas på nästan alla plattformar som t.ex. Windows, OS X, OS/2, etc. Ordet Apache har tagits från namnet på indianstammen "Apache", känd för sina färdigheter i krigföring och strategiskapande.

Det är en modulär, processbaserad webbserverapplikation som skapar en ny tråd med varje samtidig anslutning. Den stöder ett antal funktioner; många av dem är kompilerade som separata moduler och utökar dess kärnfunktionalitet, och kan tillhandahålla allt från serversidans programmeringsspråkstöd till autentiseringsmekanism. Virtuell värd är en sådan funktion som gör att en enda Apache-webbserver kan betjäna ett antal olika webbplatser.

Apache

Hur man installerar Apache

Det finns många sätt att installera paketet eller applikationen. Det finns värvade nedan -

  1. En av funktionerna i denna öppen källwebbapplikation är att vem som helst kan göra installationsprogram enligt sin egen miljö. Detta har gjort det möjligt för olika leverantörer som Debian, Red Hat, FreeBSD, Suse etc. att anpassa filplatsen och konfigurationen av apache med hänsyn till andra installerade applikationer och basoperativsystem.
  2. Förutom att installera det från en leverantörsbaserad installatör, finns det alltid möjlighet att bygga och installera det från källkoden. Att installera Apache från källfilen är en plattformsoberoende och fungerar för alla operativsystem.

Apache webbserver är en modulär applikation där administratören kan välja önskad funktionalitet och installera olika moduler enligt hans/hennes krav.

Alla moduler kan sammanställas som en Dynamiska delade objekt (DSO är en objektfil som kan delas av flera appar medan de körs) som existerar separat från apache-huvudfilen. DSO-metoden rekommenderas starkt, den gör uppgiften att lägga till/ta bort/uppdatera moduler från servrarnas konfiguration mycket enkel.

Installera Apache:Linux-plattformen

På Red Hat eller rpm-baserade system

Om du använder en rpm (RedHat Package Manager är ett verktyg för att installera applikationer på Linux-system) baserad Linux-distribution, dvs. Red Hat, Fedora, CentOs, Suse, kan du installera den här applikationen antingen genom leverantörsspecifik Package Manager eller direkt genom att bygga rpm-filen från den tillgängliga källan tarball.

Du kan installera Apache via standardpakethanteraren som är tillgänglig på alla Red Hat-baserade distributioner som CentOs, Red Hat och Fedora.

[root@amsterdam ~]# yum install httpd

Apache-källans tarball kan konverteras till en rpm-fil med följande kommando.

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

Det är obligatoriskt att ha -devel-paketet installerat på din server för att skapa .rpm-fil från källan.

När du konverterar källfilen till ett rpm-installationsprogram kan du använda följande kommando för att installera Apache.

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

Efter installationen startar inte servern automatiskt, för att starta tjänsten måste du använda något av följande kommando på Fedora, CentOs eller Red Hat.

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

[root@amsterdam ~]# service httpd start

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

Installera Apache från källan

Installation av apache från källan kräver att –devel-paketet är installerat på din server. .Du kan hitta den senaste tillgängliga versionen av Apache, du kan ladda ner den här. . När du har laddat ner källfilen, flytta den till 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

För att se alla tillgängliga konfigurationsalternativ för Apache kan du använda alternativet ./configure –hjälp. Det vanligaste konfigurationsalternativet är –prefix={installera katalognamn}.

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

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

[root@amserversterdam ~] make

[root@amserversterdam ~] make install

Exemplet ovan visar kompileringen av Apache i katalogen /usr/local/apache med DSO-möjligheten. Alternativet –enable-so kan ladda nödvändiga moduler till apache under körning via DSO-mekanismen istället för att kräva en omkompilering.

När installationen är klar kan du surfa på webbservrarnas standardsida med din favoritwebbläsare. Om brandväggen är aktiverad på din server måste du göra undantag för port 80 på din OS-brandvägg. Du kan använda följande kommando för att öppna port 80.

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

service iptables spara

Du kan se standardinställningen Apache2 välkomstskärm genom att bläddra i din server IP-adress.

Installera Apache från källan

Vad är Virtual Host?

En Apache-webbserver kan vara värd för flera webbplatser på SAMMA server. Du behöver inte separat servermaskin och apache-mjukvara för varje webbplats. Detta kan uppnås med hjälp av konceptet Virtuell värd or VHost.

Alla domäner som du vill ha på din webbserver kommer att ha en separat post i apache-konfigurationsfilen.

Virtuell värd

Typer av Apache Virtualhost

  1. Namnbaserad virtuell värd
  2. Adressbaserad eller IP-baserad virtuell värd och.

Namnbaserad virtuell värd

Namnbaserad virtuell värd används för att vara värd för flera virtuella webbplatser på en enda IP-adress.

Namnbaserad virtuell värd

För att konfigurera namnbaserad virtuell hosting måste du ställa in IP-adressen som du ska ta emot Apache-förfrågningar på för alla önskade webbplatser. Du kan göra detta genom NameVirutalHost-direktivet i apache-konfigurationen, dvs httpd.conf/apache2.conf fil.

Apache virtuell värd Exempel:

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 lägga till så många virtuella värdar, enligt dina krav. Du kan kontrollera dina webbkonfigurationsfiler med:

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

Om konfigurationsfilen har fel syntax kommer den att ge ett fel

[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-baserad virtuell värd

För att ställa in IP-baserad virtuell hosting behöver du mer än en IP-adress konfigurerad på din server. Så antalet vhost-apache kommer att bero på antalet IP-adresser som är konfigurerade på din server. Om din server har 10 IP-adresser kan du skapa 10 IP-baserade virtuella värdar.

IP-baserad virtuell värd

I diagrammet ovan tilldelades två webbplatser example1.com och example2.com olika IP-adresser och använder IP-baserad virtuell värd.

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>

Vad Apache behöver för att köra Php-fil?

Kör Php-filer på Apache behöver mod_php aktiverat på din server. Det tillåter Apache att tolka .Php-filer. Den har Php-hanterare som tolkar Php-koden i apache och skickar HTML till din webbserver.

Om mod_php är aktiverat på din server kommer du att ha en fil med namnet php.conf i katalogen /etc/httpd/conf.d/. Du kan också kontrollera det med:

httpd -M | grep "php5_module"

Utgången kommer att likna:

Vad Apache behöver för att köra Php-fil

Php-hanterare i Apache

  • mod_php
  • CGI
  • FastCGI
  • suPHP

mod_phpär den äldsta PHP-hanteraren, den gör PHP till en del av apache och anropar ingen extern PHP-process. Den här modulen är installerad som standard i alla Linux-distributionsförråd, så att aktivera/inaktivera denna modul är mycket enkelt.

Om du använder FastCGI som din PHP-hanterare kan du ställa in flera versioner av PHP för att användas av olika konton på din server.

FastCGI dvs mod_fastcgi är en förlängning av mod_fcgid, där som mod_fcgid är ett högpresterande alternativ till CGI, dvs mod_cgi. Den startar tillräckligt många instanser av CGI för att hantera samtidiga webbförfrågningar. Den använder också suexec för att stödja olika användare med sina egna instanser av PHP och förbättrar webbsäkerheten.

Att köra ruby-filer på Apache måste mod_ruby vara aktiverat. Apache kan också hantera rubyfiler via FastCGI. Det är möjligt att använda flera versioner av ruby ​​med hjälp av mod_fcgid dvs FastCGI.

Du kan också installera apache passagerare och konfigurera Apache att använda den för att servera ruby-sidor.

(Phusion Passenger även känd som "passageraren” är en gratis webbservermodul som är designad för att integreras med Apache och Nginx)

Steg för att installera 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

Hur man kör Ruby med Apache

Vi måste lägga till modulen mod_ruby till Apache-konfigurationen, dvs /etc/httpd/conf.d/ruby.conf och lägga till följande rad.

LoadModule ruby_module modules/mod_ruby.so

Om du vill aktivera eller inaktivera dessa moduler måste du redigera apache-konfigurationsfilen och kommentera eller avkommentera dessa moduler, om webbservern redan är kompilerad med dessa moduler.

Kör Ruby med Apache

Hur man säkrar Apache webbserver

Att säkra din webbserver är mycket viktigt, det innebär att tillåta andra att bara se den avsedda informationen och skydda dina data och begränsa åtkomsten.

Det här är vanliga saker som förbättrar säkerheten för dina Apache-webbservrar.

1) Döljer Apache-version och OS-information:

Apache visar sin version och namnet på operativsystemet i fel som visas i skärmbilden nedan.

Döljer Apache-version och OS-information

En hacker kan använda denna information för att starta en attack med hjälp av allmänt tillgängliga sårbarheter i den specifika versionen av servern eller operativsystemet.

För att förhindra att Apache-webbservern visar denna information måste vi ändra

alternativet "serversignatur" tillgängligt i apache-konfigurationsfilen. Som standard är den "på", vi måste stänga av den.

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

ServerTokens Prod

Vi har också ställt in "ServerTokens Prod" som säger åt webbservern att endast returnera apache och undertrycka OS-huvud- och mindreversionen

Efter att ha ändrat konfigurationsfilen måste du starta om/ladda om din apache-webbserver för att den ska bli effektiv.

service httpd restart

Döljer Apache-version och OS-information

2) Inaktivera kataloglistning

Om din dokumentrotkatalog inte har en indexfil, kommer din apache-webbserver som standard att visa allt innehåll i dokumentrotkatalogen.

Inaktivera kataloglistning

Den här funktionen kan stängas av för en specifik katalog via "alternativdirektivet" som finns tillgängligt i Apache-konfigurationsfilen.

<Directory /var/www/html>

    Options -Indexes

</Directory>

Inaktivera kataloglistning

3) Inaktivera onödiga moduler

Det är god praxis att inaktivera alla onödiga moduler som inte används. Du kan se en lista över aktiverade moduler som är tillgängliga i din apache-konfigurationsfil -

[root@amsterdam ~]#httpd –M

perl_module (shared)

php5_module (shared)

proxy_ajp_module (shared)

python_module (shared)

ssl_module (shared)

Många av de listade modulerna kan inaktiveras som mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex, eftersom de knappast används av några produktionswebbservrar.

vi /etc/httpd/conf/httpd.conf

#LoadModule auth_digest_module modules/mod_auth_digest.so

När du kommenterat modulen, spara filen.

Starta om apache-tjänster med följande kommando.

/etc/init.d/httpd restart

4) Begränsa åtkomst till filer utanför webbens rotkatalog

Om du vill försäkra dig om att filer som ligger utanför webbrotkatalogen inte är tillgängliga måste du se till att katalogen är begränsad med "Tillåt" och "Neka alternativ" i din webbserverkonfigurationsfil.

<Directory/>

Options None

AllowOverride None

Order deny,allow

Deny from all

</Directory>

När du har begränsat åtkomst utanför webbrotkatalogen kommer du inte att kunna komma åt någon fil som finns på någon annan mapp på din webbserver, du kommer att få 404 returkod.

Begränsa åtkomst till filer utanför webbrotkatalogen

5) Använd mod_evasive för att motbevisa DoS-attacken

Om du vill skydda din webbserver från Dos (dvs. Denial of Service) måste du aktivera modulen mod_evasive. Det är en tredjepartsmodul som upptäcker Dos-attack och förhindrar attacken från att göra så mycket skada som den skulle göra om den lämnades att fortsätta. Den kan laddas ner här.

Ladda ner filen ovan

6) Använd mod_security för att förbättra apache-säkerheten

Denna modul fungerar som en brandvägg för Apache och låter dig övervaka trafiken i realtid. Det förhindrar också webbservern från brute force-attacker. Mod_security-modulen kan installeras med standardpakethanteraren för din distribution.

Använder mod_security för att förbättra Apache-säkerheten

7) Begränsande storlek på begäran

Apache har inga begränsningar på den totala storleken på http-förfrågan som kan leda till en DoS-attack. Du kan begränsa storleken på begäran av ett Apache-direktiv "LimitRequestBody" med katalogtaggen. Värdet kan ställas in allt från 0 till 2 GB (dvs. 2147483647 byte) enligt dina krav.

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

   LimitRequestBody 512000

</Directory>

Apache-loggformat

Apache-loggar ger detaljerad information som hjälper till att upptäcka vanliga problem med servern.

För att skapa åtkomstloggar måste mod_log_configmodule vara aktiverat.

Tre direktiv tillgängliga i apache-konfigurationsfilen, dvs

  • TransferLog: Skapar en loggfil.
  • LogFormat : Ange ett anpassat format.
  • CustomLog : Skapa och formatera en loggfil.

TransferLog-direktivet är tillgängligt i apache-konfigurationsfilen och det roterar virtuella värdloggfiler enligt inställda parametrar.

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

Två typer av Apache-loggformat

  • Vanligt loggformat
  • Kombinerat loggformat.

Du kan aktivera dem genom att redigera apache-konfigurationsfilen, dvs. filen apache2.conf (Debian/ubuntu) eller httpd.conf (rpm-baserade system)

Vanligt loggformat

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

CustomLog logs/access_log common

Gemensam logg genererad av 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

Kombinerat loggformat

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

CustomLog log/access_log combined

Här,

  • %h är fjärrvärden
  • %l är användarens identitet som bestäms av identd
  • %u är användarnamnet som bestäms av HTTP-autentisering
  • %t är tiden då servern avslutade bearbetningen av begäran.
  • %r är begäran från klienten. ("GET / HTTP/1.0")
  • %>s är statuskoden som skickas från servern till klienten (500, 404 etc.)
  • %b är storleken på svaret till klienten (i byte)
  • Referent är sidan som länkade till denna URL.
  • User-agent är webbläsarens identifieringssträng.

Kombinerad logg genererad av 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)"

Anpassad logg skapar en separat loggfil för varje virtuell värd på din server. Det måste anges i den virtuella värddelen av konfigurationsfilen.

Du kan se nedan nämnda virtuella värdkonfiguration, genererad logg kommer att anpassas för den virtuella värden och formatet kommer att kombineras.

Kombinerad logg genererad av Apache

Konfigurera din allra första produktionswebbserver

1. För att ha en körande produktionswebbserver behöver du en dedikerad nod (Fysisk/Virtuell eller molninstans) som kör Linux/Unix, Windows, MacOS etc.

2. Webbservern måste ha en direkt nätverksanslutning och en statisk IP-adress konfigurerad på den.

3. Den måste ha alla moduler krävs för att köra webbsidor. Om en webbserver bearbetar PHP-sidor måste den ha PHP-modulen aktiverad.

Konfigurera produktionswebbserver

  1. Det måste också ha en bra antivirus applikation konfigurerad och körs för att skydda webbservern från skadlig programvara eller virusattacker. Du behöver också mekanism för att uppdatering den konfigurerade antivirus-/antivirusapplikationen regelbundet utan några manuella ingrepp för att få maximal nytta av dem.
  2. Om du har hundratals domäner som ska finnas på din webbserver måste du implementera begränsningar på filsystemkvot för varje domän, antal databaser varje domän kan skapa, antal e-postkonton per domän etc.
  3. Om din webbserver har ställts in för delade värdtjänster måste användare på din webbserver begränsas. En delad värdanvändare bör ha minst användarrättigheter så att han inte skadar viktiga filer och bryter hela servern. Apache tillhandahåller ingen sådan funktionalitet och behöver olika tredjepartsapplikationer, anpassning av OS för att uppnå detta.
  4. Om du lägger till en ny domän på din webbserver behöver den redigeras hundratals konfigurationsfiler för att aktivera alla funktioner för den tillagda domänen.
  5. Om en av de värdbaserade domänerna kräver annan PHP-inställning än resten av domänerna är det mycket komplext att implementera detta i Apache-webbservern och kräver anpassning av din webbserver i stor utsträckning.
  6. En produktionswebbserver behöver en brandvägg för att blockera oönskad trafik som kan orsaka hög belastning på din server. Genomförande IPTABELL regler med kommandorad är mycket komplex. Den behöver expertis från kärnan i Linux/Unix-miljön för att skriva effektiva brandväggsregler för att blockera oönskad trafik. IPTABLE är baserad på nätfiltermodul; det är en brandvägg på OS-nivå som tillåter en administratör att skapa regler för inkommande/utgående trafik på servern.
  7. En produktionswebbserver kräver flera olika applikationer som E-post, FTP för filuppladdning, Domain Name System för parkerade domäner. Att hantera alla dessa applikationer på ett centralt Linux/Unix-system kräver expertis om respektive teknologi.

Så man kan säga att hantering av en webbserver för flera domäner är en mycket komplex uppgift och kräver redigering av hundratals konfigurationsfiler, anpassning av varje applikation för att uppfylla det önskade resultatet. Att felsöka eventuella misskonfigurationer kommer att vara mycket svårt för nybörjare.

Lösningen med Cpanel eller liknande programvara

Cpanel tillhandahåller ett grafiskt sätt att hantera din webbserver. Det är tänkt att tillhandahålla massvärdtjänster som är lätta att använda och konfigurera. cPanel har minskat de tekniska hindren för inträde i hosting och webbserverhantering. Det gör komplexa uppgifter enklare, det ger många användbara och lättanvända webbgränssnitt som utför vanliga systemadministrationsuppgifter som krävs för att driva en webbserver.

Lösningen med Cpanel eller liknande programvara

cPanel kompilerar sin egen version av programvaran.

Om du måste kompilera om din webbserver, dvs apache på normal Linux-plattform, måste du manuellt välja/söka i den modul som krävs. cPanel tillhandahåller Easyapache-funktionalitet som är en skriptbaserad webbserverkompileringsmetod.

Lösningen med Cpanel eller liknande programvara

Det ger dig inte bara webbtjänster utan också Mail, DNS, FTP och många fler tjänster som krävs för din webbapplikation.

En uppgift som kräver expertis på kärn Linux/Unix-baserad hosting som att installera SSL, kompilera om Apache med olika PHP-moduler, uppdatera webbsäkerhet, konfigurera effektiva IPTABLE-regler, lägga till ftp-användare, skapa e-postkonton för varje domän, skanna din dokumentrot med antivirus och att skapa databaser är lätta att slutföra med cPanel.

Den tillhandahåller många skript som fixar, installerar och felsöker vanliga administrativa uppgifter.

Den tillhandahåller en säkerhetskopierings- och återställningsfunktion som eliminerar behovet av att manuellt kopiera filer till säkerhetskopieringslagring. Om du säkerhetskopierar din domän kommer cPanel att skapa en tar-fil som innehåller dokumentrotmapp, e-postkonton och e-postmeddelanden, ftp-konton, databaser, DNS-poster och andra applikationer.

Det ger också en robust dokumentation och har en mycket stor grupp av användare där du kan diskutera och få lösningar på dina problem.

Så det kan man säga cPanel är den bästa applikationen för att hantera din webbserver med nödvändiga funktioner. Det ger dig ett lättanvänt gränssnitt för att hantera din domän och en mekanism för att undvika komplexiteten i att hantera kärnwebbservern.

Det finns många konkurrerande produkter till cPanel som Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel etc.