-
正文:
在上一节中,我们已经搭建了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/ 谢谢!
Openwrt web服务器:PHP+Nginx安装
最新推荐文章于 2024-07-18 08:00:07 发布