Nginx 安装使用

Nginx 简介

  Nginx (engine x) 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务。Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 Rambler.ru 站点(俄文:Рамблер)开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

  其将源代码以类 BSD 许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4 发布。

  Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在 BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 nginx 网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

  • 优点

  Nginx 可以在大多数 UnixLinux OS 上编译运行,并有 Windows 移植版。 Nginx 的 1.4.0 稳定版已经于 2013年4月24日发布,一般情况下,对于新建站点,建议使用最新稳定版作为生产版本,已有站点的升级急迫性不高。

  Nginx 的源代码使用 2-clause BSD-like license。
  Nginx 是一个很强大的高性能 Web 和反向代理服务,它具有很多非常优越的特性:
在连接高并发的情况下,Nginx 是 Apache 服务不错的替代品:Nginx 在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型。

  • 服务器

  Nginx 作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP 代理服务对外进行服务。Nginx 采用 C 进行编写,不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好很多。
处理静态文件,索引文件以及自动索引;打开文件描述符缓冲。
无缓存的反向代理加速,简单的负载均衡和容错。
FastCGI,简单的负载均衡和容错。
模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCG 或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。
支持 SSL 和 TLSSNI。

  • 代码

  Nginx 代码完全用 C 语言从头写成,已经移植到许多体系结构和操作系统,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX 以及 Microsoft Windows。Nginx 有自己的函数库,并且除了 zlib、PCRE 和 OpenSSL 之外,标准模块只使用系统 C 库函数。而且,如果不需要或者考虑到潜在的授权冲突,可以不使用这些第三方库。

  • 代理服务器
      作为邮件代理服务:Nginx 同时也是一个非常优秀的邮件代理服务(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。

  Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持 perl 语法)、 Bug 非常少的服务。

  Nginx 启动特别容易,并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。

安装

  1. 安装编译工具及库文件
yum -y install make  gcc-c++ libtool  
  1. 安装 PCRE

PCRE 作用是让 Nginx 支持 Rewrite 功能

[root@localhost /]# cd /usr/local
[root@localhost local]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
[root@localhost local]# tar zxvf pcre-8.35.tar.gz
[root@localhost local]# cd pcre-8.35
[root@localhost local]# ./configure
[root@localhost local]# make && make install
[root@localhost local]# pcre-config --version
  1. 安装 zlib 库

Nginx 的 gzip 模块需要 zlib 库

[root@localhost /]# cd /usr/local/ 
[root@localhost local]# wget http://zlib.net/zlib-1.2.11.tar.gz
[root@localhost local]# tar -zxvf zlib-1.2.11.tar.gz
[root@localhost local]# cd zlib-1.2.11
[root@localhost zlib-1.2.11]# ./configure
[root@localhost zlib-1.2.11]# make
[root@localhost zlib-1.2.11]# make install
  1. 安装 ssl

Nginx的ssl 功能需要 openssl 库

[root@localhost /]# cd /usr/local/
[root@localhost local]# wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz
[root@localhost local]# tar -zxvf openssl-1.0.1j.tar.gz
[root@localhost local]# ./config
[root@localhost local]# make
[root@localhost local]# make install
  1. 安装 Nginx
[root@localhost /]# cd /usr/local/
[root@localhost local]# wget http://nginx.org/download/nginx-1.8.0.tar.gz
[root@localhost local]# tar -zxvf nginx-1.8.0.tar.gz
[root@localhost local]# cd nginx-1.8.0  
[root@localhost nginx-1.8.0]# ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/pcre-8.35 --with-openssl=/usr/local/openssl-1.0.1j --with-zlib=/usr/local/zlib-1.2.11 
[root@localhost nginx-1.8.0]# make
[root@localhost nginx-1.8.0]# make install
#查看版本
$[root@localhost nginx-1.8.0]# /usr/local/webserver/nginx/sbin/nginx -v 
  1. 启动
[root@localhost /]# /usr/local/nginx/sbin/nginx

检查是否启动成功:

[root@localhost sbin]# ps -aux|grep nginx
root       5769  0.0  0.0  20484   608 ?        Ss   14:03   0:00 nginx: master process ./nginx
nobody     5770  0.0  0.0  23012  1620 ?        S    14:03   0:00 nginx: worker process
root       5796  0.0  0.0 112668   972 pts/0    R+   14:07   0:00 grep --color=auto nginx
[1]+  完成                  ./nginx
[root@localhost sbin]# 

打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功。

  1. 常用命令
  • 重新载入配置文件:
    $ /usr/local/webserver/nginx/sbin/nginx –s reload

  • 重启:
    $ /usr/local/webserver/nginx/sbin/nginx –s reopen

  • 停止:
    $ /usr/local/webserver/nginx/sbin/nginx –s stop

  • 测试配置文件是否正常:
    $ /usr/local/webserver/nginx/sbin/nginx –t

  • 强制关闭:
    $ pkill nginx

  • nginx -h #帮助

  • nginx -v #显示版本

  • nginx -V #显示版本和配置信息

  • nginx -t #测试配置

  • nginx -q #测试配置时,只输出错误信息

  • nginx -s stop #停止服务器

  • nginx -s reload #重新加载配置

  1. Nginx 快捷启动和开机启动配置

  编辑 Nginx 快捷启动脚本【注意 Nginx 安装路径,需要根据自己的 NGINX 路径进行改动】

[root@localhost init.d]# vim /etc/rc.d/init.d/nginx

  编写脚本文件

#!/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
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid
 
# 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/local/nginx/sbin/nginx"
prog=$(basename $nginx)
#根据自己路径替换
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
 
make_dirs() {
    # make required directories
    user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
    if [ -z "`grep $user /etc/passwd`" ]; then
    useradd -M -s /bin/nologin $user
    fi
    options=`$nginx -V 2>&1 | grep 'configure arguments:'`
    for opt in $options; do
    if [ `echo $opt | grep '.*-temp-path'` ]; then
    value=`echo $opt | cut -d "=" -f 2`
    if [ ! -d "$value" ]; then
    # echo "creating" $value
    mkdir -p $value && chown -R $user $value
    fi
    fi
    done
}
 
start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    make_dirs
    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
    sleep 1
    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
  • 为启动脚本授权 并加入开机启动
[root@localhost init.d]# chmod -R 777 /etc/rc.d/init.d/nginx 
[root@localhost init.d]# chkconfig  nginx 
  • 将 Nginx 加入系统环境变量
#注意替换路径
[root@localhost init.d]# echo 'export PATH=$PATH:/usr/local/nginx/sbin'>>/etc/profile && source /etc/profile
  • 快捷命令
[root@localhost]# service nginx (start|stop|restart)
  • 加入开机自启
[root@localhost]# chkconfig  nginx

卸载

[root@localhost]# rm -rf /etc/nginx/ 
[root@localhost]# rm -rf /usr/sbin/nginx #解压路径
[root@localhost]# rm /usr/share/man/man1/nginx.1.gz #安装tar
[root@localhost]# apt-get remove nginx*

你可能感兴趣的:(nginx)