Run busybox httpd with php, sqlite

/***********************************************************************************
 *                     Run busybox httpd with php, sqlite
 *
 *
 *                                              2016-1-20 深圳 南山平山村 曾剑锋
 **********************************************************************************/

文章出处:
    Run busybox httpd with php
        https://box.matto.nl/busyboxphp.html

Run busybox httpd with php

For many purposes a light webserver is good enough. This page looks into running httpd from busybox with php and sqlite.
在绝大多数的场合下,一个轻量级的web服务器足以应付。这篇文章阐述如何使用busybox的httpd、php、sqlite来搭建一个web服务器。

一、Busybox httpd
    1.The following actions will be explained below:
        1. Compile busybox with httpd.
        2. Create a directory as document root.
        3. Test httpd.
    2. Compile busybox with httpd.
    3. Create a directory as document root.
        As an example, create the directory /var/www and put some html-documents into this directory.
    4. Test httpd:
        Now run
            /usr/sbin/httpd -vv -f -h /var/www/
        This will run httpd in the forground. Because of the -vv switch messages will be displayed here. Now open a webbrowser to the ip-address of your machine and check the messages.

    1. 接下来将解释如下内容:
        1. 编译选中了了httpd的busybox;
        2. 创建web服务器根目录;
        3. 测试httpd服务器;
    2. 编译选中了了httpd的busybox;
    3. 创建一个目录用于存放web文件;
        例如:创建一个叫"/var/www"的目录,并将一些html文件放入其中;
    4. 测试httpd服务器:
        运行如下shell命令:
            /usr/sbin/httpd -vv -f -h /var/www/
        如上命令会运行httpd服务器。-vv参数会将一些信息打印出来。打开web浏览器并访问你自己电脑的ip地址,检查web服务器打印的信息。
二、Install php5-cgi
    1. The following actions will be explained below.
        1. Put php5-cgi in /usr/bin and make sure the needed libraries are installed.
        2. Create /etc/httpd.conf
        3. Check php.ini
        4. Test httpd with php.
    2. When ldd is installed on the busybox system this can be used to check if any libraries are missing:
        ldd /usr/bin/php5-cgi
        If ldd is not installed, then find out which libraries are missing by running /usr/bin/php5-cgi on the commandline.
    3. /etc/httpd.conf
        Put the following in /etc/httpd.conf:
            *.php:/usr/bin/php5-cgi
    4. Check php.ini
        Check which ini-file is used
        Check contents of the ini-file
    5. Check which ini-file is used
        Check which ini-file is used by php5-cgi with the following command:
            php5-cgi -i | grep ini
    6. Check contents of the ini-file
        Check that the ini-file contains the following lines:
            cgi.force_redirect = 0
            cgi.redirect_status_env ="yes";
    7. Test httpd with php.
        1. Create a test.php-file with phpinfo in it.
        2. cat /var/www/test.php
            <?
                    phpinfo();
            ?>
        3. Stop the httpd if it is still running with Ctrl-C and restart it.
            /usr/sbin/httpd -vv -f -h /var/www/
        4. Now point your browser to the test.php file.
        5. You should see something like this:
            phpinfo in busybox <丢失图片>
        6. If the webserver does not show something like this but throws an error message, then check the messages from the -vv switch.

    1. 接下来的内容主要介绍如下内容:
        1. 将php5-cgi放入/usr/bin目录下,并确保需要的库都安装了;
        2. 创建/etc/http.conf文件;
        3. 检查php.ini文件;
        4. 使用php测试httpd服务器。
    2. 如果在busybox文件系统里安装了ldd,那么可以使用它来检查任何丢失的库:
        ldd /usr/bin/php5-cgi
        如果ldd没有被安装,那就只能通过命令行运行/usr/bin/php5-cgi来检查丢失的库。
    3. 修改/etc/httpd.conf:
        将如下内容加入/etc/http.conf文件中
            *.php:/usr/bin/php5-cgi
    4. 检查php.ini文件:
        1. 检查那个init-file被使用了;
        2. 检查init-file中的内容;
    5. 检查那个init-file被使用了:
        通过下面这个命令来检查那个init-file被php5-cgi使用了:
            php5-cgi -i | grep ini
    6. 检查init-file中的内容:
        检查init-file中下面这两行内容:
            cgi.force_redirect = 0
            cgi.redirect_status_env = "yes";
    7. 使用php测试httpd
        1. 创建test.php文件,在里面写入phpinfo:
        2. cat /var/www/test.php
            <?
                phpinfo();
            ?>
        3. 如果httpd还在运行的话,通过Ctrl-C停止httpd,通过下面命令重新运行。
            /usr/sbin/httpd -vv -f -h /var/www/
        4. 指定浏览器访问test.php文件;
        5. 你可以看到如下内容:
            phpinfo in busybox <丢失图片>
        6. 如果web服务器给出如上内容,并且抛出了一个错误信息,那么请检查web服务器-vv给出的信息。

