Ce document vous guide durant l'installation d'un serveur web PHP et Node.JS sur l'OS Ubuntu 14.04.
Dependencies:
- Apache2 >= 2.4.7
- PHP5-Cli >= 5.5.9
- PHP5-FPM >= 5.5.9
- Mysql >= 5.5.43
- Node (with Nvm) >= 0.12.7
- Composer
- Gulp
Installation et activation apache2-mpm-event
sudo apt-get update
sudo apt-get install apache2-mpm-event
Tester l'installation de Apache avec la commande:
sudo service apache2 status
Si le service est en route vous devriez obtenir "apache2 is running" sinon entrer la commande suivante:
sudo service apache2 start
Pour utiliser PHP5-FPM avec Apache, libapache2-mod-fastcgi
doit être installer. Néanmoins, il est important de mettre à jour les sources apt
car ce module n'est pas disponible par défaut dans les paquets d'Ubuntu.
sudo nano /etc/apt/sources.list
Ajouter les lignes suivantes à la fin du fichier:
deb http://us.archive.ubuntu.com/ubuntu/ trusty multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ trusty multiverse
deb http://us.archive.ubuntu.com/ubuntu/ trusty-updates multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-updates multiverse
Fermer et sauvegarder le fichier (CTRL + X puis O (ou Y))
Installer ensuite libapache2-mod-fastcgi
sudo apt-get update
sudo apt-get install libapache2-mod-fastcgi
Installation de PHP5-FPM avec la commande suivante:
sudo apt-get install php5-fpm
Et l'activer au niveau de apache2:
sudo nano /etc/apache2/conf-available/php5-fpm.conf
puis entrer les lignes suivantes:
<IfModule mod_fastcgi.c>
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>
Sauvegarder et quitter l'éditeur.
Il faut maintenant activer les nouveaux module et la configuration d'apache:
sudo a2enmod actions fastcgi alias
sudo a2enconf php5-fpm
sudo service restart
Php5-cli permet d'utiliser php à travers la ligne de commande pour l'installer entrer les lignes suivantes:
sudo apt-get install php5-cli
php -v # doit afficher la version de php installé (ex: PHP 5.5.9)
sudo apt-get update
sudo apt-get install php5-mcrypt
Activer mcrypt
sudo php5enmod mcrypt
sudo service apache2 restart
Pour installer le mod_rewrite pour apache lancer les commande suivante:
sudo a2enmod rewrite
sudo service apache2 restart
sudo apt-get update
sudo apt-get install php5-mysql php5-curl
Pour installer composer globalement entrer les commandes suivantes:
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/
Création d'un alias afin d'appeller composer
directement et non composer.phar
alias composer='/usr/local/bin/composer.phar'
Pour installer git entrer les commandes suivantes
sudo apt-get update
sudo apt-get install git
Il est nécessaire de créer un dossier dédié pour les futurs projets qui seront hébergés par le serveur.
mkdir /home/administrateur/Sites
# Création du dossier pour un projet
mkdir ~/Sites/nom-projet
# Permission pour éviter 403 access denied
chmod 755 ~/Sites/nom-projet
Par défault apache affiche une page d'accueil mais ne pointe pas vers un des projets que l'on désire déployer. Pour cela éditer le fichier suivant:
sudo nano /etc/apache2/sites-available/nom-project.dev.conf
Renseigner les différentes informations dans le fichier
<VirtualHost *:80>
ServerName nom-project.dev
ServerAlias nom-project.*.xip.io
<Directory /home/administrateur/Sites/nom-project/>
Options Indexes FollowSymLinks MultiViews
Require all granted
AllowOverride All
</Directory>
DocumentRoot /home/administrateur/Sites/nom-project/
</VirtualHost>
Activer enfin la configuration
# Enable configuration
sudo a2ensite nom-projet.dev.conf
sudo service apache2 reload
# Disable configuration
sudo a2dissite nom-projet.dev.conf
sudo service apache2 reload
Il vous sera ainsi possible d'accéder à l'application à l'aide des addresses suivantes:
- nom-project.dev (en ayant modifier localement le fichier hosts pointant vers l'adresse IP du serveur web)
- nom-project.IP-DU-SERVEUR-WEB.xip.io
Pour installer MySQL entrer les commandes suivantes (choisir un password lors de l'installation):
sudo apt-get update
sudo apt-get install mysql-server
Démarrer le service
sudo service mysql start
Configuration de MySQL pour accès à distance
sudo nano /etc/mysql/my.cnf
Modifier la ligne suivante :
bind-address=SERVER-IP-ADDRESS
Se connecter à MySQL en local sur le serveur et entrer les lignes suivantes:
mysql -u root -p #entrer le passord
mysql > GRANT ALL PRIVILEGES ON *.* TO 'root'@'IP-REMOTE-DESKTOP' IDENTIFIED BY 'root-password';
mysql > FLUSH PRIVILEGES;
Il est désormais possible d'utiliser un client tel que Toad pour accèder à la base de donnée à distance avec le poste distant ajouté dans les privilèges.
Installation de curl et build-essential
sudo apt-get update
sudo apt-get install curl build-essential libssl-dev
Installation de NVM
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
Configuration de NVM avec le bash
source ~/.profile
Installation d'une version de node
nvm install 0.12.7
nvm use 0.12.7
Pour installer gulp globalement entrer les commandes suivantes
npm install -g gulp
# locade in ~/.nvm/versions/node/0.12.7/lib/node_modules/gulp
npm link gulp
Pour installer bower globalement entrer les commandes suivantes
npm install -g bower
# locate in ~/.nvm/versions/node/0.12.7/lib/node_modules/bower
npm link bower
Laravel peut poser quelques problèmes lors du premier déploiement voici quelques pistes.
403 Forbidden
Verifier dans le VirtualHost que le Directory
and DocumentRoot
pointent bien vers le dossier public
Page blanche
Si une page blanche apparait la première fois que vous tentez d'accèder à l'application vérifier les droits sur le dossier storage
# Group Writable (Group, User Writable)
$ sudo chmod -R gu+w app/storage
# World-writable (Group, User, Other Writable)
$ sudo chmod -R guo+w app/storage