ddxiami

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2635|回复: 0

[web服务] nginx 1.4.1编译安装

[复制链接]
发表于 2013-5-21 14:30:26 | 显示全部楼层 |阅读模式
本帖最后由 黄振国 于 2013-5-23 14:23 编辑

#按本配置执行,可配置出www.test.com的站点

#安装环境
yum -y install zlib-devel pcre-devel openssl openssl-devel
yum -y install gcc make vixie-cron ntpdat

#设置用户
mkdir -p /data/www/test
useradd -u 2001 -d /dev/null -s /sbin/nologin webuser
chown -R webuser:webuser /data/www/

#解压安装包
tar zxf nginx-1.4.1.tar.gz
cd nginx-1.4.1

#版本信息伪装
sed -i 's/1.4.1/7.5.1.0.10/g;s/"nginx\/" NGINX_VERSION/"Microsoft-IIS\/" NGINX_VERSION/g;s/"NGINX"/"Microsoft-IIS"/g' ./src/core/nginx.h

#编译安装
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install

#建立相关目录
mkdir -p /usr/local/nginx/var
mkdir -p /data/logs/test
mkdir -p /data/www/test

#备份nginx.conf
mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak

#配置nginx.conf
vi /usr/local/nginx/conf/nginx.conf
==========================================================================
user  nobody;
worker_processes  4;

error_log  /data/logs/error.log error;
pid        var/nginx.pid;


events {
    use epoll;
    worker_connections  65534;
}
http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format main '$proxy_add_x_forwarded_for - $remote_user [$time_local] '
                      '"$request" $status $body_bytes_sent '
                      '"$http_referer" "$http_user_agent"';

    access_log  /data/logs/access.log  main;

    sendfile        off;
    tcp_nopush     off;
    tcp_nodelay    on;
    keepalive_timeout  3;

    gzip on;
    gzip_comp_level 4;
    gzip_min_length 1024;
    gzip_buffers 4 8k;
    gzip_types text/plain application/x-javascript text/css application/xml text/javasvript application/pdf image/x-ms-bmp;
    gzip_disable "MSIC [1-6]\.(?!.*SV1)";

    client_max_body_size 2m;
    client_header_timeout 30;
    client_body_timeout   30;
    client_header_buffer_size    1k;
    large_client_header_buffers  4 4k;

    send_timeout          30;

    include webserver.conf;

    server {
        listen       80  default_server;
        server_name  _;
        return 500;
     }

    #开启监控
        server{
                listen 9090;
                location /nginxinfo_status{
                stub_status on;
                access_log off;
                }
        }
}
==========================================================================

#各站点配置webserver.conf
vi /usr/local/nginx/conf/webserver.conf
==========================================================================
server {
    listen       80;
    server_name www.test.com;
    access_log  /data/logs/test/access.log main;
    error_log   /data/logs/test/error.log error;
        #若有url重写规则,可在这个位置添加,结构如下
        #rewrite **** ******

    location / {
        root            /data/www/test/;
        index           index.htm index.html index.php;
    }
        #禁止执行PHP的目录。
  location ~ .*(attachments|forumdata|images|customavatars)/.*\.php$ {
        deny all;
    }
        #允许执行PHP的配置。
    location ~ \.php$ {
        root /data/www/test/;
        include fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /data/www/test$fastcgi_script_name;
    }
}
==========================================================================

#配置日志切割程序
vi /usr/local/nginx/sbin/logcron.sh
==========================================================================
#!/bin/bash
# This script run at 00:00

# The Nginx logs path
log_dir="/data/logs"

#The path for Nginx logs path by cuted
date=`date -d "yesterday" +"%Y%m%d"`

#Change logformat as combined and cut Nginx logs
                /bin/mv  ${log_dir}/access.log ${log_dir}/access${date}.log
                /bin/mv  ${log_dir}/error.log ${log_dir}/error${date}.log
for i in test
        do
                /bin/mv  ${log_dir}/$i/access.log ${log_dir}/$i/access${date}.log
                /bin/mv  ${log_dir}/$i/error.log ${log_dir}/error{date}.log
        done

