Installer og kompiler "Nginx 1.10.0" (stabil frigivelse) fra kilder i RHEL/CentOS 7.0


Nginx er den hurtigst voksende webserver i dag på offentlige internetservere på grund af sin gratis open source-modulmodel, høj ydeevne, stabilitet, enkle konfigurationsfiler, asynkron arkitektur (hændelsesdrevet) og lave nødvendige ressourcer at løbe.

  1. Minimal installation af RHEL 7.0
  2. Aktivt RedHat-abonnement og arkiver på RHEL 7.0

  1. Minimal installation af CentOS 7.0

  1. Indstil statisk IP-adresse på RHEL/CentOS 7.0

Denne vejledning vil guide dig om installation af den nyeste stabile version af Nginx 1.10.0 på Red Hat Enterprise eller CentOS 7 fra kilder, fordi officielle RHEL/CentOS 7 repositories spejle ikke indeholder en binær pakke. Hvis du vil undgå installation af kilder, kan du tilføje et officielt Nginx-arkiv og installere den binære pakke (tilgængelige versioner er 1.9.x ) ved hjælp af Yum Package Manager som vist:

For at aktivere nginx officielle yum repository til RHEL/CentOS 7 skal du oprette en fil /etc/yum.repos.d/nginx.repo med følgende indhold:

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

Udskift "centos" med "rhel" afhængigt af den distribution, du bruger, og installer nginx med yum-pakkehåndtering som vist:

# yum install nginx

Vigtigt: Bemærk, at følgende ovenstående officielle nginx yum-arkiver giver dig ældre version af nginx, hvis du virkelig vil oprette den nyeste version af Nginx, så foreslår jeg dig at følge kildeinstallationen som vist nedenfor.

Brug af kilder til kompilering og installation har nogle fordele, fordi du kan installere den nyeste tilgængelige version, kan du tilpasse Nginx-konfigurationen ved at tilføje eller fjerne moduler, ændre installationssystemets sti eller andre vigtige indstillinger, med andre ord har du en fuld kontrol over installationsprocessen.

Trin 1: Download, kompilér og installer Nginx

1. Før du starter Nginx-kompilering og installationsproces, skal du sørge for at have C/C ++ compiler, PCRE (Perl Compatible Regular Expressions), Zlib Kompressionsbibliotek og OpenSSL (hvis du har til hensigt at køre Nxing med SSL-support) -pakker installeret på din maskine ved at udstede følgende kommando.

# 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. Gå nu til den officielle Nginx-side, og få fat i den nyeste stabile version ( nginx 1.10.0 ), der er tilgængelig ved hjælp af kommandoen wget , træk TAR-arkivet ud og indtast Nginx-ekstraheret bibliotek ved hjælp af følgende kommandosekvens.

# 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. Det næste trin er at tilpasse Nginx-installationsprocessen. Brug konfigurer filen til at visualisere konfigurationsindstillinger og moduler, der er nødvendige til din kompileringsproces ved hjælp af følgende kommando, og sørg for at du er i nginx-1.6.0/sti.

# ./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. Nu er det tid til at kompilere Nginx med dine specifikke konfigurationer og aktiverede eller deaktiverede moduler. Til denne vejledning er følgende moduler og specifikationer brugt, men du kan tilpasse kompileringen til det, der passer til dine behov.

  1. –bruger = nginx –gruppe = nginx => systembruger og gruppe, som Nginx kører som.
  2. –prefix =/etc/nginx => mappe til serverfiler (nginx.conf-fil og andre konfigurationsfiler) - standard er/usr/local/nginx-biblioteket.
  3. –sbin-path =/usr/sbin/nginx => Placering af Nginx-eksekverbar fil.
  4. –conf-path =/etc/nginx/nginx.conf => indstiller navnet på konfigurationsfilen nginx.conf - du kan ændre den.
  5. –fejl-log-sti =/var/log/nginx/error.log => indstiller placering af Nginx-fejllogfil.
  6. –http-log-sti =/var/log/nginx/access.log => indstiller placeringen af Nginx-adgangslogfil.
  7. –pid-path =/var/run/nginx.pid => indstiller navnet på hovedproces-id-filen.
  8. –lock-path =/var/run/nginx.lock => indstiller navnet på Nginx-låsefilen.
  9. –with-http_ssl_module => muliggør opbygning af HTTPS-modulet - ikke bygget som standard og kræver OpenSSL-bibliotek.
  10. –with-pcre => indstiller stien til kilderne til PCRE-biblioteket - ikke bygget som standard og kræver PCRE-bibliotek.

