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-eventTester l'installation de Apache avec la commande:
sudo service apache2 statusSi le service est en route vous devriez obtenir "apache2 is running" sinon entrer la commande suivante:
sudo service apache2 startPour 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.listAjouter 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 multiverseFermer 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-fastcgiInstallation de PHP5-FPM avec la commande suivante:
sudo apt-get install php5-fpmEt l'activer au niveau de apache2:
sudo nano /etc/apache2/conf-available/php5-fpm.confpuis 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 restartPhp5-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-mcryptActiver mcrypt
sudo php5enmod mcrypt
sudo service apache2 restartPour installer le mod_rewrite pour apache lancer les commande suivante:
sudo a2enmod rewrite
sudo service apache2 restartsudo 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 gitIl 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-projetPar 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.confRenseigner 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 reloadIl 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-serverDémarrer le service
sudo service mysql startConfiguration de MySQL pour accès à distance
sudo nano /etc/mysql/my.cnfModifier 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-devInstallation de NVM
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bashConfiguration de NVM avec le bash
source ~/.profileInstallation d'une version de node
nvm install 0.12.7
nvm use 0.12.7Pour 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 gulpPour 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 bowerLaravel 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