2010年12月23日 星期四

Nginx Web伺服器 - 安裝

因我底下是以Nginx+PHP+Mysql配合方式安裝的, 如果只想純以Web server方式,則只要安裝Nginx 即可運作.

1. 安裝套件
1.1下載所需library的套件
[root@mail /]# yum install -y libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers

2. 下載原始套件
[root@mail /]# cd /usr/local/src/
[root@mail src]# wget blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz

3. 編譯/安裝PHP5.2.12所需LIBRARY
[root@mail src]# tar zxvf libiconv-1.13.tar.gz
[root@mail src]# cd libiconv-1.13
[root@mail libiconv-1.13]# ./configure --prefix=/usr/local
[root@mail libiconv-1.13]# make && make install
[root@mail libiconv-1.13]# cd ../

[root@mail src]# tar zxvf libmcrypt-2.5.8.tar.gz
[root@mail src]# cd libmcrypt-2.5.8
[root@mail libmcrypt-2.5.8]# ./configure
[root@mail libmcrypt-2.5.8]# make && make install
[root@mail libmcrypt-2.5.8]# /sbin/ldconfig
[root@mail libmcrypt-2.5.8]# cd libltdl/
[root@mail libltdl]# ./configure --enable-ltdl-install
[root@mail libltdl]# make && make install
[root@mail libltdl]# cd ../../

[root@mail src]# tar jxvf mhash-0.9.9.9.tar.bz2
[root@mail src]# cd mhash-0.9.9.9
[root@mail mhash-0.9.9.9]#./configure
[root@mail mhash-0.9.9.9]# make && make install
[root@mail mhash-0.9.9.9]# cd ../

[root@mail src]# ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
[root@mail src]# ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
[root@mail src]# ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
[root@mail src]# ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
[root@mail src]# ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
[root@mail src]# ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
[root@mail src]# ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
[root@mail src]# ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
[root@mail src]# ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1

[root@mail src]# tar zxvf mcrypt-2.6.8.tar.gz
[root@mail src]# cd mcrypt-2.6.8
[root@mail mcrypt-2.6.8]# /sbin/ldconfig
[root@mail mcrypt-2.6.8]# ./configure
[root@mail mcrypt-2.6.8]# make && make install
[root@mail mcrypt-2.6.8]# cd ../

4. 編譯/安裝Mysql
[root@mail src]# groupadd mysql
[root@mail src]# useradd -g mysql mysql
[root@mail src]# tar zxvf mysql-5.1.46.tar.gz
[root@mail src]# cd mysql-5.1.46
[root@mail mysql-5.1.46]# ./configure --prefix=/usr/local/mysql5 --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=innobase
[root@mail mysql-5.1.46]# make && make install
[root@mail mysql-5.1.46]# mkdir -p /data0/mysql/data
[root@mail mysql-5.1.46]# chown -R mysql.mysql /data0/

4.1 建立資料表
[root@mail mysql-5.1.46]# /usr/local/mysql5/bin/mysql_install_db --basedir=/usr/local/mysql5 --datadir=/data0/mysql/data --user=mysql

4.2  編輯my.cnf檔案
[root@mail mysql-5.1.46]# vi /data0/mysql/my.cnf
內容如下
[client]
character-set-server = utf8
port    = 3306
socket  = /tmp/mysql.sock

[mysql]
prompt="(\u:www.catchlink.com:)[\d]>"
no-auto-rehash

[mysqld]
#character-set-server = utf8
user    = mysql
port    = 3306
socket  = /tmp/mysql.sock
basedir = /usr/local/mysql5
datadir = /data0/mysql/data
log-error = /data0/mysql/mysql_error.log
open_files_limit    = 10240
back_log = 600
max_connections = 3000
max_connect_errors = 6000
table_cache = 614
external-locking = FALSE
max_allowed_packet = 32M
sort_buffer_size = 2M
join_buffer_size = 2M
thread_cache_size = 300
thread_concurrency = 8
query_cache_size = 32M
query_cache_limit = 2M
query_cache_min_res_unit = 2k
default-storage-engine = MyISAM
thread_stack = 192K
transaction_isolation = READ-COMMITTED
tmp_table_size = 246M
max_heap_table_size = 246M
long_query_time = 1
log-bin = /data0/mysql/binlog
binlog_cache_size = 4M
binlog_format = MIXED
max_binlog_cache_size = 8M
max_binlog_size = 512M
expire_logs_days = 7
key_buffer_size = 256M
read_buffer_size = 1M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover

