server
Twitterbot
<?php include_once "twitter.php"; include_once "user.php"; $data = shell_exec('/usr/games/fortune -s -n 140 bofh-excuses'); $twi_user->updateStatus($data); ?>
<?php include_once "twitter.php"; include_once "user.php"; $data = shell_exec('/usr/bin/uptime'); $twi_user->updateStatus($data); ?>
<?php 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."); ?>
Intrepid²: logging en monitoring
htop
Installatie:sudo aptitude install htop
sudo htop
vnstat
Installatie:sudo aptitude install vnstat
sudo vnstat -u -i eth0watch vnstat
apachetop
Installatie:sudo aptitude install apachetop
sudo apachetop -f /var/log/apache2/access.log
mailtail.sh
Zelf geschreven scriptje:#! /bin/bash 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
sudo chmod u+x /root/bin/mailtail.sh
sudo /root/bin/mailtail.sh
apticron
Om dagelijks een mailtje te krijgen van beschikbare updates.Installatie:
sudo aptitude install apticron
/etc/aliases is al aangepast.
munin
Luc is zo vriendelijk om munin te draaien op zijn bakje. Ik moet alleen maar munin-node installeren:sudo aptitude install munin-node
/etc/munin/munin-node.conf:
allow xxx.xxx.xxx.xxx
sudo /etc/init.d/munin-node restart
intrepid²: mailserver
http://www.debianadmin.com/debian-mail-server-setup-with-postfix-dovecot...
http://www.linuxmail.info/postfix-smtp-auth-dovecot-sasl/
sudo aptitude install dovecot-imapd postfix postgrey policyd-weight procmail squirrelmail
sudo ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf sudo /etc/init.d/apache2 reload
rsync -crtzhP -e ssh intrepid.warp.be:"~/Maildir" .
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@saruman { ~ }$ ssh-copy-id -i ~/.ssh/id_rsa.pub amedee@migration.amedee.be
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.amedee@saruman { ~ }$ ssh amedee@migration.amedee.be
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:
PermitRootLogin no
/etc/init.d/ssh restart
intrepid²: webserver
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:
-
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:
sudo a2enmod rewriteIn /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.
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.
