openwrt下搭建lighttpd+mysql+php5环境(二)

前言

之前的“openwrt下搭建lighttpd+mysql+php5环境(一)”总结是基于openwrt版本为CC 15.05的,每一个openwrt版本安装的软件版本也是不同的,就好像Windows7下的软件和Windows xp下的软件是不同的一样,openwrt的软件对系统的依赖性更强。(mt76xx)

这里要做的安装总结是基于BB 14.07的,目前该openwrt版本是最稳定的,经过了长时间的运行,就像Windows7一样,而CC 15.05就像Windows10。

一、安装lighttpd

1.安装命令

opkg update

opkg install lighttpd lighttpd-mod-cgi

openwrt下搭建lighttpd+mysql+php5环境(二)_php

2.编辑/etc/lighttpd/lighttpd.conf文件

vim /etc/lighttpd/lighttpd.conf

(1)增加cgi模块(或者你安装其它模块也行,我这里安装cgi模块来支持php)

openwrt下搭建lighttpd+mysql+php5环境(二)_php_02

(2)设置web服务根目录以及增加index文件名

openwrt下搭建lighttpd+mysql+php5环境(二)_php_03

(3)分配相关文件的执行程序(比如.php文件就用cgi程序去运行)

openwrt下搭建lighttpd+mysql+php5环境(二)_html_04

3.创建网站目录

我这里还是沿用之前的/srv/www目录(为了和uhttpd的www目录区分开)。

mkdir -p /srv/www

4.启动lighttpd服务以及设置其开机自启

/etc/init.d/lighttpd start

/etc/init.d/lighttpd enable

5.确认lighttpd服务安装运行成功

编写一个简单的index.html文件,放入/srv/www目录下,index.html内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>this is a test file</title>
</head>
<body>
<span>this is a html file</span>
</body>
</html>


输入开发板的ip地址及端口(我们之前设置的为81,luci的web占用了80端口):

openwrt下搭建lighttpd+mysql+php5环境(二)_mysql_05

二、安装PHP

1.安装PHP5(就我目前所找到的资料来看,openwrt没有多余选择,只能安装php5)

opkg update

opkg install php5

opkg install php5-cgi

