Instal·leu i compileu Nginx 1.10.0 (edició estable) des de fonts a RHEL/CentOS 7.0


Nginx és el servidor web de més ràpid creixement actual en servidors públics orientats a Internet a causa del seu model modular de codi obert gratuït, d'alt rendiment, estabilitat, fitxers de configuracions senzilles, arquitectura asíncrona (basada en esdeveniments) i pocs recursos necessaris. córrer.

  1. Instal·lació mínima de RHEL 7.0
  2. Subscripció i repositoris RedHat actius a RHEL 7.0

  1. Instal·lació mínima de CentOS 7.0

  1. Estableix l'adreça IP estàtica a RHEL/CentOS 7.0

Aquest tutorial us guiarà per instal·lar la darrera versió estable de Nginx 1.10.0 a Red Hat Enterprise o CentOS 7 des de les fonts, perquè les rèpliques oficials dels dipòsits RHEL/CentOS 7 no proporcionen un paquet binari. Si voleu evitar la instal·lació de fonts, podeu afegir el dipòsit oficial de Nginx i instal·lar el paquet binari (les versions disponibles són 1.9.x) amb l'ajuda del Gestor de paquets Yum tal com es mostra:

Per habilitar el dipòsit oficial yum de nginx per a RHEL/CentOS 7, creeu un fitxer /etc/yum.repos.d/nginx.repo amb el contingut següent:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

Substituïu \centos per rhel, depenent de la distribució que utilitzeu i instal·leu nginx amb el gestor de paquets yum tal com es mostra:

# yum install nginx

Important: tingueu en compte que seguint els dipòsits oficials de nginx yum anteriors us proporcionarà una versió anterior de nginx, si realment voleu crear la versió més recent de Nginx, us suggereixo que seguiu la instal·lació de la font com es mostra a continuació.

L'ús de la compilació i instal·lació de fonts té alguns avantatges, a causa del fet que podeu instal·lar la darrera versió disponible, podeu modificar la configuració de Nginx afegint o eliminant mòduls, canviant la ruta del sistema d'instal·lació o altres paràmetres importants, és a dir, teniu un control complet sobre el procés d'instal·lació.

Pas 1: Baixeu, compileu i instal·leu Nginx

1. Abans d'iniciar el procés de compilació i instal·lació de Nginx, assegureu-vos que teniu compilador C/C++, PCRE (expressions regulars compatibles amb Perl), Zlib biblioteca de compressió i OpenSSL (si voleu executar Nxing amb suport SSL) paquets instal·lats a la vostra màquina emetent l'ordre següent.

# yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.mirror.net.in
 * extras: centos.mirror.net.in
 * updates: centos.mirror.net.in
Package 1:make-3.82-21.el7.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package gcc.x86_64 0:4.8.5-4.el7 will be installed
--> Processing Dependency: libgomp = 4.8.5-4.el7 for package: gcc-4.8.5-4.el7.x86_64
--> Processing Dependency: cpp = 4.8.5-4.el7 for package: gcc-4.8.5-4.el7.x86_64
--> Processing Dependency: libgcc >= 4.8.5-4.el7 for package: gcc-4.8.5-4.el7.x86_64
--> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc-4.8.5-4.el7.x86_64
--> Processing Dependency: libmpfr.so.4()(64bit) for package: gcc-4.8.5-4.el7.x86_64
--> Processing Dependency: libmpc.so.3()(64bit) for package: gcc-4.8.5-4.el7.x86_64
---> Package gcc-c++.x86_64 0:4.8.5-4.el7 will be installed
--> Processing Dependency: libstdc++-devel = 4.8.5-4.el7 for package: gcc-c++-4.8.5-4.el7.x86_64
--> Processing Dependency: libstdc++ = 4.8.5-4.el7 for package: gcc-c++-4.8.5-4.el7.x86_64
---> Package openssl-devel.x86_64 1:1.0.1e-51.el7_2.4 will be installed
--> Processing Dependency: openssl-libs(x86-64) = 1:1.0.1e-51.el7_2.4 for package: 1:openssl-devel-1.0.1e-51.el7_2.4.x86_64
--> Processing Dependency: krb5-devel(x86-64) for package: 1:openssl-devel-1.0.1e-51.el7_2.4.x86_64
---> Package pcre-devel.x86_64 0:8.32-15.el7 will be installed
--> Processing Dependency: pcre(x86-64) = 8.32-15.el7 for package: pcre-devel-8.32-15.el7.x86_64
---> Package zlib-devel.x86_64 0:1.2.7-15.el7 will be installed
--> Processing Dependency: zlib = 1.2.7-15.el7 for package: zlib-devel-1.2.7-15.el7.x86_64
...

