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
2.编辑/etc/lighttpd/lighttpd.conf文件
vim /etc/lighttpd/lighttpd.conf
(1)增加cgi模块(或者你安装其它模块也行,我这里安装cgi模块来支持php)
(2)设置web服务根目录以及增加index文件名
(3)分配相关文件的执行程序(比如.php文件就用cgi程序去运行)
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内容如下:
this is a html file
输入开发板的ip地址及端口(我们之前设置的为81,luci的web占用了80端口):
二、安装PHP
1.安装PHP5(就我目前所找到的资料来看,openwrt没有多余选择,只能安装php5)
opkg update
opkg install php5
opkg install php5-cgi php5-cli php5-mod-session php5-mod-json php5-mod-mysql(这些模块和软件按自己个人需求安装,这里的这些是我目前可能会用到的)
2.编辑/etc/php.ini(vim /etc/php.ini)
改doc_root目录:
需要开启的模块,则开放其动态库:(这里的动态库仅仅针对php程序)
由于lighttpd的cgi模块不再单独体现,之前已经在lighttpd中修改了lighttpd.conf文件,添加了php的cgi支持并重启了lighttpd服务器,所以这里也不再需要重启lighttpd服务器,直接测试php文件是否可运行。
3.使用如下命令在/srv/www目录下简单添加一个php文件,以此来测试PHP是否安装成功:(别敲错命令)
echo "" > /srv/www/index.php
然后在浏览器查看81端口下的index.php文件:(这里的500错误是我没有运行上面的命令生成index.php文件造成的,因为我之前已经有这个文件了,所以我直接使用的之前的文件,但是两个文件的内容实际是不一样的,这个错误的文件导致的500错误,和php没有关系,但是在找到这个错误之前我是不知道这个原因的。直接输入上面的命令不会造成这样的错误,所以下面几步不是必须步骤,只是我为了查找错误进行的几步)
出现这个错误可能是你的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
开启fastcgi服务,保证其bin路径正确:
(3)重启lighttpd
/etc/init.d/lighttpd restart
5.再运行index.php文件
(1)直接运行原来的index.php
提示警告和错误了,发现这个index.php文件是我之前tp框架的index.php文件,这个文件这个时候单独放在这里是错误的,之前的cgi没有找到错误原因,直接给了500错误,我们开启了fast-cgi才发现了这个问题。
(2)删除错误的index.php文件运行上面的命令
echo "" > /srv/www/index.php
这次不投机了,直接运行该命令,然后在浏览器下查看:
呼,终于好了,之前一直在找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)
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
这里可能会等待一段时间,安装帮组表格,最后提示你开启mysqld,设置用户名和密码的方式,关于test数据库的一些问题,数据库守护进程的方法,测试守护进程的方法等等。
3.启动数据库
/etc/init.d/mysqld start
/etc/init.d/mysqld enable
mysqladmin -u root password '123'
启动数据库成功!
四、关联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的基础上来的。在那些复杂的表象下,本质却是如此,由此,更让我意识到基础的重要性,知其然而不知其所以然其实就像海市蜃楼一样危险,换个环境,可能你所知的就套不进去了。
(2)配置/etc/php.ini文件
在[MySQL]下添加的内容就是my.conf中mysqld中的内容,php需要和mysql通信,自然就需要通信协议要求的条件,同样,现在增加了mysqli,自然得再增加[MySQLi],同样,如果你需要使用pdo的话,自然需要更改php.ini中Pdo_mysql的内容。(更改完记得重启web服务器/etc/init.d/lighttpd restart)
3.测试是否成功
测试代码如下:(test.php)
$db = new mysqli('127.0.0.1','root','123','mysql');
if(mysqli_connect_errno())
{
echo '';
echo 'Error: Could not connect to database,please try later';
exit;
}
else
{
echo 'Connect database successfully.!';
echo '';
}
?>
结果如下:
看来成功了。
最后
从目前来看,对于很多东西仍然停留在知其然而不知其所以然的状态,这就造成了一旦发生变化,可能就会出现很多问题,而这些问题我们还不知道怎么去解决。英语,计算机基础,Linux基础等等这些基础的东西才是本质不变的,有了这些基础,无论出现什么样的问题,我们都可以找到方向去解决,而不是束手无策。