Installer un VPS ovh sous ubuntu pour un projet php / Symfony 2
Cet article a pour but de lister les commandes et tâches à réaliser lors de l’installation d’un VPS (ubuntu 14.04) ovh. L’avantage des VPS n’est plus à démontrer, prix, liberté d’action … par contre en contrepartie il y a un petit travail d’installation. Il n’y a pas ou peu d’explication dans cet article, des informations plus détaillées peuvent être trouvées par exemple sur Digitalocean.
1. Initialisation du serveur
Votre VPS sous ubuntu 14.04 est installé et vous pouvez accéder à celui-ci en root via ssh.
Tout d’abord petite mise à jour :
sudo apt-get update
sudo apt-get upgrade
Sur tout les derniers VPS que j’ai installé j’ai eu l’erreur « perl: warning: Setting locale failed. ». Afin de corriger cela, ajoutez en fin de fichier LC_ALL= »en_US.UTF-8″ (source) :
sudo nano /etc/environment
Initialisation d’un nouvel utilisateur
Afin de se connecter avec un autre utilisateur que root … pour les détails voir cet article
adduser YOURNAME
Répondre aux questions … puis
gpasswd -a YOURNAME sudo
Créer une connexion SSH sécurisée
En local si vous n’avez pas déjà de clés SSH :
ssh-keygen
Puis faire la copie de la clé vers votre serveur (toujours en local) :
ssh-copy-id YOURNAME@YOUR_VPS-IP
Faire un test de connexion avec le nouveau user avant de fermer le premier terminal !
Empêcher la connexion en root, avec YOURNAME user mettre PermitRootLogin no (remplacez yes par no) :
sudo nano /etc/ssh/sshd_config
service ssh restart
2. Installation d’apache
sudo apt-get install apache2
3. Installation de Mysql
sudo apt-get install mysql-server
puis sécurisez l’installation :
sudo mysql_secure_installation
Répondre : N puis YYYYY
3. Installation de Php et des paquets utiles à Symfony 2
sudo apt-get install php5 php5-intl php5-mysql php-pear php5-mcrypt php5-curl php5-cli
sudo nano /etc/php5/apache2/php.ini -> mettre date.timezone = Europe/Paris
sudo service apache2 restart
EDIT 05/01/17:
Pour Ubuntu 16.04 il est possible d’installer php 5.6 et php 7 et de switcher de l’un à l’autre :
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.0 php5.6 php5.6-mysql php-gettext php5.6-mbstring php-xdebug libapache2-mod-php5.6 libapache2-mod-php7.0
Puis pour switcher de php 7 à php 5.6 (je vous épargne le sens inverse …):
sudo a2dismod php7.0 ; sudo a2enmod php5.6 ; sudo service apache2 restart
sudo update-alternatives --set php /usr/bin/php5.6
Pour la partie phpmyadmin notamment on peut installer php-mcrypt et pour symfony 2 gd, xml, intl (si vous êtes sur php5.6 …):
sudo apt-get install php5.6-mcrypt php5.6-gd php5.6-xml php5.6-intl
sudo phpenmod mcrypt
4. Installation de phpmyadmin
Cette étape est bien évidement optionnelle en fonction de vos besoins. Pour l’article détaillé c’est ici . En plus de ce qui est détaillé dans cet article je vous conseille en plus du htaccess de changer l’url d’accès pour plus de sécurité:
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Permière ligne changez l’alias : Alias /ma-nouvelle-url-phpmyadmin /usr/share/phpmyadmin (mettez ce que vous voulez).
Vous pouvez dès à présent créer votre user / mot de passe et base de donnée qui sera utilisée pour votre projet Symfony.
5. Installation de Git
Si votre projet est sous Git …
sudo apt-get install git
ssh-keygen
Copiez la clé ssh via cat ~/.ssh/id_rsa.pub -> puis sélection et ctrl+maj+c . Insérer votre nouvelle clé (Github, bitbucket …)
Puis récupérez votre projet. Dans un dossier cible défini :
git init
git remote add origin git@bitbucket.org:your-bucket.git
git pull origin prod
À la différence de git clone on ne récupère que les infos de la branche qui nous intéresse (la prod par exemple).
6. Installation de Composer et des vendors
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
composer install --no-dev --optimize-autoloader
php app/console ca:cl --env=prod
7. Droits pour le cache, assets et base données
Pour Symfony 2.8 :
sudo apt-get install acl
HTTPDUSER=`ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1`
sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs
sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs
Installation des assets
php app/console assets:install --symlink --env=prod
Pour mes projets Symfony 2 j’utilise Gulp donc à vous de voir si vous utilisez assetic …
Création du schéma de votre base de données
php app/console doc:sch:upd --force --env=prod
Puis importez éventuellement vos données.
8. Installation du vhost
sudo nano /etc/apache2/sites-available/myvhost.conf
#paste your vhost
sudo a2enmod rewrite
sudo a2ensite myvhost.conf
Voici un exemple de vhost pour Symfony 2 (utilisant https voir ci-dessous)
9. Installer SSL (HTTPS)
Lire cet article (encours de rédaction)…
10. Créer des backups quotidien de vos données
sudo apt-get install automysqlbackup
sudo nano /etc/default/automysqlbackup
Mettez le nom de vos bases de données que vous voulez sauvegarder : DBNAMES= »myporjet1db myprojet2db »