2. Ara aneu a la pàgina oficial de Nginx i agafeu la darrera versió estable (nginx 1.10.0) disponible mitjançant l'ordre wget, extreu l'arxiu TAR i introduïu el directori extret de Nginx, utilitzant la seqüència d'ordres següent.

# wget http://nginx.org/download/nginx-1.10.0.tar.gz
# tar xfz nginx-1.10.0.tar.gz
# cd nginx-1.10.0/
# ls -all
--2016-03-21 09:30:15--  http://nginx.org/download/nginx-1.10.0.tar.gz
Resolving nginx.org (nginx.org)... 206.251.255.63, 95.211.80.227, 2001:1af8:4060:a004:21::e3
Connecting to nginx.org (nginx.org)|206.251.255.63|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 908954 (888K) [application/octet-stream]
Saving to: ‘nginx-1.10.0.tar.gz’

100%[=====================================================================================================================================================>] 9,08,954    81.0KB/s   in 11s    

2016-03-21 09:30:27 (77.4 KB/s) - ‘nginx-1.10.0.tar.gz’ saved [908954/908954]

3. El següent pas és personalitzar el procés d'instal·lació de Nginx. Utilitzeu el fitxer configure per visualitzar les opcions de configuració i els mòduls necessaris per al vostre procés de compilació mitjançant l'ordre següent i assegureu-vos que esteu al camí nginx-1.6.0/.

# ./configure --help
-help                             print this message

  --prefix=PATH                      set installation prefix
  --sbin-path=PATH                   set nginx binary pathname
  --modules-path=PATH                set modules path
  --conf-path=PATH                   set nginx.conf pathname
  --error-log-path=PATH              set error log pathname
  --pid-path=PATH                    set nginx.pid pathname
  --lock-path=PATH                   set nginx.lock pathname

  --user=USER                        set non-privileged user for
                                     worker processes
  --group=GROUP                      set non-privileged group for
                                     worker processes

  --build=NAME                       set build name
  --builddir=DIR                     set build directory

  --with-select_module               enable select module
  --without-select_module            disable select module
  --with-poll_module                 enable poll module
  --without-poll_module              disable poll module

  --with-threads                     enable thread pool support

  --with-file-aio                    enable file AIO support
  --with-ipv6                        enable IPv6 support

  --with-http_ssl_module             enable ngx_http_ssl_module
  --with-http_v2_module              enable ngx_http_v2_module
...

4. Ara és el moment de compilar Nginx amb les vostres configuracions específiques i els mòduls activats o desactivats. Per a aquest tutorial, s'han utilitzat els mòduls i especificacions següents, però podeu ajustar la compilació segons les vostres necessitats.

  1. –user=nginx –group=nginx => usuari del sistema i grup amb el qual s'executarà Nginx.
  2. –prefix=/etc/nginx => directori per a fitxers del servidor (fitxer nginx.conf i altres fitxers de configuració) – el directori per defecte és /usr/local/nginx.
  3. –sbin-path=/usr/sbin/nginx => Ubicació del fitxer executable de Nginx.
  4. –conf-path=/etc/nginx/nginx.conf => estableix el nom per al fitxer de configuració nginx.conf; podeu canviar-lo.
  5. –error-log-path=/var/log/nginx/error.log => estableix la ubicació del fitxer de registre d'errors de Nginx.
  6. –http-log-path=/var/log/nginx/access.log => estableix la ubicació del fitxer de registre d'accés a Nginx.
  7. –pid-path=/var/run/nginx.pid => estableix el nom per al fitxer d'ID del procés principal.
  8. –lock-path=/var/run/nginx.lock => estableix el nom per al fitxer de bloqueig Nginx.
  9. –with-http_ssl_module => permet crear el mòdul HTTPS, no es construeix per defecte i requereix la biblioteca OpenSSL.
  10. –with-pcre => estableix el camí a les fonts de la biblioteca PCRE, no construïda per defecte i requereix la biblioteca PCRE.

