Centos6.5編譯安裝Nginx-1.6.2和簡單配置

Nginx官方站點 http://nginx.org/cn/html

tengine 淘寶基於nginx二次開發 http://tengine.taobao.org/nginx

nginx已經附帶memcache模塊,能夠管理緩存,並且支持平滑升級......正則表達式

系統Centos6.5_64位 rpm包和源碼包    我這是源碼包shell

wget  http://nginx.org/download/nginx-1.6.2.tar.gz   穩定版apache

注意源碼編譯前請肯定你的開發包組是否安裝  開發工具 vim

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

編譯tomcat

./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 less

vim /etc/init.d/nginxtcp

#!/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 $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

並設定開機自動啓動

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;
        }
保存重啓
測試

相關文章
相關標籤/搜索