Archives pour la catégorie ‘ Serveurs Dédiés’

Utiliser plusieurs version mysql avec docker

J’ai récemment souhaité tester un module sur d’anciennes version de prestashop, mais celle-ci ne fonctionnaient pas correctement avec mysql 5.7 qui est installé par défaut sur mon serveur de développement ( basé sur ubuntu 16.04 )

Ce service devant tourner de manière ponctuelle, l’installer en doublon de la version 5.6 n’était pas une option.
La solution la plus simple est donc d’utiliser docker, nous allons voir comment avoir un autre serveur de base de données avec la version 5.6 en quelques minutes 🙂

Installation de docker

Pour cela je vous envoie vers la documentation officielle qui explique tout très bien : https://docs.docker.com/install/linux/docker-ce/ubuntu/#extra-steps-for-aufs

Installer docker-compose

sudo apt-get install docker-compose

Création du fichier docker-compose

Pour le ranger j’ai  créer un dossier /mysql56 dans mon dossier home

mkdir ~/mysql56

Dans lequel on va créer un dossier /data qui contiendra le contenu des bases de données du container.
Ceci permettra de persister les données en éteignant le container.…

Pas de commentaires

Monitorez vos serveurs avec netdata

J’ai réinstallé mon serveur dédié sous ubuntu 16.04 récement, j’en ai profité donc pour chercher des nouveaux outils de monitoring, et je suis tombé sur « netdata » que j’avais déjà croisé il y’a pas mal de temps mais que je n’avais pas encore installé.

La solution est disponible sur github avec une documentation très complète à l’adresse suivante :
https://github.com/firehol/netdata/wiki/Installation

Il faut reconnaitre que cette solution est réussie graphiquement et très complète ( ça ressemble à un htop très très amélioré )
Nous allons voir comment installer et configurer basiquement cette solution.

Installer via la ligne de commande suivante :