2.编辑/etc/php.ini(vim /etc/php.ini

改doc_root目录:

openwrt下搭建lighttpd+mysql+php5环境(二)_mysql_06

需要开启的模块,则开放其动态库:(这里的动态库仅仅针对php程序)

openwrt下搭建lighttpd+mysql+php5环境(二)_php_07

由于lighttpd的cgi模块不再单独体现,之前已经在lighttpd中修改了lighttpd.conf文件,添加了php的cgi支持并重启了lighttpd服务器,所以这里也不再需要重启lighttpd服务器,直接测试php文件是否可运行。

3.使用如下命令在/srv/www目录下简单添加一个php文件,以此来测试PHP是否安装成功:(别敲错命令)

echo "<?php phpinfo(); ?>" > /srv/www/index.php

openwrt下搭建lighttpd+mysql+php5环境(二)_html_08

然后在浏览器查看81端口下的index.php文件:(这里的500错误是我没有运行上面的命令生成index.php文件造成的,因为我之前已经有这个文件了,所以我直接使用的之前的文件,但是两个文件的内容实际是不一样的,这个错误的文件导致的500错误,和php没有关系,但是在找到这个错误之前我是不知道这个原因的。直接输入上面的命令不会造成这样的错误,所以下面几步不是必须步骤,只是我为了查找错误进行的几步)

openwrt下搭建lighttpd+mysql+php5环境(二)_mysql_09

出现这个错误可能是你的index.php文件有问题,可以启用lighttpd的fastcgi模块,运行后有错误可以及时提示出来。

4.安装lighttpd-mod-fastcgi

增加fastcgi模块的方法和增加cgi的方式类似:

(1)安装lighttpd-mod-fastcgi

opkg update

opkg install lighttpd-mod-fastcgi

(2)配置lighttpd.conf文件(其它地方保持原样即可)

vim /etc/lighttpd/lighttpd.conf

openwrt下搭建lighttpd+mysql+php5环境(二)_php_10

开启fastcgi服务,保证其bin路径正确:

openwrt下搭建lighttpd+mysql+php5环境(二)_mysql_11

(3)重启lighttpd

/etc/init.d/lighttpd restart

5.再运行index.php文件

(1)直接运行原来的index.php

openwrt下搭建lighttpd+mysql+php5环境(二)_php_12

提示警告和错误了,发现这个index.php文件是我之前tp框架的index.php文件,这个文件这个时候单独放在这里是错误的,之前的cgi没有找到错误原因,直接给了500错误,我们开启了fast-cgi才发现了这个问题。

(2)删除错误的index.php文件运行上面的命令

echo "<?php phpinfo(); ?>" > /srv/www/index.php

这次不投机了,直接运行该命令,然后在浏览器下查看:

openwrt下搭建lighttpd+mysql+php5环境(二)_mysql_13

呼,终于好了,之前一直在找500错误,以为是lighttpd或者php5安装配置错误,直到安装了fastcgi才发现错误的原因是这个index.php文件导致的。

注意:我们看到安装的php5是php5.4.27的,这不是偶然,对于BB 14.07来说,目前我安装的都是5.4.27的,与“openwrt下搭建lighttpd+mysql+php5环境(一)”中安装的php5版本是不同的,CC 15.05安装后是5.6.17的,两个版本还是有一定区别的,需要知道具体区别的请自行搜索,这里不再细说,对php版本有要求的请务必注意。(mt76xx)

三、安装配置mysql

1.安装mysql

opkg update

opkg install mysql-server(自动安装了libreadline和libncurses)

openwrt下搭建lighttpd+mysql+php5环境(二)_mysql_14

2.初始化并创建数据库

sed -i 's,^datadir.*,datadir = "/srv/mysql",g' /etc/my.cnf

sed -i 's,^tmpdir.*,tmpdir = "/tmp",g' /etc/my.cnf

mkdir -p /srv/mysql

mysql_install_db --force

openwrt下搭建lighttpd+mysql+php5环境(二)_html_15

这里可能会等待一段时间,安装帮组表格,最后提示你开启mysqld,设置用户名和密码的方式,关于test数据库的一些问题,数据库守护进程的方法,测试守护进程的方法等等。

3.启动数据库

/etc/init.d/mysqld start

/etc/init.d/mysqld enable

mysqladmin -u root password '123'

openwrt下搭建lighttpd+mysql+php5环境(二)_mysql_16

启动数据库成功!

四、关联lighttpd+php5+mysql

其实之前,在配置lighttpd和php的时候,我们已经把lighttpd和php5关联起来了,网站目录下的php文件我们已经可以远程访问了,这时候我们只需要再把php和mysql关联起来,php就可以访问数据库了,这样lighttpd+php+mysql环境就算搭建起来了。

1.安装关联模块

这里包括php5-mod-mysql和php5-mod-mysqli,其中php5-mod-mysqli是面向对象的,类似于c++,在php5的一些版本中原始的mysql的连接,可能会直接报错,告诉你不支持mysql,让你改用mysqli或者PDO,请注意这一点。

opkg update

opkg install php5-mod-mysql

opkg install php5-mod-mysqli

sed -i 's,;extension=mysql.so,extension=mysql.so,g' /etc/php.ini

sed -i 's,;extension=mysqli.so,extension=mysqli.so,g' /etc/php.ini

其实这里的模块等于是php5的扩展模块,当你熟悉后其实可以在安装php5时直接就安装上这些关联模块,我在这里单独提出来,只是为了让环境的搭建层次性更清晰一些,先单独安装lighttpd、php5、mysql,最后再将其通过这些关联模块关联起来,从这里也可以看出来Linux下的东西往往依赖和关联性很强,很容易形成一个完整稳定的整体,但是软件在卸载时却也存在很大的弊病。

2.修改配置文件

(1)查看/etc/my.conf下的mysqld的socket

看到scoket,那么你似乎明白了,原来php和mysql的通信也是通过socket,http本质上也是tcp和udp,也需要socket,很多复杂的通信协议可能都是在tcp和udp的基础上来的。在那些复杂的表象下,本质却是如此,由此,更让我意识到基础的重要性,知其然而不知其所以然其实就像海市蜃楼一样危险,换个环境,可能你所知的就套不进去了。

openwrt下搭建lighttpd+mysql+php5环境(二)_mysql_17

(2)配置/etc/php.ini文件

在[MySQL]下添加的内容就是my.conf中mysqld中的内容,php需要和mysql通信,自然就需要通信协议要求的条件,同样,现在增加了mysqli,自然得再增加[MySQLi],同样,如果你需要使用pdo的话,自然需要更改php.ini中Pdo_mysql的内容。(更改完记得重启web服务器/etc/init.d/lighttpd restart)

openwrt下搭建lighttpd+mysql+php5环境(二)_mysql_18

3.测试是否成功

测试代码如下:(test.php)

<?php
$db = new mysqli('127.0.0.1','root','123','mysql');
if(mysqli_connect_errno())
{
echo '</br>';
echo 'Error: Could not connect to database,please try later';
exit;
}
else
{
echo 'Connect database successfully.!';
echo '</br>';
}
?>

结果如下:

openwrt下搭建lighttpd+mysql+php5环境(二)_php_19

看来成功了。

最后

从目前来看,对于很多东西仍然停留在知其然而不知其所以然的状态,这就造成了一旦发生变化,可能就会出现很多问题,而这些问题我们还不知道怎么去解决。英语,计算机基础,Linux基础等等这些基础的东西才是本质不变的,有了这些基础,无论出现什么样的问题,我们都可以找到方向去解决,而不是束手无策。