Comment installer Laravel avec un serveur Web Nginx sur Ubuntu 14.04

introduction

Laravel est un framework PHP moderne et open source pour les développeurs Web. Son objectif est de fournir aux développeurs un moyen simple et élégant d’exécuter rapidement une application Web entièrement fonctionnelle.

Dans ce guide, nous expliquerons comment installer Laravel sur Ubuntu 14.04. Nous utiliserons Nginx comme serveur Web et travaillerons avec la version la plus récente de Laravel au moment de la rédaction de cet article, la version 4.2.

Installer les composants du backend

La première chose à faire pour démarrer avec Laravel est d’installer la pile qui la supportera. Nous pouvons le faire via les référentiels par défaut d’Ubuntu.

Premièrement, nous devons mettre à jour notre index de paquets local pour nous assurer de disposer d’une nouvelle liste des paquets disponibles. Ensuite, nous pouvons installer les composants nécessaires:

sudo apt-get update
sudo apt-get install nginx php5-fpm php5-cli php5-mcrypt git

Cela installera Nginx en tant que serveur Web avec les outils PHP nécessaires pour exécuter le code Laravel. Nous installons égalementgit car l'outilcomposer, le gestionnaire de dépendances pour PHP que nous utiliserons pour installer Laravel, l'utilisera pour extraire les paquets.

Modifier la configuration de PHP

Maintenant que nos composants sont installés, nous pouvons commencer à les configurer. Nous allons commencer par PHP, qui est assez simple.

La première chose à faire est d'ouvrir le fichier de configuration principal de PHP pour le processeur PHP-fpm utilisé par Nginx. Ouvrez-le avec les privilèges sudo dans votre éditeur de texte:

sudo nano /etc/php5/fpm/php.ini

Nous n'avons besoin que de modifier une valeur dans ce fichier. Recherchez le paramètrecgi.fix_pathinfo. Ce sera commenté et mis à "1". Nous devons décommenter cela et le régler sur «0»:

cgi.fix_pathinfo=0

Cela indique à PHP de ne pas essayer d'exécuter un script nommé similaire si le nom de fichier demandé est introuvable. Ceci est très important car autoriser ce type de comportement pourrait permettre à un attaquant de créer une requête spécialement conçue dans le but d’encourager PHP à exécuter du code qu’il ne devrait pas exécuter.

Lorsque vous avez terminé, enregistrez et fermez le fichier.

La dernière partie de l'administration PHP que nous devons faire est d'activer explicitement l'extension MCrypt, dont dépend Laravel. Nous pouvons le faire en utilisant la commandephp5enmod, qui nous permet d'activer facilement des modules optionnels:

sudo php5enmod mcrypt

Maintenant, nous pouvons redémarrer le servicephp5-fpm afin d’implémenter les modifications que nous avons apportées:

sudo service php5-fpm restart

Notre PHP est maintenant complètement configuré et nous pouvons passer à autre chose.

Configurer Nginx et la racine Web

Le prochain élément que nous devrions aborder est le serveur Web. Cela impliquera en réalité deux étapes distinctes.

La première étape consiste à configurer la racine du document et la structure de répertoires que nous utiliserons pour contenir les fichiers Laravel. Nous allons placer nos fichiers dans un répertoire appelé/var/www/laravel.

À ce stade, seul le niveau supérieur de ce chemin (/var) est créé. Nous pouvons créer le chemin complet en une seule étape en passant le drapeau-p à notre commandemkdir. Cela indique à l'utilitaire de créer les éléments de chemin parent nécessaires pour construire un chemin donné:

sudo mkdir -p /var/www/laravel

Maintenant que nous avons un emplacement réservé pour les composants Laravel, nous pouvons passer à l’édition des blocs du serveur Nginx.

Ouvrez le fichier de configuration du bloc de serveur par défaut avec les privilèges sudo:

sudo nano /etc/nginx/sites-available/default

Lors de l’installation, ce fichier contiendra plusieurs commentaires explicatifs, mais la structure de base ressemblera à ceci:

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /usr/share/nginx/html;
        index index.html index.htm;

        server_name localhost;

        location / {
                try_files $uri $uri/ =404;
        }
}

Cela fournit une bonne base pour les changements que nous allons faire.

La première chose à changer est l’emplacement de la racine du document. Laravel sera installé dans le répertoire/var/www/laravel que nous avons créé.

Cependant, les fichiers de base qui sont utilisés pour piloter l'application sont conservés dans un sous-répertoire au sein de ce appelépublic. C'est ici que nous allons définir notre racine de document. De plus, nous dirons à Nginx de servir tous les fichiersindex.php avant de rechercher leurs homologues HTML lors de la demande d'un emplacement de répertoire:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /var/www/laravel/public;
    index index.php index.html index.htm;

    server_name localhost;

    location / {
            try_files $uri $uri/ =404;
    }
}

Ensuite, nous devons définir la directiveserver_name pour référencer le nom de domaine réel de notre serveur. Si vous n’avez pas de nom de domaine, n’hésitez pas à utiliser l’adresse IP de votre serveur.

Nous devons également modifier la manière dont Nginx traitera les demandes. Cela se fait via la directivetry_files. Nous voulons qu'il essaie d'abord de traiter la demande sous forme de fichier. S'il ne parvient pas à trouver un fichier du nom correct, il doit tenter de servir le fichier d'index par défaut pour un répertoire correspondant à la demande. À défaut, il doit transmettre la requête au fichierindex.php en tant que paramètre de requête.

