Serveurs Dédiés

Logo LinuxDans cette catégorie, vous retrouverez essentiellement des articles sur la configuration des serveurs webs linux et des services liés au fonctionnement d’un site internet :

  • Php
  • Mysql
  • Configuration ftp
  • Configuration apache

Serveur dédiés : Ajouter du swap

Voici un petit post rapide pour expliquer comment mettre en place du swap sur votre serveur dédié ( ou sur votre vm ) tournant sous linux.

Ceci vous permettra d’éviter toutes les problèmes du type :

  • ‘proc_open(): fork failed – Cannot allocate memory’ avec composer
  • lancements de tests phpunit

C’est parti pour le code.
Je pars du principe que vous avez assez de place sur votre filesystem /
Nous allons créer un fichier de swap « swapfile » d’une taille de 2 go
( vous pouvez le remplacer par la valeur de votre choix, sous réserve de disposer d’un espace suffisant )

#creation du fichier de swap
sudo fallocate -l 2G /swapfile
#mise a jour des droits du fichier
sudo chmod 600 /swapfile
#declaration du fichier swap
sudo mkswap /swapfile
#activation du fichier swap
sudo swapon /swapfile

Vous pouvez ensuite vérifier que tout a bien fonctionné en lançant la commande suivante :

sudo swapon -s

Serveur dédiés : Ajouter du swap Lire la suite »

Backup manager : Exclure des fichiers ou des dossiers

Afin de sauvegarder mon serveur dédié j’utilise le script Backup-manager qui fait très bien son rôle de sauvegarde.
( Si vous souhaitez le mettre en place c’est par ici : Sauvegarder serveur dédié )

Cependant j’ai eut récemment des problèmes d’espace disque et je me suis rendu compte que de nombreux fichiers inutiles étaient sauvegardés.
( Fichiers de cache magento et prestashop )

Voici donc comment exclure des données de la sauvegarde.

Ouvrir le fichier de configuration de backup manager

sudo vim /etc/backup-manager.conf

et rechercher la ligne suivante :

export BM_TARBALL_BLACKLIST= ""

Rajouter ensuite les dossiers à exclure de votre sauvegarde, séparés par des espaces

ex :

export BM_TARBALL_BLACKLIST= "/var/www/magentosite/var/ /var/www/magentosite/media/catalog/cache/ /var/www/prestashopsite/cache/"

Sauvegarder votre fichier.
Lors des prochaines sauvegardes ces dossiers seront exclus, ce qui vous permettra de réduire la taille de celles-ci.…

Backup manager : Exclure des fichiers ou des dossiers Lire la suite »

Corriger les arrêts intempestifs de Proftpd

Sur mon serveur dédié qui tourne sous ubuntu 14.04* j’avais depuis longtemps un problème avec le serveur proftpd qui redémarrait de manière intempestive.
Ce qui nécessitait à chaque fois un redémarrage via ssh pour pouvoir à nouveau se connecter.

Après quelques recherches j’ai trouvé que la cause était la rotation des logs.
Celle-ci nécessite l’arrêt et le redémarrage du serveur, et le redémarage ne fonctionnait pas, du coup le service ne fonctionnait plus.

Voici comment faire pour corriger cela :
Editez le fichier : /etc/init.d/proftpd

Remplacer la ligne suivante :

start-stop-daemon --stop --signal $SIGNAL --quiet --pidfile "$PIDFILE"

Par le contenu suivant :

start-stop-daemon --stop --signal $SIGNAL --retry 1 --quiet --pidfile "$PIDFILE"

 

Une fois cette modification effectuée, le problème ne devrait plus survenir 🙂

* Le problème était également présent sur ubuntu 12.04…

Corriger les arrêts intempestifs de Proftpd Lire la suite »

Monitorer sites mutualisés avec Nagios

Si vous gérez plusieurs hébergements mutualisé et que vous souhaitez les monitorer facilement depuis votre serveur dédié, voici comment procéder avec Nagios.
Pour l’installation qui est assez complexe je vous laisse consulter l’article suivant qui est très bien réalisé :

http://www.unixmen.com/how-to-install-nagios-4-1-in-ubuntu-15-04/

Une fois l’installation effectuée nous allons créer un dossier « websites » dans « /usr/local/nagios/etc/ » dans lequel nous placerons toutes nos nouvelles configurations.
Pour charger automatiquement ces configurations il faut rajouter la ligne suivante dans le fichier :
/usr/local/nagios/etc/nagios.cfg

cfg_dir=/usr/local/nagios/etc/websites

Voici ensuite un fichier template qui vous servira de configuration pour vos sites

################ 
# Groupe des hotes : ( UN groupe par client )
###############
define hostgroup{
        hostgroup_name  Google
        alias           Google
}
 
