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

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
Hello,
Les deux :-) Je préfère syslog-ng, et c’est plus light :
root@quickweb:~# ps -eo "%z %a" | grep syslog | grep -v grep5492 supervising syslog-ng
5748 /usr/sbin/syslog-ng -p /var/run/syslog-ng.pid
root@quickweb:~# ps -eo "%z %a" | grep syslog | grep -v grep23036 rsyslogd -c4