Instal·lar NGINX des del codi font és relativament "fàcil": descarregueu la darrera versió del codi font NGINX, configureu-lo, creeu-lo i instal·leu-lo.
Instal·leu "Eines de desenvolupament", l'editor Vim, wget i gcc-c++:
sudo dnf install -y @development-tools && sudo dnf install -y vim wget gcc-c++
Baixeu la darrera versió principal del codi font NGINX i descarregueu-lo:
wget https://nginx.org/download/nginx-1.13.3.tar.gz && tar zxvf nginx-1.13.3.tar.gz
Baixeu el codi font de les dependències NGINX i extreu-los:
NGINX depends on 3 libraries: PCRE, zlib and OpenSSL:
# PCRE version 8.41
wget https://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz && tar xzvf pcre-8.41.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.0f
wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz && tar xzvf openssl-1.1.0f.tar.gz
Baixeu i instal·leu dependències opcionals de NGINX:
# perl
sudo dnf install -y perl perl-devel perl-ExtUtils-Embed
# libxslt
sudo dnf install -y libxslt libxslt-devel
# libxml2
sudo dnf install -y libxml2 libxml2-devel
# libgd
sudo dnf install -y gd gd-devel
# GeoIP
sudo dnf install -y GeoIP GeoIP-devel
# Libatomic_Ops
sudo dnf install -y libatomic_ops libatomic_ops-devel
Elimina tots els .tar.gzfitxers. Ja no els necessitem:
rm -rf *.tar.gz
Aneu al directori font de NGINX:
cd ~/nginx-1.13.3
Per fer una bona mesura, enumereu els fitxers i directoris de codi font NGINX:
ls
# auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
Copieu la pàgina del manual de NGINX a /usr/share/man/man8/:
sudo cp ~/nginx-1.13.3/man/nginx.8 /usr/share/man/man8/
sudo gzip /usr/share/man/man8/nginx.8
# Check that Man page for NGINX is working
man nginx
Per obtenir ajuda, podeu llistar els commutadors de configuració disponibles executant:
./configure --help
# To see want core modules can be build as dynamic run:
./configure --help | grep -F =dynamic
Configureu, compileu i instal·leu 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=Fedora \
--builddir=nginx-1.13.3 \
--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=/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.41 \
--with-pcre-jit \
--with-zlib=../zlib-1.2.11 \
--with-openssl=../openssl-1.1.0f \
--with-openssl-opt=no-nextprotoneg \
--with-debug
make
sudo make install
Imprimiu la versió de NGINX, la versió del compilador i configureu els paràmetres de l'script:
nginx -V
# nginx version: nginx/1.13.3 (Fedora)
# built by gcc 6.3.1 20161221 (Red Hat 6.3.1-1) (GCC)
# built with OpenSSL 1.1.0f 25 May 2017
# TLS SNI support enabled
# configure arguments: --prefix=/etc/nginx . . .
# . . .
Creeu l'usuari i el grup del sistema NGINX:
sudo useradd --system --home /var/cache/nginx --shell /sbin/nologin --comment "nginx user" --user-group nginx
Comproveu la sintaxi i els possibles errors:
sudo nginx -t
# Will throw this error: nginx: [emerg] mkdir() "/var/cache/nginx/client_temp" failed (2: No such file or directory)
# Just create directory
sudo mkdir -p /var/cache/nginx/ && sudo nginx -t
Creeu un fitxer d'unitat systemd per a NGINX:
sudo vim /etc/systemd/system/nginx.service
Copieu/enganxeu el contingut següent:
NOTE: The location of the PID file and the NGINX binary may be different depending on how NGINX was compiled.
[Unit]
Description=Nginx - A high performance web server and a reverse proxy server
Documentation=http://nginx.org/en/docs/
After=network.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /var/run/nginx.pid
TimeoutStopSec=5
KillMode=mixed
[Install]
WantedBy=multi-user.target
Inicia NGINX:
sudo systemctl start nginx.service
Habiliteu NGINX perquè s'iniciï automàticament a l'arrencada:
sudo systemctl enable nginx.service
Comproveu si NGINX s'iniciarà després d'un reinici:
sudo systemctl is-enabled nginx.service
# enabled
Comproveu si NGINX s'està executant:
sudo systemctl status nginx.service
ps aux | grep nginx
curl -I 127.0.0.1
Reinicieu el vostre VPS per verificar que NGINX s'iniciï automàticament:
sudo shutdown -r now
Elimina els fitxers arcaics del /etc/nginx/directori:
sudo rm /etc/nginx/koi-utf /etc/nginx/koi-win /etc/nginx/win-utf
Col·loqueu els fitxers de ressaltat de sintaxi de la configuració de NGINX per vima ~/.vim/. Se us presentarà un bon ressaltat de sintaxi quan editeu el fitxer de configuració NGINX:
mkdir ~/.vim/
cp -r ~/nginx-1.13.3/contrib/vim/* ~/.vim/
Feu un conf.d/directori al /etc/nginx/directori. En aquest directori, podeu col·locar servidors virtuals i aigües amunt:
sudo mkdir /etc/nginx/conf.d/
Elimineu els directoris i fitxers extrets del vostre directori d'inici:
rm -rf nginx-1.13.3/ openssl-1.1.0f/ pcre-8.41/ zlib-1.2.11/
Això és. Ara teniu instal·lada la versió més recent de NGINX. Es compila estàticament amb algunes biblioteques importants com OpenSSL. Sovint, la versió del sistema OpenSSL està obsoleta. Mitjançant aquest mètode d'instal·lació amb una versió més nova d'OpenSSL, podeu aprofitar nous xifratges CHACHA20_POLY1305com TLS 1.3 que estaran disponibles a OpenSSL 1.1.1(que no s'ha publicat en el moment d'escriure).