Xiaoxia[PG] Yesterday is history, tomorrow is mistery, today is a gift!

5十一/0992

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)

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

喜欢这个文章吗?

考虑订阅我们的RSS Feed吧!

评论 (92) 引用 (0)
  1. 不能用哦.输入localhost什么都不显示哦

  2. 还有,这个是你自己写的还是哪里发布的?

  3. 回复02F:博主自己写的。

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

  5. 但是如果使用的是使用代理的要怎样限制每个ip的连接?这样子你的homeserver就无法限制了?

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

  7. 不能修改serverPort修改后访问就提示”unknown host name”应该是BUG吧

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

  9. 具体怎么配置啊?

    还有你的数据库都共享了

    不怕被人黑吗 ?

  10. 对哦,怎么连数据库都在里面。。。而且里面的数据。。。。。

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

  12. 请问小虾你的虚拟主机是在哪里申请的?收费是多少?此网站是用homeserver弄的吗?

  13. 这个网站是HomeServer运行的,服务器目前使用一个大好人提供的VPS :-)

  14. 请问小虾写这些代码,都是用的什么IDE?

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

  16. homeserver使用的是gcc编译的吗?
    好像有个makefile文件,难道也可以使用automake做工程管理。

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

  18. 请问,如何限制log文件大小?

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

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

  20. 补充下,出错提示为:File not found.

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

  22. 19楼的问题我也遇到了,强烈要求小虾修正下。

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

  24. 目前还没有做重写模块。能说说
    http://localhost/type/index.php/archives/1/
    这个URL是如何重写的么?
    如果有人使用和支持,我会不断更新下去。

  25. 為啥咱那個單位是k而不是b???

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

  27. 那个不是php的重写 是php的一个url模式 应该叫pathinfo吧

    不知道说的对不对 汗。。

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

  29. 这是nginx支持pathinfo模式的方法:http://softendev.blog.techweb.com.cn/archives/6.html

    你参考下看看

  30. 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.

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

  32. 楼上的问题已经解决。

    至于 http://localhost/index.php/archives/1 , 可以尝试在php.ini里设置 cgi.fix_pathinfo来*暂时*解决此问题。

  33. 不错,谢谢了,还有,小虾有没有想过要支持下https?

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

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

  36. 数据库怎么用?

  37. 小虾,能不能加个功能设置一些特殊文件夹或这文件禁止访问

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

  39. 你服务器端是用什么语言写的?java,?php?

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

  41. Xiaoxia,还有个建议,能不能支持gzip压缩?

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

  43. to Xiaoxia,对不起,我不会C语言,期待支持gzip压缩。

  44. 还有,Xiaoxia 用homeserver wordpress的重写规则如何写?

  45. 写个正则表达式,格式在config.xml有例子。


    ^/(.+)-(.+)\.html$ show.php?id=$1[AND]page=$2

  46. 晕。。我对正则一窍不通,看来我只有用nginx了….

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

  48. 是不是homeserver有bug啊?

  49. 还有,Xiaoxia ,有没有想过把这个软件做成GNU开源项目?这样更多人就可以贡献代码了。

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

  51. 嗯,是最新的版本啊!刚才又下载编译了也是一样。难道我人品问题发作?

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

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

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

    fcgi_run /
    段错误

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

  56. 为什么要在windows下开发呢。。。。。

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

  58. to Xiaoxia:項目名稱就由你來取吧,別忘了告訴項目的地址 ^_^

  59. Linux版本用了一周,还很稳定。目前还没有遇到什么大问题。

  60. 很有意思,关注中…

  61. 我用的ie7,怎么post过后页面不刷新,看不到我post的内容,非要手工F5一下。

  62. 这次刷新了,可能是网速的问题。不是服务器的问题, 呵呵。

  63. 嗯。可能线路远,响应慢,偶尔就连不上了。

  64. 请教小虾 编译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

  65. 学习中……

  66. to 64F, 把xmlparser.c添加进去即可!

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

  68. 具体如何实现pathinfo?在php.ini里设置 cgi.fix_pathinfo=1还是显示file not found

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

    to hello, 你说的是wordpress ??

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

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

  71. 这种URL究竟是什么原理呢?
    我没用过WordPress,也没用过这种URL。

  72. 菜鸟…问下mysql怎么用

  73. 俺是绝对的菜鸟,能否给个解包就能用的?不知道如何设置。

  74. mysql在php里设置。
    可以用的吧,要在config.xml里配置好。

  75. 不知什么时候出新版本,配置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>

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

  77. 我是使用的域名访问的,config.xml里还有一点不明白,<list>1</list>的作用是什么?

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

  79. 期待新版的homeserver!

  80. 嗯,尽量这两天内发布下一个版本。

  81. 虾,别越做越臃肿啊。要适可而止啊。gzip可以来找我:)

  82. 我也觉得臃肿了很多,所以也觉得不会再扩展下去了 ~~

  83. fcgi好像不支持中文路径

  84. @swchzq:支持呀,你使用什么操作系统?

  85. @swchzq:是最新版本的homeserver不? 我记得不同操作系统上的编码问题好像很早就解决了。

  86. 粗略看了一下 内存管理器部份其实可以用另一种方法写的 这样的话虽然分配速度可以 但释放太慢
    我自己写的代码
    __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

  87. 请问可以给我一个详细的按照教程么,最好是centos或者debian的,我是菜鸟。。。。。

  88. windows下测试 访问到是没问题 就是用 ab压力测试 ab -n 10000 -c 200 http://127.0.0.1:8080/phpinfo.php

    到9千多的时候就挂了,用网页访问就 500错误,无法显示了

  89. 再就是 日志里 [session.c]session_create(43): failed c->session_num: 30
    是什么原因?

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


Leave a comment

(required)

还没有引用.