三、Run the webserver from startup
    Now change your startup script to start the httpd at system start. Put something like the following line in your startup-scripts.
        /usr/sbin/httpd -h /var/www/

    现在你可以在你的开机脚本中加入开启httpd服务器的代码,如下:
        /usr/sbin/httpd -h /var/www/

四、Add SQLite to php
    1. Now that our webserver is up and running and is able to parse php scripts, it is time to add a database to the system.
    2. In many cases we don't need all the power that comes with MySQL. SQLite is a great alternative in those cases.
        1. Add libsqlite
        2. Add php5-sqlite
        3. Restart httpd
    3. Add libsqlite
        Add the following files to /usr/lib:
            1. libsqlite.so.0
            2. libsqlite3.so.0
    4. Add php5-sqlite
        Add the following files to /etc/php5/cgi/conf.d:
            pdo_sqlite.ini
            sqlite.ini
            sqlite3.ini
    5. Restart the webserver and do some testing
        First we make a testfile testdb.php with a small script that creates a database and a table, puts some data in the database and retrieves it.
            <?
            // create new database (OO interface)
            $db = new SQLiteDatabase("testdb");

            // create table names and insert sample data
            $db->query("BEGIN;
            CREATE TABLE names (id INTEGER PRIMARY KEY, name CHAR(80));
            INSERT INTO names (name) VALUES('Foo');
            INSERT INTO names (name) VALUES('Bar');
            COMMIT;");

            // retrieve the data
            $result = $db->query("SELECT * FROM names");
            // iterate through the retrieved rows
            while ($result->valid()) {
                    // fetch current row
                    $row = $result->current();
                    print_r($row);
                    echo "<br />";
                    // proceed to next row
                    $result->next();
            }

            ?>
    6. Stop httpd if it is still running.
    7. Now run
        /usr/sbin/httpd -vv -f -h /var/www/
    8. And point your browser to testdb.php
    9. See the messages to check everything is OK.
    10. If everything is working OK, kill the webserver and start it without the -vv and without the -f switches.

    1. 现在我们的web服务器能够正常的运行,并解析php脚本,是时候在系统中添加数据库了。
    2. 在很多情况下,我们并不需要MySQL所有的功能,SQLite是不二的选择,接下来涉及如下内容:
        1. 添加sqlite库;
        2. 添加php5对sqlite的支持;
        3. 重启httpd服务器;
    3. 添加sqlite库:
        往/usb/lib中添加sqlite库:
            1. libsqlite.so.0
            2. libsqlite3.so.0
    4. 添加php5对sqlite支持库:
        往/etc/php5/cgi/conf.d中添加如下文件:
            1. pdo_sqlite.ini;
            2. sqlite.ini;
            3. sqlite3.init;
    5. 重启并测试httpd服务器:
        1. 创建一个testdb.php文件;
        2. 在testdb.php文件中加入如下内容:
        3. testdb.php创建了一个表,加入了一些内容,然后查询它;
            <?
            // create new database (OO interface)
            $db = new SQLiteDatabase("testdb");

            // create table names and insert sample data
            $db->query("BEGIN;
            CREATE TABLE names (id INTEGER PRIMARY KEY, name CHAR(80));
            INSERT INTO names (name) VALUES('Foo');
            INSERT INTO names (name) VALUES('Bar');
            COMMIT;");

            // retrieve the data
            $result = $db->query("SELECT * FROM names");
            // iterate through the retrieved rows
            while ($result->valid()) {
                    // fetch current row
                    $row = $result->current();
                    print_r($row);
                    echo "<br />";
                    // proceed to next row
                    $result->next();
            }

            ?>
    6. 如果httpd服务器还在运行,那么就关闭它;
    7. 然后运行如下命令:
        /usr/sbin/httpd -vv -f -h /var/www/
    8. 指定浏览器访问testdb.php文件;
    9. 查看信息是否正确;
    10. 如果所有的都正常,那么关闭web服务器,去掉-vv和-f参数,重启。

五、Create a lightweight LXC Linux container with busybox httpd and php
    The instructions above where used to create a lightweight LXC container. The container system is based on busybox with dropbear. The busybox httpd is used as an webserver. This is great for light usage (like developing php applications. Busybox and dropbear were compiled from source while php5-cgi and the needed libraries were copied from a Debian installation.

    如上的操作说明主要适用于创建一个轻量级的LXC(Linux Container)容器。这个容器系统是基于busybox和dropbear(轻量的sshd服务器)。busybox用于web服务器。这是非常有用的(就像开发php应用。Busybox和dropbear使用源代码编译,php5-cgi和需要的库都是从Debian中拷贝的)。

 

时间: 2024-08-02 04:07:03

Run busybox httpd with php, sqlite的相关文章

busybox filesystem httpd php-5.5.31 sqlite3 webserver

/******************************************************************** * busybox filesystem httpd php-5.5.31 sqlite3 webserver * 声明: * 本文主要是记录使用httpd.php5.sqlite3搭建php web服务器. * * 2016-1-24 深圳 南山平山村 曾剑锋 ************************************************

buildroot httpd php

/******************************************************************** * buildroot httpd php * 说明: * 在buildroot中选择了php,但是在测试的时候发现总是出现下面这行 * 错误,库是存在的,但是却没有放对正确的位置,通过创建软链接解决. * * 2016-9-22 深圳 南山平山村 曾剑锋 ***************************************************

busybox filesystem matrix-gui-2.0 undefined function json_encode()

/******************************************************************************** * matrix-gui-2.0 undefined function json_encode() * 声明: * 本文解决matrix-gui-2.0中遇到的: * Fatal error: * Call to undefined function json_encode() in /www/generate.php on line

逆向工程分析:摩托罗拉安全摄像头究竟有多不安全?

这年头,谁家不得防贼防盗防小三?云安全摄像头也就变得越来越盛行了.可虽然叫"安全"摄像头,它们本身的安全性或许并不怎么样.这款摩托罗拉Focus 73户外安全摄像头即是如此. 摩托罗拉Focus 73摄像头是一款户外安全摄像头,这款产品实际上是由Binatone制造的.此系列摄像头产品支持通过Hubble服务与云端连接.Hubble服务是建基于Amazon EC2 instance的,有了这项服务,用户就可以远程监控摄像头了,另外也能接收摄像头发出的警告信息.不过Hubble服务是收费

lmbench andlmbench 移植测试

/*********************************************************************** * lmbench andlmbench 移植测试 * 说明: * 想要移植一下lmbench性能测试软件对Android系统性能进行测试,但发现 * Android的Linux shell命令太少了,总是出错,使用另外的busybox创建软链接, * 这样才能测试系统,目前没有自己去做busybox. * * 2016-8-3 深圳 南山平山村 曾剑

详解在Python和IPython中使用Docker

  这篇文章主要介绍了详解在Python和IPython中使用Docker,Docker是一个吸引人的新系统,可以用来建立有趣的新技术应用,特别是云服务相关的,需要的朋友可以参考下 现在Docker是地球上最炙手可热的项目之一,就意味着人民实际上不仅仅是因为这个才喜欢它. 话虽如此,我非常喜欢使用容器,服务发现以及所有被创造出的新趣的点子和领域来切换工作作为范例. 这个文章中我会简要介绍使用python中的docker-py模块来操作Docker 容器,这里会使用我喜爱的编程工具IPython.

svn错误对照表

#, c-format msgid "Destination '%s' is not a directory" msgstr "目的 "%s" 不是目录" #, c-format msgid "Destination '%s' already exists" msgstr "目的 "%s" 已存在" #, c-format msgid "Can't read directory

Linux_LAMP 最强大的动态网站解决方案

LAMP Linux+Apache+MySQL/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台.随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注.从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站

【实战】Docker Machine + Compose + Swarm

本文讲的是[实战]Docker Machine + Compose + Swarm,[编者的话]本文的案例结合了Docker的三大编排工具Docker Machine.Compose与Swarm,值得读者们参阅. Docker现在已经推出了一些新的命令行工具,这些工具可以简单的编排(orchestration )Docker实例.集群以及容器管理.它们是: Docker Machine - 让你轻松部署Docker实例到很多不同的平台. Docker Compose - Fig工具的替代品. D