################ 
# Définitions des hotes à tester
###############
 
#Modele de verification
define host{
 name google-host ;Changer le nom du host
 use generic-host
 hostgroups  Google ;Prendre le nom du hostgroup defini plus haut
 check_command check_http!

Monitorer sites mutualisés avec Nagios Lire la suite »

Magento : email queue non envoyée

J’ai rencontré récemment un problème avec l’envoi des emails de confirmation de commande sur magento version 1.9.0.1.
Contrairement à de plus anciennes versions de magento (et c’est mieux ainsi 🙂 ), les emails ne sont plus envoyés directement après le passage d’une commande.

Ils sont stockés dans la table core_email_queue .

Puis il sont envoyés 100 par 100 via la tâche cron core_email_queue_send_all toutes les minutes.

Sur le serveur hébergeant le site Magento ( dans un environnement chrooté) , cette tâche cron ne fonctionnait pas et le fichier exception.log était remplis de messages de ce type :

exception 'Zend_Mail_Transport_Exception' with message 'Unable to send mail. ' in /www/lib/Zend/Mail/Transport/Sendmail.php:137
Stack trace:
#0 /www/lib/Zend/Mail/Transport/Abstract.php(348): Zend_Mail_Transport_Sendmail->_sendMail()
#1 /www/lib/Zend/Mail.php(1194): Zend_Mail_Transport_Abstract->send(Object(Zend_Mail))
#2 /www/app/code/core/Mage/Core/Model/Email/Queue.php(241): Zend_Mail->send()
#3 [internal function]: Mage_Core_Model_Email_Queue->send(Object(Mage_Cron_Model_Schedule))
#4 /www/app/code/core/Mage/Cron/Model/Observer.php(325): call_user_func_array(Array, Array)
#5 /www/app/code/core/Mage/Cron/Model/Observer.php(72): Mage_Cron_Model_Observer->_processJob(Object(Mage_Cron_Model_Schedule), Object(Mage_Core_Model_Config_Element))
#6 /www/app/code/core/Mage/Core/Model/App.php(1338): Mage_Cron_Model_Observer->dispatch(Object(Varien_Event_Observer))
#7 /www/app/code/core/Mage/Core/Model/App.php(1317): Mage_Core_Model_App->_callObserverMethod(Object(Mage_Cron_Model_Observer), 'dispatch', Object(Varien_Event_Observer))
#8 /www/app/Mage.php(448): Mage_Core_Model_App->dispatchEvent('default', Array)
#9 /www/cron.php(77):

Magento : email queue non envoyée Lire la suite »

Déplacer les fichiers mysql vers un nouvel emplacement

Par défaut sur les serveurs kimsufi livré par ovh, la partition « / » allouée au système est relativement réduite. ( 20 Go  dans mon cas )
Sur mon serveur cette partition était quasiment pleine, et une grande partie de l’espace était occupée par les fichiers des bases de données.
( dossier /var/lib/mysql/)

Voici donc comment procéder pour déplacer ces fichiers et libérer de l’espace pour votre système.

Nous allons déplacer les fichiers de /var/lib/mysql/ vers /home/mysql/

Pour commencer il faut arrêter mysql

sudo service mysql stop

Nous pouvons ensuite déplacer les fichiers vers le nouvel emplacement ( Cette opération peut être assez longue en fonction du volume de données à transférer)

sudo mv /var/lib/mysql/ /home/mysql/

Puis mettre un lien symbolique de /home/mysql/ vers /var/lib/mysql/

sudo ln -s /home/mysql /var/lib/mysql

Il faut ensuite attribuer les droits du dossier à l’utilisateur mysql

sudo chown mysql:mysql /home/mysql

Il ne vous reste plus qu’a redémarrer msyql

sudo service mysql start

Les fichiers de mysql sont à présent à l’emplacement « home/mysql » et votre partition système retrouve de la place !…

Déplacer les fichiers mysql vers un nouvel emplacement Lire la suite »

Sécuriser l’accès à jenkins

Cet article fait suite à l’article suivant : Mise en place d’une plateforme d’intégration continue ( partie 2)

Une fois jenkins installé, celui-ci est disponible pour tout le monde et par défaut via l’ip de votre serveur sur le port 8080
En tapant http://ip-de-votre-serveur:8080 , n’importe qui visualisera donc les projets jenkins.

Pour sécuriser cela, nous allons mettre en place un reverse-proxy apache, qui communiquera avec le serveur jenkins.
Nous pourrons ainsi mettre en place une authentification basique htaccess / htpassword pour limiter les accès.
( Cela nécessite donc l’installation d’apache au préalable)

Dans mon exemple, je souhaite que le sous-domaine http://ci.example.com renvoie vers jenkins.
(Il faut donc au préalable faire pointer ce sous-domaine sur votre serveur )

Configuration du proxy

Pour commencer il faut activer le mode proxy et proxy_http d’apache, en saisissant les commandes suivantes

sudo a2enmod proxy
sudo a2enmod proxy_http

Passons ensuite à la création du fichier de notre vhost dans /etc/apache2/sites-availables/ créons un fichier jenkins.conf…

Sécuriser l’accès à jenkins Lire la suite »

Mise en place d’une plateforme d’intégration continue ( Partie 1 )

Afin de suivre le bon déroulement de vos projets, il est important de pouvoir tester de manière régulière que votre applications fonctionne bien.
Ceci peut être réalisé via la mise en place de tests unitaires et fonctionnels, d’analyse de code etc…

Pour suivre cela de manière optimale, la mise en place d’une plateforme d’intégration continue est la suite logique de l’évolution de votre projet dès lors qu’il atteint une taille importante, ou qu’il comporte de nombreuses fonctionnalités spécifiques.

Il existe plusieurs plateforme pour réaliser cela, mais je vais me baser sur la plus connue : Jenkins (ex Hudson )

L’objectif à la fin de ce guide est d’avoir une plateforme de tests fonctionnels opérationnelle.
Celle ci-sera basée sur phpunit et selenium et firefox en mode headless
La procédure étant assez longue, ce sujet va être séparé en 2 articles :

– Installation des éléments nécessaires aux tests fonctionnels
– Installation et configuration de jenkins pour l’exécution des tests fonctionnels

Installation des éléments nécessaires aux tests fonctionnels.

Mise en place d’une plateforme d’intégration continue ( Partie 1 ) Lire la suite »

Munin : Ajouter des plugins complémentaires

Après avoir installé munin, il y’a quelques semaines et afin d’optimiser le monitoring de mon serveur, j’ai souhaité installer des modules complémentaires.

Voici donc comment procéder pour installer des plugins sur munin.

Pour voir la liste des modules complémentaires de munin, entrez la commande suivante :

sudo munin-node-configure

Pour ma part j’ai activé le modules suivants : ( lié aux programmes fai2ban, postfix et à mysql )
– fail2ban
– postfix_mailqueue
– postfix_mailstats
– postfix_mailvolume
– mysql_queries
– mysql_slowqueries
– mysql_threads

Voici comment les activer

Fail2ban :

sudo  ln -s /usr/share/munin/plugins/fail2ban /etc/munin/plugins/fail2ban

Postfix :

sudo  ln -s /usr/share/munin/plugins/postfix_mailqueue /etc/munin/plugins/postfix_mailqueue
sudo  ln -s /usr/share/munin/plugins/postfix_mailvolume /etc/munin/plugins/postfix_mailvolume
sudo  ln -s /usr/share/munin/plugins/postfix_mailstats /etc/munin/plugins/postfix_mailstats

Pour Mysql il est nécessaire d’installer des packets complémentaires de cache via la commande suivante

sudo apt-get install libcache-{perl,cache-perl}

Puis

sudo  ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queries
sudo  ln -s /usr/share/munin/plugins/mysql_slowqueries /etc/munin/plugins/mysql_slowqueries
sudo  ln -s /usr/share/munin/plugins/mysql_threads /etc/munin/plugins/mysql_threads

Editez ensuite le fichier /etc/munin/plugin-conf.d/munin-node…

Munin : Ajouter des plugins complémentaires Lire la suite »

Sécuriser votre serveur dédié : installation de fail2ban

Votre serveur web, comme toutes les machines connectées à internet et soumis en permanence à des tentatives d’intrusions.
Le votre n’échappe n’y échappe sans doute pas…
Pour le constater il vous suffit de consulter le fichier d’authentification

sudo vim /var/log/auth.log

En parcourant son contenu de nombreuses lignes comme sur la capture ci-dessous apparaissent :

Logs authentification

Ces lignes sont les signes de tentative d’intrusions sur votre serveur, via une connexion ssh.

Ces tentatives sont quasiment impossible à éviter, cependant pour limiter au maximum ces désagréments, il est donc conseillé d’installer un outil tel que Fail2ban.
Celui-ci étudie les logs de votre serveur et vous permet de bloquer les utilisateurs qui tentent d’exploiter les failles de votre serveur.
Sa modularité lui permets de s’adapter à l’ensemble des besoins de sécurité de vos serveur.

Pour l’installer il faut exécuter la commande suivante :

sudo apt-get install fail2ban

Une fois fail2ban installé, nous pouvons consulter sa configuration située dans le fichier /etc/fail2bn/jail.conf

Sécuriser votre serveur dédié : installation de fail2ban Lire la suite »