Per veure una llista de tots els mòduls de Nginx, visiteu la pàgina web de Nginx Wiki a http://wiki.nginx.org/Modules.

Si no necessiteu un mòdul específic instal·lat a Nginx, podeu desactivar-lo mitjançant l'ordre següent.

--without-module_name

Ara comenceu a compilar Nginx emetent l'ordre següent, que utilitzarà totes les configuracions i mòduls comentats anteriorment (assegureu-vos que l'ordre es mantingui en una única línia).

# ./configure --user=nginx --group=nginx --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --with-http_ssl_module --with-pcre
checking for OS
 + Linux 3.10.0-229.el7.x86_64 x86_64
checking for C compiler ... found
 + using GNU C compiler
 + gcc version: 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) 
checking for gcc -pipe switch ... found
checking for -Wl,-E switch ... found
checking for gcc builtin atomic operations ... found
checking for C99 variadic macros ... found
checking for gcc variadic macros ... found
checking for gcc builtin 64 bit byteswap ... found
checking for unistd.h ... found
checking for inttypes.h ... found
checking for limits.h ... found
checking for sys/filio.h ... not found
checking for sys/param.h ... found
checking for sys/mount.h ... found
checking for sys/statvfs.h ... found
checking for crypt.h ... found
checking for Linux specific features
checking for epoll ... found
checking for EPOLLRDHUP ... found
checking for O_PATH ... found
checking for sendfile() ... found
checking for sendfile64() ... found
checking for sys/prctl.h ... found
checking for prctl(PR_SET_DUMPABLE) ... found
checking for sched_setaffinity() ... found
checking for crypt_r() ... found
checking for sys/vfs.h ... found
checking for poll() ... found
checking for /dev/poll ... not found
...

5. Després que el procés de compilació verifiqui totes les utilitats necessàries del sistema com el compilador GNU C, les biblioteques PCRE i OpenSSL, crea el fitxer make.conf i emet un resum de totes les configuracions.

Configuration summary
  + using system PCRE library
  + using system OpenSSL library
  + md5: using OpenSSL library
  + sha1: using OpenSSL library
  + using system zlib library

  nginx path prefix: "/etc/nginx"
  nginx binary file: "/usr/sbin/nginx"
  nginx modules path: "/etc/nginx/modules"
  nginx configuration prefix: "/etc/nginx"
  nginx configuration file: "/etc/nginx/nginx.conf"
  nginx pid file: "/var/run/nginx.pid"
  nginx error log file: "/var/log/nginx/error.log"
  nginx http access log file: "/var/log/nginx/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

6. L'últim pas és crear els binaris mitjançant l'ordre make, que pot trigar un temps a acabar-se depenent dels recursos de la vostra màquina, i instal·lar Nginx al vostre sistema amb make install comandament.

Aneu amb compte que make install requereix privilegis d'arrel per dur a terme la instal·lació, de manera que si no heu iniciat sessió amb un compte root, feu servir un usuari amb privilegis amb sudo.

# make
# make install
make -f objs/Makefile
make[1]: Entering directory `/root/nginx-1.10.0'
make[1]: Warning: File `src/core/nginx.h' has modification time 3110036 s in the future
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/nginx.o \
	src/core/nginx.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_log.o \
	src/core/ngx_log.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_palloc.o \
	src/core/ngx_palloc.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_array.o \
	src/core/ngx_array.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_list.o \
	src/core/ngx_list.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_hash.o \
	src/core/ngx_hash.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_buf.o \
	src/core/ngx_buf.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_queue.o \
