Shigar da Haɗa Nginx 1.10.0 (Stable Release) daga Tushen a cikin RHEL/CentOS 7.0


Nginx shine mafi saurin girma Webserver a yau akan intanet na jama'a suna fuskantar sabobin saboda samfurin sa na buɗe tushen kyauta, babban aiki, kwanciyar hankali, fayilolin daidaitawa masu sauƙi, gine-ginen asynchronous (wanda ke tafiyar da taron) da ƙarancin albarkatun da ake buƙata. gudu.

  1. Mafi ƙarancin shigarwa na RHEL 7.0
  2. Biyan kuɗi na RedHat mai aiki da ma'ajin ajiya akan RHEL 7.0

  1. Mafi ƙarancin shigarwa na CentOS 7.0

  1. Sanya Adireshin IP Static akan RHEL/CentOS 7.0

Wannan koyawa za ta jagorance ku akan shigar da sabuwar sigar barga ta Nginx 1.10.0 akan Kamfanin Red Hat ko CentOS 7 daga tushe, saboda madubin ma'ajin RHEL/CentOS 7 na hukuma ba ya samar da kunshin binary. Idan kana so ka guje wa shigarwar tushe zaka iya ƙara ma'ajiyar Nginx na hukuma kuma shigar da kunshin binary (samfurin nau'ikan shine 1.9.x) tare da taimakon Yum Package Manager kamar yadda aka nuna:

Don kunna ma'ajiyar yum na nginx na RHEL/CentOS 7, ƙirƙiri fayil /etc/yum.repos.d/nginx.repo tare da abubuwan ciki masu zuwa:

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

Sauya \centos da rhel, dangane da rabon da kuke amfani da shi kuma shigar da nginx tare da yum mai sarrafa fakiti kamar yadda aka nuna:

# yum install nginx

Muhimmi: Da fatan za a lura, bin sama da ma'aunin nginx yum na hukuma zai ba ku tsohuwar sigar nginx, idan da gaske kuna son gina sabon sigar Nginx, to ina ba ku shawarar ku bi shigarwar tushen kamar yadda aka nuna a ƙasa.

Yin amfani da tarin tushe da shigarwa yana da wasu fa'idodi, saboda gaskiyar cewa zaku iya shigar da sabon sigar da ke akwai, zaku iya tweak ɗin Nginx ta ƙara ko cire kayayyaki, canza hanyar tsarin shigarwa, ko wasu mahimman saiti, a wasu kalmomi, kuna da cikakken iko akan tsarin shigarwa.

Mataki 1: Zazzagewa, Haɗa da Sanya Nginx

1. Kafin fara aikin Nginx da tsarin shigarwa ka tabbata kana da C/C++ compiler, PCRE ( Perl Compatible Regular Expressions), Zlib Library Compression da OpenSSL (idan kuna da niyyar gudanar da Nxing tare da tallafin SSL) fakitin da aka sanya akan injin ku ta hanyar ba da umarni mai zuwa.

# 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. Yanzu je zuwa shafin hukuma na Nginx kuma ka ɗauki sabon sigar Stable (nginx 1.10.0) da ake samu ta amfani da wget umurnin, cire TAR archive kuma shigar da Nginx da aka cire directory, ta amfani da jerin umarni masu zuwa.

# 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. Mataki na gaba shine tsara tsarin shigarwa na Nginx. Yi amfani da fayil ɗin saita don ganin zaɓuɓɓukan sanyi da samfuran da ake buƙata don tsarin tattarawar ku ta amfani da umarni mai zuwa kuma tabbatar cewa kuna cikin hanyar 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. Yanzu lokaci ya yi da za a tattara Nginx tare da ƙayyadaddun ƙayyadaddun ƙayyadaddun ku da kayan aiki masu kunnawa ko nakasa. Don wannan koyaswar waɗannan kayayyaki masu zuwa da ƙayyadaddun bayanai a inda aka yi amfani da su, amma kuna iya tweak ɗin da aka tattara zuwa duk abin da ya dace da bukatunku.

  1. –user=nginx –group=nginx => mai amfani da tsarin da rukuni wanda Nginx zai gudana a matsayin.
  2. –prefix=/etc/nginx => directory na fayilolin uwar garke (fayil nginx.conf da sauran fayilolin sanyi) - tsoho shine /usr/local/nginx directory.
  3. –sbin-path=/usr/sbin/nginx => Wurin fayil na Nginx mai aiwatarwa.
  4. –conf-path=/etc/nginx/nginx.conf => ya saita sunan fayil ɗin daidaitawar nginx.conf - zaku iya canza shi.
  5. –error-log-path=/var/log/nginx/error.log => ya saita wurin fayil na kuskuren Nginx.
  6. –http-log-path=/var/log/nginx/access.log => ya saita wurin fayil ɗin shiga Nginx.
  7. –pid-path=/var/run/nginx.pid => saita sunan babban fayil ID na tsari.
  8. –lock-path=/var/run/nginx.lock => saita sunan fayil ɗin kulle Nginx.
  9. –with-http_ssl_module => yana ba da damar gina tsarin HTTPS - ba a gina shi ta hanyar tsohuwa ba kuma yana buƙatar laburare na OpenSSL.
  10. –with-pcre => yana saita hanya zuwa tushen ɗakin karatu na PCRE - ba a gina shi ta tsohuwa ba kuma yana buƙatar ɗakin karatu na PCRE.

Don duba jerin duk samfuran Nginx ziyarci shafin yanar gizon Nginx Wiki a http://wiki.nginx.org/Modules.

Idan baku buƙatar takamaiman ƙirar da aka shigar akan Nginx zaku iya kashe shi ta amfani da umarni mai zuwa.

--without-module_name

Yanzu fara tattara Nginx ta hanyar ba da umarni mai zuwa, wanda zai yi amfani da duk saitunan da tsarin da aka tattauna a sama (tabbatar da umarnin ya tsaya akan layi ɗaya).

# ./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. Bayan tsarin tattarawa ya tabbatar da duk abubuwan da ake buƙata na tsarin kamar GNU C compiler, PCRE da OpenSSL library, yana ƙirƙirar fayil ɗin make.conf kuma yana fitar da taƙaitaccen duk saitunan.

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. Mataki na ƙarshe shine gina binaries ta amfani da make umarni, wanda zai iya ɗaukar ɗan lokaci kafin a gama ya dogara da kayan aikin injin ku, kuma shigar da Nginx akan tsarin ku tare da make install umarni.

Yi hankali cewa yi install yana buƙatar tushen gata don aiwatar da shigarwar, don haka idan ba ku shiga tare da tushen asusun ba amfani da gata mai amfani tare da 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 \
...

Mataki 2: Tweak Nginx kuma Ƙirƙiri Rubutun INIT

7. Bayan an gama tsarin shigarwa tare da nasara ƙara nginx mai amfani da tsarin (tare da /etc/nginx/ a matsayin kundin adireshin gidansa kuma ba tare da wani harsashi mai inganci ba), mai amfani da Nginx zai gudana kamar ta hanyar ba da umarni mai zuwa.

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

8. Domin a kan tsarin tattarawa mun ƙididdige cewa Nginx zai gudana daga mai amfani da tsarin nginx, bude nginx.conf fayil kuma canza bayanin mai amfani zuwa nginx >.

# nano /etc/nginx/nginx.conf

Anan gano wuri kuma canza mai amfani da, kuma, daftarin bayanan tushen wuri, tare da zaɓuɓɓuka masu zuwa.

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

9. Kafin fara Nginx, tabbatar da cewa kun ƙirƙiri tushen tushen takaddar yanar gizo, sannan fara nginx ta amfani da umarnin mai zuwa.

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

Idan kuna son bincika ko Nginx yana gudana ta amfani da faɗakarwar harsashi, gudanar da umarnin netstat don tabbatar da haɗin saurara.

# netstat -tulpn | grep nginx

10. Don tabbatar da shi daga na'ura mai nisa, ƙara dokar Firewall don buɗe haɗin kai zuwa waje akan Port 80, buɗe mai bincike da kai tsaye URL zuwa adireshin IP na sabar 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. Don sarrafa tsarin Nginx yi amfani da umarni masu zuwa.

  1. nginx -V = yana nuna nau'ikan Nginx da daidaitawa
  2. nginx -h = zabin taimako
  3. nginx = fara aikin Nginx
  4. nginx -s stop = dakatar da aikin Nginx
  5. nginx -s reload = sake shigar da tsarin 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. Idan kana buƙatar sarrafa tsarin Nginx daemon ta hanyar init rubutun RHEL/CentOS, ƙirƙirar fayil ɗin nginx mai zuwa akan hanyar tsarin /etc/init.d/, kuma, to, zaku iya amfani da service ko systemctl umarni don gudanar da tsarin.

# nano /etc/init.d/nginx

Ƙara abun cikin fayil mai zuwa.

#!/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. Bayan an ƙirƙiri fayil ɗin init Nginx, ƙara izinin aiwatarwa kuma sarrafa daemon ta amfani da zaɓuɓɓukan umarni na ƙasa.

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

14. Idan kana buƙatar kunna tsarin Nginx-fadi amfani da umarnin mai zuwa don farawa a lokacin taya.

# chkconfig nginx on

OR

# systemctl enable nginx

Shi ke nan! Yanzu kuna da sabon sigar Nginx da aka shigar akan tsarin RHEL/CentOS 7 na ku. A kan koyawa na gaba zan tattauna yadda ake shigarwa da ba da damar sarrafa sarrafa tsarin PHP-FPM kodayake Nginx FastCGI Gateway.

Karanta Hakanan: Ƙarshen Jagora don Tabbatarwa, Taurare da Inganta Ayyukan Sabar Yanar Gizo na Nginx