Apache är den vanligast använda webbservern på Linuxsystem. Webbservrar används till att dela ut webbsidor begärda av klientdatorer. Klienter brukar vanligtvis begära och titta på webbsidor genom att använda en webbläsare, så som Firefox, Opera, eller Mozilla.
Användaren anger en Uniform Resource Locator (URL) till att peka på en webbserver genom ett Fully Qualified Domain Name (FQDN) och en sökväg till den begärda resursen. Till exempel, för att visa webbsidan Ubuntu Web site en användare kommer endast att skriva en FQDN. För att begära specifik information om paid support, kommer en användare ange FQDN följt av en sökväg.
Det vanligaste protokollet för att överföra webbsidor är Hyper Text Transfer Protocol (HTTP). Andra protokoll som Hyper Text Transfer Protocol over Secure Sockets Layer (HTTPS) och File Transfer Protocol (FTP), ett protokoll för att skicka och hämta filer, stöds också.
Apachewebbservrar används ofta tillsammans med databasen MySQL, skriptspråket HyperText Preprocessor (PHP) och andra populära skriptspråk som application>Python
Webbservern Apache2 finns tillgänglig i Ubuntu Linux. För att installera Apache2:
I ett terminalfönster skriv följande kommando:
sudo apt-get install apache2
Apache konfigureras genom att man skriver direktiv i vanliga textfiler. Huvudkonfigurationsfilen heter apache2.conf
. Det går dessutom att lägga till fler konfigurationsfiler med direktivet Include, och jokertecken går att använda för att lägga till många konfigurationstecken. Alla direktiv går att placera i vilken konfigurationsfil som helst. Ändringar i huvudkonfigurationsfiler upptäcks inte av Apache2 förrän det startas eller startas om.
Servern läser också en fil som innehåller mimtyper för dokument; filnamnen sätts med direktivet TypesConfig är normalt mime.types
.
Standardkonfigurationsfilen för Apache2 är /etc/apache2/apache2.conf
. Du kan ändra på den här filen för att konfigurera Apache2-servern. Du kan ställa in portnummret, dokumentroot, moduler, loggfiler, virtuella värdnamn, mm.
Den här avdelningen förklarar Apache2-serverns viktigaste konfigurationsparametrar. Läs Apache2:s dokumentation för fler detaljer.
Med Apache2 följer en standardkonfiguration som är väldigt smidig för virtuella värdnamn. Från början finns det ett enda virtuellt standardvärdnamn (använder direktivet VirtualHost) som kan modifieras eller användas som det är om du bara har en enda webbplats, eller användas som en mall för ytterligare virtuella värdnamn om du har flera webbplatser. Om du lämnar det ifred kommer det virtuella standardvärdnamnet att vara din standardsida, det vill säga den sidan användare kommer att se om de skriver in en URL som inte matchar något ServerName-direktiv i någon av dina andra webbplatser. För att ändra på det virtuella standardvärdnamnet, ändra på filen /etc/apache2/sites-available/default
. Om du vill konfigurera ett nytt virtuellt värdnamn kan du kopiera den filen till samma katalog med valfritt namn. Till exempel: sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/min_nya_webbplats Ändra på den nya filen för att ställa in den nya webbplatsen med några av de direktiv som beskrivs nedan.
Direktivet ServerAdmin specificerar administratörens e-postadress. Standardvärdet är webmaster@localhost. Du bör ändra det till en adress du faktiskt har tillgång till (om du är serveradministratören) Om din webbsida har ett problem kommer Apache2 att visa ett felmeddelande som innehåller den här e-postadressen för att rapportera felet till. Du hittar det här direktivet i din webbplats konfigurationsfil i /etc/apache2/sites-available.
Direktivet Listen berättar vilken port, och eventuellt också IP-adress, som Apache2 ska lyssna på. Om ingen IP-adress väljs kommer Apache2 att lyssna på alla IP-adresser som tillhör datorn det ligger i. Standardvärdet för Listen är 80. Ändra det här till 127.0.0.1:80 för att få Apache2 att enbart lyssna på loopback-gränssnittet så att det inte är tillgänglig för internet, till (till exempel) 81 för att ändra porten som det lyssnar på, eller lämna det som det är för att det ska bete sig normalt. Det här direktivet hittar du och kan ställa in i en egen fil, /etc/apache2/ports.conf
Direktivet ServerName är valfritt och bestämmer vilken FQDN din webbplats ska svara till. Den virtuella värd som medföljer har inget ServerName specificerat, så den kommer att svara på alla förfrågningar som inte matchar någon annan virtuell värds ServerName. Om du just köpte domännamnet ubunturocks.com och vill använda det på din Ubuntu-server skriver du in värdet ubunturocks.com till direktivet ServerName. Lägg det här direktivet till den nya virtuella värdfilen du skapade innan (/etc/apache2/sites-available/min_nya_webbplats
).
![]() |
|
Du kanske också vill att din webbplats ska lyssna på www.ubunturocks.com, eftersom många användare kommer att anta att de behöver skriva www. Använd ServerAlias för det här. Du kan också använda jokertecken i ServerAlias-direktivet. Till exempel kommer ServerAlias *.ubunturocks.com att få din webbplats att lyssna på alla domänförfrågningar som slutar med .ubunturocks.com. |
Direktivet DocumentRoot bestämmer var Apache ska titta efter de filer webbplatsen består av. Standardvärdet är /var/www. Ingen webbplats är konfigurerad där, men om du avkommenterar direktivet RedirectMatch i /etc/apache2/apache2.conf
så kommer alla förfrågningar att vidarebefordras till /var/www/apache2-default där Apache2:s standardwebbplats väntar. Ändra det här värdet i din webbplats virtuella värdfil och kom ihåg att skapa katalogen i fråga om det behövs!
![]() |
|
Katalogen /etc/apache2/sites-available kommer inte att läsas in av Apache2. Symboliska länkar i /etc/apache2/sites-enabled pekar till "tillgängliga" webbplatser. Använd verktyget a2ensite (Apache2 Enable Site) för att skapa dessa symboliska länkar såhär: sudo a2ensite min_nya_webbplats. På samma sätt kan du använda a2dissite för att inaktivera webbplatser. |
Den här avdelningen förklarar konfigurationen av Apache2:s serverinställningar. Till exempel, om du lägger till en virtuell värd kommer inställningarna du konfigurerar att prioriteras över standardinställningarna för den virtuella värden. För de direktiv som inte specificeras i inställningarna för den virtuella värden kommer standardvärdet att användas.
DirectoryIndex är standardsidan som servern skickar när en användare ber om ett index för en katalog genom att lägga till ett snedsträck (/) på slutet av katalognamnet.
När användaren till exempel frågar om sidan http://www.exempel.com/den_har_katalogen/ kommer han eller hon få DirectoryIndex-sidan om den finns, en server-genererad innehållslista om den inte finns och Indexes-alternativet är specificerat, eller en "Permission Denied"-sida om varken eller är sant. Servern kommer att försöka tills den hittar en av de filerna som finns uppradade i DirectoryIndex-direktivet och kommer att returnera den första som hittas. Om den inte hittar någon av dessa filer och om Options Indexes är på för den katalogen kommer servern att returnera en lista i HTML-format över underkatalogerna och filerna i den katalogen. Standardvärdet, som du hittar i /etc/apache2/apache2.conf
, är "index.html index.cgi index.pl index.php index.xhtml". Med andra ord kommer Apache2 att visa den första filen som matchar något av dessa namn som finns i den efterfrågade katalogen.
Direktivet ErrorDocument låter dig specificera en fil åt Apache för att använda vid vissa felhändelser. Till exempel, om användaren efterfrågar en resurs som inte finns kommer ett 404-fel att uppstå, och enligt Apache2:s standardkonfiguration kommer filen /usr/share/apache2/error/HTTP_NOT_FOUND.html.var
att visas. Den filen ligger inte i serverns DocumentRoot, men det finns ett Alias-direktiv i /etc/apache2/apache2.conf
som vidarebefordrar förfrågningar till katalogen /error till /usr/share/apache2/error/. För att se en lista över standarddirektiven för ErrorDocument, använd det här kommandot: grep ErrorDocument /etc/apache2/apache2.conf
Servern loggar normalt alla överföringar till filen /var/log/apache2/access.log. Du kan ändra det här för varje webbplats i dina konfigurationsfiler för virtuella värdar med direktivet CustomLog, eller hoppa över det för att acceptera standardvärdet som bestäms i /etc/apache2/apache2.conf
. Du kan också välja vilken fil felmeddelanden ska loggas till med direktivet ErrorLog. Standardplatsen för felmeddelanden är /var/log/apache2/error.log
. De här sparas separat från överföringsloggarna för att underlätta felsökning av din Apache2-server. Du kan också välja LogLevel (standardvärdet är "warn") och LogFormat (se /etc/apache2/apache2.conf
för standardvärdet).
Vissa alternativ är angivna på basis av per-katalog istället för per-server. Alternativet är ett av dessa direktiv. En Directory-strof omfattas av XML-liknande taggar, liksom:
<Directory /var/www/mynewsite>
...
</Directory>
Alternativets direktiv inom en Directory-strof accepterar ett eller flera av följande värden (bland annat), separerade med blanksteg:
ExecCGI - Tillåt att CGI-skript körs. CGI-skript körs inte om inte det inte skrivs.
![]() |
|
De flesta filerna bör inte exekveras som CGI-skript. Det skulle vara väldigt farligt. CGI-skript bör ligga i en egen katalog som är skild från, och utanför, din DocumentRoot, och bara den här katalogen ska ha ExecCGI-alternativet aktiverat. Såhär ser standardinställningen ut, och standardplatsen för CGI-skript är /usr/lib/cgi-bin. |
Includes - Tillåt serverinkluderingar (SSI). Serverinkluderingar tillåter att en HTML-fil inkluderar andra filer. Det här är ganska ovanligt. Läs Apache2:s SSI-HOWTO för mer information.
IncludesNOEXEC - Tillåter serverinkluderingar, men avaktiverar kommandona #exec och #include i CGI-skript.
Indexes - Visa en formaterad lista över katalogens innehåll om ingen DirectoryIndex-fil (som till exempel index.html) finns i den efterfrågade katalogen.
![]() |
|
Av säkerhetsskäl är det här oftast inte aktiverat, och bör framförallt inte vara aktiverat i din DocumentRoot-katalog. Aktivera det här valet försiktigt, och bara för de kataloger där du vet att användarna vill se hela innehållet i katalogen. |
Multiview - Stöd för "content-negotiated multiviews". Den här möjligheten är normalt avstängd av säkerhetsskäl. Läs Apache2-dokumentationen om den här värdet.
SymLinksIfOwnerMatch - Följ bara symboliska länkar om målfilen eller -katalogen har samma ägare som länken.
Virtuella värdar låter dig köra flera servrar för olika IP-adresser, olika värdnamn, eller olika portar på samma dator. Till exempel kan du ha en webbplats för http://www.exempel.com och http://www.annatexempel.com på samma webbserver med virtuella värdar. Det här alternativet motsvarar direktivet <VirtualHost> för normala virtuella värdar och IP-baserade virtuella värdar. För namnbaserade virtuella värdar används istället <NameVirtualHost>
De direktiv som skrivs inuti en virtuell värd gäller bara just den virtuella värden. Om ett direktiv sätts för hela servern men inte i inställningarna för den virtuella värden kommer standardinställningen att användas. Till exempel kan du definiera en e-postadress för webbmastern så att du slipper definiera individuella e-postadresser för varje virtuell värd.
Sätt direktivet DocumentRoot till katalogen som innehåller huvuddokumentet för den virtuella värden (t ex index.html). Standardvärdet för det är /var/www
.
ServerAdmin direktivet inom VirtualHost är det blocket för e-postadressen som används i sidfoten på felsidorna, om du väljer att visa sidfoten med en e-postadress på felsidorna.
Den här avdelningen förklarar hur du konfigurerar grundläggande serverinställningar.
LockFile - Direktivet LockFile ställer in sökvägen till låsfilen som används om servern är kompilerad med antingen USE_FCNTL_SERIALIZED_ACCEPT eller USE_FLOCK_SERIALIZED_ACCEPT. Det måste vara på en lokal hårddisk. Det bör inte ändras från standardvärdet om inte loggfilerna ligger på en NFS-utdelning. Om så är fallet bör standardvärdet ändras till en plats på den lokala hårddisken och till en katalog som bara root får läsa.
PidFile - Direktivet PidFile ställer in filen som servern sparar sin process-ID (pid) till. Den här filen bör ingen annan än root kunna läsa. I de flesta fallen bör det här inte ändras från standardvärdet.
User - Direktivet User ställer in vilket användar-ID servern använder när den svarar på förfrågningar. Den här inställningen ställer in vilka rättigheter servern har. Alla filer den här användaren inte kommer åt kommer inte webbplatsens besökare komma åt. Standardvärdet för User är www-data.
![]() |
|
Om du inte vet exakt vad du gör bör du inte sätta direktivet User till root. Att köra webbservern som root kommer att skapa stora säkerhetshål i din webbserver. |
Direktivet Group är likt User. Group ställer in vilken grupp webbservern körs som. Standardgruppen är också www-data.
Apache är en modulär server. Det medför att bara den mest grundläggande funktionaliteten följer med standardservern. Ytterligare funktioner finns tillgängliga med moduler som kan laddas in i Apache. Normalt kompileras en mindre uppsättning moduler in i servern. Om servern är kompilerad för att använda dynamiskt laddade moduler kan moduler kompileras separat och läggas till när som helst till direktivet LoadModule. Om inte, så måste Apache kompileras om för att lägga till eller ta bort moduler. Ubuntu kompilerar Apache2 för att tillåta att moduler laddas dynamiskt. Konfigurationsdirektiv går att lägga till för en speciell modul genom att lägga in dessa i ett <IfModule>-block. Du kan installera extra Apache2-moduler och använda dessa med din webbserver. Du kan installera Apache2-moduler med kommandot apt-get. Till exempel kör du följande kommando i en terminalprompt för att installera Apache2-modulen för MYSQL-autentisering:
sudo apt-get install libapache2-mod-auth-mysql
När du installerar modulen blir den tillgänglig i katalogen /etc/apache2/mods-available
. Du kan använda kommandot a2enmod för att aktivera en modul. Du kan använda kommandot a2dismod för att avaktivera en modul. När du har aktiverat modulen blir den tillgänglig i katalogen /etc/apache2/mods-enabled
.
Modulen mod_ssl lägger till en viktig funktion till Apache2-servern - möjligheten att kryptera kommunikation. När din webbläsare använder SSL-kryptering används prefixet https:// i början av URL:en i webbläsarens navigationsrad.
Modulen mod_ssl finns i paketet apache2-common. Om du har installerat det paketet kan du köra följande kommando i en terminalprompt för att aktivera modulen mod_ssl:
sudo a2enmod ssl
För att göra din webbserver säker bör du använda ett nyckelpar med en publik och en privat nyckel för kryptering. I de flesta fallen skickar du ditt certifikat anmodan (tillsammans med din publika nyckel), som bevis på ditt företags identitet, och en betalning till en Certificate Authority (CA). CA:n bekräftar förfrågningen om certifikatet och din identitet, och skickar sedan tillbaka ett certifikat för din säkra server.
Du kan även använda ett certifikat du har signerat själv. Notera dock att självsignerade certifikat inte bör användas i produktionsmiljöer. Självsignerade certifikat accepteras inte automatiskt av din användares webbläsare. Användare får en fråga av webbläsaren om de vill acceptera certifikatet och skapa den säkra anslutningen.
När du har ett självsignerat certifikat eller ett signerat certifikat från den CA du väljer måste du installera det på din säkra server.
Du behöver en nyckel och ett certifikat för att sköta din säkra server, vilket innebär att du antingen genererar ett självsignerat certifikat eller köper ett CA-signerat certifikat. Ett CA-signerat certifikat ger två viktiga möjligheter för din server:
Webbläsare känner (oftast) automatiskt igen certifikatet och tillåter en säker anslutning utan att först fråga användaren.
När en CA ger ut ett signerat certifikat garanterar den identiteten på organisationen som ger webbsidor till webbläsaren.
De flesta webbläsare som stödjer SSL har en lista över de CA:er vars certifikat de automatiskt accepterar. Om en webbläsare stöter på ett certifikat som signerats av en CA som inte står med i listan frågar webbläsaren användaren om den vill acceptera eller neka anslutningen.
Du kan skapa ett självsignerat certifikat för din säkra server, men tänk på att ett självsignerat certifikat inte ger dig samma funktionalitet som ett CA-signerat certifikat. Ett självsignerat certifikat ger inga garantier om identiteten på organisationen som tillhandahåller webbplatsen. Ett CA-signerat certifikat erbjuder båda dessa viktiga möjligheterna för en säker server. Processen för att få ett certifikat från en CA är ganska enkel. En snabb överblick ser ut såhär:
Skapa ett krypteringsnyckelpar bestående av en privat och en publik nyckel.
Skicka en förfrågan om ett certifikat baserat på den publika nyckeln. Certifikatet innehåller information om din server och företaget som äger den.
Skicka certifikatförfrågan, tillsammans med dokument som bevisar din identitet, till en CA. Vi kan inte berätta vilken CA du ska välja. Ditt beslut kan vara baserat på tidigare erfarenheter, vad dina vänner eller kollegor har erfarit, eller helt enkelt på monetära faktorer.
När du har bestämt dig för vilken CA du vill använda måste du följa instruktionerna de har för hur du får ett certifikat från dem.
När din CA anser att du har bevisat att du är den du påstår dig vara skickar de dig ett digitalt certifikat.
Installera det här certifikatet på din säkra server, och aktivera säkra överföringar.
Oavsett om du vill skaffa dig ett certifikat från en CA eller skapa ditt eget självsignerade certifikat är det första steget att skapa en nyckel.
För att skapa ett Certificate Signing Request (CSR) bör du först skaffa dig en egen nyckel. Du kan köra följande kommando i en terminalprompt för att skapa nyckeln:
openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus .....................++++++ .................++++++ unable to write 'random state' e is 65537 (0x10001) Enter pass phrase for server.key:
Du kan nu skriva in ditt lösenord. För bästa säkerhet bör det vara minst åtta tecken. Minimilängden när man skriver -des3 är fyra tecken. Det bör innehålla siffror och/eller skiljetecken och inte vara ett ord från en ordbok. Kom också ihåg att lösenordet är skiftlägeskänsligt.
Skriv in lösenordet igen för att verifiera det. När du har skrivit in samma lösenord två gånger genereras servernyckeln och sparas i filen server.key
.
![]() |
|
Du kan också köra din säkra webbserver utan någon lösenordsfras. Det här är smidigt eftersom du inte behöver skriva in lösenordet varje gång du startar din säkra webbserver. Men det är högst osäkert och om någon kommer över din nyckel innebär det att de även kommer åt servern. |
I vilket fall kan du välja att köra din webbserver utan lösenordsfras genom att inte skriva -des3 när du skapar nyckeln eller genom att skriva följande kommando i en terminalprompt:
openssl rsa -in server.key -out server.key.insecure
När du har kört kommandot ovan kommer den osäkra nyckeln att sparas i filen server.key.insecure
. Du kan använda den här filen för att skapa ditt CSR utan lösenordsfras.
För att skapa ditt CSR, kör följande kommando vid en terminalprompt:
openssl req -new -key server.key -out server.csr
Det kommer att fråga dig om lösenordet. Om du skriver in rätt lösenord kommer det att fråga dig om företagsnamn, webbplatsnamn, e-post, mm. När du har skrivit in alla uppgifterna kommer ett CSR att skapas och lagras i filen server.csr
. Du kan skicka in den här CSR-filen till en CA för att behandling. CA:t kommer att använda den här CSR-filen och utfärda certifikatet. Du kan också skapa ett egensignerat certifikat med den här CSR-filen.
För att skapa ett självsignerat certifikat, kör följande kommando i en terminalprompt:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Ovanstående kommando kommer att be dig skriva in lösenordet. När du har skrivit in rätt lösenordsfras kommer ditt certifikat att skapas och det kommer att lagras i filen server.crt
.
![]() |
|
Om din säkra server används i en produktionsmiljö behöver du troligen ett CA-signerat certifikat. Det är inte rekommenderat att använda självsignerade certifikat. |
Du kan installera nyckelfilen server.key
och certifikatfilen server.crt
eller den certifikatsfil din CA har gett dig genom att köra följande kommandon vid en terminalprompt:
sudo cp server.crt /etc/ssl/certs sudo cp server.key /etc/ssl/private
Du bör lägga till följande fyra rader till filen /etc/apache2/sites-available/default
eller konfigurationsfilen för din säkra virtuella värd. Du bör lägga dem i avdelningen VirtualHost. De bör läggas under raden DocumentRoot:
SSLEngine on SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key
HTTPS bör lyssna på port 443. Du bör lägga till följande rad till filen /etc/apache2/ports.conf
:
Listen 443
När du har installerat certifikatet måste du starta om din webbserver. Du kan köra följande kommando vid en terminalprompt för att starta om din webbserver:
sudo /etc/init.d/apache2 restart
![]() |
|
Du måste komma ihåg och skriva in lösenordet varje gång du startar din säkra webbserver. |
Du kommer att bli frågad om att skriva in lösenordet. När du skriver in rätt lösenord kommer webbservern att startas. Du kan komma åt den säkra servern genom att skriva https://ditt_värdnamn/url/ i din webbläsarens adressfält.