bash <(curl -Ss https://my-netdata.io/kickstart.sh)

( Si curl n’est pas intallé apt-get install curl )

La durée du script d’installation dure environ 5 minutes :

Dans un premier temps il vérifie les prérequis et identifie les librairies manquantes sur votre serveur.
Et vous propose ensuite de les installer.

net data install 1

Vous pouvez ensuite paramétrer l’installation de la solution.…

2 commentaires

Mise en place d’une réplication mysql

Dans le cadre de site à forts traffics, de la préparation d’une migration ou d’une politique de sauvegarde, il est possible de mettre en place une réplication mysql.

Nous allons voir ensemble comment mettre en place une réplication de type master / slave sur des distribution de type debian / ubuntu.

Il est possible de jouer la réplication sur autant de serveur slaves que souhaités.

Cette procédure nécessitera des redémarages de mysql

 

Préparation du serveur master.

Pour commencer il est nécessaire de créer un utilisateur mysql :

Pour plus de sécurité nous restreindrons l’accès à une ip particulière via la commande suivante a éxécuter avec un utilisateur ayant tous les droits.

CREATE USER 'my-replication-user'@'hostname-de-votre-serveur' IDENTIFIED BY 'some_pass';

Il faut ensuite ajouter à cet utilisateur les droits de réplication :

GRANT REPLICATION SLAVE ON *.* TO 'my-replication-user'@'hostname-de-votre-serveur';

Il faudra ensuite activer la conservation des fichiers de logs sur le serveur.…

Pas de commentaires

Prestashop : Passer au déploiement continu

Vous mettez encore à jour vos sites via Ftp ? Vous perdez du temps à déployer votre code lors de chaque livraison de nouvelle fonctionnalité ?
Il est temps d’optimiser cela et de passer au déploiement continu !

Pour l’exemple nous allons voir comment mettre en place du déploiement continu sur un site prestashop de base ( version 1.6.1.x ).
L’exemple est assez basique, mais peut servir de base pour des stratégies de déploiement plus complexes.

Les prérequis étant les suivants :

  • site hébergé sur un hébergement avec accès SSH

Pour mettre en place ce processus nous allons utiliser les outils suivants :

  • git
  • gilab

Les étapes à réaliser seront les suivantes :

 1/ Création du projet sur gitlab

Pour commencer il faut s’inscrire sur gitlab.com.
Vous pouvez ensuite créer votre projet en mode public ou privé selon vos besoins.…

4 commentaires

Installer rapidement une Vm avec Magento2

Après le passage de la certification Magento 1 il est temps pour moi de creuser un peu plus intensément Magento 2.

Pour commencer voici donc un petit script bien utile qui va installer Magento 2 ainsi que tout ses prérequis ( nginx / php-fpm ) sur une Vm Ubuntu 16.04 brute
Dans mon cas celle-ci est hébergée dans AWS.

Voici le script complet

 #!/bin/bash
 
#Mise à jour du serveur
sudo apt-get update && sudo apt-get -y upgrade
 
#Installation des libs nécessaires au serveur
sudo apt-get -y install nginx git unzip htop php-fpm php-mysql php7.0-curl php7.0-mcrypt php7.0-xsl php7.0-intl php7.0-gd php7.0-mbstring php7.0-zip
 
#Installation de mysql
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password root"
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password root"
sudo apt-get install -y mysql-server
 
#Récupération de magento2
cd /var/www/html/
sudo mkdir magento2
sudo chown -R ubuntu:www-data magento2
cd magento2
echo "Recupération et extraction de l'archive"
#@Todo : Trouver un miroir avec les versions de magento2
sudo wget http://web.h-hennes.fr/magento2/Magento-CE-2.1.5_sample_data.zip
sudo unzip Magento-CE-2.1.5_sample_data.zip
 
#Mise à jour des droits
echo "Mise à jour des droits des fichiers"
sudo find .
Pas de commentaires

Générer un certificat SSL autosigné

Afin de pouvoir utiliser le protocole https lors de vos développements locaux, il est nécessaire de générer un certificat https.

Voici une commande rapide qui vous permettra de générer un certificat auto-signé qui aura une validité d’un an.

 openssl req -x509 -nodes -days 365 -newkey rsa:1024 -out /etc/ssl/ssl.crt -keyout /etc/ssl/ssl.key

Dans le cas d’un site live, il est recommandé d’utiliser un vrai certificat ssl ( qu’il soit payant ou généré via LetsEncrypt cf. https://www.h-hennes.fr/blog/2016/10/11/passer-au-https-avec-letsencrypt/ )

Vous pouvez ensuite ajouter ce certificat facilement à votre configuration nginx ou apache :

Nginx :

server {
    listen 443 ssl;
    ssl_certificate /etc/ssl/ssl.crt
    ssl_certificate_key /etc/ssl/ssl.key;
 
    server_name local.dev;
    root /home/www;
}

 

Apache :

<VirtualHost *:443>
       
        ServerName local.dev
        DocumentRoot /home/www
        SSLEngine on
        SSLCertificateFile /etc/ssl/ssl.crt
        SSLCertificateKeyFile /etc/ssl/ssl.key
 
        <Directory "/home/www">
           Options Indexes FollowSymLinks MultiViews
           Order allow,deny
           Allow from all
           AllowOverride All
           # New directive needed in Apache 2.4.3:
           Require all granted
        </Directory>
 
 
</VirtualHost>

 …

1 commentaire

Optimisation des exports de bases de données pour mise à jour d’environnement de développement

En tant que développeur il est souvent nécessaire de faire des dumps de base de données pour mettre à jour les environnements de développements ( qu’ils soient locaux ou sur le serveur ).
Cependant les tables de productions sont souvent très lourdes et comportent des données qui ne sont pas forcément nécessaire pour développer.

Voici un petit script qui va vous faire gagner du temps dans l’export / import de ces bases de données.
La logique est relativement simple .

Pour les tables dont les données ne sont pas importantes, on va exporter uniquement la structure.
Puis nous excluons ces tables de l’export global.

 #!/bin/bash
 
#Variables de la base de données
host="localhost"
user="root"
pass="root"
dbname="dbname"
 
#Stockage de ces tables à ignorer dans une variables ( separer les noms par un espace)
ignoreTables="table1 table2 "
 
#Dump de la structure de ces tables
echo "Export de la structure des tables ignorées"
mysqldump -d -h $host -u $user -p$pass $dbname $ignoreTables > backup-structure.sql
 
#Construction de la chaine d'exclusion
ignoreTablesString=""
for table in $ignoreTables
do
ignoreTablesString="$ignoreTablesString --ignore-table $dbname.
Pas de commentaires

Monitorer et optimiser son application web avec New Relic

A la suite de mon précédent article qui présentait uptime Robots, voici un outil très pratique dans la gestion de votre site web.

New Relic est un service hébergé en saas qui vous permets de monitorer votre application web.
Il est en revanche destiné uniquement aux possesseur de serveurs dédiés, et les droits root sont nécessaires pour installer les agents de monitoring. ( Je ne vous détaille pas l’installation , leurs documentations sont très complètes )

Mais de mon point de vue sa grande plus-value est la possibilité de suivre, et de déboguer votre code, en analysant l’ensemble des transactions effectués sur votre serveur.

Comme vous pouvez le voir sur la capture suivant, lors de l’affichage d’une page, l’ensemble des appels à la base de données sont listés, et le temps de chacun est affiché.

Ex transaction new relic

Ceci m’a déjà notamment permis d’identifier le code qui ralentissait l’application.

Je ferais sans doute des articles plus détaillés dans les prochaines semaines pour détailler l’utilisation de ce service 😉

Pour toutes les infos ça se passe par ici : https://newrelic.com/

Pas de commentaires

Utiliser plusieurs version de php avec Apache

Un petit article pour présenter comment installer plusieurs versions de php en simultané sur votre serveur dédié.
Ceci peut notamment être utile si vous hébergez plusieurs sites sur votre serveur dédié et qu’ils n’ont pas les mêmes prérequis techniques.

En utilisant apache et php-fpm et c’est très facile et rapide à mettre en place.
Pour notre exemple je souhaite installer php 5.6 et php 7.0 en simultané.

#Pour commencer installer apache
apt-get install apache2 libapache2-mod-fastcgi
 
#Activativation des mode actions fastcgi et alias pour apache2
a2enmod actions fastcgi alias
 
#Ajouter le ppa Ondrej
add-apt-repository ppa:ondrej/php
 
#Update des packet
apt-get update
 
#Installer PHP 7 + extensions de base
apt-get install php7.0-fpm php7.0-xml php7.0-gd php7.0-mcrypt php7.0-mysql php7.0-pdo
 
#Installer PHP 5.6 + extensions de base
apt-get install php5.6-fpm php5.6-xml php5.6-gd php5.6-mcrypt php5.6-mysql php5.6-pdo

Partant du principe que la version par défaut sera php 7.0,
On va ensuite configurer phpfpm 5.6 pour une exécution à la demande en éditant son fichier de configuration

vim /etc/php/5.6/fpm/pool.d/www.conf

changer la ligne pm comme ceci :

pm = ondemand

La base est à présent installée, maintenant vous pouvez éditer vos fichiers de configuration de la manière suivante.…

11 commentaires

Passer au https avec letsencrypt

Si il était conseillé auparavant l’utilisation du protocole https est maintenant une nécessité.
Ce paramètre est même pris en compte par google pour l’indexation de votre site.

Pour ceux qui font tourner une boutique de taille raisonnable et qui ne souhaitent pas de garantie étendue ( ou qui n’ont tout simplement pas le budget ), il existe une possibilité d’obtenir des certificats https gratuitement via letsencrypt : https://letsencrypt.org/

Le seul point à prendre en compte est que le certificat est valide pour une durée de 3 mois, il sera donc nécessaire de le renouveler régulièrement.

L’installation et la génération des certificats sont très rapide et pratique , nous allons voir comment procéder pour installer ces certificats sur notre serveur dédié avec Ubuntu 14.04

(Un accès root ou sudo est nécessaire )

#Telechargement du robot de certification
wget https://dl.eff.org/certbot-auto
#Mise à jour des droits
chmod a+x certbot-auto

Pour un serveur avec apache2

#Execution avec la configuration apache
$ sudo .
Pas de commentaires


Compte Github