RHEL/CentOS 7.0 allikatest installige ja kompileerige allikatest "Nginx 1.10.0" (stabiilne versioon)


Nginx on tänapäeval kõige kiiremini kasvav veebiserver avalikes internetipõhistes serverites tänu oma avatud lähtekoodiga moodulmudelile, suure jõudlusega, stabiilsusele, lihtsatele konfiguratsioonifailidele, asünkroonsele arhitektuurile (sündmustepõhisele) ja vähesele ressurssile jooksma.

  1. RHEL 7.0 minimaalne installimine
  2. RHEL 7.0 aktiivsed RedHati tellimused ja hoidlad

  1. CentOS 7.0 minimaalne installimine

  1. Määra staatiline IP-aadress RHEL/CentOS 7.0-le

See õpetus aitab teil installida Nginx 1.10.0 uusima stabiilse versiooni allikatest Red Hat Enterprise'ile või CentOS 7-le, kuna ametlikud RHEL/CentOS 7 hoidlate peeglid ei paku binaarpaketti. Kui soovite vältida allikate installimist, võite lisada ametliku Nginxi hoidla ja installida binaarpaketi (saadaolevad versioonid on 1.9.x ) Yumi pakettihalduri abil, nagu näidatud:

Nginxi ametliku yum-hoidla lubamiseks RHEL/CentOS 7 jaoks looge järgmise sisuga fail /etc/yum.repos.d/nginx.repo:

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

Asendage\"centos" sõnaga "rhel", sõltuvalt kasutatavast levitamisest, ja installige nginx yum paketihalduriga, nagu näidatud:

# yum install nginx

Tähtis: Pange tähele, et ülaltoodud ametlike nginx yumi hoidlate järgimine annab teile nginxi vanema versiooni, kui soovite tõesti ehitada Nginxi uusimat versiooni, soovitan teil järgida allika installimist, nagu allpool näidatud.

Allikate koostamisel ja installimisel on mõningaid eeliseid, kuna saate installida uusima saadaval oleva versiooni, saate Nginxi konfiguratsiooni kohandada, lisades või eemaldades mooduleid, muutes installisüsteemi teed või muid olulisi sätteid, teisisõnu, täielik kontroll installiprotsessi üle.

1. samm: laadige alla, kompileerige ja installige Nginx

1. Enne Nginxi kompileerimise ja installimise alustamist veenduge, et teil oleks C/C ++ kompilaator, PCRE (Perli ühilduvad regulaaravaldised), Zlib tihendusraamatukogu ja OpenSSL (kui kavatsete Nxingi käivitada SSL-toega) arvutisse installitud paketid, väljastades järgmise käsu.

# 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. Nüüd minge Nginxi ametlikule lehele ja haarake käsu wget abil saadaval olev uusim stabiilne versioon ( nginx 1.10.0 ), eraldage TAR-arhiiv ja sisestage Nginxi ekstraktitud kataloog, kasutades järgmine käskude jada.

# 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. Järgmine samm on Nginxi installiprotsessi kohandamine. Kasutage faili konfigureerimine , et visualiseerida järgmise käsu abil kompileerimisprotsessi jaoks vajalikke konfiguratsioonisuvandeid ja mooduleid ning veenduge, et asute 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. Nüüd on aeg koostada Nginx oma konkreetsete konfiguratsioonide ja lubatud või keelatud moodulitega. Selle õpetuse jaoks kasutage järgmisi mooduleid ja spetsifikatsioone, kuid võite kompileerimise kohandada vastavalt oma vajadustele.

  1. –user = nginx –group = nginx => süsteemi kasutaja ja rühm, kellena Nginx käitatakse.
  2. –prefix =/etc/nginx => serverifailide kataloog (fail nginx.conf ja muud konfiguratsioonifailid) - vaikimisi on kataloog/usr/local/nginx.
  3. –sbin-path =/usr/sbin/nginx => Nginxi käivitatava faili asukoht.
  4. –conf-path =/etc/nginx/nginx.conf => määrab konfiguratsioonifaili nginx.conf nime - saate seda muuta.
  5. –error-log-path =/var/log/nginx/error.log => määrab Nginxi tõrke logifaili asukoha.
  6. –http-log-path =/var/log/nginx/access.log => määrab Nginxi juurdepääsulogi faili asukoha.
  7. –pid-path =/var/run/nginx.pid => määrab peaprotsessi ID-faili nime.
  8. –lock-path =/var/run/nginx.lock => määrab Nginxi lukufaili nime.
  9. –With-http_ssl_module => võimaldab luua HTTPS-mooduli - seda pole vaikimisi ehitatud ja see vajab OpenSSL-i teeki.
  10. –with-pcre => määrab tee PCRE-teegi allikateni - vaikimisi pole see ehitatud ja nõuab PCRE-teeki.