...
make -f objs/Makefile install
make[1]: Entering directory `/root/nginx-1.10.0'
make[1]: Warning: File `src/core/nginx.h' has modification time 3109935 s in the future
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/nginx.o \
	src/core/nginx.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_log.o \
	src/core/ngx_log.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_palloc.o \
	src/core/ngx_palloc.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_array.o \
	src/core/ngx_array.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_list.o \
	src/core/ngx_list.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_hash.o \
	src/core/ngx_hash.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_buf.o \
	src/core/ngx_buf.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
	-o objs/src/core/ngx_queue.o \
...

Pas 2: ajusteu Nginx i creeu un script INIT

7. Després que el procés d'instal·lació hagi finalitzat amb èxit, afegiu l'usuari del sistema nginx (amb /etc/nginx/ com a directori d'inici i sense cap shell vàlid), l'usuari que Nginx s'executarà com emetent l'ordre següent.

# useradd -d /etc/nginx/ -s /sbin/nologin nginx

8. Com que en el procés de compilació havíem especificat que Nginx s'executarà des de l'usuari del sistema nginx, obriu el fitxer nginx.conf i canvieu la declaració d'usuari a nginx.

# nano /etc/nginx/nginx.conf

Aquí localitzeu i canvieu l'usuari i, també, documenteu les declaracions d'ubicació arrel, amb les opcions següents.

user nginx;
location / {
                root /srv/www/html;
                autoindex on;
                index index.html index.htm;

9. Abans d'iniciar Nginx, assegureu-vos que heu creat la ruta arrel del document web i, a continuació, inicieu nginx amb l'ordre següent.

# mkdir -p /srv/www/html
# /usr/sbin/nginx

Si voleu comprovar si Nginx s'està executant mitjançant el vostre indicador de l'intèrpret d'ordres, executeu l'ordre netstat per verificar les connexions d'escolta.

# netstat -tulpn | grep nginx

10. Per verificar-ho des d'un sistema remot, afegiu una regla de tallafoc per obrir la connexió a l'exterior al port 80, obriu un navegador i dirigiu l'URL a l'adreça IP del vostre servidor a http://server_IP. .

# firewall-cmd --add-service=http  ## For on-fly rule
# firewall-cmd --permanent --add-service=http  ## For permanent rule
# systemctl restart firewalld

11. Per gestionar el procés Nginx, utilitzeu les ordres següents.

  1. nginx -V = mostra mòduls i configuracions de Nginx
  2. nginx -h = opcions d'ajuda
  3. nginx = iniciar el procés de Nginx
  4. nginx -s stop = atura el procés Nginx
  5. nginx -s reload = recarrega el procés Nginx

# nginx -V
nginx version: nginx/1.10.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --with-http_ssl_module --with-pcre

12. Si necessiteu gestionar el procés del dimoni Nginx mitjançant un script RHEL/CentOS init, creeu el següent fitxer nginx a la ruta del sistema /etc/init.d/ i, aleshores, podeu utilitzar les ordres service o systemctl per gestionar el procés.

# nano /etc/init.d/nginx

Afegiu el contingut del fitxer següent.

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#

# chkconfig:   - 85 15
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# pidfile:     /var/run/nginx.pid
# user:        nginx

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/etc/nginx/nginx.conf"
lockfile=/var/run/nginx.lock

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    configtest || return $?
    stop
    start
}

reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}

force_reload() {
    restart
}

configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
   *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac

13. Després de crear el fitxer d'inici de Nginx, afegiu els permisos d'execució i gestioneu el dimoni mitjançant les opcions de comandament següents.

# chmod +x /etc/init.d/nginx
# service nginx start|stop|restart|reload|force_reload|configtest|condrestart
# systemctl start|stop|restart nginx

14. Si necessiteu habilitar Nginx a tot el sistema, utilitzeu l'ordre següent per començar en el moment de l'arrencada.

# chkconfig nginx on

OR

# systemctl enable nginx

Això és tot! Ara teniu la darrera versió de Nginx instal·lada al vostre sistema RHEL/CentOS 7. Al següent tutorial parlaré de com instal·lar i habilitar el gestor de processos PHP-FPM mitjançant Nginx FastCGI Gateway.

Llegiu també: La guia definitiva per assegurar, endurir i millorar el rendiment del servidor web Nginx