skip-name-resolve
master-connect-retry = 10
slave-skip-errors = 1032,1062,126,1114,1146,1048,1396

#master-host     =   192.168.1.2
#master-user     =   username
#master-password =   password
#master-port     =  3306

server-id = 1

innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 2048M
innodb_data_file_path = ibdata1:1024M:autoextend
innodb_file_io_threads = 4
innodb_thread_concurrency = 8
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 16M
innodb_log_file_size = 128M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = 0
#log-slow-queries = /data0/mysql/slow.log
#long_query_time = 10

[mysqldump]
quick
max_allowed_packet = 32M
編輯完畢存檔退出

[root@mail mysql]# export PATH=$PATH:/usr/local/mysql5/bin

4.3 編輯自動啟動Mysql
[root@mail mysql-5.1.46]# vi /data0/mysql/mysql
內容如下
#!/bin/sh

mysql_username="admin"  ß輸入mysql帳號
mysql_password="12345678"  ß輸入mysql密碼

function_start_mysql()
{
    printf "Starting MySQL...\n"
    /bin/sh /usr/local/mysql5/bin/mysqld_safe --defaults-file=/data0/mysql/my.cnf 2>&1 > /dev/null &
}

function_stop_mysql()
{
    printf "Stoping MySQL...\n"
    /usr/local/mysql5/bin/mysqladmin -u ${mysql_username} -p${mysql_password} -S /tmp/mysql.sock shutdown
}

function_restart_mysql()
{
    printf "Restarting MySQL...\n"
    function_stop_mysql
    sleep 5
    function_start_mysql
}
function_kill_mysql()
{
    kill -9 $(ps -ef | grep 'bin/mysqld_safe' | grep ${mysql_port} | awk '{printf $2}')
    kill -9 $(ps -ef | grep 'libexec/mysqld' | grep ${mysql_port} | awk '{printf $2}')
}

if [ "$1" = "start" ]; then
    function_start_mysql
elif [ "$1" = "stop" ]; then
    function_stop_mysql
elif [ "$1" = "restart" ]; then
function_restart_mysql
elif [ "$1" = "kill" ]; then
function_kill_mysql
else
    printf "Usage: /data0/mysql/mysql {start|stop|restart|kill}\n"
fi

[root@mail mysql-5.1.46]# chmod +x /data0/mysql/mysql

4.4 啟動Mysql
[root@mail mysql-5.1.46]# /data0/mysql/mysql start
Starting MySQL...

[root@mail mysql-5.1.46]# netstat -na |grep -w 3306
tcp        0      0 0.0.0.0:3306                0.0.0.0:*               LISTEN

4.5 測試Mysql
[root@mail mysql]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.46-log Source distribution

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

4.6 建立Mysql admin使用者
[root@mail mysql]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.46-log Source distribution

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY '12345678';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'127.0.0.1' IDENTIFIED BY '12345678';
Query OK, 0 rows affected (0.00 sec)

mysql>quit;

4.7 停止Mysql
[root@mail mysql]# /data0/mysql/mysql stop
Stoping MySQL...

5. 編譯/安裝PHP (FastCGI模式)
[root@mail src]# tar zxvf php-5.2.13.tar.gz
[root@mail src]# gzip -dc php-5.2.13-fpm-0.5.13.diff.gz |patch -d php-5.2.13 -p1
[root@mail src]# cd php-5.2.13
[root@mail php-5.2.13]# ./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc --with-mysql=/usr/local/mysql5 --with-mysqli=/usr/local/mysql5/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --without-pear
[root@mail php-5.2.13]# make ZEND_EXTRA_LIBS='-liconv'
[root@mail php-5.2.13]# make install
[root@mail php-5.2.13]# cp php.ini-dist /usr/local/php5/etc/php.ini
[root@mail php-5.2.13]# cd ../
5.1安裝PHP 延伸模組
[root@mail src]# tar zxvf memcache-2.2.5.tgz
[root@mail src]# cd memcache-2.2.5
[root@mail memcache-2.2.5]# /usr/local/php5/bin/phpize
[root@mail memcache-2.2.5]# ./configure --with-php-config=/usr/local/php5/bin/php-config
[root@mail memcache-2.2.5]# make && make install
[root@mail memcache-2.2.5]# cd ../

[root@mail src]# tar jxvf eaccelerator-0.9.6.tar.bz2
[root@mail src]# cd eaccelerator-0.9.6
[root@mail eaccelerator-0.9.6]# /usr/local/php5/bin/phpize
[root@mail eaccelerator-0.9.6]# ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php5/bin/php-config
[root@mail eaccelerator-0.9.6]# make && make install
[root@mail eaccelerator-0.9.6]# cd ../

