You are hereLinux / server
server
Twitterbot
include_once "twitter.php";
include_once "user.php";
$data = shell_exec('/usr/games/fortune -s -n 140 bofh-excuses');
$twi_user->updateStatus($data);
?>
include_once "twitter.php";
include_once "user.php";
$data = shell_exec('/usr/bin/uptime');
$twi_user->updateStatus($data);
?>
include_once "twitter.php";
include_once "user.php";
$data = shell_exec('/usr/sbin/backup2l -s | tail -n 4 | head -n 1 | cut -f 2 -d "|" | sed "s/ //g"');
$twi_user->updateStatus("just made a ".$data." backup.");
?>
user.php:
$twi_user = new Twitter("intrepid_server","password");
?>
Intrepid²: logging en monitoring
htop
Installatie:
vnstat
Installatie:
apachetop
Installatie:
mailtail.sh
Zelf geschreven scriptje:LOGFILE=/var/log/mail.log
SKIP='(dovecot|imap-login|fetchmail|postfix/anvil|qmgr.*removed|postgrey.*cleaning|timeout.after|lost.connection.after|policy-spf)'
tail -F --lines=100 --max-unchanged-stats=5 $LOGFILE | egrep -v $SKIP
apticron
Om dagelijks een mailtje te krijgen van beschikbare updates.Installatie:
/etc/aliases is al aangepast.
munin
Luc is zo vriendelijk om munin te draaien op zijn bakje. Ik moet alleen maar munin-node installeren:/etc/munin/munin-node.conf:
intrepid²: mailserver
http://www.debianadmin.com/debian-mail-server-setup-with-postfix-dovecot...
http://www.linuxmail.info/postfix-smtp-auth-dovecot-sasl/
sudo /etc/init.d/apache2 reload
intrepid²: ssh zonder wachtwoord
Voor wie nog geen RSA keypair heeft, lees eerst dit artikel: Password-less logins with OpenSSH.
Ik heb wel al een RSA keypair, dus voor mij is het gemakkelijk:
amedee@migration.amedee.be's password:
Now try logging into the machine, with "ssh 'amedee@migration.amedee.be'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Linux intrepid 2.6.26-2-xen-amd64 #1 SMP Fri May 29 00:30:34 UTC 2009 x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
amedee@intrepid:~$
/etc/ssh/sshd_config:
intrepid²: webserver
Installatie
Apache, PHP, MySQL en phpMyAdmin tesamen in één keer installeren met:
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:
-
Oplossing: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- Toegevoegd aan
/etc/hosts:188.40.34.110 intrepid intrepid.amedee.be amedee.be - Toegevoegd aan
/etc/apache2/httpd.conf:ServerName amedee.be
- Toegevoegd aan
-
Oplossing: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.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:
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:
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:
Websites overzetten
De websites draaien allemaal op één Drupal-installatie in /var/www maar wel met elk een eigen database.
Eerst de bestanden overzetten:
Daarna de databases overzetten. Eerst een backup maken op de oude server:
Vervolgens de backup kopiëren naar de nieuwe server en importeren in mysql:
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.
Intrepid²: logboek
Logging van al de kleine en minder kleine configuratiewijzigingen op intrepid².
- 20090610
- Locales configureren:
sudo dpkg-reconfigure localesen_US.UTF-8 UTF-8
nl_BE ISO-8859-1
nl_BE.UTF-8 UTF-8
nl_BE@euro ISO-8859-15 - Geen locale voor root:
sudo echo export LANG="C" >> /root/.bashrc
- Software installeren:
sudo aptitude install bash-completion bzip2 curl di \
elinks dnsutils htop less localepurge lynx mc nano \
ncdu netselect-apt patch rsync screen telnet \
txt2regex - Webserver (Apache en aanverwanten) installeren
- Locales configureren:
- 20090615
- Hetzner Aptitude mirror instellen (alleen voor packages, niet voor source). De uiteindelijke versie van
/etc/apt/sources.listis nu:Reden:# Packages and Security Updates from the Hetzner Debian Mirror
deb ftp://mirror.hetzner.de/debian/packages lenny main contrib non-free
deb ftp://mirror.hetzner.de/debian/security lenny/updates main contrib non-free
# Debian sources for lenny
deb-src http://ftp.de.debian.org/debian/ lenny main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free- Snellere downloads
- Interne traffiek wordt niet aangerekend bij Hetzner.
- Hetzner Aptitude mirror instellen (alleen voor packages, niet voor source). De uiteindelijke versie van
- 20090616
- Users toevoegen:
sudo useradd -m -s /bin/bash username
- Wachtwoorden instellen:
sudo passwd username
- Mezelf toevoegen aan de sudoers met
visudo:amedee ALL=(ALL) ALL
- Users toevoegen:
- 20090618
- Dagelijks updates binnenhalen, maar niet installeren + wekelijks opkuis cache:
amedee@intrepid:~$ sudo crontab -u root -e# m h dom mon dow command
0 1 * * * /usr/bin/aptitude --quiet update && /usr/bin/aptitude --quiet --download-only safe-upgrade
10 1 * * 1 /usr/bin/aptitude --quiet autoclean
- Dagelijks updates binnenhalen, maar niet installeren + wekelijks opkuis cache:
- 20090620
- 20090628
- Data versassen van oude server naar nieuwe server:
sudo mkdir -p /home/oldserver
sudo rsync -aczhP --stats --exclude dev --exclude proc --exclude sys --exclude tmp -e ssh root@intrepid.warp.be:/ /home/oldserver
- Data versassen van oude server naar nieuwe server:
- 20090630
Checklist servermigratie
Deze server verhuist binnenkort naar een nieuwe fysieke machine met volgende specs:
- Disk: 10 GiB / , 175 GiB /home , 512 MiB swap
- Memory: 2 GiB RAM
- CPU: 1 VCPU Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz
Deze pagina is vooral bedoeld als documentatie voor mezelf.
Planning:
DONE 20090610: DNS TTL verlagen van amedee.be, vangasse.eu, dhertefelt.be bij Gandi.- BUSY 20090618: configuratie van intrepid².
DONE 20090620: configuratie testenDONE 20090621: migratie data van intrepid naar intrepid².DONE 20090622: DNS records aanpassen + TTL verhogen van amedee.be, vangasse.eu, dhertefelt.be, alle andere domeinen.DONE 20090622: web + mail testenDONE 20090629: services down op intrepid
Te installeren/configureren op de nieuwe server (intrepid²):
- admin
- IPv6
- firewall
- ssh
- openvpn
- backup: backup2l
- logging/monitoring
- web
- apache
- mysql
- php5
- phpmyadmin
- drupal
- mail
- postfix
- postgrey
- dovecot
- procmail
- fetchmail
Zie ook logging configuratiewijzigingen.