LAMP + monitoring Zabbix sur un serveur virtuel avec 256 Mo de RAM

Est-il possible d’avoir un serveur web avec PHP + MySQL + des virtual hosts, ainsi qu’un service de monitoring (Zabbix), tout ça dans un VPS avec seulement 256 Mo de RAM ? Et en plus pour 4 € / mois ? Difficile, n’est-ce pas ? :-) En fait non, c’est même large… 140 Mo de RAM suffisent ! En m’inspirant d’un article sur lowendbox.com, et en utilisant un VPS chez l’excellent QuickWeb (OpenVZ VPS Germany 256 à $6/mois), voici rapidement la procédure d’installation sur une base d’install Ubuntu 10.10 toute fraiche :

  • On fait un peu de ménage en virant rsyslog, et on installe syslog-ng à la place. Dans la foulée on bazarde portmap, ainsi que bind9 (les DNS de QuickWeb font parfaitement l’affaire) :
apt-get install syslog-ng && dpkg --purge rsyslog
apt-get remove --purge portmap
apt-get remove --purge bind9
  • On supprime openssh, et on installe le tout petit dropbear à la place :
touch /etc/ssh/sshd_not_to_be_run
apt-get install dropbear
sed -i "s/NO_START=1/NO_START=0/" /etc/default/dropbear
/etc/init.d/ssh stop && /etc/init.d/dropbear start
echo -e "PATH=/usr/bin:/bin:/usr/sbin:/sbin\nexport PATH" >> ~/.bashrc
  • Voilà, on a déjà gagné quelques megs. Passons aux poids lourds… Apache en premier, qui va poliment laisser sa place à lighttpd (et son module de gestion des vhosts) :
/etc/init.d/apache2 stop
update-rc.d -f apache2 remove
apt-get remove --purge apache2
apt-get install lighttpd
mkdir -p /var/www/monitoring.monsite.fr/html
lighttpd-enable-mod simple-vhost
/etc/init.d/lighttpd force-reload
  • Que serait le web sans PHP et MySQL ?
apt-get install mysql-server php5-cgi php5-mysql
cat > /etc/lighttpd/conf-enabled/10-cgi-php.conf
server.modules += ("mod_cgi")
cgi.assign = (".php" => "/usr/bin/php5-cgi")
^D
/etc/lighttpd/conf-enabled/10-simple-vhost.conf :
  simple-vhost.server-root         = "/var/www"
  simple-vhost.document-root       = "html"
/etc/init.d/lighttpd force-reload
  • On va immédiatement calmer le gros apétit de MySQL :
cat > /etc/mysql/conf.d/mon_tuning.cnf
[mysqld]
key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64K
query_cache_limit = 256K
query_cache_size = 1M
^D
  • Au tour de Zabbix !
apt-get install zabbix-server-mysql zabbix-frontend-php zabbix-agent
  le pass root mysql
  puis le pass db zabbix
  mysql
  puis le pass frontend zabbix
ln -s /usr/share/zabbix /var/www/monitoring.monsite.fr/html
  • On customise un peu le /etc/php5/cgi/php.ini pour faire plaisir à Zabbix :
 date.timezone = Europe/Paris
 post_max_size = 16M
 max_execution_time = 300
 max_input_time = 300
  • Un peu de SSL pour sécuriser le tout :
cd /etc/lighttpd/conf-available/
ln -s /etc/lighttpd/conf-available/10-ssl.conf
openssl req -new -x509 -keyout server.pem -out server.pem -days 3650 -nodes
  du bla bla pour generer le certificat... :-)
/etc/init.d/lighttpd restart
  • Et voilà, secouez bien fort votre VPS, et Zabbix s’offre à vous :
https://monitoring.monsite.fr

Pour 4 petits € / mois, voilà un beau serveur de monitoring, oui ma bonne dame :-) Et rassurez vous, il reste de la RAM dispo, vous pourrez donc y installer encore quelques vhosts (puisqu’il y a du PHP/MySQL, autant se faire plaisir) :

root@quickweb:~# free -m
 total       used       free     shared    buffers     cached
Mem:           384        138        245          0          0          0
-/+ buffers/cache:        138        245
Swap:            0          0          0

Tags: , , ,

Vendredi 22 avril 2011 Linux, Logiciels Libres, Serveur dédié

2 commentaires to LAMP + monitoring Zabbix sur un serveur virtuel avec 256 Mo de RAM

  • Raphaël SurcouF dit :

    Salut,

    Est-ce que l’on doit comprendre que syslog-ng dispose d’une empreinte mémoire moindre que rsyslog ou est-ce simplement une préférence personnelle de ta part ?

    Raphaël SurcouF

    • Fabien dit :

      Hello,

      Les deux :-) Je préfère syslog-ng, et c’est plus light :

      root@quickweb:~# ps -eo "%z %a" | grep syslog | grep -v grep
      5492 supervising syslog-ng
      5748 /usr/sbin/syslog-ng -p /var/run/syslog-ng.pid

      root@quickweb:~# ps -eo "%z %a" | grep syslog | grep -v grep
      23036 rsyslogd -c4