Installation et configuration d'un serveur VPS sous debian ou ubuntu

installation-et-configuration-d-un-serveur-vps-sous-debian-ou-ubuntu



10 697 vues

Bonjour à tous ! Je vais vous donner la procédure pas à pas afin d'installer/configurer correctement votre serveur VPS sous debian ou ubuntu ! Sans oublier la petite migration du nom de domaine :) C'est un tutoriel assez basique qui vous permettra de faire tourner vos applications (web/jeux/...) sur un serveur VPS


Vous venez sans doute de recevoir vos identifiants et mots de passe de votre tout nouveau serveur VPS !!!! Super ! Mais vous ne savez pas vraiment comment installer/configurer votre serveur...je suis là pour vous donner les bonnes directives :).

Rassurez-moi, avez-vous déjà :

  • installé linux sur un de vos PC au moins une fois dans votre vie ?
  • un client SSH comme PuTTY (Windows) ?
  • touché un peu aux lignes de commandes ?
  • Savoir ce qu'un accès SSH ?
  • Ce qu'un accès "root" ?
  • Vous connaissez un très bon générateur de mot de passe ?


Si jusqu'ici aucune de mes questions ne vous a choqué c'est qu'on peut commencer !!! :D Allez Go go go go...:p

 

Estimation d'une nouvelle installation + configuration du serveur : 1h30 - 2h00 ~
Vous trouverez une liste de commande utiles en fin de page.


Commençons par recueillir les informations utiles ! Les paramètres de connexion et de configuration du serveur...

 

 

Système d'exploitation / distribution :

Debian 7 wheezy (en version 64 bits)
ou
Ubuntu 14.XX Server (en version 64 bits)

 

 

Paramètres d'accès :

L'adresse IPv4 du VPS est : XX.XXX.XX.XXX
L'adresse IPv6 du VPS est : XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX

Le nom du VPS est : vpsXXXXX.ovh.net

Le compte administrateur configuré sur le VPS :
Nom d'utilisateur : root
Mot de passe :      MdP_VpS

Le compte administrateur configuré sur MySQL :
Nom d'utilisateur : root
Mot de passe :      mDP_mYSQl

Les utilisateurs sous MySQL :
phpMyAdmin : MDp_PmA
...
...

 

 

Installation de base :

Nous allons utiliser la commande « sudo » qui nous permettra d'avoir les droits nécessaires lors de l’exécution avant chaque commande uniquement sous Ubuntu.

Vérifions s’il y a des mises à jour ! :

sudo apt-get update
sudo apt-get upgrade

 

On commence par installer un éditeur (nano) puis modifier (si nécessaire le port SSH) :

apt-get install nano
nano /etc/ssh/sshd_config

Modifier votre port comme ceci ou à votre guise (facultatif) :

# What ports, IPs and protocols we listen for# Port 22Port 1327

Puis on rafraîchit le service SSH :

/etc/init.d/ssh reload

 

On va installer le service Apache 2 :

apt-get install apache2
/etc/init.d/apache2 stop
/etc/init.d/apache2 start

 

Puis PHP5 et MySQL :

apt-get install php5
apt-get install mysql-server

Pour MySQL, Rentrer un mot de passe ! Ce sera le mot de passe Administrateur MySQL.

 

Installation des librairies PHP5 utiles (Cette petite liste est suffisante):

apt-get install php5-common libapache2-mod-php5 php5-cli php5-mysql php5-curl php5-intl php5-mcrypt
apt-get install php5-xdebug php5-dev

 

Activer le module userdir :

a2enmod userdir
service apache2 restart
nano /etc/apache2/envvars

Puis on vérifie la présence des lignes :

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

 

On vérifie que les utilisateurs sont autorisés à se connecter :

nano /etc/apache2/mods-available/userdir.conf
UserDir public_html

