Namestite in prevedite "Nginx 1.10.0" (stabilna izdaja) iz virov v RHEL/CentOS 7.0


Nginx je danes najhitreje rastoči spletni strežnik na javnih strežnikih, ki se soočajo z internetom, in sicer zaradi svojega brezplačnega modularnega odprtokodnega modela, visoke zmogljivosti, stabilnosti, preprostih konfiguracijskih datotek, asinhrone arhitekture (na podlagi dogodkov) in nizkih potrebnih virov teči.

  1. Minimalna namestitev RHEL 7.0
  2. Aktivne naročnine in skladišča RedHat na RHEL 7.0

  1. Minimalna namestitev CentOS 7.0

  1. Nastavite statični naslov IP na RHEL/CentOS 7.0

Ta vadnica vas bo vodila pri namestitvi najnovejše stabilne različice Nginx 1.10.0 na Red Hat Enterprise ali CentOS 7 iz virov, ker uradna ogledala RHEL/CentOS 7 repozitorij ne ponujajo binarnega paketa. Če se želite izogniti namestitvi virov, lahko dodate uradno skladišče Nginx in namestite binarni paket (na voljo je različica 1.9.x ) s pomočjo upravitelja paketov Yum, kot je prikazano:

Če želite omogočiti uradno skladišče yum nginx za RHEL/CentOS 7, ustvarite datoteko /etc/yum.repos.d/nginx.repo z naslednjo vsebino:

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

Zamenjajte\"centos" z "rhel", odvisno od distribucije, ki jo uporabljate, in namestite nginx z upraviteljem paketov yum, kot je prikazano:

# yum install nginx

Pomembno: upoštevajte, da vam bodo zgoraj navedena uradna skladišča nginx dala starejšo različico nginxa, če res želite zgraditi najnovejšo različico Nginxa, predlagam, da sledite namestitvi vira, kot je prikazano spodaj.

Uporaba prevajanja in namestitve virov ima nekaj prednosti, saj lahko namestite najnovejšo različico, ki je na voljo, lahko prilagodite konfiguracijo Nginxa tako, da dodate ali odstranite module, spremenite pot namestitvenega sistema ali druge pomembne nastavitve, z drugimi besedami, imate popoln nadzor nad postopkom namestitve.

1. korak: Prenesite, prevedite in namestite Nginx

1. Pred začetkom postopka prevajanja in namestitve Nginxa se prepričajte, da imate prevajalnik C/C ++, PCRE (Perl združljivi regularni izrazi), Zlib kompresijsko knjižnico in OpenSSL (če nameravate zagnati Nxing s podporo za SSL), nameščene na vaši napravi z izdajo naslednjega ukaza.

# 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. Zdaj pojdite na uradno stran Nginxa in zajemite najnovejšo stabilno različico ( nginx 1.10.0 ), ki je na voljo z ukazom wget , izvlecite arhiv TAR in vnesite izvlečeni imenik Nginx z naslednje zaporedje ukazov.

# 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. Naslednji korak je prilagoditev namestitvenega postopka Nginx. Z datoteko configure si z naslednjim ukazom ponazorite konfiguracijske možnosti in module, potrebne za postopek prevajanja, in se prepričajte, da ste v nginx-1.6.0/path.

# ./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. Zdaj je čas, da sestavite Nginx s specifičnimi konfiguracijami in omogočenimi ali onemogočenimi moduli. Za to vadnico so uporabljeni naslednji moduli in specifikacije, lahko pa prilagodite kompilacijo, kar ustreza vašim potrebam.

  1. –user = nginx –group = nginx => sistemski uporabnik in skupina, v kateri bo Nginx deloval.
  2. –prefix =/etc/nginx => imenik za strežniške datoteke (datoteka nginx.conf in druge konfiguracijske datoteke) - privzeto je imenik/usr/local/nginx.
  3. –sbin-path =/usr/sbin/nginx => Lokacija izvršljive datoteke Nginx.
  4. –conf-path =/etc/nginx/nginx.conf => nastavi ime za konfiguracijsko datoteko nginx.conf - lahko ga spremenite.
  5. –error-log-path =/var/log/nginx/error.log => nastavi lokacijo datoteke dnevnika napak Nginx.
  6. –http-log-path =/var/log/nginx/access.log => nastavi lokacijo datoteke dnevnika dostopa Nginx.
  7. –pid-path =/var/run/nginx.pid => nastavi ime za glavno datoteko z ID-jem procesa.
  8. –lock-path =/var/run/nginx.lock => nastavi ime za zaklepno datoteko Nginx.
  9. –with-http_ssl_module => omogoča gradnjo modula HTTPS - privzeto ni zgrajen in zahteva knjižnico OpenSSL.
  10. –with-pcre => nastavi pot do virov knjižnice PCRE - privzeto ni zgrajena in zahteva knjižnico PCRE.

