aptosid LAMP Stack

Het acroniem LAMP staat voor een set van vrije software programma's die gezamenlijk gebruikt worden om dynamische websites of servers te laten draaien:
Linux, het besturingssysteem
Apache, de webserver
MySQL, het database management systeem (of database server)
Perl, PHP, en/of Python, script talen

WAARSCHUWING: Gebruik nooit een normale pc als een internet web server! Gebruik hiervoor een aparte pc en laat hem niets anders doen dan server taken!

Server mogelijkheden:
a) een lokale test server voor web designers zonder internetverbinding;
b) een "gesloten" dataserver met internetverbinding;
c) een webserver met complete internetverbinding en bijbehorende faciliteiten;
d) een webserver voor commerciële doeleinden (wordt niet nader in de handleiding uitgewerkt)

Minimum benodigdheden:

Er is minimaal 256MB RAM nodig. Als minder RAM beschikbaar is treden er problemen op. Met name mysql servers hebben veel RAM nodig om soepel te kunnen werken. Mysql servers melden dan fouten "cannot connect to mysql.sock" als je niet voldoende werkgeheugen in je server hebt.

De pakketten die geinstalleerd moeten zijn ,zijn:

apache2
apache2-utils
apache2-mpm-prefork
php5 php5-common
mysql-server
mysql-common
libapache2-mod-php5
php5-mysql
phpmyadmin

WAARSCHUWING

apt-get remove --purge splashy

Splashy veroorzaakt problemen voor mysql.

De configuratie voor Apache is te vinden in het bestand:/etc/apache2/apache2.conf en je map met de web bestanden staat in /var/www.

Om te controleren of php correct geïnstalleerd is en goed werkt, kan een test.php gemaakt worden in je /var/www map met de phpinfo() functie precies zoals hieronder getoond.

mcedit /var/www/test.php

# test.php
<?  phpinfo(); ?>

Hierna wordt je browser naar het adres gelinkt:

http://localhost/test.php
of
http://yourip:80/test.php

Hiermee worden je php configuratie en de standaard instellingen getoond.

Je kan waarden aanpassen of virtual domains aanleggen in het apache configuration bestand.

Als je je installatie wilt testen in je browser, type

http://youripaddress/apache2-default/

Als het goed is zie je een welkoms bericht.

De standaard root-map voor documenten in apache2 is /var/www Dat moet veranderd worden in:

mkdir /home/myself/www
ln -s /home/myself/www /var/www

Als dat gedaan is, kan je je eigen website in je $Home als normale user veranderen (edit).

FTP Clients

Geadviseerd wordt om met SSH te werken - lees goed wat in de SSH topic staat. Maar er is ook een "built in FTP client" in de Konqueror die je in staat brengt om bestanden te uploaden.

Activeren van veiligheidsprotocollen voor webservers

Firewalls

Zonder firewall is helmaal geen veiligheid mogelijk voor je server. Let op: blokkeer alles en zet alleen open zolang je het echt nodig hebt, daarna blokkeer je het weer!.

21 (ftp)
22 (SSH)
25 110 (email)
443 (SSL http of https)
993 (imap ssl)
995 (pop3 ssl)
80 (http)
en elke andere gebruikte poort!

Standaard bescherming van server bestanden

Een aspect van Apache dat soms niet goed begrepen wordt, is de "feature of default access". Als je dat niet veranderd, kan de server via URL mapping regels een client bij alle bestanden laten komen.

Bijvoorbeeld:

 1. # cd /; ln -s / public_html
 2. Accessing http://localhost/~root/

Hierdoor kunnen clients het complete bestandssysteem zien! Omdat te voorkomen moeten de volgende regels in de server configuratie toegevoegd worden:

<Directory />
   Order Deny,Allow
   Deny from all
</Directory>

Hierdoor is standaard verboden het bestandssysteem te benaderen. Vervolgens moet <Directory> ook worden vastgelegd voor mappen waarin de toegang wel is toegestaan, bijvoorbeeld:

