HomeServer100419( Linux&Win32 )发布(x86bin src package )

100419 更新:

修正CGI传递SERVER_NAME参数问题。

可设置多个CGI程序。

自定义文档类型。

自定义错误页面。

 

Linux版本已经可以运行使用 🙂 FastCGI可以定制IP和端口,详细见样例的config.xml。 无聊时写的服务器,山寨Apache的。最新增加 Rewrite 功能,修正访问多级目录的bug。PHP的PathInfo功能可以通过Rewrite来模拟,或者在php.ini里设置cgi.fix_pathinfo=1。

虽然这不是正式版本,但是都蛮稳定的了。现在我博客就是使用Homeserver来服务。除了我博客,还有几个php小站和论坛也使用了HomeServer。

新增功能: 虚拟站点、FastCGI、Proxy(代理)

为什么选择HomeServer了? 原因: 配置简单,安全,高效。

至于为什么配置简单,因为功能简单。如果你玩过apache的话,只需要用httpd.conf和config.xml对比一下就知道了。
config.xml

本站下载: homeserver100419.zip(x86bin&src package)

修正:因为开始发布的打包里有些二进制文件不是最新的,所以运行时候遇到问题,现已经修正。

《HomeServer100419( Linux&Win32 )发布(x86bin src package )》有94个想法

  1. Xiaoxia

    的确输入localhost啥都不显示,重新编译一下吧。一开始的打包有问题。重新下载http://home.xxsyzx.com/home/upfiles/homeserver091024.zip 应该可以解决了。

    回复 ↓
  2. Xiaoxia

    的确。限制每个ip的连接只能在做代理的前端服务器做了。例如HomeServer做iis的代理的时候,限制每个ip的连接数只能在HomeServer上进行设置。这是代理的缺点。

    回复 ↓
  3. Xiaoxia

    如果serverPort不是80的话,需要给每个虚拟站点的名称添加 :端口 就可以用了 。以后可能会改善这个问题。

    回复 ↓
  4. Xiaoxia

    嗯,忘了把数据库删除掉呢。 哈哈~~ 我真菜。
    其实我发现这个博客的确有个漏洞,但希望大家都是厚道的人,说出来就好了,不要把数据都删除了。
    PS: 感谢气泡熊送我百度hi相框。

    回复 ↓
  5. Xiaoxia

    Windows上notepad++ ,对utf8支持的很好。
    Linux上gedit,简单就行了。
    虽然npp的作者的思想不怎么好,但他的贡献也值得肯定。

    回复 ↓
  6. Xiaoxia

    是使用gcc的呀,我现在一般都用开源编译器的。Makefile方便编译,不是为了管理。管理代码可以使用svn。

    回复 ↓
  7. haha

    试用了下,发现似乎对某些php网站程序支持的不好。

    例如:“http://localhost/type/index.php/archives/1/”这类网址,无法打开。用apache就可以。与php是cgi模式有关么,还是什么其他问题?

    回复 ↓
  8. Xiaoxia

    呃,毕竟对php的支持是初期的版本,以后会逐步完善。你说的这个问题我还没有遇到过,是index.php/ 这里的缘故??
    还没有对log文件大小的限制,不过可以关闭log功能。

    回复 ↓
  9. haha

    想了想, 应该是与服务器重写(rewrite)有关。“http://localhost/type/index.php/archives/1/”这类网址需要服务器支持重写

    回复 ↓
  10. murua

    to Xiaoxia.俺是菜鸟,什么都不懂,但是在没有重写模块的iis 或者 apache服务器(都没有重写模块),类似http://localhost/index.php/archives/1 是可以的。还有,我用的是wordpress 。

    回复 ↓
  11. haha

    搜索后发现是php fastcgi模式中PATH_INFO问题。你的homeserver有点类似nginx,nginx不支持pathinfo模式,类似info.php/hello形式的url会被提示找不到页面。你看看能不能通过正则找出实际文件路径和pathinfo部分的方法,让homeserver支持pathinfo。

    回复 ↓
  12. Xiaoxia

    Thank you! I will check it out and try to solve this problem then release a new patched version here in the coming two days.

    回复 ↓
  13. haha

    期待你的新版。之前说的重写问题是这样的,有些服务器不能自动识别请求的是文件还是文件夹,所以访问http://localhost/web时会提示无法显示,而访问http://localhost/web/就可以显示。解决这问题可以利用服务器的重写功能,补全后面的“/”。

    回复 ↓
  14. kmad

    小虾,能不能自定义添加request header ,因为我的tomcat是在后台的,用homeserver代理之后获取不了ip,能不能像nginx那样,在proxy的时候再添加个request header ,那样tomcat就可以通过header获取真正的ip了.

    回复 ↓
  15. Xiaoxia

    好的,不难,过两天我就加上去。需要支持自定义HTTP头,给proxy和fcgi都加上。有什么还做得很不足的就告诉我,谢谢!!

    回复 ↓
  16. Xiaoxia

    哦??
    to hvder, 你不要把文件放到网页目录不就行了吗?? 就是和网页分离开来。或者起一个特殊的名称~~

    回复 ↓
  17. Xiaoxia

    不明白39楼想表达什么意思,你是不是问HomeServer程序是用什么语言写的呢?(C语言)
    还是要问使用HomeServer可以支持什么脚本语言?(PHP、JSP)
    又或者是这个小站用什么语言写?(C++)

    回复 ↓
  18. Xiaoxia

    可以吧。我也有这个打算的,估计不久就会加入。如果谁对压缩算法比较熟悉,给我写一个吧。

    回复 ↓
  19. jimku

    用两台机器来测试homeserver,两台都是linux系统,2G内存
    webbench -c 30000 -t 60 http://xxx.xxx.xxx.xxx/
    但是很快就homeserver进程就挂了,测试了几次都这样,homeserver配置是默认的,
    日志里显示走到了work_http

    回复 ↓
  20. Xiaoxia

    to jimku,
    请问你使用的是不是最新的版本呢?
    我记得之前是有一个这样的bug。
    稳定的版本正在写了。。。

    回复 ↓
  21. Xiaoxia

    你使用哪个操作系统平台呢?
    奇怪,我这里测试多大的数据都没问题。所以,这个问题不好找。。。

    回复 ↓
  22. jimku

    真是我人品问题了。。可能那系统真有问题,换成了centos就没事了。。。。还有,我有个问题要问你,就是url重写的时候能不能判断请求文件或者目录存不存在,如果存在,就不重写,如果不存在,就重写,当然,这是由用户在config.xml写的,像nginx那样,有if语句等等。(*^__^*) 这软件速度还是不错的,很不错,就是不知道你用的是什么开源协议,怕是私有软件,不太敢使用。

    回复 ↓
  23. jimku

    刚才又测试了一下,测试静态的没事,但是来跑phpcgi 时候,很快homeserver又挂了,php-cgi的进程倒没挂。终端显示:

    fcgi_run /
    段错误

    回复 ↓
  24. Xiaoxia

    在Linux上HomeServer还有很多问题,因为现在出的比比较稳定的版本都是Windows上的。包括本站的HomeServer。我想在Linux下面还需要调试,鉴于本人对Linux下的网络编程不是很熟悉,遇到不少问题,所以需要一段时间来完善它。希望能够理解一下:-) 也希望有人能帮忙检查一下Linux下面的这个问题。

    回复 ↓
  25. Xiaoxia

    因为我现在测试使用的服务器是朋友提供的windows server,所以优先完善了windows的版本。不过,这个月我也买了一个linux的vps,估计很快我会搭建好平台测试一下,修补一些bug。我也准备在googlecode上增加一个项目。不过名字起什么好呢?

    回复 ↓
  26. hi

    请教小虾 编译plugin_fcgi.bat报这个错 怎么解决

    C:\Dev-Cpp\aa>C:\Dev-Cpp\bin\gcc plugin_fcgi.c -o plugins/plugin_fcgi.dll -share

    d -Wl,–add-stdcall-alias -s -L. -lwsock32

    C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc8ibaaa.o(.text+0xf85):plugin_fcgi.c: undefi

    ned reference to `xml_readnum’

    C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc8ibaaa.o(.text+0xfa2):plugin_fcgi.c: undefi

    ned reference to `xml_readstr’

    collect2: ld returned 1 exit status

    回复 ↓
  27. hi

    小虾 用了 new COM(“Excel.application”) php报崩溃 是不是fcgi模式不支持 ActiveX components ?? 还是homeserver的问题?请指教!

    回复 ↓
  28. Xiaoxia

    to 67f,
    啊。。。 那是什么东西!! 能够让php崩溃的原因,我现在还没有搞懂!

    to hello, 你说的是wordpress ??

    回复 ↓
  29. hello

    类似“http://localhost/type/index.php/archives/7.html”这种url

    在php.ini里设置 cgi.fix_pathinfo=1还是显示file not found

    回复 ↓
  30. free

    不知什么时候出新版本,配置config.xml后安装mambo5.50,界面显示有问题,mambo的网站地址应该是:http://域名才对,但从后台查看是http://localhost。
    mambo5.50下载地址:http://www.mambochina.net/
    请帮忙看一下是不是config.xml修改出错。
    config.xml中修改的内容如下:
    <virtualHost name="域名">
    <root>w:</root>
    <list>1</list>
    <rewrite base="/">
    <rule>
    <pattern>^/(.+)-(.+)\.html$</pattern>
    <result>show.php?id=$1&page=$2</result>
    </rule>

    回复 ↓
  31. Xiaoxia

    To free, 你是使用域名访问还是使用http://localhost来访问的呢?如果使用域名访问但却得到localhost那就很奇怪了。

    回复 ↓
  32. Xiaoxia

    list是目录列表功能。你说的那个出现localhost的问题我貌似找到了,应该是我的fcgi写的有点问题,已经修正了这个问题。我改天更新一下HomeServer程序,你再下载试试。
    谢谢支持哦!

    回复 ↓
  33. MagicBear

    粗略看了一下 内存管理器部份其实可以用另一种方法写的 这样的话虽然分配速度可以 但释放太慢
    我自己写的代码
    __inline void *mm_malloc(size_t size,int funcID,int source_line)
    {
    void *ptr;
    pmm_alloc_def pdef;
    __sync_add_and_fetch(&mm_alloc,1);
    __sync_add_and_fetch(&mm_alloc_bytes,size);
    __sync_add_and_fetch(&mm_alloc_function[funcID],1);

    ptr = malloc(size+sizeof(struct mm_alloc_def));
    pdef = (pmm_alloc_def)ptr;
    pdef->size = size;
    pdef->funcid = funcID;
    pdef->source = source_line;
    ptr=(void *)((unsigned long)ptr+sizeof(mm_alloc_def));
    return ptr;
    }

    __inline void mm_free(void *ptr)
    {
    DEBUG_ACTION();
    pmm_alloc_def pdef;
    ptr=(void *)((unsigned long)ptr-sizeof(mm_alloc_def));
    pdef = (pmm_alloc_def)ptr;
    __sync_sub_and_fetch(&mm_alloc,1);
    __sync_sub_and_fetch(&mm_alloc_bytes,pdef->size);
    __sync_sub_and_fetch(&mm_alloc_function[pdef->funcid],1);

    free(ptr);
    }

    欢迎+Q共同研究~~ 130012321

    回复 ↓
    1. Xiaoxia 文章作者

      这个是因为session的数目有限制。新版本的homeserver已经取消了在请求php页面的时候创建session!你也可以修改代码把创建session的功能去掉,它是用于某些插件的!

      回复 ↓
  34. tgy

    好象没有对URL做安全过滤嘛,居然可以通过/../这种形式访问网站根目录的上级目录,被人利用的话,将可访问整个磁盘分区中的文件

    回复 ↓

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.