一、环境准备
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