Blog d'un passionné du web (Symfony, Wordpress, HTML5, Sass, Gulp…)

Mon site freelance Développeur Symfony
Mon Facebook - Mon Twitter

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 »

20 septembre 2016


Previous Post

Next Post