Source: unixmen.com
Cet article est surtout là pour me servir de pense-bête en cas de réinstallation d’un serveur, mais sait-on jamais, il peut être utile à d’autres 🙂
Le but est de mettre en place un serveur web qui soit le plus léger possible ; pour ce faire, j’utilise Linux et sa distribution Debian (8 Jessie pour le tutoriel ci-dessous, mais facilement adaptable pour d’autres version), Nginx en remplacement d’Apache, PHP 7 en FPM et MariaDB en remplacement de MySQL.
La première étape consiste en la modification de
/etc/apt/sources.list
auquel il faut ajouter les repositories nécessaires pour Nginx, MariaDB et Dotdeb pour PHP7 :
# Nginx
deb http://nginx.org/packages/debian/ jessie nginx
deb-src http://nginx.org/packages/debian/ jessie nginx
# MariaDB
deb [arch=amd64,i386] http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.1/debian jessie main
deb-src http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.1/debian jessie main
# Dotdeb
deb http://packages.dotdeb.org jessie all
Ajout des clés nécessaires à l’authentification des repositories :
wget https://www.dotdeb.org/dotdeb.gpg
apt-key add dotdeb.gpg
wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
apt-get install software-properties-common
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
Mise à jour des listes
apt-get update
Installation des paquets
apt-get install nginx
apt-get install php7.0-fpm
apt-get install php7.0-mysql
apt-get install mariadb-server
Si on n’installe que php7.0-fpm sans php7.0-mysql, l’extension mysqli ne sera pas installée et on ne pourra pas se servir de phpMyAdmin par exemple.
J’aime bien mettre mes sites dans /var/www et utiliser des dossiers sites-available et sites-enabled pour Nginx, ainsi je modifie
/etc/nginx/nginx.conf
de la façon suivante :
user www-data;
worker_processes 4;
pid /run/nginx.pid;
events {
worker_connections 8192;
multi_accept on;
use epoll;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 4;
types_hash_max_size 2048;
server_tokens off;
client_max_body_size 20m;
client_body_buffer_size 128k;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_static on;
gzip_comp_level 9;
gzip_min_length 1400;
gzip_types text/plain text/css image/png image/gif image/jpeg application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
gzip_http_version 1.1;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
##
# nginx-naxsi config
##
# Uncomment it if you installed nginx-naxsi
##
#include /etc/nginx/naxsi_core.rules;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Ensuite, dans /etc/nginx, on crée les deux dossiers sites-available et sites-enabled. On crée le fichier :
/etc/nginx/sites-available/default
avec
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www;
index index.html index.htm index.php;
# Make site accessible from http://localhost/
server_name localhost;
# PHP
location ~ \.php$ {
root /var/www;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
}
}
Puis on active la configuration par défaut créée ci-dessus en faisant un lien symbolique :
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
On recharge la configuration de Nginx et tout doit fonctionner :
nginx -s reload
Chaque nouveau site devra être ajouté dans sites-available avec un lien symbolique dans enabled et un server_name correspondant au nom du site web, par exemple :
server {
listen 80;
server_name www.test.com;
return 301 http://test.com$request_uri;
}
server {
listen 80;
server_name test.com;
root /var/www/test.com;
location / {
root /var/www/test.com;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
access_log /var/log/nginx/test.com.access;
error_log /var/log/nginx/test.com.error error;
location ~ \.php$ {
root /var/www/test.com;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www/test.com$fastcgi_script_name;
}
}
}
Ici, on crée le site test.com avec www.test.com redirigeant vers test.com, le site se trouvant dans /var/www/test.com.