Installatie
Apache, PHP, MySQL en phpMyAdmin tesamen in één keer installeren met:
sudo aptitude install apache2 php5 imagemagick php5-imagick \
mysql-server phpmyadmin php5-curl php5-dev php-pear make
Debian trekt zelf alle noodzakelijke afhankelijkheden binnen.
Kleine bugjes fixen
Apache gaf wel enkele waarschuwingen tijdens de installatie:
-
Starting web server: apache2apache2: apr_sockaddr_info_get() failed for intrepid
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Oplossing:
- Toegevoegd aan
/etc/hosts:
188.40.34.110 intrepid intrepid.amedee.be amedee.be
- Toegevoegd aan
/etc/apache2/httpd.conf:
-
Setting up ssl-cert (1.0.23) ...
hostname: Unknown host
make-ssl-cert: Could not get FQDN, using "intrepid".
make-ssl-cert: You may want to fix your /etc/hosts and/or DNS setup and run
make-ssl-cert: make-ssl-cert generate-default-snakeoil --force-overwrite
make-ssl-cert: again.
Oplossing:
sudo make-ssl-cert generate-default-snakeoil --force-overwrite
Mod-rewrite aanzetten
Onder andere Drupal heeft mod-rewrite nodig, voor clean URLs. Dus:
In /etc/apache2/sites-enabled/000-default is er ook nog een aanpassing nodig:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
#AllowOverride None
AllowOverride All
Order allow,deny
allow from all
</Directory>
Dus AllowOverride None moet vervangen worden door AllowOverride All, anders werken de .htaccess-bestanden niet.
phpMyAdmin beveiligen
Ik vind het niet zo leuk dat om het even wie met phpMyAdmin kan klooien (ook al staat er een sterk wachtwoord op alle mysql-users. Daarom beveilig ik phpMyAdmin met mod_access door volgende aanpassing van /etc/apache2/httpd.conf:
<Directory /usr/share/phpmyadmin>
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from 10
Allow from <mijn-ip-adres>
</Directory>
Van zodra de OpenVPN in orde is, gaat ook de regel Allow from <mijn-ip-adres> er uit, omdat de webserver dan te bereiken zal zijn via een 10.x.x.x adres.
Apache herstarten
Om al deze configuratiewijzigingen toe te passen, moet Apache herstart worden:
sudo /etc/init.d/apache2 restart
Websites overzetten
De websites draaien allemaal op één Drupal-installatie in /var/www maar wel met elk een eigen database.
Eerst de bestanden overzetten:
sudo rsync -aczhP -e ssh root@oldserver.amedee.be:/var/www /var/
Daarna de databases overzetten. Eerst een backup maken op de oude server:
mysqldump -u root -p --all-databases | bzip2 -c > databasebackup.sql.bz2
Vervolgens de backup kopiëren naar de nieuwe server en importeren in mysql:
scp oldserver.amedee.be:"~/databasebackup.sql.bz2" .
bzcat databasebackup.sql.bz2 | mysql -u root -p
Omdat de users database nu ook mee gekopieerd is, moet er ook nog een flush privileges gebeuren in mysql. Dit heb ik via phpMyAdmin gedaan.
Eindresultaat: alle websites zijn getransplanteerd van de oude server naar de nieuwe server. Er zijn nog een paar kleinigheden die nagekeken moeten worden, zoals tijdelijke import-directories voor Drupal, maar voor de rest werkt alles.