[root@mail src]# tar zxvf PDO_MYSQL-1.0.2.tgz
[root@mail src]# cd PDO_MYSQL-1.0.2
[root@mail PDO_MYSQL-1.0.2]# /usr/local/php5/bin/phpize  
[root@mail PDO_MYSQL-1.0.2]# ./configure --with-php-config=/usr/local/php5/bin/php-config --with-pdo-mysql=/usr/local/mysql5
[root@mail PDO_MYSQL-1.0.2]# make && make install
[root@mail PDO_MYSQL-1.0.2]# cd ../

[root@mail src]# tar zxvf ImageMagick.tar.gz
[root@mail src]# cd ImageMagick-6.5.1-2/
[root@mail ImageMagick-6.5.1-2]# ./configure
[root@mail ImageMagick-6.5.1-2]# make && make install
[root@mail ImageMagick-6.5.1-2]# cd ../

[root@mail src]# tar zxvf imagick-2.2.2.tgz
[root@mail src]# cd imagick-2.2.2
[root@mail imagick-2.2.2]# /usr/local/php5/bin/phpize                   
[root@mail imagick-2.2.2]# ./configure --with-php-config=/usr/local/php5/bin/php-config
[root@mail imagick-2.2.2]# make && make install
[root@mail imagick-2.2.2]# cd ../
5.2 編輯php.ini檔案
[root@mail src]# vi /usr/local/php5/etc/php.ini
內容如下
extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/"
extension = "memcache.so"
extension = "pdo_mysql.so"
extension = "imagick.so"
output_buffering = On

[root@mail src]# mkdir /usr/local/eaccelerator_cache
[root@mail src]# vi /usr/local/php5/etc/php.ini
在檔案最後行新加入以下內容
內容如下
[eaccelerator]
zend_extension="/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/usr/local/eaccelerator_cache"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

5.3 新增www使用者及群組
[root@mail src]# groupadd www
[root@mail src]# useradd -g www www
[root@mail src]# mkdir -p /data0/htdocs/www
[root@mail src]# chmod +w /data0/htdocs/www
[root@mail src]# chown -R www.www /data0/htdocs/www

5.4 編輯php-fpm檔案
[root@mail etc]# rm -rf /usr/local/php5/etc/php-fpm.conf  ß刪除原有檔案
[root@mail etc]# vi /usr/local/php5/etc/php-fpm.conf  ß新增php-fpm.conf
內容如下
<?xml version="1.0" ?>
<configuration>

  All relative paths in this config are relative to php's install prefix

  <section name="global_options">

    Pid file
    <value name="pid_file">/usr/local/php5/logs/php-fpm.pid</value>

    Error log file
    <value name="error_log">/usr/local/php5/logs/php-fpm.log</value>

    Log level
    <value name="log_level">notice</value>

    When this amount of php processes exited with SIGSEGV or SIGBUS ...
    <value name="emergency_restart_threshold">10</value>

    ... in a less than this interval of time, a graceful restart will be initiated.
    Useful to work around accidental curruptions in accelerator's shared memory.
    <value name="emergency_restart_interval">1m</value>

    Time limit on waiting child's reaction on signals from master
    <value name="process_control_timeout">5s</value>

    Set to 'no' to debug fpm
    <value name="daemonize">yes</value>

  </section>
<workers>

    <section name="pool">

      Name of pool. Used in logs and stats.
      <value name="name">default</value>

      Address to accept fastcgi requests on.
      Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket'
      <value name="listen_address">127.0.0.1:9000</value>

      <value name="listen_options">

        Set listen(2) backlog
        <value name="backlog">-1</value>

        Set permissions for unix socket, if one used.
        In Linux read/write permissions must be set in order to allow connections from web server.
        Many BSD-derrived systems allow connections regardless of permissions.
        <value name="owner"></value>
        <value name="group"></value>
        <value name="mode">0666</value>
      </value>

      Additional php.ini defines, specific to this pool of workers.
      <value name="php_defines">
        <value name="sendmail_path">/usr/sbin/sendmail -t -i</value>
        <value name="display_errors">0</value>
      </value>