Les modifications décrites ci-dessus peuvent être implémentées comme ceci:

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /var/www/laravel/public;
        index index.php index.html index.htm;

        server_name server_domain_or_IP;

        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }
}

Enfin, nous devons créer un bloc qui gère l’exécution réelle de tous les fichiers PHP. Cela s'appliquera à tous les fichiers qui se terminent par.php. Il essaiera le fichier lui-même, puis essaiera de le transmettre comme paramètre au fichierindex.php.

Nous allons définir les directivesfastcgi_* pour que le chemin des requêtes soit correctement divisé pour l'exécution, et nous assurer que Nginx utilise le socket quephp5-fpm utilise pour la communication et que le fichierindex.php est utilisé comme index pour ces opérations.

Nous allons ensuite définir le paramètreSCRIPT_FILENAME afin que PHP puisse localiser correctement les fichiers demandés. Lorsque nous aurons terminé, le fichier complet devrait ressembler à ceci:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /var/www/laravel/public;
    index index.php index.html index.htm;

    server_name server_domain_or_IP;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Enregistrez et fermez le fichier lorsque vous avez terminé.

Comme nous avons modifié le fichier de bloc du serveurdefault, qui est déjà activé, nous devons simplement redémarrer Nginx pour que nos modifications de configuration soient prises en compte:

sudo service nginx restart

Créer un fichier d'échange (facultatif)

Avant d’installer Composer et Laravel, il peut être judicieux d’activer le swap sur votre serveur afin que la construction se termine correctement. Cela n'est généralement nécessaire que si vous travaillez sur un serveur sans beaucoup de mémoire (comme un droplet de 512 Mo).

L’espace de permutation permettra au système d’exploitation de déplacer temporairement les données de la mémoire sur le disque lorsque la quantité d’informations en mémoire dépasse l’espace physique disponible. Cela empêchera vos applications ou votre système de tomber en panne avec une exception de mémoire insuffisante (MOO) lors de tâches nécessitant beaucoup de mémoire.

Nous pouvons très facilement configurer un espace d'échange pour permettre à notre système d'exploitation de mélanger une partie de celui-ci sur le disque en cas de besoin. Comme mentionné ci-dessus, cela n'est probablement nécessaire que si vous avez moins de 1 Go de RAM disponible.

Tout d'abord, nous pouvons créer un fichier vide de 1 Go en tapant:

sudo fallocate -l 1G /swapfile

Nous pouvons le formater comme espace d'échange en tapant:

sudo mkswap /swapfile

Enfin, nous pouvons activer cet espace pour que le noyau commence à l'utiliser en tapant:

sudo swapon /swapfile

Le système n’utilisera cet espace que lors du prochain redémarrage, mais le serveur n’excédera probablement que la quantité de mémoire disponible au cours des processus de construction. Il ne devrait donc pas y avoir de problème.

Installer Composer et Laravel

Nous sommes enfin prêts à installer Composer et Laravel. Nous allons d'abord installer Composer. Nous utiliserons ensuite cet outil pour gérer l'installation de Laravel.

Déplacez-vous dans un répertoire où vous avez un accès en écriture (comme votre répertoire personnel), puis téléchargez et exécutez le script du programme d'installation à partir du projet Composer:

cd ~
curl -sS https://getcomposer.org/installer | php

Cela créera un fichier appelécomposer.phar dans votre répertoire personnel. Ceci est une archive PHP, et il peut être exécuté à partir de la ligne de commande.

Nous voulons cependant l’installer dans un endroit accessible globalement. De plus, nous voulons changer le nom encomposer (sans l'extension de fichier). Nous pouvons le faire en une étape en tapant:

sudo mv composer.phar /usr/local/bin/composer

Maintenant que Composer est installé, nous pouvons l’utiliser pour installer Laravel.

N'oubliez pas que nous voulons installer Laravel dans le répertoire/var/www/laravel. Pour installer la dernière version de Laravel, vous pouvez taper:

sudo composer create-project laravel/laravel /var/www/laravel

Au moment d'écrire ces lignes, la dernière version est la 4.2. Si des modifications ultérieures du projet empêchent la bonne exécution de cette procédure d'installation, vous pouvez forcer la version utilisée dans ce guide en tapant à la place:

sudo composer create-project laravel/laravel /var/www/laravel 4.2

Maintenant, les fichiers sont tous installés dans notre répertoire/var/www/laravel, mais ils appartiennent entièrement à notre compteroot. L’utilisateur Web a besoin de droits de propriété et d’autorisations partielles pour pouvoir diffuser correctement le contenu.

Nous pouvons attribuer la propriété de groupe de notre structure de répertoires Laravel au groupe Web en tapant:

sudo chown -R :www-data /var/www/laravel

Ensuite, nous pouvons modifier les autorisations du répertoire/var/www/laravel/app/storage pour autoriser les autorisations d'écriture du groupe Web. Cela est nécessaire pour que l'application fonctionne correctement:

sudo chmod -R 775 /var/www/laravel/app/storage

Laravel est maintenant complètement installé et prêt à fonctionner. Vous pouvez voir la page de destination par défaut en visitant le domaine ou l'adresse IP de votre serveur dans votre navigateur Web:

http://server_domain_or_IP

Laravel default landing page

Vous avez maintenant tout ce dont vous avez besoin pour commencer à créer des applications avec le framework Laravel.

Conclusion

Laravel devrait maintenant être opérationnel sur votre serveur. Laravel est un framework assez flexible qui comprend de nombreux outils pouvant vous aider à construire une application de manière structurée.

Pour apprendre à utiliser Laravel pour créer une application, consultez lesLaravel documentation.

Related