Če si želite ogledati seznam vseh modulov Nginx, obiščite spletno stran Wiki Nginx na naslovu http://wiki.nginx.org/Modules.

Če ne potrebujete določenega modula, nameščenega v Nginxu, ga lahko onemogočite z naslednjim ukazom.

--without-module_name

Zdaj začnite prevajati Nginx z izdajo naslednjega ukaza, ki bo uporabil vse zgoraj opisane konfiguracije in module (poskrbite, da ukaz ostane v eni vrstici).

# ./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. Ko postopek prevajanja preveri vse sistemsko potrebne pripomočke, kot so prevajalnik GNU C, knjižnice PCRE in OpenSSL, ustvari datoteko make.conf in prikaže povzetek vseh konfiguracij.

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. Zadnji korak je zgraditi binarne datoteke z ukazom make , kar lahko traja nekaj časa, da se konča, odvisno od virov vašega računalnika, in namestite Nginx v sistem z make install ukaz.

Pazite, da za izvedbo namestitve make install zahtevajo korenske privilegije , zato, če niste prijavljeni s korenskim računom, uporabite privilegiranega uporabnika z 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 \
...

2. korak: Popravite Nginx in ustvarite skript INIT

7. Ko se postopek namestitve uspešno zaključi, dodajte uporabnika sistema nginx (z domačim imenikom /etc/nginx/ in brez veljavne lupine), uporabnika, ki Nginx se bo zagnal kot z izdajo naslednjega ukaza.

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

8. Ker smo v procesu prevajanja določili, da se bo Nginx zagnal od uporabnika sistema nginx , odprite datoteko nginx.conf in spremenite uporabniški stavek v nginx .

# nano /etc/nginx/nginx.conf

Tu poiščite in spremenite uporabniške in tudi dokumentirajte korenske izjave o lokaciji z naslednjimi možnostmi.

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

9. Pred zagonom Nginxa se prepričajte, da ste ustvarili korensko pot spletnega dokumenta, nato z naslednjim ukazom zaženite nginx.

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

Če želite preveriti, ali se Nginx izvaja z vašim pozivom lupine, zaženite ukaz netstat , da preverite povezave poslušanja.

# netstat -tulpn | grep nginx

10. Če ga želite preveriti iz oddaljenega sistema, dodajte pravilo požarnega zidu, da odprete povezavo do zunanje strani na vratih 80, odprite brskalnik in usmerite URL na naslov IP strežnika na naslovu 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. Za upravljanje procesa Nginx uporabite naslednje ukaze.

  1. nginx -V = prikaže module in konfiguracije Nginx
  2. nginx -h = možnosti pomoči
  3. nginx = zaženite postopek Nginx
  4. nginx -s stop = ustavite postopek Nginx
  5. nginx -s reload = ponovno naloži postopek 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. Če morate upravljati proces demona Nginx prek skripta init RHEL/CentOS, na sistemski poti /etc/init.d/ ustvarite naslednjo datoteko nginx in, nato lahko za upravljanje postopka uporabite ukaze service ali systemctl .

# nano /etc/init.d/nginx

Dodajte naslednjo vsebino datoteke.

#!/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. Ko je datoteka init Nginx ustvarjena, dodajte dovoljenja za izvrševanje in upravljajte demon z uporabo spodnjih ukaznih možnosti.

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

14. Če morate omogočiti Nginx po celotnem sistemu, uporabite naslednji ukaz za zagon ob zagonu.

# chkconfig nginx on

OR

# systemctl enable nginx

To je vse! Zdaj imate v sistemu RHEL/CentOS 7 nameščeno najnovejšo različico Nginxa. V naslednji vadnici bom razpravljal o tem, kako namestiti in omogočiti PHP-FPM upravitelja procesov prek prehoda Nginx FastCGI.

Preberite tudi: Vrhunski vodnik za zaščito, utrjevanje in izboljšanje delovanja spletnega strežnika Nginx