L'exécution en PHP est désactivée par défaut. Pour changer ça et éviter que le navigateur ne télécharge le code PHP directement, éditer le fichier /etc/apache2/mods-enabled/php5.conf et commenter les lignes comme ci-dessous :

<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_value engine Off
    </Directory>
</IfModule>

Puis redémarrer le service Apache 2 :

service apache2 restart

 

Exemple d’un fichier Virtual Host (pour vos sous-domaines ou autres..) :

ServerName nomserveur.com
ServerAlias www.nomserveur.com
DocumentRoot /var/www/nomserveur

<Directory /var/www/nomserveur>
     # In Apache 2.4, Order allow,deny has
     # been replaced by Require all granted,
     # and hence you need to modify your
     # Directory permission settings.
     AllowOverride All
     Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/nomserveur_error.log
CustomLog ${APACHE_LOG_DIR}/nomserveur_access.log combined

 

 

Installation d’un GBD (PHPMyAdmin) :

Installation de PHPMyAdmin :

apt-get install phpmyadmin

Lors de l’installation précéder comme ci-dessous :

Cochez la case "apache2"
Entrer le mot de passe Administrateur MySQL
Entrer un  mot de passe pour l'utilisateur "phpmyadmin"

Votre phpmyadmin est maintenant accessible à l'adresse suivante : http://VOTRE_SERVEUR/phpmyadmin/

 

Petite astuce pour ceux qui veulent configurer phpMyAdmin via le « setup » !
Par défaut, cette page est protégée par un .htpasswd. Il vous faut modifier les accès.
Le nom d'utilisateur (défaut) est : admin

 

 

Installation d’un serveur FTP :

Il existe de nombreux service FTP sous linux, je vais utiliser VSFTPD :

apt-get install vsftpd

 

On commence par préparer la configuration en créant le répertoire qui contiendra tous nos fichiers :

mkdir /etc/vsftpd

 

On va devoir modifier la configuration de VSFTPD. Pour cela, on effectue une sauvegarde. Cela permettra de revenir en arrière en cas de souci :

cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

 

Il nous faut maintenant installer la base de données. On utilise pour cela la commande :

apt-get install db4.8-util

 

On crée donc un fichier utilisateurs. Puis on va le convertir en base de données.

nano /etc/vsftpd/utilisateurs
utilisateur1
motdepasse1

utilisateur2
motdepasse2

 

Attention : le fichier utilisateurs doit impérativement se terminer par un saut de ligne pour que db4.8_load le lise et l’interprète correctement.

 

Il faut maintenant le convertir au format "db" :

db4.8_load -T -t hash -f /etc/vsftpd/utilisateurs /etc/vsftpd/login.db

On sécurise nos fichiers :

chmod 600 /etc/vsftpd/login.*

 

On va maintenant informer le module PAM d'utiliser notre base de données nouvellement créée. Pour cela :

nano /etc/vsftpd/vsftpd.pam
auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/login
cp /etc/vsftpd/vsftpd.pam /etc/pam.d/vsftpd

 

Modification de vsftpd.conf :

nano /etc/vsftpd.conf
[…]
anonymous_enable=NO
[…]
chroot_local_user=YES
[…]
secure_chroot_dir=/var/run/vsftpd
[…]
#rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
[…]
###################################
## Debian customization            
## (ou adoptons la Debian attitude)
###################################
##
# 'guest_enable' est très important: cela active les utilisateurs virtuels !
# 'guest_username' fait correspondre tous les utilisateurs virtuels à
# l'utilisateur 'virtual' que nous avons défini plus haut, et au home
# correspondant : '~virtual/'.
guest_enable=YES
guest_username=www-data

# On définit le nombre maximum de sessions à 200 (les nouveaux clients recevront
# un message du genre: "erreur : serveur occupé").
# On définit le nombre maximum de sessions par IP à 4
max_clients=200
max_per_ip=4

# Permet d'utiliser les configurations individuelles pour chaque utilisateur
user_config_dir=/etc/vsftpd/vsftpd_user_conf

 

