Nginx (prononcé « engine x »)est un logiciel de serveur Web open source conçu avec une concurrence élevée à l’esprit, qui peut être utilisé comme serveur HTTP/HTTPS, serveur proxy inverse, serveur proxy de messagerie, équilibreur de charge logicielle, terminateur TLS, serveur de mise en cache.
C’est un logiciel extrêmement modulaire. Même certains des éléments apparemment « intégrés » du logiciel, tels que GZIP ou SSL, sont en fait construits en tant que modules qui peuvent être activés et désactivés pendant la construction.
Il a des modules de base (natifs)et des modules tiers (externes) créés par la communauté. À l’heure actuelle, il existe plus d’une centaine de modules tiers que nous pouvons utiliser.
Écrit en langage C, c’est un logiciel très rapide et léger.
L’installation de Nginx à partir du code source est relativement « facile » – téléchargez la dernière version du code source Nginx, configurez-la, construisez-la et installez-la.
Vous devrez choisir de télécharger la version principale ou stable, mais leur construction est exactement la même chose.
Dans ce tutoriel, nous allons construire Nginx avec tous les modules disponibles dans la version open source de Nginx et nous utiliserons la version principale qui est à 1.15.7 au moment de la rédaction de cet article. Mettez à jour les numéros de version lorsque des versions plus récentes deviennent disponibles.
Version stable et version principale
Nginx Open Source est disponible en deux versions:
- Mainline – Comprend les dernières fonctionnalités et corrections de bugs et est toujours à jour. Il est fiable, mais il peut inclure des modules expérimentaux, et il peut également avoir un certain nombre de nouveaux bogues.
- Stable – N’inclut pas toutes les dernières fonctionnalités, mais a des corrections de bogues critiques qui sont toujours rétroportées vers la version principale.
Modules principaux et modules tiers
Nginx a deux types de modules que vous pouvez utiliser: modules de base et modules tiers.
Les modules de base sont construits par les développeurs Nginx de base et font partie du logiciel lui-même.
Les modules tiers sont construits par la communauté et vous pouvez les utiliser pour étendre les fonctionnalités de Nginx. Il y a beaucoup de modules tiers utiles, les plus célèbres d’entre eux sont: PageSpeed, ModSecurity, RTMP, Lua
Modules statiques et modules dynamiques
Les modules statiques existent dans Nginx dès la première version. Les modules dynamiques ont été introduits avec Nginx 1.9.11+ en février 2016.
Avec les modules statiques, l’ensemble des modules qui constituent un binaire Nginx est corrigé au moment de la compilation par le script. Utilisation ou syntaxe des modules statiques. ./configure–with-foo_bar_module–add-module=PATH
Pour compiler le module de base (standard) comme dynamique, nous ajoutons , par exemple . =dynamic–with-http_image_filter_module=dynamic
Pour compiler un module tiers en tant que dynamique, nous utilisons la syntaxe, puis nous les chargeons à l’aide de directive dans le contexte global du fichier. –add-dynamic-module=/path/to/moduleload_modulenginx.conf
Configuration requise pour la création de Nginx à partir de la source
En comparaison avec d’autres logiciels UNIX/Linux, Nginx est assez léger et n’a pas beaucoup de dépendances de bibliothèque. La configuration de build par défaut ne dépend que de 3 bibliothèques à installer : OpenSSL/LibreSSL/BoringSSL, Zlib et PCRE.
- Exigences obligatoires :
- Collection du compilateur GNU (GCC)
- Version de la bibliothèque OpenSSL entre 1.0.2 – 1.1.1 ou bibliothèque LibreSSL ou bibliothèque BoringSSL
- Version de la bibliothèque Zlib entre 1.1.3 – 1.2.11
- Version de la bibliothèque PCRE entre 4.4 et 8.42
- Exigences facultatives :
REMARQUE:Nginx peut également être compilé avec les bibliothèques cryptographiques LibreSSL et BoringSSL au lieu d’OpenSSL .
Exigences
- Un serveur exécutant le système CentOS 7.
- Un utilisateur non root avec des privilèges sudo.
Étapes initiales
Vérifiez la version CentOS:
cat/etc/centos-release # CentOS Linux release 7.6.1810 (Core)
Configurez le fuseau horaire :
timedatectl list-timezones sudo timedatectl set-timezone 'Region/City'
Mettez à jour les packages de votre système d’exploitation CentOS:
sudo yum update -y
Installez les paquets vim, curl, wget et tree :
sudo yum install -y vim curl wget tree
Construire Nginx à partir de la source
Nginx est un programme écrit en C, vous devrez donc d’abord installer un compilateur d’outils:
sudo yum groupinstall -y 'Development Tools'
Téléchargez la dernière version principale du code source nginx et extrayez-la. Le code source nginx est distribué sous forme d’archive compressée (tarball gzippé), comme la plupart des logiciels Unix et Linux:
wget https://nginx.org/download/nginx-1.15.7.tar.gz && tar zxvf nginx-1.15.7.tar.gz
Téléchargez le code source des dépendances Nginx obligatoires et extrayez-les:
# PCRE version 8.42 wget https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz && tar xzvf pcre-8.42.tar.gz # zlib version 1.2.11 wget https://www.zlib.net/zlib-1.2.11.tar.gz && tar xzvf zlib-1.2.11.tar.gz # OpenSSL version 1.1.1a wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz && tar xzvf openssl-1.1.1a.tar.gz
Installez les dépendances Nginx facultatives:
sudo yum install -y perl perl-devel perl-ExtUtils-Embed libxslt libxslt-devel libxml2 libxml2-devel gd gd-devel GeoIP GeoIP-devel
Nettoyez tous les fichiers. Nous n’en avons plus besoin : .tar.gz
rm -rf *.tar.gz
Entrez dans le répertoire source Nginx:
cd ~/nginx-1.15.7
Pour une bonne mesure liste répertoires et fichiers qui composent le code source Nginx avec utilitaire: tree
tree -L 2 .
Copiez la page de manuel Nginx dans le répertoire /usr/share/man/man8/:
sudo cp ~/nginx-1.15.7/man/nginx.8/usr/share/man/man8 sudo gzip/usr/share/man/man8/nginx.8 ls/usr/share/man/man8/| grep nginx.8.gz # Check that Man page for Nginx is working: man nginx
Pour obtenir de l’aide, vous pouvez voir la liste complète des options de compilation Nginx à jour en exécutant:
./configure --help # To see want core modules can be build as dynamic run: ./configure --help | grep -F =dynamic
Configurer, compiler et installer NGINX:
./configure --prefix=/etc/nginx \ --sbin-path=/usr/sbin/nginx \ --modules-path=/usr/lib64/nginx/modules \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --pid-path=/var/run/nginx.pid \ --lock-path=/var/run/nginx.lock \ --user=nginx \ --group=nginx \ --build=CentOS \ --builddir=nginx-1.15.7 \ --with-select_module \ --with-poll_module \ --with-threads \ --with-file-aio \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_xslt_module=dynamic \ --with-http_image_filter_module=dynamic \ --with-http_geoip_module=dynamic \ --with-http_sub_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_auth_request_module \ --with-http_random_index_module \ --with-http_secure_link_module \ --with-http_degradation_module \ --with-http_slice_module \ --with-http_stub_status_module \ --with-http_perl_module=dynamic \ --with-perl_modules_path=/usr/lib64/perl5 \ --with-perl=/usr/bin/perl \ --http-log-path=/var/log/nginx/access.log \ --http-client-body-temp-path=/var/cache/nginx/client_temp \ --http-proxy-temp-path=/var/cache/nginx/proxy_temp \ --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \ --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \ --http-scgi-temp-path=/var/cache/nginx/scgi_temp \ --with-mail=dynamic \ --with-mail_ssl_module \ --with-stream=dynamic \ --with-stream_ssl_module \ --with-stream_realip_module \ --with-stream_geoip_module=dynamic \ --with-stream_ssl_preread_module \ --with-compat \ --with-pcre=../pcre-8.42 \ --with-pcre-jit \ --with-zlib=../zlib-1.2.11 \ --with-openssl=../openssl-1.1.1a \ --with-openssl-opt=no-nextprotoneg \ --with-debug make sudo make install
Après avoir construit Nginx, accédez aurépertoire /home () :~
cd ~
Lien symbolique /usr/lib64/nginx/modules au répertoire /etc/nginx/modules. /etc/nginx/modules est un endroit standard pour les modules Nginx:
sudo ln -s/usr/lib64/nginx/modules/etc/nginx/modules
Imprimez la version Nginx, la version du compilateur et configurez les paramètres de script:
sudo nginx -V # nginx version: nginx/1.15.7 (CentOS) # built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) # built with OpenSSL 1.1.1a 20 Nov 2018 # TLS SNI support enabled # configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules # . . . # . . .
Créez un groupe système nginx et l’utilisateur:
sudo useradd --system --home/var/cache/nginx --shell/sbin/nologin --comment "nginx user" --user-group nginx
Vérifiez la syntaxe Nginx et les erreurs potentielles:
sudo nginx -t
Créer un fichier d’unité nginx systemd:
sudo vim/etc/systemd/system/nginx.service
Copiez/collez le contenu ci-dessous dans un fichier :/etc/systemd/system/nginx.service
REMARQUE: L’emplacement du fichier PID et le binaire Nginx peut être différent selon la façon dont Nginx a été compilé.
[Unit] Description=nginx - high performance web server Documentation=https://nginx.org/en/docs/ After=network-online.target remote-fs.target nss-lookup.target Wants=network-online.target [Service] Type=forking PIDFile=/var/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t -c/etc/nginx/nginx.conf ExecStart=/usr/sbin/nginx -c/etc/nginx/nginx.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID [Install] WantedBy=multi-user.target
Activez Nginx pour démarrer au démarrage et démarrer Nginx immédiatement:
sudo systemctl enable nginx.service sudo systemctl start nginx.service
Vérifiez si Nginx se lancera automatiquement après un redémarrage:
sudo systemctl is-enabled nginx.service # enabled
Vérifiez si Nginx est en cours d’exécution en exécutant l’une des commandes suivantes:
sudo systemctl status nginx.service # or ps aux | grep nginx # or curl -I 127.0.0.1
Vous pouvez également ouvrir votre navigateur et accéder à votre domaine/adresse IP pour voir la page Nginx par défaut. C’est un indicateur que Nginx est opérationnel.
Nginx par défaut, génère des fichiers .default de sauvegarde dans/etc/nginx. Supprimer les fichiers .default du répertoire/etc/nginx:
sudo rm/etc/nginx/*.default
Placez la coloration syntaxique de la configuration Nginx pour l’éditeur Vim dans: ~/.vim
# For regular non-root user mkdir ~/.vim/ cp -r ~/nginx-1.15.7/contrib/vim/* ~/.vim/ # For root user sudo mkdir/root/.vim/ sudo cp -r ~/nginx-1.15.7/contrib/vim/*/root/.vim/
Créez des répertoires dans le répertoire : conf.dsnippetssites-availablesites-enabled/etc/nginx
sudo mkdir/etc/nginx/{conf.d,snippets,sites-available,sites-enabled}
Modifier les autorisations et la propriété du groupe des fichiers journaux Nginx:
sudo chmod 640/var/log/nginx/* sudo chown nginx:adm/var/log/nginx/access.log/var/log/nginx/error.log
Créez la configuration logrotation pour Nginx.
sudo vim/etc/logrotate.d/nginx
Remplissez le fichier avec le texte ci-dessous, puis enregistrez et quittez:
/var/log/nginx/*.log { daily missingok rotate 52 compress delaycompress notifempty create 640 nginx adm sharedscripts postrotate if [ -f/var/run/nginx.pid ]; then kill -USR1 `cat/var/run/nginx.pid` fi endscript }
Supprimez tous les fichiers téléchargés du répertoire de base:
cd ~ rm -rf nginx-1.15.7/openssl-1.1.1a/pcre-8.42/zlib-1.2.11/
C’est tout. Maintenant, vous avez la dernière version de Nginx installée en la construisant à partir du code source. Il est compilé statiquement par rapport à certaines bibliothèques importantes comme OpenSSL. Souvent, la version d’OpenSSL fournie par le système est obsolète. En utilisant cette méthode d’installation avec une version plus récente d’OpenSSL, vous pouvez tirer parti de nouveaux chiffrements et protocoles comme TLS 1.3 qui est pris en charge dans OpenSSL 1.1.1 De plus, en compilant votre propre binaire, vous pouvez personnaliser les fonctionnalités que votre Nginx fournira, ce qui est beaucoup plus flexible que l’installation d’un binaire prédéfini. CHACHA20_POLY1305
- Document traduit de l’anglais par See Soon.
- Source : Comment construire Nginx à partir de la source sur CentOS 7 (howtoforge.com)
Merci de votez pour cet article :