第九课--microWRT 应用开发之服务器搭建

来自Microduino Wikipedia
跳转至: 导航搜索

microWRT既是一个路由器,也可以把它打造成一个小型服务器。它本身的系统就是Linux,从这个角度来讲,一些常用的软件只要经过交叉编译, 都可以被安装在microWRT上。通过前面的教程,我们已经扩展了microWRT的存储器,所以大部分软件都可以安装。 用microWRT做服务器的一个瓶颈就是性能的问题。所以,我们只能在上面 安装一些轻量级的软件服务。本文主要使用PHP和Lighttpd来完成服务器的搭建。在x86的服务器上经常知道一些应用系统或是网站都是基于LAMP进行开发的, LAMP(Linux + Apache + MySQL + PHP)。在智能路由中完全可以搭建出一套类似的OLSP(OpenWrt+Lighttpd+Sqlite+PHP)完成。


PHP 介绍

PHPDE 中文名字为"超文本预处理器"(Hypertext Preprocessor)是目前全球互联网上最火爆的WEB后端语言,拥有大量的开源库, 其特点: 运行快,学习简单,库资源丰富。一般具备任何一门编程语言背景的朋友只要花费上1-2个小时便能入门,一周时间基本可以掌握开发技巧。 在OpenWrt系统下,可以采用了FastCGI技术让PHP和Lighttpd进行配合工作,其性能和内存资源占用率都非常均衡。而且网上有大量的系统, 比如像著名的论坛系统Discuz据hoowa所了解早就有人安装到OpenWrt中。

1. 安装PHP语言包

查看官方BB版本支持的PHP包:

 root@microWrt:~# opkg update
 root@microWrt:~# opkg find php5-*

根据需要选择安装自己需要的PHP包,这里实例安装。

 root@microWrt:~# opkg install php5-cli php5-cgi php5-fastcgi php5-mod-session php5-mod-sqlite3 php5-mod-mysql php5-mod-ctype php5-mod-gd php5-mod-sockets php5-mod-mcrypt php5-mod-mbstring php5-mod-curl

查看安装结果:

 root@microWrt:/mnt/sda/usr/bin# ./php-cli --version
 PHP 5.4.27 (cli) (built: Sep 24 2014 18:41:18) 
 Copyright (c) 1997-2014 The PHP Group
 Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

Lighttpd 介绍

在服务器上的Linux系统中我们普遍使用的WEB服务器有两种,一个是Nginx,一个是Apache,这两个都是非常著名的系统,在全球使用量在上百万套, 他们也拥有OpenWrt下的版本,但是由于体系庞大支持复杂,并不适合我们这种小设备使用。

Lighttpd是一个德国人发起的开源web服务器软件,其特点是高性能、安全、快速、兼容性好、内存开销低,CPU占用率低等特点。 Lighttpd是所有轻量级web技术当中最优秀的之一。它支持FastCGI, CGI, Auth, Compress,Rewrite, Alias等必备的web服务器技术。

PHP采用fastcgi模式与Lighttpd连接,内存中驻留一定数量的进程等待请求,在消耗一定内存的情况下降低CPU占用率,提升性能。

除此之外,OpenWRT的LUCI项目采用的是uhttp+uhttp_lua(嵌入lua)+libuci语言开发完成的,在后续的教程中我们也将介绍LUA语言的安装, 不过该语言并不适用于功能要求复杂的建站环境。

1. 安装Lighttpd 查看官方BB版本支持的Lighttpd包

 root@microWrt:~# opkg update
 root@microWrt:~# opkg find lighttpd-*

安装Lighttpd常见软件包

 root@microWrt:~# opkg install lighttpd lighttpd-mod-fastcgi lighttpd-mod-access lighttpd-mod-alias lighttpd-mod-redirect lighttpd-mod-rewrite lighttpd-mod-evasive

准备WEB文件存放路径,其中的参数根据自己的u盘挂载目录来设置。如下类似。

 root@microWrt:~# rm -rf /www
 root@microWrt:~# mkdir /mnt/sda/www
 root@microWrt:~# chmod -R 777 /mnt/sda/www
 root@microWrt:~# ln -s /mnt/sda/www/ /www
 root@microWrt:~# ls -l ../www
 lrwxrwxrwx    1 root     root             26 April  1 02:45 ../www -> /mnt/sda/www/

2. 配置lighttpd

使用VI编辑器编写新的/etc/lighttpd/lighttpd.conf

 server.modules = (
     "mod_access",
     "mod_alias",
     "mod_redirect",
     "mod_rewrite",
     "mod_fastcgi",
     "mod_evasive"
 )
 server.document-root = "/mnt/sda/www"
 server.errorlog = "/var/log/lighttpd/error.log"
 server.port = 80
 index-file.names = ( "index.php", "index.html", "index.htm" )
 static-file.exclude-extensions = ( ".php" )
 server.pid-file = "/var/run/lighttpd.pid"
 server.upload-dirs = ( "/tmp" )
 evasive.max-conns-per-ip = 18
 fastcgi.server = ( ".php" =>
 ((
   "socket" => "/tmp/php-fastcgi.socket",
   "bin-path" => "/usr/bin/php-fcgi",
   "bin-environment" => (
      "PHP_FCGI_CHILDREN" => "2",
      "PHP_FCGI_MAX_REQUESTS" => "100"
  ),
  "min-procs" => 1,
  "max-procs" => 2,
  "idle-timeout" => 20
  ))
 )

3. 启动Lighttpd

设置启动服务

 root@microWrt:~# /etc/init.d/lighttpd enable

手工启动一次

 root@microWrt:~# /etc/init.d/lighttpd start

PHP测试代码

编辑文件/pub/www/test1.php,内容如下

 <?php
 phpinfo();
 ?>

在浏览器中访问microWRT的这个地址,比如http://192.168.1.1/test1.php,既可看到输出。当然,玩家也可以编写其他的PHP脚本来测试。。