On va maintenant chrooter nos utilisateurs dans leur répertoire respectif. Pour cela, on crée le répertoire qui sera utilisé pour contenir nos différents fichiers par utilisateur. Et on crée le fichier pour chaque utilisateur dans notre base de données.

mkdir /etc/vsftpd/vsftpd_user_conf/

 

Puis on crée le fichier /etc/vsftpd/vsftpd_user_conf/utilisateur1 :

nano /etc/vsftpd/vsftpd_user_conf/utilisateur1

 

Et on y ajoute :

anon_world_readable_only=NO
local_root=/var/www
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

On enregistre et on ferme.

On redémarre notre service FTP :

/etc/init.d/vsftpd restart

 

Pour plus de détails :

http://doc.ubuntu-fr.org/vsftpd
https://www.digitalocean.com/community/tutorials/how-to-configure-vsftpd-to-use-ssl-tls-on-an-ubuntu-vps

 

 

Installation de webadmin :

Webmin est une interface Web pour l'administration de système Unix.

On va éditez le fichier /etc/apt/sources.list sur votre système et ajoutez les lignes :

nano /etc/apt/sources.list
deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib

Vous devez également récupérer et installer la clé GPG avec laquelle le référentiel est signé, avec les commandes :

cd /root
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc

 

Vous allez maintenant être en mesure d'installer webmin avec les commandes :

apt-get update
apt-get install webmin

 

Votre webmin est maintenant accessible à l'adresse suivante : https://VOTRE_SERVEUR:10000/

 

La doc : http://doc.ubuntu-fr.org/webmin/

 

 

Installation de composer :

Composer permet d'installer des bibliothèques par lignes de commandes.
Exemple : L’installation de Symfony 2 :)

On va d’abord vérifier si « curl » est déjà installé sur votre serveur (Test inutile sous un VPS fraîchement installé) :

dpkg -l | grep -i curl

 

Si rien ne se passe, c’est que « curl » n’est pas installé !
Procédons à son installation :p :

sudo apt-get install curl
curl -sS https://getcomposer.org/installer | php

 

Ce qui devrait vous afficher ça :

#!/usr/bin/env php
All settings correct for using Composer
Downloading...
Composer successfully installed to: //composer.phar
Use it: php composer.phar

Puis exécuter le déplacement du fichier :

sudo mv composer.phar /usr/local/bin/composer

 

 

Installation d’Xdebug (PHP) :

Installation de Xdebug :

Puis exécuter le déplacement du fichier :

apt-get install make php-pearpecl install xdebug

Ajouter cette ligne à la fin de /etc/php5/apache2/php.ini pour l'activer :

nano /etc/php5/apache2/php.inizend_extension=/usr/lib/php5/20100525/xdebug.so

 

 

Installation d'un serveur mail :

Pour la configuration du serveur mail :

apt-get install telnet

https://wiki.debian.org/Postfix/
http://www.clamav.net/index.html
http://spamassassin.apache.org/

 

 

Liaison de votre nom de domaine avec votre VPS :

Manipulation à risque !!! [Utilisateur averti]
Pensez à faire une sauvegarde/export de vos redirections/Zone DNS...

C’est super simple en plus ^^

  1. Connectez-vous sur votre espace client
  2. Récupérez/copiez l’adresse IPv4 (et l’IPv6…) de votre serveur (dédié, VPS, Cloud, ect…)
  3. Puis dirigez-vous vers le service de votre nom de domaine
  4. Accédez aux paramètres de redirection/Zone DNS
  5. 2 solutions !
    • 1°/ Chercher votre nom de domaine avec l’adresse IP de votre ancien serveur et remplacer la par celle de votre tout nouveau serveur VPS.
    • 2°/ Créer une nouvelle redirection de type A (pour les IPv4) ou/et de type AAAA (pour les IPv6)
  6. La redirection peut avoir comme valeur votre nom de domaine mais aussi des sous-domaines… après je vous laisse faire le mariage entre apache 2 et les redirections URL, ...expreg…. À vous de voir ^^ :D

 

 