Kõigi Nginxi moodulite loendi vaatamiseks külastage Nginxi Wiki veebilehte aadressil http://wiki.nginx.org/Modules.

Kui te ei vaja Nginxile konkreetset moodulit, võite selle järgmise käsu abil keelata.

--without-module_name

Nüüd alustage Nginxi kompileerimist, väljastades järgmise käsu, mis kasutab kõiki eespool käsitletud konfiguratsioone ja mooduleid (veenduge, et käsk püsiks ühel real).

# ./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. Kui kompileerimisprotsess on kontrollinud kõiki süsteemile vajalikke utiliite, näiteks GNU C kompilaatori, PCRE ja OpenSSL teeke, loob see faili make.conf ja väljastab kõigi konfiguratsioonide kokkuvõtte.

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. Viimane samm on binaarkaartide loomine käsuga make , mille lõpuleviimine võib teie massi ressurssidest sõltuvalt aega võtta, ja installige Nginx oma süsteemi koos make install käsk.

Olge ettevaatlik, et installi installimiseks installimiseks on vaja juurõigusi , nii et kui te pole juurkontoga sisse logitud, kasutage privileegi kasutajat sudoga .

# 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. samm: kohandage Nginxi ja looge INIT-skript

7. Kui installiprotsess on edukalt lõpule viidud, lisage süsteemi kasutaja nginx (kodukataloogina /etc/nginx/ ja kehtiva kestata) kasutaja, kelle Nginx käivitatakse järgmise käsu väljastamisega.

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

8. Kuna kompileerimisprotsessi käigus olime määranud, et Nginx käivitatakse süsteemi nginx kasutajalt, avage fail nginx.conf ja muutke kasutaja lause nginx .

# nano /etc/nginx/nginx.conf

Siit leiate ja muutke kasutaja ning muutke ka dokumendi juure asukoha avaldused järgmiste suvanditega.

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

9. Enne Nginxi käivitamist veenduge, et olete loonud veebidokumendi juurtee, seejärel käivitage nginx järgmise käsu abil.

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

Kui soovite oma shelliviipide abil kontrollida, kas Nginx töötab, käivitage kuulamisühenduste kontrollimiseks käsk netstat .

# netstat -tulpn | grep nginx

10. Selle kontrollimiseks kaugsüsteemist lisage tulemüüri reegel, et avada ühendus väljaspool porti 80 , avage brauser ja suunake URL oma serveri IP-aadressile aadressil 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. Nginxi protsessi haldamiseks kasutage järgmisi käske.

  1. nginx -V = kuvab Nginxi moodulid ja konfiguratsioonid
  2. nginx -h = abivalikud
  3. nginx = käivitage Nginxi protsess
  4. nginx -s stop = peatage Nginx-protsess
  5. nginx -s uuesti laadimine = Nginxi protsessi uuesti laadimine

# 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. Kui peate haldama Nginxi deemoni protsessi init RHEL/CentOS-skripti kaudu, looge järgmine nginx-fail /etc/init.d/ süsteemiteel ja siis saate protsessi haldamiseks kasutada käske service või systemctl .

# nano /etc/init.d/nginx

Lisage järgmine faili sisu.

#!/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. Pärast Nginxi init-faili loomist lisage täitmisõigused ja hallake deemonit allolevate käsuvalikute abil.

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

14. Kui peate Nginxi lubama kogu süsteemis, kasutage käivitamisel käivitamiseks järgmist käsku.

# chkconfig nginx on

OR

# systemctl enable nginx

See on kõik! Nüüd on teie RHEL/CentOS 7 süsteemi installitud Nginxi uusim versioon. Järgmises õpetuses käsitlen PHP-FPM-i protsessihalduri installimist ja lubamist Nginx FastCGI Gateway kaudu.

Loe ka: ülim juhend Nginxi veebiserveri turvalisuse, karastamise ja jõudluse parandamiseks