nginx在freebsd上的安装

一 . 安装必备软件

MySQL+PHP+Pcre

            cd /usr/ports/database/mysql50-server && make install clean
            cd /usr/lang/php5/ && make install clean   选择对cgi mysql等的支持
            cd /usr/devel/pcre && make install clean
        用ports安装 /usr/ports/www/nginx, make install clean

二、弄了一个fastcgi的脚本,来自lighttpd

            1) cd /usr/ports/www/lighttpd
            2) make
            3) cp /usr/ports/www/lighttpd/work/lighttpd-1.4.18/src/spawn-cgi /usr/bin
            4) make clean

三、修改配置文件:

1. /usr/local/etc/nginx/nginx.conf:

        user www www;
        worker_processes 10;
        error_log /usr/local/etc/nginx/logs/nginx_error.log crit;
        worker_rlimit_nofile 51200;
        events
        {
           use epoll;
           worker_connections 51200;
        }
        http
        {
           include   conf/mime.types;
           default_type application/octet-stream;
           charset gb2312;
           server_names_hash_bucket_size 128;
           keepalive_timeout 60;
           tcp_nodelay on;
           gzip on;
           gzip_min_length 1k;
           gzip_buffers   4 8k;
           gzip_http_version 1.1;
           gzip_types text/plain application/x-javascript. text/css \
                      text/html application/xml;
           server
           {
           listen   80;
           server_name www.test.com;
           index index.html index.htm index.php;
           root /usr/local/www/data/;
           location ~ .*\.php?$
           {
           include fcgi.conf; 
           fastcgi_pass 127.0.0.1:9000;
           fastcgi_index index.php;
           }

           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 /usr/local/nginx/logs/access.log access;
           }

           }

2. 先将php.ini的配置中 cgi.fix_pathinfo=1 这样php-cgi方能正常使用SCRIPT_FILENAME这个变量。

3,编辑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;

四 启动

1, 启动fcgi

 /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www -f /usr/local/bin/php-cgi
参数说明:
            -f <fcgiapp> 指定调用FastCGI的进程的执行程序位置,根据系统上所装的PHP的情况具体设置
            -a <addr> 绑定到地址addr
            -p <port> 绑定到端口port
            -s <path> 绑定到unix socket的路径path
            -C <childs> 指定产生的FastCGI的进程数,默认为5(仅用于PHP)
            -P <path> 指定产生的进程的PID文件路径
            -u 和-g FastCGI使用什么身份(-u 用户 -g 用户组)运行,Ubuntu下可以使  
               用www-data,其他的根据情况配置,如nobody、apache等

也可建立脚本

            1) ee /usr/bin/php-fastcgi
            #!/bin/sh

            /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www -f /usr/local/bin/php-cgi

            2) chmod 755 /usr/bin/php-fastcgi

            3) ee /usr/local/etc/rc.d/init-fastcgi

              #!/bin/bash                        
                        PHP_SCRIPT=/usr/bin/php-fastcgi
                        RETVAL=0
                        case "$1" in
                        start)
                        $PHP_SCRIPT
                        RETVAL=$?
                        ;;
                        stop)
                        killall -9 php
                        RETVAL=$?
                        ;;
                        restart)
                        killall -9 php
                        $PHP_SCRIPT
                        RETVAL=$?
                        ;;
                        *)
                        echo "Usage: php-fastcgi {start|stop|restart}"
                        exit 1
                        ;;
                        esac
                        exit $RETVAL                    
            4) chmod 755 /usr/local/etc/rc.d/init-fastcgi

2,启动nginx

 nginx -t -c /usr/local/etc/nginx/nginx.conf

测试配置是否正确, 如果屏幕显示以下两行信息,说明配置文件正确:

 the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
 the configuration file /usr/local/etc/nginx/nginx.conf was tested successfully

启动:

            nginx -c /usr/local/etc/nginx/nginx.conf

开机自动启动加入/etc/rc.conf

            nginx_enable="YES"

nginx参数:

 -c   </path/to/config>为 Nginx 指定一个配置文件,来代替缺省的。
 -t  不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件
 -v  显示 nginx 的版本。
 -V  显示 nginx 的版本,编译器版本和配置参数