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.
- Minimal installation af RHEL 7.0
- Aktivt RedHat-abonnement og arkiver på RHEL 7.0
- Minimal installation af CentOS 7.0
- 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.
- –bruger = nginx –gruppe = nginx => systembruger og gruppe, som Nginx kører som.
- –prefix =/etc/nginx => mappe til serverfiler (nginx.conf-fil og andre konfigurationsfiler) - standard er/usr/local/nginx-biblioteket.
- –sbin-path =/usr/sbin/nginx => Placering af Nginx-eksekverbar fil.
- –conf-path =/etc/nginx/nginx.conf => indstiller navnet på konfigurationsfilen nginx.conf - du kan ændre den.
- –fejl-log-sti =/var/log/nginx/error.log => indstiller placering af Nginx-fejllogfil.
- –http-log-sti =/var/log/nginx/access.log => indstiller placeringen af Nginx-adgangslogfil.
- –pid-path =/var/run/nginx.pid => indstiller navnet på hovedproces-id-filen.
- –lock-path =/var/run/nginx.lock => indstiller navnet på Nginx-låsefilen.
- –with-http_ssl_module => muliggør opbygning af HTTPS-modulet - ikke bygget som standard og kræver OpenSSL-bibliotek.
- –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.
- nginx -V = viser Nginx-moduler og konfigurationer
- nginx -h = hjælpemuligheder
- nginx = start Nginx-processen
- nginx -s stop = stop Nginx-proces
- 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