
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.