Openwrt web服务器:PHP+Nginx安装

  • 正文:

    在上一节中,我们已经搭建了MySQL数据库了,因此在这一节中,我主要讲解php的安装,以及php的运行环境Nginx的安装。参考(http://www.right.com.cn/forum/thread-89216-1-1.html)

    一、PHP安装

    1.安装php软件包。

    1. opkg update
    2. opkg install php5 php5-mod-apc 
    3. opkg install php5-mod-gd php5-mod-session  
    4. opkg install php5-mod-pdo-mysql php5-mod-pdo php5-mod-mysql  
    5. opkg install php5-mod-mcrypt php5-mod-mbstring php5-fastcgi php5-cgi php5-mod-xml php5-mod-ctype php5-mod-curl php5-mod-exif php5-mod-ftp php5-mod-iconv php5-mod-json php5-mod-sockets

    在上述列表中,我安装了很多的php扩展支持,这些包可以根据自己的需要进行添加,并不是所有的php扩展包都需要安装的。

    在此,我列举几个较为重要的扩展:

    php5:这个不用多说,php的主框架软件包,该软件不安装,下面的其他软件包都没用。

    php5-mod-apc: Alternative PHP Cache (APC)是一种对PHP有效的开源高速缓冲储存器工具,它能够缓存opcode的php中间码。通过安装APC可以大大加速网站访问速度。

    php5-mod-mysql / php-mod-pdo / php5-mod-pdo-mysql:这些是使用MySQL所必须的。

    php5-mod-cgi/php5-mod-fastcgi: 网页交互的关键。

    php5-mod-xml: xml解析

    php5-mod-json: json支持

    如果大家觉得空间足够,也可以一劳永逸(不推荐),将所有php5相关的包都安装:

    1. opkg update
    2. opkg install php5*

    2. 配置php

    在php软件包安装完成之后,会在/etc下生成一个php.ini文件,该文件就是php的配置文件。我们可以根据自己的需要进行必要的配置。修改php.ini:

    01. short_open_tag = on
    02.   
    03. #如果php显示“not found”时,将下面一行注释
    04. #doc_root = '/mnt/sda3/www' 
    05.   
    06. #在Dynamic extension部分,将我们需要添加的扩展的注释都去掉“;”
    07. extension=ctype.so
    08. extension=curl.so
    09. extension=gd.so
    10. extension=mbstring.so
    11. extension=mcrypt.so
    12. extension=mysql.so
    13. extension=pdo.so
    14. extension=pdo_mysql.so
    15. extension=session.so
    16. extension=sockets.so
    17. extension=tokenizer.so
    18. extension=xml.so
    19.   
    20. [Date]
    21. #修改时区
    22. date.timezone = Asia/Chongqing
    23.   
    24. [MySQL]
    25. #修改MySQL的设置
    26. mysql.default_socket = /var/run/mysqld.sock

    tips: 在修改时区的时候,需要添加zoneinfo,也就是前文提到的软件包 zoneinfo-asia.opkg和zoneinfo-core.opkg,如果不添加支持,在修改之后会报错。

    本人使用的backfire里面是不带上述两个包的。

    二、Nginx安装

    1. 安装Nginx软件包

    1. opkg update
    2. opkg install nginx

    2. 修改Nginx配置文件(/etc/nginx.conf)

    准备工作:

    (1)创建Nginx的工作目录:

    1. mkdir /mnt/sda3/www

    (2)增加Nginx的用户以及用户组:

    1. opkg install shadow-useradd shadow-groupadd
    2.   
    3. #添加用户组
    4. groupadd www
    5. #添加用户到用户组www
    6. useradd -g www www
    7. #将Nginx的工作目录绑定到www用户
    8. chown -R www:www /mnt/sda3/www

    (3)修改Nginx的配置文件(/etc/nginx/nginx.conf):

    原本的Nginx配置文件有些复杂,将其按照不同的功能分割成不同的配置文件:

    01. user  www www;  #设定用户及其用户名
    02. worker_processes  1;  #允许线程个数
    03. pid        /var/run/nginx.pid;   #指定pid的存放位置
    04. error_log  /var/log/nginx_error.log; #指定error.log的位置
    05. events {
    06.     use epoll;
    07.     worker_connections  1024; #指定最大连接数
    08. }
    09. http {
    10.     include       mime.types;
    11.     default_type  application/octet-stream;
    12.     access_log  /var/log/nginx/access.log  main;  #access.log日志
    13.     sendfile        on;
    14.     tcp_nopush     on;
    15.     #keepalive_timeout  0;
    16.     keepalive_timeout  65;
    17.   
    18.     gzip  on;
    19.     include vhost.conf; #server 配置文件
    20. }

    (4)在/ect/nginx文件夹下创建host配置文件: vhost.conf

    01. server {
    02.     listen       8000;      #系统中原有httpd监听80
    03.     server_name  localhost;
    04.     root /mnt/sda3/www;  #网站的工作目录
    05.     index  index.html index.htm index.php default.php;
    06.   
    07.     # redirect server error pages to the static page /50x.html
    08.     error_page   500 502 503 504  /50x.html; #error页面重定向
    09.     location = /50x.html {
    10.         root   html;
    11.     }
    12.   
    13.     # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    14.     location ~.php$ {
    15.         #将php脚本传递给FastCGIserver
    16.         fastcgi_pass   127.0.0.1:9000; #FastCGI的server
    17.         fastcgi_index  index.php;  
    18.         fastcgi_param  SCRIPT_FILENAME   /mnt/sda3/www/$fastcgi_script_name; #fastcgi的参数
    19.         include        fastcgi_params;   #fastcgi的具体配置文件
    20.     }
    21. }

    (5) FastCGI具体配置: /etc/nginx/fastcgi_param

    01. #解决文件类型解析错误的问题
    02. if ( $request_filename ~* (.*).php ) {
    03.         set $php_url $1;
    04. }
    05. if (!-e $php_url.php) {
    06.         return 403;
    07. }
    08.   
    09. fastcgi_param  QUERY_STRING       $query_string;
    10. fastcgi_param  REQUEST_METHOD     $request_method;
    11. fastcgi_param  CONTENT_TYPE       $content_type;
    12. fastcgi_param  CONTENT_LENGTH     $content_length;
    13.   
    14. fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
    15. #下面注释中的参数:脚本名,其设置需要注意。亲测有效
    16. #fastcgi_param  SCRIPT_FILENAME   $document_root/$fastcgi_script_name;
    17. fastcgi_param  SCRIPT_FILENAME    /mnt/sda3/www/$fastcgi_script_name;
    18. fastcgi_param  REQUEST_URI        $request_uri;
    19. fastcgi_param  DOCUMENT_URI       $document_uri;
    20. fastcgi_param  DOCUMENT_ROOT      $document_root;
    21. fastcgi_param  SERVER_PROTOCOL    $server_protocol;
    22.   
    23. fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
    24. fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
    25.   
    26. fastcgi_param  REMOTE_ADDR        $remote_addr;
    27. fastcgi_param  REMOTE_PORT        $remote_port;
    28. fastcgi_param  SERVER_ADDR        $server_addr;
    29. fastcgi_param  SERVER_PORT        $server_port;
    30. fastcgi_param  SERVER_NAME        $server_name;
    31.   
    32. # PHP only, required if PHP was built with --enable-force-cgi-redirect
    33. fastcgi_param  REDIRECT_STATUS    200;

    (6)开启Nginx服务:

    对于Nginx服务的开启有点麻烦。首先要开启fastcgi服务:

    1. /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 2 -f /usr/bin/php-cgi

    如果要开机启动,将上述指令放置到/etc/rc.local脚本之下

    如果rc.local 中有exit 0 ,记得注释掉,不然就不会开始监听9000端口。这个问题整了好久。。。。

    开启Nginx服务

    1. /etc/init.d/nginx enable
    2. /etc/init.d/nginx start

    三、Nginx+php+MySQL 测试

    在/mnt/sda3/www文件夹下,分别放置以下文件进行测试:

    在测试的时候,记得结合Nginx的日志文件:

    1. /var/log/nginx/acesss.log
    2. /var/log/nginx/error.log

    1、 index.html(测试Nginx服务是否正常开启)

    01. <!DOCTYPE html>
    02. <html lang='en'>
    03. <head>
    04.     <meta charset='UTF-8'>
    05.     <title>this is a test file</title>
    06. </head>
    07. <body>
    08.     <span>this is a html file</span>
    09. </body>
    10. </html>

    显示结果:

    \

    2. index.php(用于测试fastcgi是否工作正常)

    1. <?php
    2.     phpinfo();
    3. ?>

    显示结果:

    \

    3. 1.php (测试文件名是否解释正常)

    1. <?php
    2.     echo date('Y-m-d h:i:s',time());
    3. ?>

    \

    五、 遇到的问题,以及解决方案

    1.问题: 测试fastcgi是否工作的时候,页面显示“no input file specified ”。

       解决方案:在网络上查找了各种解决方案,我将对我有用的几条写出来,与大家分享一下:

     (1)fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 改为:

                        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #经测试无效。

            接着换:fastcgi_param SCRIPT_FILENAME /mnt/sda3/www/$fastcgi_script_name; #/mnt/sda3/www为网站的工作目录

     (2)fastcgi:9000端口没有正常开启

       在使用如下命令:

        netstat-ant |grep 9000

         9000端口没有开启。也就是说fastcgi服务没有开启。手动开启:

    1. /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 2 -f /usr/bin/php-cgi

       亲测有效。

    OK:Nginx+PHP+MySQL开发环境就成功移植到Openwrt平台上了。

    --------------------------------------------------------------------------

    预告:下一章讲VPN了!(应一个同学的要求)

    出处: htttp://www.cnblogs.com/double-win/ 谢谢!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值