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" i l'editor Vim:
sudo yum groupinstall -y 'Development Tools' && sudo yum install -y vim
Instal·leu paquets addicionals per a Enterprise Linux (EPEL):
sudo yum install -y epel-release
Baixeu i instal·leu dependències opcionals de NGINX:
sudo yum install -y perl perl-devel perl-ExtUtils-Embed libxslt libxslt-devel libxml2 libxml2-devel gd gd-devel GeoIP GeoIP-devel
Baixeu la darrera versió principal del codi font NGINX i extreu-la:
wget https://nginx.org/download/nginx-1.13.2.tar.gz && tar zxvf nginx-1.13.2.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.40
wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz && tar xzvf pcre-8.40.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
Elimina tots els .tar.gzfitxers. Ja no els necessitem:
rm -rf *.tar.gz
Aneu al directori font de NGINX:
cd ~/nginx-1.13.2
Per fer una bona mesura, enumera els fitxers i directoris del 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.2/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=CentOS \
--builddir=nginx-1.13.2 \
--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 \
--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.40 \
--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
Enllaç simbòlic /usr/lib64/nginx/modulesal /etc/nginx/modulesdirectori, de manera que pugueu carregar mòduls dinàmics en la configuració de nginx com aquesta load_module modules/ngx_foo_module.so;:
sudo ln -s /usr/lib64/nginx/modules /etc/nginx/modules
Imprimiu la versió de NGINX, la versió del compilador i configureu els paràmetres de l'script:
sudo nginx -V
# nginx version: nginx/1.13.2 (CentOS)
# built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
# built with OpenSSL 1.1.0f 25 May 2017
# TLS SNI support enabled
# configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/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 /usr/lib/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 - 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
Inicieu i activeu el servei NGINX:
sudo systemctl start nginx.service && 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/nginxdirectori:
sudo rm /etc/nginx/koi-utf /etc/nginx/koi-win /etc/nginx/win-utf
Col·loqueu el ressaltat de sintaxi de la configuració de NGINX per vima ~/.vim/. Obtindreu un bon ressaltat de sintaxi quan editeu el fitxer de configuració NGINX:
mkdir ~/.vim/
cp -r ~/nginx-1.13.2/contrib/vim/* ~/.vim/
Elimina tots .defaultels fitxers de còpia de seguretat de /etc/nginx/:
sudo rm /etc/nginx/*.default
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).