一、環境準備
1、系統和内核心版本
<code>[root@linux-node1 ~]</code><code># cat /etc/redhat-release</code>
<code>CentOS release 6.8 (Final)</code>
<code>[root@linux-node1 ~]</code><code># uname -r</code>
<code>2.6.32-642.el6.x86_64</code>
2、主機名稱和IP位址
<code>[root@linux-node1 ~]</code><code># hostname </code>
<code>linux-node1.example.com</code>
<code>[root@linux-node1 ~]</code><code># hostname -I</code>
<code>192.168.56.11</code>
3、關閉防火牆和SELINUX
<code>[root@linux-node1 ~]</code><code># getenforce </code>
<code>Disabled</code>
<code>[root@linux-node1 ~]</code><code># /etc/init.d/iptables status</code>
<code>iptables: Firewall is not running.</code>
4、使用阿裡yum源
<code>[root@linux-node1 ~]</code><code># mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup</code>
<code>[root@linux-node1 ~]</code><code># wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo</code>
<code>[root@linux-node1 ~]</code><code># wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo</code>
<code>[root@linux-node1 ~]</code><code># yum repolist</code>
<code>Loaded plugins: fastestmirror, security</code>
<code>Loading mirror speeds from cached hostfile</code>
<code> </code><code>* base: mirrors.aliyun.com</code>
<code> </code><code>* epel: mirrors.aliyun.com</code>
<code> </code><code>* extras: mirrors.aliyun.com</code>
<code> </code><code>* updates: mirrors.aliyun.com</code>
<code>repo </code><code>id</code> <code>repo name status</code>
<code>base CentOS-6 - Base - mirrors.aliyun.com 6,696</code>
<code>epel Extra Packages </code><code>for</code> <code>Enterprise Linux 6 - x86_64 12,355</code>
<code>extras CentOS-6 - Extras - mirrors.aliyun.com 64</code>
<code>updates CentOS-6 - Updates - mirrors.aliyun.com 959</code>
<code>repolist: 20,074</code>
二、nginx安裝
1、必要軟體準備
(1)安裝 pcre,是為了支援rewrite功能,如果你已經裝了,請跳過這一步
<code>[root@linux-node1 ~]</code><code># yum install -y pcre pcre-devel</code>
(2)安裝openssl,是為了ssl的支援,如果不需要 ssl 支援,請跳過這一步
<code>[root@linux-node1 ~]</code><code># yum install -y openssl openssl-devel</code>
2、安裝nginx
(1)建立軟體包存放目錄
<code>[root@linux-node1 ~]</code><code># mkdir -p /server/tools</code>
(2)下載下傳nginx源碼包
<code>[root@linux-node1 ~]</code><code># cd /server/tools</code>
<code>[root@linux-node1 tools]</code><code># wget -q http://nginx.org/download/nginx-1.8.1.tar.gz</code>
<code>[root@linux-node1 tools]</code><code># ll</code>
<code>total 816</code>
<code>-rw-r--r-- 1 root root 833473 Jan 27 2016 nginx-1.8.1.</code><code>tar</code><code>.gz</code>
(3)解壓nginx源碼包
<code>[root@linux-node1 tools]</code><code># tar xf nginx-1.8.1.tar.gz </code>
<code>total 820</code>
<code>drwxr-xr-x 8 1001 1001 4096 Jan 26 2016 nginx-1.8.1</code>
(4)建立nginx使用者
<code>[root@linux-node1 nginx-1.8.1]</code><code># useradd -rs /sbin/nologin nginx</code>
<code>[root@linux-node1 nginx-1.8.1]</code><code># id nginx</code>
<code>uid=498(nginx) gid=498(nginx) </code><code>groups</code><code>=498(nginx)</code>
(5)編譯安裝
<code>[root@linux-node1 tools]</code><code># cd nginx-1.8.1</code>
<code>[root@linux-node1 tools]</code><code># ./configure --prefix=/usr/local/nginx-1.8.1 \</code>
<code>--user=nginx \</code>
<code>--group=nginx \</code>
<code>--with-http_ssl_module \</code>
<code>--with-http_spdy_module \</code>
<code>--with-http_stub_status_module \</code>
<code>--with-pcre</code>
參數解釋:
--user=nginx :指定程式運作時的使用者
--group=nginx :指定程式運作時的使用者組
--prefix=/usr/local/nginx-1.8.1 :安裝路徑
– with-http_stub_status_module :支援 nginx 狀态查詢,可以用來監控nginx
– with-http_ssl_module :支援https
– with-http_spdy_module :支援google的 spdy, 想了解請百度 spdy, 這個必須有 ssl 的支援
– with-pcre :為了支援 rewrite 重寫功能,必須制定 pcre
提示:出現如下的内容,表明nginx configure完成
……………省略内容……………
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: "/usr/local/nginx-1.8.1"
nginx binary file: "/usr/local/nginx-1.8.1/sbin/nginx"
nginx configuration prefix: "/usr/local/nginx-1.8.1/conf"
nginx configuration file: "/usr/local/nginx-1.8.1/conf/nginx.conf"
nginx pid file: "/usr/local/nginx-1.8.1/logs/nginx.pid"
nginx error log file: "/usr/local/nginx-1.8.1/logs/error.log"
nginx http access log file: "/usr/local/nginx-1.8.1/logs/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"
<code>[root@linux-node1 nginx-1.8.1]</code><code># make && make install</code>
make[1]: Leaving directory `/server/tools/nginx-1.8.1'
提示:出現上面的内容,表示nginx安裝完成
(6)去除nginx目錄版本号
<code>[root@linux-node1 ~]</code><code># ln -s /usr/local/nginx-1.8.1/ /usr/local/nginx</code>
<code>[root@linux-node1 ~]</code><code># ll -d /usr/local/nginx*</code>
<code>lrwxrwxrwx 1 root root 23 Mar 13 20:01 </code><code>/usr/local/nginx</code> <code>-> </code><code>/usr/local/nginx-1</code><code>.8.1/</code>
<code>drwxr-xr-x 6 root root 4096 Mar 13 19:56 </code><code>/usr/local/nginx-1</code><code>.8.1</code>
3、啟動、關閉和重新加載配置檔案
(1)檢視nginx指令幫助
<code>[root@linux-node1 ~]</code><code># /usr/local/nginx/sbin/nginx -h</code>
<code>nginx version: nginx</code><code>/1</code><code>.8.1</code>
<code>Usage: nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]</code>
<code>Options:</code>
<code> </code><code>-?,-h : this help</code>
<code> </code><code>-</code><code>v</code> <code>: show version and </code><code>exit</code>
<code> </code><code>-V : show version and configure options </code><code>then</code> <code>exit</code>
<code> </code><code>-t : </code><code>test</code> <code>configuration and </code><code>exit</code>
<code> </code><code>-q : suppress non-error messages during configuration testing</code>
<code> </code><code>-s signal : send signal to a master process: stop, quit, reopen, reload</code>
<code> </code><code>-p prefix : </code><code>set</code> <code>prefix path (default: </code><code>/usr/local/nginx-1</code><code>.8.1/)</code>
<code> </code><code>-c filename : </code><code>set</code> <code>configuration </code><code>file</code> <code>(default: conf</code><code>/nginx</code><code>.conf)</code>
<code> </code><code>-g directives : </code><code>set</code> <code>global directives out of configuration </code><code>file</code>
參數翻譯:
參數
含義
-?,-h
幫助
-v
檢視nginx版本
-V
檢視nginx版本以及編譯安裝參數
-t
檢查nginx配置檔案文法
-q
在配置測試期間禁止非錯誤消息
-s signal
指定nginx服務停止、退出、重新開機和重新加載
-p prefix
指定nginx配置檔案nginx.conf目錄
-c filename
指定nginx配置檔案
-g directives
設定配置檔案中全局指令
(2)啟動nginx
<code>[root@linux-node1 ~]</code><code># /usr/local/nginx/sbin/nginx </code>
<code>[root@linux-node1 ~]</code><code># netstat -nlutp</code>
<code>Active Internet connections (only servers)</code>
<code>Proto Recv-Q Send-Q Local Address Foreign Address State PID</code><code>/Program</code> <code>name </code>
<code>tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4098</code><code>/nginx</code>
<code>tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1428</code><code>/sshd</code>
<code>tcp 0 0 :::22 :::* LISTEN 1428</code><code>/sshd</code>
<code>[root@linux-node1 ~]</code><code># curl -s http://localhost | grep nginx.com</code>
<code><a href=</code><code>"http://nginx.com/"</code><code>>nginx.com<</code><code>/a</code><code>>.<</code><code>/p</code><code>></code>
(3)關閉nginx
<code>[root@linux-node1 ~]</code><code># /usr/local/nginx/sbin/nginx -s stop</code>
<code>[root@linux-node1 ~]</code><code># netstat -nlutp </code>
(4)加載配置檔案
<code>[root@linux-node1 ~]</code><code># /usr/local/nginx/sbin/nginx -s reload</code>
<code>/usr/local/nginx-1</code><code>.5.1</code><code>/sbin/nginx</code>
(5)nginx啟動腳本
<code>[root@linux-node1 ~]</code><code># cat /etc/init.d/nginx </code>
<code>#!/bin/sh</code>
<code>#</code>
<code># nginx - this script starts and stops the nginx daemon</code>
<code># chkconfig: - 85 15 </code>
<code># description: Nginx is an HTTP(S) server, HTTP(S) reverse \</code>
<code># proxy and IMAP/POP3 proxy server</code>
<code># processname: nginx</code>
<code># config: /usr/local/nginx/conf/nginx.conf</code>
<code># pidfile: /usr/local/nginx/logs/nginx.pid</code>
<code> </code>
<code># Source function library.</code>
<code>. </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/functions</code>
<code># Source networking configuration.</code>
<code>. </code><code>/etc/sysconfig/network</code>
<code># Check that networking is up.</code>
<code>[ </code><code>"$NETWORKING"</code> <code>= </code><code>"no"</code> <code>] && </code><code>exit</code> <code>0</code>
<code>nginx=</code><code>"/usr/local/nginx//sbin/nginx"</code>
<code>prog=$(</code><code>basename</code> <code>$nginx)</code>
<code>NGINX_CONF_FILE=</code><code>"/usr/local/nginx/conf/nginx.conf"</code>
<code>[ -f </code><code>/etc/sysconfig/nginx</code> <code>] && . </code><code>/etc/sysconfig/nginx</code>
<code>lockfile=</code><code>/var/lock/subsys/nginx</code>
<code>make_dirs() {</code>
<code> </code><code># make required directories</code>
<code> </code><code>user=`$nginx -V 2>&1 | </code><code>grep</code> <code>"configure arguments:"</code> <code>| </code><code>sed</code> <code>'s/[^*]*--user=\([^ ]*\).*/\1/g'</code> <code>-`</code>
<code> </code><code>if</code> <code>[ -z </code><code>"`grep $user /etc/passwd`"</code> <code>]; </code><code>then</code>
<code> </code><code>useradd</code> <code>-M -s </code><code>/bin/nologin</code> <code>$user</code>
<code> </code><code>fi</code>
<code> </code><code>options=`$nginx -V 2>&1 | </code><code>grep</code> <code>'configure arguments:'</code><code>`</code>
<code> </code><code>for</code> <code>opt </code><code>in</code> <code>$options; </code><code>do</code>
<code> </code><code>if</code> <code>[ `</code><code>echo</code> <code>$opt | </code><code>grep</code> <code>'.*-temp-path'</code><code>` ]; </code><code>then</code>
<code> </code><code>value=`</code><code>echo</code> <code>$opt | </code><code>cut</code> <code>-d </code><code>"="</code> <code>-f 2`</code>
<code> </code><code>if</code> <code>[ ! -d </code><code>"$value"</code> <code>]; </code><code>then</code>
<code> </code><code># echo "creating" $value</code>
<code> </code><code>mkdir</code> <code>-p $value && </code><code>chown</code> <code>-R $user $value</code>
<code> </code><code>fi</code>
<code> </code><code>fi</code>
<code> </code><code>done</code>
<code>}</code>
<code>start() {</code>
<code> </code><code>[ -x $nginx ] || </code><code>exit</code> <code>5</code>
<code> </code><code>[ -f $NGINX_CONF_FILE ] || </code><code>exit</code> <code>6</code>
<code> </code><code>make_dirs</code>
<code> </code><code>echo</code> <code>-n $</code><code>"Starting $prog: "</code>
<code> </code><code>daemon $nginx -c $NGINX_CONF_FILE</code>
<code> </code><code>retval=$?</code>
<code> </code><code>echo</code>
<code> </code><code>[ $retval -</code><code>eq</code> <code>0 ] && </code><code>touch</code> <code>$lockfile</code>
<code> </code><code>return</code> <code>$retval</code>
<code>stop() {</code>
<code> </code><code>echo</code> <code>-n $</code><code>"Stopping $prog: "</code>
<code> </code><code>killproc $prog -QUIT</code>
<code> </code><code>[ $retval -</code><code>eq</code> <code>0 ] && </code><code>rm</code> <code>-f $lockfile</code>
<code>restart() {</code>
<code> </code><code>#configtest || return $?</code>
<code> </code><code>stop</code>
<code> </code><code>sleep</code> <code>1</code>
<code> </code><code>start</code>
<code>reload() {</code>
<code> </code><code>echo</code> <code>-n $</code><code>"Reloading $prog: "</code>
<code> </code><code>killproc $nginx -HUP</code>
<code> </code><code>RETVAL=$?</code>
<code>force_reload() {</code>
<code> </code><code>restart</code>
<code>configtest() {</code>
<code> </code><code>$nginx -t -c $NGINX_CONF_FILE</code>
<code>rh_status() {</code>
<code> </code><code>status $prog</code>
<code>rh_status_q() {</code>
<code> </code><code>rh_status ></code><code>/dev/null</code> <code>2>&1</code>
<code>case</code> <code>"$1"</code> <code>in</code>
<code> </code><code>start)</code>
<code> </code><code>rh_status_q && </code><code>exit</code> <code>0</code>
<code> </code><code>$1</code>
<code> </code><code>;;</code>
<code> </code><code>stop)</code>
<code> </code><code>rh_status_q || </code><code>exit</code> <code>0</code>
<code> </code><code>restart|configtest)</code>
<code> </code><code>reload)</code>
<code> </code><code>rh_status_q || </code><code>exit</code> <code>7</code>
<code> </code><code>force-reload)</code>
<code> </code><code>force_reload</code>
<code> </code><code>status)</code>
<code> </code><code>rh_status</code>
<code> </code><code>condrestart|try-restart)</code>
<code> </code><code>;;</code>
<code> </code><code>*)</code>
<code> </code><code>echo</code> <code>$</code><code>"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"</code>
<code> </code><code>exit</code> <code>2</code>
<code>esac</code>
<code>[root@linux-node1 ~]</code><code># chmod +x /etc/init.d/nginx</code>
<code>[root@linux-node1 ~]</code><code># /etc/init.d/nginx </code>
<code>Usage: </code><code>/etc/init</code><code>.d</code><code>/nginx</code> <code>{start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}</code>
到這來nginx就算是安裝完成啦O(∩_∩)O哈哈~
本文轉自 炫維 51CTO部落格,原文連結:http://blog.51cto.com/xuanwei/1905865