如何在安卓手机里安装Lighttpd + php + sqlite3组合
我们都知道,机房里24小时不停机的计算机是服务器,而家里使用的笔记本或台式机是个人电脑。大部分程序员都有个人电脑,笔记本。这些家里的个人电脑在用的时候开机,用完了就关机,所以,一些需要24小时执行的任务无法放在个人电脑上,只能放在服务器上执行——即使只是一些小任务。事实上,每个人家里都有几台24小时不关机的服务器,只是你没用意识到它们可以当做服务器,它们就是你们的安卓手机,安卓手机的底层就是Linux,如果你家里有旧的安卓手机,千万别丢,我们可以把它改造成一个小型的服务器。
之前的文章里我介绍了如何在安卓手机上安装Linux,下面我将介绍如何在这个安装了Linux的手机上安装Lighttpd + php + sqlite3组合。
之所以选择lighttpd而不是apache,是考虑到手机的性能毕竟不如服务器,尽量采用轻量级的软件。下载、编译、安装lighttpd的步骤如下:
wget https://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.45.tar.gz tar xvf lighttpd-1.4.45.tar.gz cd lighttpd-1.4.45 ./configure make sudo make install
安装过程中会出现一些问题,首先报的错误是缺少C/C++编译器,这是因为手机上安卓的Linux系统比较精简,缺少很多编译软件需要的东西。执行下面命令:
sudo apt-get install build-essential
build-essential
是一个工具包,里面包含了编译Linux内核需要的一些基本的工具和类库,包括C编译。安装完build-essential
后,在继续安装的过程中还发现缺少几个类库,下面列出的就是遇到的编译问题和解决方法。
错误 1
configure: error: pcre-config not found, install the pcre-devel package or build with –without-pcre
解决方法:
sudo apt-get install libpcre3-dev
错误 2
configure: error: zlib-headers and/or libs were not found, install them or build with –without-zlib
解决方法:
sudo apt-get install zlib1g-dev
错误 3
configure: error: bzip2-headers and/or libs were not found, install them or build with –without-bzip2
解决方法:
sudo apt-get install libbz2-dev
解决了上面三个问题,Lighttpd的编译安装过程很顺利。接着安装PHP:
https://117.75.20.11/files/10070000027BB8AD/cn2.php.net/distributions/php-5.6.30.tar.gz tar xvf php-5.6.30.tar.gz cd php-5.6.30 ./configure make sudo make install
安装过程中可能会遇到一个错误:
configure: error: xml2-config not found. Please check your libxml2 installation.
解决方法是:
sudo apt-get install libxml2-dev
这个编译过程比较费时,大概要半个小时。安装完Lighttpd和PHP后,我们需要将它们结合到一起,只需要在Lighttpd的配置文件里添加下面的内容:
fastcgi.server = ( ".php" => ( "localhost" => ( "socket" => "/tmp/php-fastcgi.socket", "bin-path" => "/usr/local/bin/php" ) ) )
Lighttpd是Web服务器,PHP是动态脚本语言,我们还需要一个数据库,在PHP5里内置了sqlite3数据,我们可在PHP5里直接调用SQLite3,下面是一个使用PHP访问SQLite数据的例子:
<?php /** * Simple example of extending the SQLite3 class and changing the __construct * parameters, then using the open method to initialize the DB. */ class MyDB extends SQLite3 { function __construct() { $this->open('mysqlitedb.db'); } } $db = new MyDB(); $db->exec('CREATE TABLE foo (bar STRING)'); $db->exec("INSERT INTO foo (bar) VALUES ('This is a test')"); $result = $db->query('SELECT bar FROM foo'); var_dump($result->fetchArray()); ?>
是不是非常的简单!这个服务架构都安装好了,下面我们就可以在上面放置一些服务程序了。
附:安装过程中遇到的很多错误是缺少了相关的类库、工具包,可以用下面的命令一次安装完成:
sudo apt-get install build-essential zlib1g zlib1g-dev zlibc libxml2 libxml2-dev libpcre3-dev libbz2-dev