#Reopen Nginx logs file
kill -USR1 `cat  /usr/local/nginx/var/nginx.pid`
#删除60天前的访问日志文件
find /data/logs/*/access*.log -mtime +60 |xargs rm -f
#删除120天前的错误日志文件
find /data/logs/*/error*.log -mtime +120 |xargs rm -f
==========================================================================

#赋执行权限
chmod +x /usr/local/nginx/sbin/logcron.sh

#配置开机启动程序
vi /etc/init.d/nginx
==========================================================================
#! /bin/bash
#
# nginx          Start/Stop the nginx daemon.
#
# chkconfig: - 85 15
# description: nginx
# processname: nginx
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/var/nginx.pid

# Source function library.
. /etc/init.d/functions

# Nginx Settings
NGX_PID_FILE='/usr/local/nginx/var/nginx.pid'
NGX_PROC='/usr/local/nginx/sbin/nginx'
NGX_LOCK_FILE='/var/lock/subsys/nginx'

# Progran name
prog="nginx"

start() {
        ulimit -HSn 65536
        echo -n $"Starting $prog: "
        if [ -e $NGX_LOCK_FILE ]; then
            if [ -e $NGX_PID_FILE ] && [ -e /proc/`cat $NGX_PID_FILE` ]; then
                echo -n $"cannot start $prog: nginx is already running."
                failure $"cannot start $prog: nginx is already running."
                echo
                return 1
            fi
        fi
        $NGX_PROC
        RETVAL=$?
        [ $RETVAL -eq 0 ] && success $"$prog start" || failure $"$prog start"
        [ $RETVAL -eq 0 ] && touch $NGX_LOCK_FILE
        echo


        return $RETVAL
}

stop() {
        echo -n $"Stopping $prog: "
        if [ ! -e $NGX_LOCK_FILE ] || [ ! -e $NGX_PID_FILE ]; then
            echo -n $"cannot stop $prog: nginx is not running."
            failure $"cannot stop $prog: nginx is not running."
            echo
            return 1
        fi
        PID=`cat $NGX_PID_FILE`
        if checkpid $PID 2>&1; then
            # TERM first, then KILL if not dead
            kill -TERM $PID >/dev/null 2>&1
            usleep 100000
            if checkpid $PID && sleep 1 && checkpid $PID && sleep 3 && checkpid $PID; then
                kill -KILL $PID >/dev/null 2>&1
                usleep 100000
            fi
        fi
        checkpid $PID
        RETVAL=$((! $?))
        [ $RETVAL -eq 0 ] && success $"$prog shutdown" || failure $"$prog shutdown"
        [ $RETVAL -eq 0 ] && rm -f $NGX_LOCK_FILE;
        echo


        return $RETVAL
}

status() {
        status $prog
}

restart() {
        stop
        start
}

reload() {
        echo -n $"Reloading $prog: "
        if [ ! -e $NGX_LOCK_FILE ] || [ ! -e $NGX_PID_FILE ]; then
            echo -n $"cannot reload $prog: nginx is not running."
            failure $"cannot reload $prog: nginx is not running."
            echo
            return 1
        fi
        kill -HUP `cat $NGX_PID_FILE` >/dev/null 2>&1
        RETVAL=$?
        [ $RETVAL -eq 0 ] && success $"$prog reload" || failure $"$prog reload"
        echo
        return $RETVAL
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        restart
        ;;
  reload)
        reload
        ;;
  status)
        status
        ;;
  condrestart)
        [ -f $NGX_LOCK_FILE ] && restart || :
        ;;
  configtest)
        $NGX_PROC -t
        ;;
  *)
        echo $"Usage: $0 {start|stop|status|reload|restart|condrestart|configtest}"
        exit 1
esac
==========================================================================

#将nginx设置成开机启动
chmod +x /etc/init.d/nginx
chkconfig nginx on
service nginx restart
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|技术文档库 ( 闽ICP备15017263号-2 )|网站地图

GMT+8, 2025-5-18 22:58 , Processed in 0.035060 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表