Petite parenthèse pour les développeurs travaillant sous symfony 2 :

Rien d'extraordinaire...

On va installer (pour ceux utilisant le système de cache APC) le paquet PHP-APC :

sudo apt-get install php-apc

 

Git et Java selon vos besoins...

apt-get install git-core
aptitude install default-jre

 

Ceux qui veulent repartir à zéro, je vous propose de vous placer dans le répertoire /var/www (par défaut) et créer un nouveau dossier que je nomme nom_projet

cd /var/www
sudo mkdir nom_projet

Puis, nous allons installer notre toute nouvelle version :

composer create-project symfony/framework-standard-edition nom_projet/ "2.5.*"

 

Rendez-vous sur la page de téléchargement de symfony pour connaitre la dernière version stable disponible si besoin...

 

Puis éditer le fichier « php.ini » afin que notre application fonctionne sans problème...

sudo nano /etc/php5/apache2/php.ini

 

Les directives PHP doivent être à off / 0

register_globals
​short_open_tag​
magic_quotes_gpc
session.auto_start

 

De plus, symfony a besoin de connaitre votre décalage horaire ! Appliquez votre valeur au fichier « php.ini » :

date.timezone = Europe/Paris

 

N'oubliez pas de donner tous les droits nécessaires aux dossiers app/logs et app/cache avec la commande chmod 777 !
SI vous avez des erreurs liées aux droits en écriture, consultez cet article lié au problème d'écriture des dossiers app/cache et app/logs.

Et pour finir, vérifiez si tout va bien avec cette commande :

php app/check.php

 

Quelques liens utiles lors d'une mise en prod :

Déployer une application Symfony2
Pré-requis au bon fonctionnement de Symfony2
Symfony2 checklist de déploiement

 

 

Installation de PHP-ZIP :

apt-get install zip bzip2

 

 

 

 

Les commandes utiles

Et oui ! Parce qu'on n'est pas des machines à mémoire nous ^^
On ne retient pas tout du premier coup !

 

Pour symfony :

Vider les répertoires de logs et cache (1er méthode brutal & 2ème méthode douce) :

rm -rf app/logs/*
rm -rf app/cache/*
php app/console cache:clear

 

Pour exporter les ressources en environnement de prod :

php app/console assetic:dump --env=prod --no-debug

 

Pour linux :

Mettre à jour toutes les dépendances :

sudo apt-get update
sudo apt-get upgrade

 

Résoudre les problèmes de dépendances

apt-get install –f

 

Cette commande permettra d'éliminer l'emballage du paquet et les autres packages dépendants qui ne sont plus nécessaires :

sudo apt-get remove --auto-remove <package>

 

Supprimer vos fichiers locaux / config :

sudo apt-get purge --auto-remove <package>

 

Supprimer simplement un paquet :

sudo apt-get remove --purge <package>
sudo apt-get autoremove
sudo apt-get autoclean
 

Supprimer un dossier ainsi que ses dépendances (sous-dossier) [-rf] :

rm -rf <directory>
 

Déplacer un fichier et le renommer :

sudo mv fichier.txt /var/www/nom_projet/fichier.pdf

 

Résoudre les problèmes de dépendances

sudo apt-get install –f

 

Configurer/Re-configurer un paquet déjà installé :

dpkg-reconfigure <package>

 

Pour mettre à jour ses dépendances (Il faut être dans le dossier parent de votre application muni du fichier composer.json) :

composer update

 

 

 

Bon….il se fait tard ! Non ? Bande de g33k ^^ Que la force soit avec vous alors !
En espérant que ce tutoriel puisse répondre et vous donner une meilleure approche concernant l’installation de service sur un serveur, je vous laisse peaufiner, bidouiller, COMPRENDRE et surtout vous éclater dans vos paramétrages :)