OpenBSD grundinstallation med Apache, PHP, MySQL

Instruktionerna uppdaterade för version 4.6 (1 Nov 2009)

Översätt / translate
Svenska English German French Spanish Finnish Russian 
Högerklicka på länkarna i annonsen och välj att "öppna i nytt fönster" (eller ny flik) för att inte tappa bort denna sida
beställ installationsscript Med min guide som grund har jag skapat ett (nästan) helautomatiskt installationsscript. Det du behöver göra själv är att göra installationen som beskrivs på sid 1 i guiden ("introduktion"). Installationen från "Ports" till "Startup och shutdown filer" sker automatiskt med scriptet, med undantag för brandväggskonfiguration då denna är väldigt specifik för serverns användsingsområde samt det nät maskinen installeras i.

Apache konfiguration

Om installationen gjorts som ovan, så finns nu alla apache filer i /usr/local/apache2, konfigurationsfilerna ligger inne i 'conf'

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

extra/httpd-mpm.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.

extra/httpd-autoindex.conf

För att göra lite snyggare fillistningar där index.html (eller annat directoryIndex saknas), och där fillistning är tillåten.

extra/httpd-info.conf

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

extra/httpd-default.conf

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.

extra/httpd-vhosts.conf (ändra options för default vhost)

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.

Filer och kataloger att skapa:

k: katalog
f: fil
l: länk

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

e_404.html

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

Exempel på en vhosts/*.conf fil

/usr/local/apache2/conf/vhosts/bsd-guide.net.lab.conf

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

Exempel på en index.php fil för nya vhosts

En enkel index-fil för parkerade/nyskapade virtual hosts:

/home/www/bsd-guide.net.lab/index.php

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

 
 
Visar de 30 senaste vägarna in till guiden. Visa alla
G o o g l e (www.google.se), sökning efter 'guide till dns'
G o o g l e (www.google.se), sökning efter 'www.webmail.dataphone.se/src/logi'
G o o g l e (www.google.se), sökning efter 'tomas+awenmark+olin'
G o o g l e (www.google.se), sökning efter 'openbsd apache2'
G o o g l e (www.google.com), sökning efter 'openbsd filserver hÃ¥rdvara'
G o o g l e (www.google.se), sökning efter 'cgi to check openbsd pf status'
G o o g l e (www.google.se), sökning efter 'openbsd apache2'
G o o g l e (www.google.se), sökning efter 'openbsd apache php'
G o o g l e (www.google.se), sökning efter 'mysql guide'
G o o g l e (www.google.se), sökning efter 'mysql guide'
G o o g l e (www.google.se), sökning efter 'sinterad'
G o o g l e (www.google.se), sökning efter 'php.ini openbsd'
G o o g l e (www.google.se), sökning efter 'php.ini openbsd'




G o o g l e (www.google.se), sökning efter 'openbsd apache ssl php'
G o o g l e (www.google.se), sökning efter 'max_allowed_packed mysql'
G o o g l e (www.google.se), sökning efter 'named openbsd'
G o o g l e (www.google.se), sökning efter 'openbsd bind'
G o o g l e (www.google.se), sökning efter 'apache ssl guide'
G o o g l e (www.google.se), sökning efter 'DNS bind guide'
http://translate.googleusercontent.com/translate_c?hl=en&sl=sv&tl=en&u=http://www.bsd-guide.net/openbsd-base/index.php&rurl=translate.google.com&usg=ALkJrhgJ_xi2pu9ZiILk9lw8PU40Bu1m1w
G o o g l e (www.google.se), sökning efter 'openbsd install problem'
G o o g l e (www.google.se), sökning efter 'openbsd apache'
G o o g l e (www.google.se), sökning efter 'inurl:index.php?userID='
G o o g l e (www.google.se), sökning efter 'inurl:index.php?userID='
G o o g l e (www.google.se), sökning efter 'Domain Name server med bind'
G o o g l e (www.google.se), sökning efter 'Domain Name server med bind'