Instalējiet un apkopojiet "Nginx 1.10.0" (stabils izlaidums) no avotiem RHEL/CentOS 7.0


Nginx ir visstraujāk augošais tīmekļa serveris mūsdienās publiskos interneta serveros, pateicoties tā bezmaksas atvērtā pirmkoda modulārajam modelim, augstas veiktspējas, stabilitātei, vienkāršiem konfigurācijas failiem, asinhronai arhitektūrai (uz notikumiem balstītai) un zemiem nepieciešamajiem resursiem skriet.

  1. RHEL 7.0 minimāla instalēšana
  2. Aktīvie RedHat abonementi un repozitoriji RHEL 7.0

  1. CentOS 7.0 minimāla instalēšana

  1. Iestatiet statisko IP adresi RHEL/CentOS 7.0

Šī apmācība palīdzēs jums instalēt jaunāko stabilo Nginx 1.10.0 versiju vietnē Red Hat Enterprise vai CentOS 7 no avotiem, jo oficiālie RHEL/CentOS 7 krātuvju spoguļi nenodrošina bināru pakotni. Ja vēlaties izvairīties no avotu instalēšanas, varat pievienot oficiālo Nginx repozitoriju un instalēt bināro pakotni (pieejamās versijas ir 1.9.x ) ar Yum Package Manager palīdzību, kā parādīts:

Lai iespējotu nginx oficiālo yum repozitoriju RHEL/CentOS 7, izveidojiet failu /etc/yum.repos.d/nginx.repo ar šādu saturu:

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

Nomainiet “centos” ar “rhel” atkarībā no izmantotā izplatīšanas un instalējiet nginx ar yum pakotņu pārvaldnieku, kā parādīts attēlā:

# yum install nginx

Svarīgi: Lūdzu, ņemiet vērā, ka, ievērojot iepriekš minētās oficiālās nginx yum krātuves, jums tiks sniegta vecāka nginx versija, ja jūs patiešām vēlaties izveidot jaunāko Nginx versiju, tad es iesaku jums sekot avota instalēšanai, kā parādīts zemāk.

Izmantojot avotu apkopošanu un instalēšanu, ir dažas priekšrocības. Sakarā ar to, ka varat instalēt jaunāko pieejamo versiju, varat pielāgot Nginx konfigurāciju, pievienojot vai noņemot moduļus, mainot instalēšanas sistēmas ceļu vai citus svarīgus iestatījumus, citiem vārdiem sakot, jums ir pilnīga uzstādīšanas procesa kontrole.

1. darbība: lejupielādējiet, kompilējiet un instalējiet Nginx

1. Pirms sākat Nginx kompilēšanas un instalēšanas procesu, pārliecinieties, vai jums ir C/C ++ kompilators, PCRE (Perl saderīgas regulārās izteiksmes), Zlib saspiešanas bibliotēka un OpenSSL (ja plānojat palaist Nxing ar SSL atbalstu), kas instalēti jūsu datorā, izsniedzot šādu komandu.

# 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. Tagad dodieties uz oficiālo Nginx lapu un paņemiet jaunāko stabilu versiju ( nginx 1.10.0 ), kas pieejama, izmantojot komandu wget , izvelciet TAR arhīvu un ievadiet Nginx izvilkto direktoriju, izmantojot šādu komandu secību.

# 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. Nākamais solis ir Nginx instalēšanas procesa pielāgošana. Izmantojiet failu konfigurēt , lai vizualizētu kompilācijas procesam nepieciešamās konfigurācijas opcijas un moduļus, izmantojot šo komandu, un pārliecinieties, vai atrodaties 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. Tagad ir pienācis laiks apkopot Nginx ar jūsu konkrētajām konfigurācijām un iespējotajiem vai atspējotajiem moduļiem. Šajā apmācībā izmantojiet šādus moduļus un specifikācijas, taču kompilāciju varat pielāgot atbilstoši savām vajadzībām.

  1. –user = nginx –group = nginx => sistēmas lietotājs un grupa, kā Nginx darbosies.
  2. –prefix =/etc/nginx => servera failu direktorijs (nginx.conf fails un citi konfigurācijas faili) - noklusējums ir/usr/local/nginx direktorijs.
  3. –sbin-path =/usr/sbin/nginx => Nginx izpildāmā faila atrašanās vieta.
  4. –conf-path =/etc/nginx/nginx.conf => iestata konfigurācijas faila nginx.conf nosaukumu - jūs to varat mainīt.
  5. –error-log-path =/var/log/nginx/error.log => nosaka Nginx kļūdu žurnāla faila atrašanās vietu.
  6. –http-log-path =/var/log/nginx/access.log => nosaka Nginx piekļuves žurnāla faila atrašanās vietu.
  7. –pid-path =/var/run/nginx.pid => iestata galvenā procesa ID faila nosaukumu.
  8. –lock-path =/var/run/nginx.lock => iestata Nginx bloķēšanas faila nosaukumu.
  9. –with-http_ssl_module => ļauj izveidot HTTPS moduli - tas nav izveidots pēc noklusējuma, un tam nepieciešama OpenSSL bibliotēka.
  10. –with-pcre => nosaka ceļu uz PCRE bibliotēkas avotiem - tas nav izveidots pēc noklusējuma, un tam nepieciešama PCRE bibliotēka.

