Nginx dépasse rapidement Apache en tant que serveur Web préféré. Pour les applications Web construites dans des langages comme Rails et Python, c'est pratiquement omniprésent, mais c'est un peu plus lent à comprendre dans le monde PHP. Cela s'explique en partie par la facilité avec laquelle PHP et Apache vont ensemble. Cependant, PHP et Nginx peuvent coopérer presque aussi facilement, et avec la sortie de PHP 7, combiner les deux peut être une option assez rapide.
Les forfaits
Tout d'abord. Mettez à jour Ubuntu et obtenez les packages Nginx et PHP.
# sudo apt-get update && sudo apt-get -y upgrade # sudo apt-get -y install nginx php7.0 php7.0-fpm
Lorsque l'installation est terminée, les packages doivent tous être en place et en cours d'exécution. Pour vous assurer que c'est le cas, vous pouvez vérifier que Nginx et les services PHP-FPM fonctionnent dans Systemd.
# sudo systemctl status nginx # sudo systemctl status php7.0-fpm
Si Systemd confirme que les deux services sont en cours d'exécution, le serveur devrait être opérationnel et vous devriez pouvoir voir la page d'accueil par défaut de Nginx en naviguant vers localhost
dans le navigateur.
Configuration
Bien sûr, ce n'est pas du tout prêt à héberger quoi que ce soit. Une configuration est nécessaire pour pointer Nginx vers un contenu réel et améliorer la sécurité. Le répertoire racine des fichiers de configuration Nginx se trouve dans /etc/nginx
. Heureusement, il existe déjà des valeurs par défaut d'Ubuntu qui facilitent grandement le processus de configuration.
Nginx.conf
Le fichier de configuration principal pour Nginx est nginx.conf
. Ouvrez-le dans l'éditeur de texte de votre choix. Il nécessitera des autorisations root, donc un éditeur de texte comme Vim sera probablement le meilleur. La configuration par défaut est généralement correcte. Il y a évidemment des choses qui peuvent être faites pour améliorer la vitesse et la sécurité du système, mais la plupart de cela dépasse le cadre de ce didacticiel de base. Si vous souhaitez améliorer les performances, les options Gzip commentées aideront à la compression et peuvent accélérer les choses. Du côté de la sécurité, l'ajout des trois lignes suivantes aidera à prévenir les activités malveillantes.
add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block";
Configuration du site
Une fois les lignes ajoutées, enregistrez et quittez. Il y a deux dossiers dans la racine Nginx, sites-available
et sites-enabled
. sites-available
stocke les configurations du site. sites-enabled
contient des liens symboliques vers les fichiers de configuration dans sites-available
. De cette façon, activer et désactiver des sites est aussi simple que créer et supprimer des liens symboliques.
À l'aide de votre éditeur de texte, créez un fichier dans /etc/nginx/sites-available/yoursite
. Ce fichier contiendra toute configuration spécifique au site pour votre nouveau site Web PHP 7. L'exemple suivant contient une répartition dans les commentaires de ce que fait chaque ligne. C'est une configuration assez basique, mais elle fera le travail.
server { #Nginx should listen on port 80 for requests to yoursite.com listen 80; server_name yoursite.com; #Create access and error logs in /var/log/nginx access_log /var/log/nginx/yoursite.access_log main; error_log /var/log/nginx/yoursite.error_log info; #Nginx should look in /var/www/yoursite for your website root /var/www/yoursite/; #The homepage of your website is a file called index.php index index.php; #Specifies that Nginx is looking for .php files location ~ \.php$ { #If a file isn’t found, 404 try_files $uri =404; #Include Nginx’s fastcgi configuration include /etc/nginx/fastcgi.conf; #Look for the FastCGI Process Manager at this location fastcgi_pass unix:/run/php/php7.0-fpm.sock; } }
Lorsque vous avez créé ce fichier, enregistrez-le et déplacez-vous dans le sites-enabled
annuaire. À partir de là, créez le lien symbolique vers le fichier que vous venez de créer.
# cd /etc/nginx/sites-enabled # sudo ln -s /etc/nginx/sites-available/yoursite
Sécurité PHP.ini
La sécurité est une cible mouvante et il est impossible de garder une longueur d'avance sur toutes les menaces possibles, mais c'est toujours une bonne idée de verrouiller autant que possible toute nouvelle installation de serveur. Il y a quelques ajustements simples qui peuvent être apportés au php.ini
fichier de configuration qui aidera à sécuriser PHP. Avec votre éditeur de texte, ouvrez /etc/php/7.0/fpm/php.ini
. C'est un énorme dossier. Encore une fois, Vim ou quelque chose avec une fonction de recherche est probablement le meilleur.
Trouvez d'abord disable_functions
et ajoutez phpinfo,system,mail,exec
à la fin de la chaîne de fonctions qui sont déjà là. Ensuite, recherchez file_uploads
et réglez-le sur Off
. Ensuite, recherchez sql.safe_mode
et activez-le On
. Enfin, trouvez allow_url_fopen
et réglez-le sur Off
. Avant de fermer le fichier, ajoutez une ligne supplémentaire à la fin.
register_globals = Off
Lorsque tout est fait, enregistrez et fermez. Redémarrez le serveur et il devrait être prêt à fonctionner.
# sudo systemctl restart php7.0-fpm # sudo systemctl restart nginx
Où aller ensuite
En l'état, le serveur Ubuntu devrait pouvoir exécuter la plupart des sites Web PHP. Tous les fichiers PHP placés dans /var/www/yoursite
sera géré par le serveur. Il cherchera le index.php
déposer d'abord et le site Web peut se ramifier à partir de là. Bien sûr, il y a beaucoup plus à faire pour configurer PHP et Nginx pour la vitesse, la sécurité et à peu près n'importe quelle situation particulière, mais vous avez maintenant un bon point de départ.