Unix user of processes
      <value name="user">www</value>

      Unix group of processes
      <value name="group">www</value>

      Process manager settings
      <value name="pm">

        Sets style of controling worker process count.
        Valid values are 'static' and 'apache-like'
        <value name="style">static</value>

        Sets the limit on the number of simultaneous requests that will be served.
        Equivalent to Apache MaxClients directive.
        Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi
        Used with any pm_style.
        <value name="max_children">64</value>

        Settings group for 'apache-like' pm style
        <value name="apache_like">

          Sets the number of server processes created on startup.
          Used only when 'apache-like' pm_style is selected
          <value name="StartServers">20</value>
Sets the desired minimum number of idle server processes.
          Used only when 'apache-like' pm_style is selected
          <value name="MinSpareServers">5</value>

          Sets the desired maximum number of idle server processes.
          Used only when 'apache-like' pm_style is selected
          <value name="MaxSpareServers">35</value>

        </value>

      </value>

      The timeout (in seconds) for serving a single request after which the worker process will be terminated
      Should be used when 'max_execution_time' ini option does not stop script execution for some reason
      '0s' means 'off'
      <value name="request_terminate_timeout">0s</value>

      The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file
      '0s' means 'off'
      <value name="request_slowlog_timeout">0s</value>

      The log file for slow requests
      <value name="slowlog">logs/slow.log</value>

      Set open file desc rlimit
      <value name="rlimit_files">65535</value>
Set max core size rlimit
      <value name="rlimit_core">0</value>

      Chroot to this directory at the start, absolute path
      <value name="chroot"></value>

      Chdir to this directory at the start, absolute path
      <value name="chdir"></value>

      Redirect workers' stdout and stderr into main error log.
      If not set, they will be redirected to /dev/null, according to FastCGI specs
      <value name="catch_workers_output">yes</value>

      How much requests each process should execute before respawn.
      Useful to work around memory leaks in 3rd party libraries.
      For endless request processing please specify 0
      Equivalent to PHP_FCGI_MAX_REQUESTS
      <value name="max_requests">1024</value>

      Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.
      Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)
      Makes sense only with AF_INET listening socket.
      <value name="allowed_clients">127.0.0.1</value>
Pass environment variables like LD_LIBRARY_PATH
      All $VARIABLEs are taken from current environment
      <value name="environment">
        <value name="HOSTNAME">$HOSTNAME</value>
        <value name="PATH">/usr/local/bin:/usr/bin:/bin</value>
        <value name="TMP">/tmp</value>
        <value name="TMPDIR">/tmp</value>
        <value name="TEMP">/tmp</value>
        <value name="OSTYPE">$OSTYPE</value>
        <value name="MACHTYPE">$MACHTYPE</value>
        <value name="MALLOC_CHECK_">2</value>
      </value>

    </section>

  </workers>

</configuration>

5.5 啟動php-cgi Daemon
[root@mail etc]# ulimit –SHn 65535
[root@mail etc]# /usr/local/php5/sbin/php-fpm start
Starting php_fpm  done
[root@mail etc]# netstat –na |grep –w 9000
tcp        0      0 127.0.0.1:9000              0.0.0.0:*             LISTEN

6. 編譯/安裝Nginx所需套件
[root@mail src]# tar zxvf pcre-7.9.tar.gz
[root@mail pcre-7.9]# ./configure
[root@mail pcre-7.9]# make && make install
[root@mail pcre-7.9]# cd ../

7. 編譯/安裝Nginx
[root@mail src]# tar zxvf nginx-0.8.36.tar.gz
[root@mail src]# cd nginx-0.8.36
[root@mail nginx-0.8.36]# ./configure –prefix=/usr/local/nginx –user=www –group=www –with-http_stub_status_module –with-http_ssl_module
[root@mail nginx-0.8.36]# make && make install

7.1 建立Nginx log 目錄
[root@mail nginx-0.8.36]# mkdir –p /data1/logs
[root@mail nginx-0.8.36]# chmod +w /data1/logs/
[root@mail nginx-0.8.36]# chown –R www.www /data1/logs/

7.2 建立Nginx 設定檔
[root@mail nginx-0.8.36]# rm –rf /usr/local/nginx/conf/nginx.conf
[root@mail nginx-0.8.36]# vi /usr/local/nginx/conf/nginx.conf
內容如下所
user  www www;

worker_processes 2;

error_log  /data1/logs/nginx_error.log  crit;