Lai skatītu visu Nginx moduļu sarakstu, apmeklējiet Nginx Wiki tīmekļa lapu vietnē http://wiki.nginx.org/Modules.

Ja jums nav nepieciešams īpašs modulis, kas instalēts Nginx, varat to atspējot, izmantojot šo komandu.

--without-module_name

Tagad sāciet kompilēt Nginx, izsniedzot šādu komandu, kurā tiks izmantotas visas iepriekš apspriestās konfigurācijas un moduļi (pārliecinieties, ka komanda paliek vienā rindā).

# ./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. Kad kompilācijas process ir pārbaudījis visas sistēmai nepieciešamās utilītas, piemēram, GNU C kompilatoru, PCRE un OpenSSL bibliotēkas, tas izveido failu make.conf un izdod visu konfigurāciju kopsavilkumu.

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. Pēdējais solis ir bināro failu izveidošana, izmantojot komandu make , kuras pabeigšana var aizņemt kādu laiku atkarībā no jūsu datora resursiem, un instalējiet Nginx savā sistēmā ar make install komandu.

Esiet piesardzīgs, lai instalēšanas veikšanai instalēšanai ir nepieciešamas root privilēģijas , tādēļ, ja neesat pieteicies ar root kontu, izmantojiet privilēģiju lietotāju ar 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. darbība: pielāgojiet Nginx un izveidojiet INIT skriptu

7. Kad instalēšanas process ir veiksmīgi pabeigts, pievienojiet nginx sistēmas lietotāju (kā /etc/nginx/ kā mājas direktoriju un bez derīgas čaulas) lietotāju, kuru Nginx darbosies kā izsniedzot šādu komandu.

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

8. Tā kā kompilēšanas procesā mēs bijām norādījuši, ka Nginx darbosies no nginx sistēmas lietotāja, atveriet failu nginx.conf un mainiet lietotāja paziņojumu uz nginx .

# nano /etc/nginx/nginx.conf

Šeit atrodiet un mainiet lietotājus, kā arī dokumenta saknes atrašanās vietas paziņojumus, izmantojot šādas opcijas.

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

9. Pirms Nginx palaišanas pārliecinieties, vai esat izveidojis tīmekļa dokumenta saknes ceļu, pēc tam sāciet nginx, izmantojot šādu komandu.

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

Ja vēlaties pārbaudīt, vai Nginx darbojas, izmantojot jūsu čaulas uzvedni, palaidiet komandu netstat , lai pārbaudītu savienojumus ar klausīšanos.

# netstat -tulpn | grep nginx

10. Lai to pārbaudītu no attālās sistēmas, pievienojiet ugunsmūra kārtulu, lai atvērtu savienojumu ar ārpusi 80 portā, atveriet pārlūkprogrammu un novirziet URL uz sava servera IP adresi vietnē 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. Lai pārvaldītu Nginx procesu, izmantojiet šādas komandas.

  1. nginx -V = parāda Nginx moduļus un konfigurācijas
  2. nginx -h = palīdzības iespējas
  3. nginx = sākt Nginx procesu
  4. nginx -s stop = aptur Nginx procesu
  5. nginx -s pārlādēt = atkārtoti ielādēt Nginx procesu

# 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. Ja jums jāpārvalda Nginx dēmona process, izmantojot init RHEL/CentOS skriptu, izveidojiet šādu nginx failu uz /etc/init.d/ sistēmas ceļa un pēc tam procesa pārvaldīšanai varat izmantot komandas service vai systemctl .

# nano /etc/init.d/nginx

Pievienojiet šādu faila saturu.

#!/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ēc Nginx init faila izveides pievienojiet izpildes atļaujas un pārvaldiet dēmonu, izmantojot tālāk norādītās komandu opcijas.

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

14. Ja jums ir jāiespējo Nginx visā sistēmā, izmantojiet šo komandu, lai sāktu sāknēšanas laikā.

# chkconfig nginx on

OR

# systemctl enable nginx

Tas ir viss! Tagad jūsu RHEL/CentOS 7 sistēmā ir instalēta jaunākā Nginx versija. Nākamajā apmācībā es apspriedīšu, kā instalēt un iespējot PHP-FPM procesu pārvaldnieku, izmantojot Nginx FastCGI Gateway.

Lasiet arī: Galvenais ceļvedis Nginx tīmekļa servera drošai, cietināšanai un veiktspējas uzlabošanai