server

Twitterbot

Sinds kort heeft deze server ook zijn eigen Twitter account: @intrepid_server. Tot nu toe doet hij nog niet veel meer dan af en toe een fortune cookie in de wereld te gooien:
<?php
include_once "twitter.php";
include_once "user.php"; 
$data = shell_exec('/usr/games/fortune -s -n 140 bofh-excuses'); 
$twi_user->updateStatus($data);
?>
of hij laat zijn uptime weten:
<?php
include_once "twitter.php";
include_once "user.php"; 
$data = shell_exec('/usr/bin/uptime'); 
$twi_user->updateStatus($data);
?>
Op het einde van de dagelijkse backup laat hij ook van zich horen:
<?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.");
?>
Al deze kleine maar fijne scriptjes maken gebruik van de schitterende PHP Twitter class van @tijsverkoyen. Meer scriptjes volgen later!

Intrepid²: logging en monitoring

htop

Installatie:
sudo aptitude install htop
Gebruik:
sudo htop

 

vnstat

Installatie:
sudo aptitude install vnstat
Database aanmaken:
sudo vnstat -u -i eth0
Gebruik:
watch vnstat

 

apachetop

Installatie:
sudo aptitude install apachetop
Gebruik:
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
Uitvoerbaar maken:
sudo chmod u+x /root/bin/mailtail.sh
Gebruik:
sudo /root/bin/mailtail.sh

 

apticron

Om dagelijks een mailtje te krijgen van beschikbare updates.
Installatie:
sudo aptitude install apticron
Da's alles! Apticron installeert zelf een cronjob en mailt naar root. Da's ok voor mij want /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
Luc z'n IP-adres toelaten in /etc/munin/munin-node.conf:
allow xxx.xxx.xxx.xxx
Tenslotte munin-node herstarten.
sudo /etc/init.d/munin-node restart
Enkele minuten later zijn er grafiekjes.

 

intrepid²: mailserver

http://holl.co.at/howto-email/
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" .
/etc/aliases is aangepast + sudo newaliases

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.
gevolgd door:
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:~$
Bijna klaar. Nu alleen nog voor de security even password enabled root logins afzetten in /etc/ssh/sshd_config:
PermitRootLogin no
gevolgd door herstarten van de OpenSSH service:
/etc/init.d/ssh restart
Ziezo, weeral een klusje dat van de lijst geschrapt kan worden.

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:

  • 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:
      ServerName amedee.be
  • 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:

sudo a2enmod rewrite

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.

Intrepid²: logboek

Logging van al de kleine en minder kleine configuratiewijzigingen op intrepid².

  • 20090610
    • Locales configureren:
      sudo dpkg-reconfigure locales
      en_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
  • 20090615
    • Hetzner Aptitude mirror instellen (alleen voor packages, niet voor source). De uiteindelijke versie van /etc/apt/sources.list is nu:
      # 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
      Reden:
      • Snellere downloads
      • Interne traffiek wordt niet aangerekend bij Hetzner.
      Meer informatie: http://wiki.hetzner.de/index.php/Hetzner_Aptitude_Mirror
  • 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
  • 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
  • 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
  • 20090630
http://amedee.be/intrepid2-logging-monitoring

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:

  1. DONE 20090610: DNS TTL verlagen van amedee.be, vangasse.eu, dhertefelt.be bij Gandi.
  2. BUSY 20090618: configuratie van intrepid².
  3. DONE 20090620: configuratie testen
  4. DONE 20090621: migratie data van intrepid naar intrepid².
  5. DONE 20090622: DNS records aanpassen + TTL verhogen van amedee.be, vangasse.eu, dhertefelt.be, alle andere domeinen.
  6. DONE 20090622: web + mail testen
  7. DONE 20090629: services down op intrepid

 
Te installeren/configureren op de nieuwe server (intrepid²):

  • admin
  • web
    • apache
    • mysql
    • php5
    • phpmyadmin
    • drupal
  • mail
    • postfix
    • postgrey
    • dovecot
    • procmail
    • fetchmail

Zie ook logging configuratiewijzigingen.

Inhoud syndiceren