Centos6.5编译安装Nginx

chao 2016-10-11 11:55 CentOS&Ubuntu 抢沙发 2094IT人生

Nginx官方站点 http://nginx.org/cn/
tengine 淘宝基于nginx二次开发 http://tengine.taobao.org/
nginx已经附带memcache模块,可以管理缓存,而且支持平滑升级......
系统Centos6.5_64位 rpm包和源码包    我这是源码包
wget  http://nginx.org/download/nginx-1.6.2.tar.gz   稳定版

注意源码编译前请确定你的开发包组是否安装  开发工具 

yum groupinstall "开发工具"  
rpm -q pcre-devel  没装
yum install pcre-devel -y  依赖perl扩展的正则表达式
yum groupinfo "开发工具" 可以看到这个开发工具中的包组内容
groupadd -r -g 110 nginx   添加以个nginx组为系统组
useradd -r -u 110 -g 110 nginx  添加以个用户为系统用户  专门管理nginx

解压安装

[root@tomcat2 ~]# tar xf nginx-1.6.2.tar.gz  [root@tomcat2 ~]# cd nginx-1.6.2 [root@tomcat2 nginx-1.6.2]# ls auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
[root@tomcat2 nginx-1.6.2]# ./configure --help |less

编译

./configure \
  --prefix=/usr \   --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/nginx.pid  \   --lock-path=/var/lock/nginx.lock \   --user=nginx \   --group=nginx \   --with-http_ssl_module \   --with-http_flv_module \   --with-http_stub_status_module \   --with-http_gzip_static_module \   --http-client-body-temp-path=/var/tmp/nginx/client/ \   --http-proxy-temp-path=/var/tmp/nginx/proxy/ \   --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \   --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \   --http-scgi-temp-path=/var/tmp/nginx/scgi \   --with-pcre \   --with-file-aio \    --with-http_image_filter_module \  报错如下
./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl=<path> option.
少ssl模块编译少的全是devel包
所以安装
yum install openssl-devel  gd-devel gd库是图片过滤处理模块
没报错
make && make instal

提供启动脚本 脚本来自 http://wiki.nginx.org/RedHatNginxInitScript

vim /etc/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:      /etc/sysconfig/nginx # pidfile:     /var/run/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/sbin/nginx" prog=$(basename $nginx)
 
NGINX_CONF_FILE="/etc/nginx/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' -`
   options=`$nginx -V 2>&1 | grep 'configure arguments:'`
   for opt in $optionsdo        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

并设定开机自动启动

chmod +x /etc/init.d/nginx 
chkconfig --add nginx
[root@tomcat2 nginx-1.6.2]# /etc/init.d/nginx start 正在启动 nginx:                                           [确定]
[root@tomcat2 nginx-1.6.2]# netstat -antlp |grep nginx tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      9570/nginx

一个简单nginx就搭建好了测试:

localtion段官方文档http://nginx.org/en/docs/http/ngx_http_core_module.html#location
localtion URI [ = | ~|~*|^~|] uri {...}
localtion URI {} 对当前路径下的所有对象都生效
localtion = URI {} 精确匹配当前的路径,不包括子路径,因此,只对当前资源生效
localtion ~ URI {}   模式匹配URI,此处的URI可使用正则表达式, ~区分大小写,~*不区分大小写
localtion ^~ URI {} 不使用正则表达式

localtion ACL 控制 官方文档http://nginx.org/en/docs/http/ngx_http_access_module.html

官方示例 location / {
    deny  192.168.1.1;
    allow 192.168.1.0/24;
    allow 10.1.1.0/16;
    allow 2001:0db8::/32;
    deny  all;
}

基于用户名密码认证帮助文档http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html
创建用户名密码需要依赖apache的htpasswd命令  所以安装httpd 不要让其开机自动启动

[root@tomcat2 nginx]# htpasswd -c -m /etc/nginx/.user tom New password: 
Re-type new password: 
Adding password for user tom
[root@tomcat2 nginx]# htpasswd  -m /etc/nginx/.user leo New password: 
Re-type new password: 
Updating password for user leo
第2次不要加-c 不然重建.user
修改配置文件
 location / {
            root   html;
            index  index.html index.htm;
            auth_basic "ACL...";
            auth_basic_user_file /etc/nginx/.user;
        }
保存重启
测试

正文部分到此结束

版权声明:除非注明,本文由( chao )原创,转载请保留文章出处

本文链接:Centos6.5编译安装Nginx

继续浏览:nginx

分享文章:QQ空间腾讯微博新浪微博网易微博人人网开心网腾讯朋友百度搜藏

SecureCRT远程ubuntu出错
centos编译安装rar,unrar