For at se en liste over alle Nginx-moduler, besøg Nginx Wiki-websiden på http://wiki.nginx.org/Modules.

Hvis du ikke har brug for et specifikt modul installeret på Nginx, kan du deaktivere det ved hjælp af følgende kommando.

--without-module_name

Start nu med at kompilere Nginx ved at udstede følgende kommando, som bruger alle de konfigurationer og moduler, der er beskrevet ovenfor (sørg for, at kommandoen forbliver på en enkelt linje).

# ./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. Når kompileringsprocessen har verificeret alle systemkravede hjælpeprogrammer som GNU C-compiler, PCRE og OpenSSL-biblioteker, opretter den make.conf -filen og udsender et resumé af alle konfigurationer.

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. Det sidste trin er at oprette binærfiler ved hjælp af kommandoen make , hvilket kan tage lidt tid at afslutte afhængigt af dine maskinressourcer og installere Nginx på dit system med make install kommando.

Vær forsigtig med at foretag installation kræver root-rettigheder for at udføre installationen, så hvis du ikke er logget ind med root-konto, skal du bruge en privilegiebruger med 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 \
...

Trin 2: Tilpas Nginx og Opret INIT Script

7. Når installationen er afsluttet med succes, tilføj nginx systembruger (med /etc/nginx/ som sin hjemmekatalog og uden gyldig skal), den bruger, der Nginx kører som ved at udstede følgende kommando.

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

8. Da vi under kompileringsprocessen havde specificeret, at Nginx kører fra nginx systembruger, skal du åbne filen nginx.conf og ændre brugerudtalelsen til nginx .

# nano /etc/nginx/nginx.conf

Find og skift her bruger- og også dokumentudtalelser om rodplacering med følgende muligheder.

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

9. Før du starter Nginx, skal du sikre dig, at du har oprettet webdokumentets rodsti, og derefter starte nginx ved hjælp af følgende kommando.

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

Hvis du vil kontrollere, om Nginx kører ved hjælp af din shellprompt, skal du køre kommandoen netstat for at kontrollere lytteforbindelser.

# netstat -tulpn | grep nginx

10. For at bekræfte det fra et eksternt system skal du tilføje en Firewall-regel for at åbne forbindelsen udefra på Port 80 , åbne en browser og direkte URL til din server IP-adresse på 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. Brug følgende kommandoer til at styre Nginx-processen.

  1. nginx -V = viser Nginx-moduler og konfigurationer
  2. nginx -h = hjælpemuligheder
  3. nginx = start Nginx-processen
  4. nginx -s stop = stop Nginx-proces
  5. nginx -s genindlæsning = genindlæs Nginx-proces

# 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. Hvis du har brug for at styre Nginx-dæmonprocessen via et init RHEL/CentOS-script, skal du oprette følgende nginx-fil på /etc/init.d/ systemstien og, derefter kan du bruge kommandoer service eller systemctl til at styre processen.

# nano /etc/init.d/nginx

Tilføj følgende filindhold.

#!/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. Når Nginx init-filen er oprettet, skal du tilføje tilladelser til udførelse og administrere dæmonen ved hjælp af nedenstående kommandoindstillinger.

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

14. Hvis du har brug for at aktivere Nginx hele systemet, skal du bruge følgende kommando til at starte ved starttidspunktet.

# chkconfig nginx on

OR

# systemctl enable nginx

Det er alt! Nu har du den nyeste version af Nginx installeret på dit RHEL/CentOS 7-system. På den næste tutorial vil jeg diskutere, hvordan man installerer og aktiverer PHP-FPM procesmanager gennem Nginx FastCGI Gateway.

Læs også: Den ultimative guide til sikring, hærdning og forbedring af Nginx-webserverens ydeevne