天天看点

NGINX由入门到精通:编译安装nginx

一、环境准备

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 &amp;&amp; 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>-&gt; </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>&lt;a href=</code><code>"http://nginx.com/"</code><code>&gt;nginx.com&lt;</code><code>/a</code><code>&gt;.&lt;</code><code>/p</code><code>&gt;</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>] &amp;&amp; </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>] &amp;&amp; . </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&gt;&amp;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&gt;&amp;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 &amp;&amp; </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 ] &amp;&amp; </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 ] &amp;&amp; </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 &gt;</code><code>/dev/null</code> <code>2&gt;&amp;1</code>

<code>case</code> <code>"$1"</code> <code>in</code>

<code>    </code><code>start)</code>

<code>        </code><code>rh_status_q &amp;&amp; </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

继续阅读