<Directory /usr/users/*/public_html>
    Order Deny,Allow
    Allow from all
</Directory>
<Directory /usr/local/httpd>
    Order Deny,Allow
    Allow from all
 </Directory>

Een belangrijk punt is ook de interactie tussen <Location> en <Directory>. De regel voor bijv. <Directory /> kan door <Location /> worden omzeild. (Location kan Directory nl. overrulen.)

Let ook op met de regels voor UserDir. Als hier bijv. zoiest staat als"./" dan heeft dat dezelfde consequentie als voor root, in het eerste voorbeeld hierboven. Als je Apache 1.3 of hoger gebruikt, wordt dringend aanbevolen de volgende regel aan de server configuratie toe te voegen:

UserDir disabled root

SSL

Uitvoeren van het script "apache2-ssl-certificate"

# apache2-ssl-certificate

Het volgende scherm wordt gestart om de nodige informatie vast te leggen.

Creating self-signed certificate
replace it with one signed by a certification authority (CA) enter your ServerName at the Common Name prompt. If you want your certificate to expire after x days call this programm
with -days x
-----
Generating a 1024 bit RSA private key
--------
writing new private key to '/etc/apache2/ssl/apache.pem'
--------
You are about to be asked to enter information that will be incorporated into your certificate request.
-----------
What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank. For some fields there will be a default value,
----------
If you enter '.', the field will be left blank.
Country Name (2 letter code) [GB]:

State or Province Name (full name) [Some-State]:

Locality Name (eg, city) []:

Organization Name (eg, company; recommended) []:

Organizational Unit Name (eg, section) []:

server name (eg. ssl.domain.tld; required!!!) []:

Email Address []:

Start het script "a2enmod ssl"

 # a2enmod ssl

Hiermee wordt automatisch een symbolic link gegenereerd tussen mods- available en mods - enabled.

Maak een copy van '/etc/apache2/sites-available/default' in de /etc/apache2/sites-available/ - noem deze 'ssl'

# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl

Maak een sym-link voor deze nieuwe site configuration door:

#  ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/
(of)
#a2ensite ssl

Als een veranderingen hebt geplaatst in de basisconfiguratie in /etc/apache2/apache2.conf of als je de default document root hebt aangepast in het bestand /etc/apache2/sites-available/default, dan moet de apache server herstart worden.

Om de Apache server nieuw te starten:

#service apache2 restart

Nu wordt het port address in /etc/apache2/ports.conf aangepast. In principe stond daar port 80 en nu moet vanwege de installatie van SSL dat veranderd worden in port 443.

 Listen 443

Verander in /etc/apache2/sites-available/ssl (of anders als je een afwijkende naam hebt gekozen voor je ssl site config) de naam port 80 in 443.

Hierna worden de volgende twee regels in het bestand /etc/apache2/apache2.conf toegevoegd

  SSLEngine On

  SSLCertificateFile /etc/apache2/ssl/apache.pem

Pas het bestand SSLCertificateFile /etc/apache2/ssl/apache.pem and aan en voeg de locaties van het certificatie bestand en het certificate key bestand toe. Hieronder staat een voorbeeld:

SSLCertificateFile /etc/apache2/ssl/online.test.net.crt
SSLCertificateKeyFile /etc/apache2/ssl/online.test.net.key

Schakel de ServerSignature uit. Voeg in het bestand /etc/apache2/apache2.conf de volgende twee regels toe:

ServerSignature Off
ServerTokens ProductOnly

Als andere typen van index bestanden gewenst worden moet de volgende regel in het bestand /etc/apache2/apache2.conf aangepast worden:

 DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.shtml

Herstart de apache server

 service apache2 restart

Nu kan een test van de server sandbox uitgevoerd worden. Als je denkt dat deze testserver een internetverbinding zou moeten hebben, NIET DUS ... Gebruik een aparte pc die alleen als an internet web server wordt gebruikt!

Bronnen:

http://www.mysql-apache-php.com

http://httpd.apache.org/docs/1.3/misc/security_tips.html

http://www.debianhelp.co.uk/webserver.htm

Inhoud het laatst gewijzigd op 14/08/2010 0100 UTC