Om installationen gjorts som ovan, så finns nu alla apache filer i /usr/local/apache2, konfigurationsfilerna ligger inne i 'conf'
Det enda som lagts till "under resans gång" är LoadModule för PHP:
LoadModule php5_module modules/libphp5.so
Kör servern som användare 'www' i gruppen 'www' (sök efter "user/group"):
User www Group www
Ändra 'ServerAdmin' att innehålla en adress som du kan läsa:
ServerAdmin peo@bsd-guide.net
Se till att 'ServerName' inte kolliderar med något som ska hanteras av virtual hosts konfigurationen:
ServerName default.bsd-guide.net
Modifiiera 'DirectoryIndex' att hantera fler startfilsalternativ:
DirectoryIndex index.asis index.cgi index.shtml index.php index.phtml index.html index.html.var index.htm
Skydda läsning av PHP includes via webläsarn (lägg till strax efter <FilesMatch "^\.ht">, vid skydd av åtkomst till .htaccess och .htpasswd:
<Files *.inc> Order allow,deny Deny from all </Files>
Skapa nytt loggformat (referer, som i tidigare Apache versioner fanns med, men utan tidsstämpel):
LogFormat "%t %{Referer}i -> %U" referer
Skapa ett nytt loggformat för referer då sidan som efterfrågas inte finns (404)
LogFormat "%t %404{Referer}i -> %U" referer404
Gör ett alias för robots.txt (sparar ett antal rader i felloggen). Lägg in under beskrivning av Alias:
Alias /robots.txt "/home/www/conf/robots.txt"
Filen /usr/local/apache2/conf/robots.txt (länkad till /home/www/conf för bättre åtkomlighet):
User-agent: * Disallow:
Tolkning av filtyper (cgi, ssi, php, asis och kombinationer):
AddHandler cgi-script .cgi // aktivera AddType text/html .shtml // aktivera AddOutputFilter INCLUDES .shtml .phtml // aktivera + redigera AddType application/x-httpd-php .phtml .php // lägg till AddOutputFilter INCLUDES .cgi // lägg till AddHandler send-as-is .asis // lägg till
Aktivera extra config filer i slutet på httpd.conf:
httpd-mpm.conf, httpd-autoindex.conf, httpd-info.conf, httpd-vhosts.conf,
httpd-default.conf
Bestämmer hur många servers som ska startas, max antalet servers och klienter osv. För att veta i vilket block i filen du ska ändra kör du
/usr/local/apache2/bin/apachectl -V |grep MPM
Server MPM: Prefork
-D APACHE_MPM_DIR="server/mpm/prefork"
Du kan behöva justera värdena uppåt om det är många besökare som använder servern. Du märker av behovet av justering om det börjar dröja länge innan webservern svarar på requests.
För att göra lite snyggare fillistningar där index.html (eller annat directoryIndex saknas), och där fillistning är tillåten.
'server-status' ger lite info om hur servern "mår", dvs hur mycket aktivitet det är på den och antalet lediga/fria connections etc. Aktivera om du vill kunna kolla det:
<Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from 192.168.1.0/24 </Location>
Jag brukar aktivera 'ExtendedStatus' för senare bruk:
ExtendedStatus On
'server-info' ger mer teknisk information om servern, vilka moduler som finns inkompilerade och lite annat. Aktivera om du vill kunna kolla det:
<Location /server-info> SetHandler server-info Order deny,allow Deny from all Allow from 192.168.1.0/24 </Location>
Jag vill veta hostnamn på den som laddar någon sida istället för enbart IP adress:
HostnameLookups On
OBS! Första accessen (för en ny besökare) till webservern kan bli långsam om du har HostnameLookups påslaget. Stäng av ifall du nöjer dig med att få IP adressen på besökaren i loggen.
Ta bort exemplen i httpd-vhosts.conf, och ersätt med följande:
<VirtualHost *:80> ServerAdmin foo@bar.org ServerName dummy.bsd-guide.net DocumentRoot /home/www/_default_ip.host UserDir disabled ErrorDocument 404 /e_404.html LogFormat "%h %t %m \"%U\" %>s %b" mini ErrorLog /dev/null CustomLog /home/www/_default_ip.host/logs/access.log mini RewriteEngine On RewriteRule ^/(.*.(exe|dll|ida).*) http://www.microsoft.com/$1 RewriteRule ^/(SEARCH.*) http://www.microsoft.com/$1 RewriteCond %{REQUEST_METHOD} ^SEARCH$ RewriteRule ^/(.*) http://www.microsoft.com/$1 <Directory /home/www/_default_ip.host> Options All AllowOverRide none Order allow,deny Allow from all </Directory> </VirtualHost> Include conf/vhosts/*.conf
Loggning sker till /dev/null (error.log), resp en mini logg för vanlig access,
utan parametrar på GET metoden (sparar mycket plats eftersom det bara är virus
som går på IP hosten). RewriteCond
och RewriteRule
används för att styra allt
ont mot källan till allt ont (Microsoft).
Sista raden i httpd-vhosts.conf laddar in alla andra vhosts ifrån
underkatalogen vhosts i /usr/local/apache2/conf.
k: /home/www/_default_ip.host
f: /home/www/_default_ip.host/e_404.html
k: /home/www/_default_ip.host/logs
k: /home/www/php
k: /usr/local/apache2/conf/vhosts
l: /home/www/conf
mkdir -p /home/www/_default_ip.host/logs mkdir -p /usr/local/apache2/conf/vhosts cd /home/www ln -s /usr/local/apache2/conf conf mkdir php cd /home/www/_default_ip.host
<html> <head> <title>Document not found</title> <style type="text/css"> body { background: #000; color: #eee; font-family: Verdana, Arial, Helvetica, Sans-Serif; font-size: 14px; padding: 0px; margin: 5px; } </style> </head> <body> <h1>Not Found</h1> <p> The requested URL was not found on this server. </p> <p> This default site is just a black hole for worm spreading MS IIS servers which tries to infect this immune server. </body> </html>
ln -s e_404.html index.html
För varje virtualhost måste det skapas plats för siten, plats för loggfiler, samt konfigurationsfil för vhosten. Jag har börjat använda en namnstandard där alla sådana kataloger/filer börjar med domänens namn (bsd-guide.net), följt av maskin/sitenamn (.lab) följt av ev. filändelse (.conf). Katalogen /home/www/php används för PHP script som kan användas av alla virtual hosts.
<VirtualHost *:80> ServerAdmin support@bsd-guide.net DocumentRoot /home/www/bsd-guide.net.lab ServerName lab.bsd-guide.net # SuexecUserGroup bgnetlab ftpuser ErrorLog /home/www/bsd-guide.net.lab/logs/error.log CustomLog /home/www/bsd-guide.net.lab/logs/access.log common UserDir disabled <Directory /home/www/bsd-guide.net.lab> Options Indexes FollowSymLinks ExecCGI Includes AllowOverRide none # php_admin_value open_basedir /home/www/bsd-guide.net.lab/:/home/www/php/ Order allow,deny Allow from all </Directory> </VirtualHost>
Glöm inte att skapa hemkatalogen för hosten och loggfilerna:
mkdir -p /home/www/bsd-guide.net.lab/logs
De bortkommenterade raderna (SuExecUserGroup
och php_admin_value
) gör/ska göra
detta om man aktiverar dom:
SuExecUserGroup
Ändrar användaren och gruppen på cgi-script till den användare och grupp som
är specad här (använd om du har riktiga användare på servern som vill köra
CGI). För att det ska fungera måste användaren finnas i systemet
(/etc/passwd). Sätt användarens shell till /sbin/nologin
om du inte vill att den användaren ska kunna logga in via SSH (till shellet).
groupadd -g 3000 ftpuser useradd -s /sbin/nologin -d /home/www/bsd-guide.net.lab -u 3002 -g ftpuser bgnetlab
php_admin_value
Begränsar möjligheten till att öppna systemfiler och andra användares filer.
Begränsning sätts till hemkatalogen för vhosten och till ett publikt ställe.
<html><head><title><?php echo $_SERVER['HTTP_HOST'];?></title></head> <body> <h2 style="margin-top: 200px; text-align: center; color: #ddd;"><?php echo $_SERVER['HTTP_HOST'];?></h2> </body> </html>