pid        /usr/local/nginx/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.
Worker_rlimit_nofile 65535;

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

  #charset  big5;

  server_names_hash_bucket_size 128;
  client_header_buffer_size 32k;
  large_client_header_buffers 4 32k;
  client_max_body_size 8m;

  sendfile on;
  tcp_nopush     on;

  keepalive_timeout 60;

  tcp_nodelay on;

  fastcgi_connect_timeout 300;
  fastcgi_send_timeout 300;
  fastcgi_read_timeout 300;
  fastcgi_buffer_size 64k;
  fastcgi_buffers 4 64k;
  fastcgi_busy_buffers_size 128k;
  fastcgi_temp_file_write_size 128k;
gzip on;
  gzip_min_length  1k;
  gzip_buffers     4 16k;
  gzip_http_version 1.0;
  gzip_comp_level 2;
  gzip_types       text/plain application/x-javascript text/css application/xml;
  gzip_vary on;

  #limit_zone  crawler  $binary_remote_addr  10m;
server
  {
    listen       80;
    server_name  192.168.1.12;
    index index.html index.htm index.php;
    root  /data0/htdocs/www;

    #limit_conn   crawler  20;

    location ~ .*\.(php|php5)?$
    {
      #fastcgi_pass  unix:/tmp/php-cgi.sock;
      fastcgi_pass  127.0.0.1:9000;
      fastcgi_index index.php;
      include fcgi.conf;   //include fcgi.conf 檔案
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
      expires      30d;
    }
location ~ .*\.(js|css)?$
    {
      expires      1h;
    }

    log_format  access  ‘$remote_addr - $remote_user [$time_local] “$request” ‘
              ‘$status $body_bytes_sent “$http_referer” ‘
              ‘”$http_user_agent” $http_x_forwarded_for’;
    access_log  /data1/logs/access.log  access;
      }

  #server
  #{
  #  listen  80;
  #  server_name  status.catchlink.com;

  #  location / {
  #  stub_status on;
  #  access_log   off;
  #  }
  #}
}

7.3 建立fcgi.conf檔案
[root@mail nginx-0.8.36]# vi /usr/local/nginx/conf/fcgi.conf
內容如下
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with –enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

7.4 啟動Nginx
[root@mail html]# cp /usr/local/nginx/html/index.html index.html /data0/htdocs/www/
[root@mail nginx-0.8.36]# ulimit –SHn 65535
[root@mail nginx-0.8.36]# /usr/local/nginx/sbin/nginx
[root@mail nginx-0.8.36]# netstat –na |grep –w 80
tcp        0      0 0.0.0.0:80                  0.0.0.0:*          LISTEN

7.5 自動啟動Nginx
[root@mail html]# vi /etc/rc.local
ulimit –SHn 65535
/usr/local/php5/sbin/php-fpm start
/usr/local/nginx/sbin/nginx

7.6 優化Linux Kernel參數
[root@mail html]# vi /etc/sysctl.conf
net.ipv4.tcp_max_syn_backlog = 65536
net.core.netdev_max_backlog =  32768
net.core.somaxconn = 32768

net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2

net.ipv4.tcp_tw_recycle = 1
#net.ipv4.tcp_tw_len = 1
net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3276800

#net.ipv4.tcp_fin_timeout = 30
#net.ipv4.tcp_keepalive_time = 120
net.ipv4.ip_local_port_range = 1024  65535

使設定馬上生效
[root@mail html]# /sbin/sysctl –p

7.7 Reload nginx.conf配置檔
[root@mail html]# /usr/local/nginx/sbin/nginx –s reload

7.8 定時切割Nginx log file script
[root@mail html]# vi /usr/local/nginx/sbin/cut_nginx_log.sh
#!/bin/bash
# This script run at 00:00

# The Nginx logs path
logs_path=”/usr/local/nginx/logs/”

mkdir –p ${logs_path}$(date –d “yesterday” +”%Y”)/$(date –d “yesterday” +”%m”)/
mv ${logs_path}access.log ${logs_path}$(date –d “yesterday” +”%Y”)/$(date –d “yesterday” +”%m”)/access_$(date –d “yesterday” +”%Y%m%d”).log
kill –USR1 `cat /usr/local/nginx/nginx.pid`

7.9 設定crontab
00 00 * * * /bin/bash  /usr/local/nginx/sbin/cut_nginx_log.sh

7.10 啟動 Nginx
[root@mail src]# ulimit –SHn 65535
[root@mail src]# /usr/local/php5/sbin/php-fpm start
Starting php_fpm  done
[root@mail src]# /usr/local/nginx/sbin/nginx

7.11 測試Nginx網頁


7.12 測試Nginx PHP 功能
[root@mail src]# vi /data0/htdocs/www/test.php
<?
Phpinfo();
?>



 
 
 

沒有留言:

張貼留言