
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/environmentInitialisation 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 restart2. Installation d’apache
sudo apt-get install apache23. Installation de Mysql
sudo apt-get install mysql-serverpuis sécurisez l’installation :
sudo mysql_secure_installationRé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 restartEDIT 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.confPermiè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-keygenCopiez 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=prod7. 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/logsInstallation des assets
php app/console assets:install --symlink --env=prodPour 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=prodPuis 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.confVoici 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/automysqlbackupMettez le nom de vos bases de données que vous voulez sauvegarder : DBNAMES= »myporjet1db myprojet2db »




