• FreeBSD下nginx并支持php配置详解


    Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。

    Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中包括新浪博客、新浪播客、网易新闻等门户网站频道,六间房、56.com等视频分享网站,Discuz!官方论坛、水木社区 等知名论坛,豆瓣、YUPOO相册、海内SNS、迅雷在线等新兴Web 2.0网站。

    现在就就来学习在freebsd7.0中安装及配置nginx,这里只是把apache换成nginx,其他php等都不变:

    一、安装nginx 0.6.33

    [root@bsd01 ~]#cd /usr/ports 
    [root@bsd01 ports]#make search key=^nginx 

    Port: nginx-0.6.32_1 
    Path: /usr/ports/www/nginx 
    Info: Robust and small WWW server 

    Port: nginx-devel-0.7.21 
    Path: /usr/ports/www/nginx-devel 
    Info: Robust and small WWW server

    freebsd上有2个,一个0.6.33(这里查询显示nginx-0.6.32_1)是稳定版,0.7.21是最新的开发版,所以这里安装0.6.33。

    [root@bsd01 ports]#cd www/nginx 
    [root@bsd01 nginx]#make install clean

    接着出来“make config”的菜单,选择需要的组件即可:

    Options for nginx 0.6.33 
    ───────────────────────────────────── 
    [ ] DEBUG Enable nginx debugging 
    [ ] GOOGLE_PERFTOOLS Enable google perftools module 
    [X] HTTP_MODULE Enable HTTP module 
    [X] HTTP_ADDITION_MODULE Enable http_addition module 
    [X] HTTP_DAV_MODULE Enable http_webdav module 
    [X] HTTP_FLV_MODULE Enable http_flv module 
    [X] HTTP_PERL_MODULE Enable http_perl module 
    [X] HTTP_REALIP_MODULE Enable http_realip module 
    [X] HTTP_REWRITE_MODULE Enable http_rewrite module 
    [X] HTTP_SSL_MODULE Enable http_ssl module 
    [X] HTTP_STATUS_MODULE Enable http_stub_status module 
    [X] HTTP_SUB_MODULE Enable http_sub module 
    [ ] MAIL_MODULE Enable IMAP4/POP3/SMTP proxy module 
    [ ] MAIL_IMAP_MODULE Enable IMAP4 proxy module 
    [ ] MAIL_POP3_MODULE Enable POP3 proxy module 
    [ ] MAIL_SMTP_MODULE Enable SMTP proxy module 
    [ ] MAIL_SSL_MODULE Enable mail_ssl module 
    [X] WWW Enable html sample files

    tab到OK,开始安装。

    安装完后,配置目录位于/usr/local/etc/nginx内,这个是freebsd的规则了,闭着眼睛都知道。主配置文件就是nginx.conf。

    由于前面已经安装了php这些,这里就不用安装了,只要把php配置到nginx上就可以了。为了测试,我也把apache先停了,以免冲突。

    nginx目前还不能直接支持php,必须先借助于fastcgi来驱动php。现在fastcgi较好的办法有2种,一个是spawn-fcgi,另外一个就是php-fpm,一般来说可能php-fpm更强大一点,但是spawn-fcgi也有相当数量的人在使用,所以就看自己习惯了。所以我2个都做了一遍。

     二、使用spawn-fcgi支持php

    ▼首先需要安装lighttpd,以取得spawn-cgi

    [root@bsd01 ~]#cd /usr/ports/www/lighttpd 
    [root@bsd01 lighttpd]#make install clean

    ▼编辑nginx.con文件:

    [root@bsd01 ~]#vi /usr/local/etc/nginx/nginx.conf

    user nobody; 
    user www; 
    location / { 
    root /usr/local/www/nginx; 
    index index.html index.htm; 


    location / { 
    root /data1/www; 
    index index.html index.htm index.php; 


    #location ~ \.php$ { 
    # root html; 
    # fastcgi_pass 127.0.0.1:9000; 
    # fastcgi_index index.php; 
    # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 
    # include fastcgi_params; 
    #} 

    location ~ \.php$ { 
    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME /data1/www$fastcgi_script_name; 
    include fastcgi_params; 


    #location ~ /\.ht { 
    # deny all; 
    #} 

    location ~ /\.ht { 
    deny all; 
    }

    ▼现在用spawn-fcgi启动php-cgi进程:

    [root@bsd01 lighttpd]#spawn-fcgi -a 127.0.0.1 -p 9000 -u www -C 3 -f /usr/local/bin/php-cgi
    Kspawn-fcgi.c.206: child spawned successfully: PID: 25354

    “-C 3”就是启动3个php-cgi进程吧,但是好像实际会多1,2个。

    [root@bsd01 lighttpd]#ps -aux | grep php-cgi 
    www 25354 24.6 2.5 30956 12924 ?? Ss 3:33AM 0:00.41 /usr/local/bin/php-cgi 
    www 25355 0.0 2.5 30956 12964 ?? S 3:33AM 0:00.00 /usr/local/bin/php-cgi 

    www 25356 0.0 2.5 30956 12964 ?? S 3:33AM 0:00.00 /usr/local/bin/php-cgi 
    www 25357 0.0 2.5 30956 12964 ?? S 3:33AM 0:00.00 /usr/local/bin/php-cgi

    ▼然后启动nginx即可:

    [root@bsd01 ~]#nginx 
    [root@bsd01 ~]#pgrep nginx
    R25436 
    f25435

    三、使用php-fpm支持php

    ▼先下载php-fpm插件,然后解压到/usr/ports/lang目录。然后就可以使用ports来安装它了。

    [root@bsd01 ~]#fetchhttp://alamster.googlepages.com/php5-fpm.5.2.6.tar.gz 
    php5-fpm.5.2.6.tar.gz 100% of 11 kB 140 kBps 
    [root@bsd01 ~]#tar zxf php5-fpm.5.2.6.tar.gz -C /usr/ports/lang 
    [root@bsd01 ~]#cd /usr/ports/lang/php5-fpm/ 
    [root@bsd01 php5-fpm]#make install

    然后会出现“make config”的界面,选择需要的组件即可:

    Options for php5-fpm 5.2.6_1 
    ──────────────────────────────────────── 
    [X] CLI Build CLI version 
    [ ] DEBUG Enable debug 
    [X] SUHOSIN Enable Suhosin protection system (not for jails) 
    [X] MULTIBYTE Enable zend multibyte support 
    [ ] IPV6 Enable ipv6 support 
    [ ] MAILHEAD Enable mail header patch 
    [X] PATHINFO Enable path-info-check support

    然后tab到OK开始安装。

    【注意:】如果编译出错,提示"cannot install: unknown AUTOCONF version: 261."
    则需要编辑/usr/ports/lang/php5-fpm/中的Makefile文件,设置你系统正确的autoconf版本。
    先使用“pkg_info | grep autoconf”命令查看系统的autoconf的版本,比如我的是autoconf 2.62,则把"USE_AUTOTOOLS=   autoconf:261"修改为"USE_AUTOTOOLS=   autoconf:262"即可。

    ▼然后复制一下php-fpm的配置文件:

    [root@bsd01 ~]#cd /usr/local/etc 
    [root@bsd01 etc]#cp php-fpm.conf.dist php-fpm.conf

    编辑php-pfm.conf文件,让php-cgi以www用户启动(与nginx一样):

    [root@bsd01 etc]#chmod u+w php-fpm.conf 
    [root@bsd01 etc]#vi php-fpm.conf 

    Unix user of processes 
    <!-- <value name="user">nobody</value> --> 

    Unix group of processes 
    <!-- <value name="group">nobody</value> --> 

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

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

    小提示:记得/usr/local/etc/nginx/nginx.con文件的配置跟上面spawn-fcgi方式的一样,这里就不再说了。

    然后就可以启动php-fpm和nginxl了:

    [root@bsd01 etc]#/usr/local/etc/rc.d/php-fpm start 
    Starting php_fpm. 

    [root@bsd01 etc]#/usr/local/etc/rc.d/nginx start 
    Performing sanity check on nginx configuration: 
    2008/12/01 00:04:26 [info] 1136#0: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok 
    2008/12/01 00:04:26 [info] 1136#0: the configuration file /usr/local/etc/nginx/nginx.conf was tested successfully 
    Starting nginx.

    测试一下服务器,可以访问就大功告成了。

    四、让nginx自动启动

    如果让nginx开始自动启动在/etc/rc.conf中加入nginx_enable="YES"。

    如果使用php-fpm则需要在/etc/rc.conf中加入php_fpm_enable="YES"。

    PS: FreeBSD 有了自己的 spawn-fcgi,在 /usr/ports/www/spawn-fcgi 下面,在安装 nginx 不需要显式地借用 lighttpd 的了.

    # cd /usr/ports/www/spawn-fcgi 
    # make install clean 

    #vi /etc/rc.conf 
    + spawn_fcgi_enable="YES"

    可用参数的默认参数如下

    : ${spawn_fcgi_enable="NO"} 
    : ${spawn_fcgi_app="/usr/local/bin/php-cgi"} 
    : ${spawn_fcgi_pidfile="/var/run/spawn-fcgi.pid"} 
    : ${spawn_fcgi_user="www"} 
    : ${spawn_fcgi_group="www"} 
    : ${spawn_fcgi_bindaddr="127.0.0.1"} 
    : ${spawn_fcgi_bindport="9000"} 
    : ${spawn_fcgi_children="5"} 
    : ${spawn_fcgi_max_requests="1000"} 
    : ${spawn_fcgi_web_server_addrs=""} 
    : ${spawn_fcgi_allowed_env=""} 
    : ${spawn_fcgi_path_env="/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin"}

     

  • 相关阅读:
    别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(5)
    Docker容器(三)——容器端口映射以及访问后台运行的容器实例
    Docker容器(二)——镜像制作
    Docker容器(一)——Docker的介绍与部署
    Linux的桌面虚拟化技术KVM(五)——virsh常用命令
    Linux的桌面虚拟化技术KVM(四)——虚拟机镜像格式对比与转换
    Linux的桌面虚拟化技术KVM(三)——KVM虚拟机克隆和快照
    Linux的桌面虚拟化技术KVM(一)——新建KVM虚拟机
    Linux的桌面虚拟化技术KVM(二)——远程桌面管理
    搭建jumpserver堡垒机
  • 原文地址:https://www.cnblogs.com/apexchu/p/1868524.html
Copyright © 2020-2023  润新知