分页: 1 / 2

apache1.3.29 如何通过ports重新再安装一次?

发表于 : 2011-03-10 14:26
junfengfan
apache1.3.29 如何通过ports重新再安装一次?从而把它的最大连接数改成512,再编译;另外是不是mysql5,你如果apache连接数太大,mysql5速度却不能跟上?二者这间是不是有个最佳值?
编辑/删除帖子

发表于 : 2011-03-10 14:31
leo
junfengfan 写了:apache1.3.29 如何通过ports重新再安装一次?从而把它的最大连接数改成512,再编译;另外是不是mysql5,你如果apache连接数太大,mysql5速度却不能跟上?二者这间是不是有个最佳值?
编辑/删除帖子
自带的apche不在port里,而在用户岛文件里, 也就是在src.tar.gz里。最大连接数好像不用编译吧,我记得可以直接在httpd.conf里设置。port里面现在全是mysql5了,最佳值的问题只能你自己试了,我没有那环境。:)
请参阅这里
http://www.openbsdsupport.org/ApacheSuexecChroot.html
如果你实在搞不定的话,我自己来试试。

发表于 : 2011-03-10 17:45
junfengfan
自己搞不了~还请你再动手~~~~~

发表于 : 2011-03-10 20:46
leo
junfengfan 写了:自己搞不了~还请你再动手~~~~~
嗨,怎么还是和原来一样呢?
你至少可以告诉我你做了什么,进行到哪里了或者卡在什么问题上了?

发表于 : 2011-03-11 5:38
leo
最大连接数在 /var/www/conf/httpd.conf里设置:
下面的参数可以设置最大连接数,但是要根据网站的内容(静态/动态)和CPU、内存、磁盘性能、带宽(个人玩这个肯定是瓶颈了,其它的到可以暂且不考虑)的情况自行调整测试,试想一下,如果一个页面打开的时间是3秒,估计一般游客中80%要跑。所以不能一概而论。
就我目前的测试环境来说,系统自带的Apache 1.3已经可以胜任了,而且安装了其它模块, 例如mod_zip等还会与某些程序有冲突,因为很多php程序自带了压缩功能。真正的生产环境只能靠有条件的朋友提供测试结果了,但就目前市场上流行的提供web服务的构架来说,真正安装BSD操作系统的并不多,一个可能是BSD类操作系统对动态内容的优化还带提高,还有一种可能就是大家常说的系统性能问题,我没有真实环境做测试,也不敢妄下定论,不过坦率第说Linux+apche2还是主流。而就所有web server的市场占有率看,apache的占有率将近70%,剩下的是windows,nginx...... 请参看 http://www.netcraft.com

代码: 全选

# Limit on total number of servers running, i.e., limit on the number
# of clients who can simultaneously connect --- if this limit is ever
# reached, clients will be LOCKED OUT, so it should NOT BE SET TOO LOW.
# It is intended mainly as a brake to keep a runaway server from taking
# the system with it as it spirals down...
#
MaxClients 150

发表于 : 2011-03-11 10:10
chenjun
在apache 1.3.*版本中,apache最大连接数是256,如果要修改的话,需要重新编译apache,你可以下载src.tar.gz,解压后到usr.sbin/httpd/src/include目录中,修改httpd.h文件,将HARD_SERVER_LIMIT的默认值256改成你想要的值,重新编译apache即可

发表于 : 2011-03-11 10:13
leo
哦,原来是指ServerLimit,我以为是并发数,不好意思....:o

发表于 : 2011-03-14 12:34
junfengfan
/usr/src/usr.sbin/httpd 这个目录下 make install?? 具体如何编译,请你们在空闲时把步骤写下来,谢谢

发表于 : 2011-03-15 21:36
leo
对,你试过不行吗?

发表于 : 2011-03-15 21:45
junfengfan
不行,好像要配置等,感觉无从下手~~~~
会者不难,难者不会!!!

发表于 : 2011-03-15 21:53
leo
你现在有什么特殊的要求需要配置?很多的模块在默认的编译编译配置文件里已经包含了。(如果不确定,请自行检查一下配置文件。)
如果不需要添加新模块,而且已经修改好了chenjun兄说的文件,直接在相关目录下make install clean就好了。

别人不知道你要干什么,怎么给你建议?此外,即便“不行”,你也要告诉大家哪里不行?——你都做了哪些步骤?在那个步骤的出错的?可否把出错信息贴出来?否则别人又没有ssh到你的电脑上,如何知道具体情况?

发表于 : 2011-03-16 13:11
junfengfan
好的,我再看看,

发表于 : 2011-03-17 4:01
leo
有那么困难吗?呵呵
先按chenjun兄的做法,将 /usr/src/usr.sbin/httpd/src/include/httpd.h 这个文件中的红色部分:

代码: 全选

#ifndef HARD_SERVER_LIMIT
[size=100][color=red][B]#define HARD_SERVER_LIMIT 256[/B][/color][/SIZE]
#endif
修改为蓝色部分(这里假设你想将总HARD_SERVER_LIMIT设置为50000):

代码: 全选

#ifndef HARD_SERVER_LIMIT
[size=100][color=royalblue][B]#define HARD_SERVER_LIMIT 50000[/B][/color][/SIZE]
#endif
然后,进入apache 1.3的源代码所在目录,编译并安装自己定制的apache 1.3

代码: 全选

# cd /usr/src/usr.sbin/httpd
# make
# make install

代码: 全选

+--------------------------------------------------------+
| You now have successfully built and installed the      |
| Apache 1.3 HTTP server. To verify that Apache actually |
| works correctly you now should first check the         |
| (initially created or preserved) configuration files   |
|                                                        |
|   /var/www/conf/httpd.conf
|                                                        |
| and then you should be able to immediately fire up     |
| Apache the first time by running:                      |
|                                                        |
|   /usr/sbin/apachectl start
|                                                        |
| Or when you want to run it with SSL enabled use:       |
|                                                        |
|   /usr/sbin/apachectl startssl
|                                                        |
| Thanks for using Apache.       The Apache Group        |
|                                http://www.apache.org/  |
+--------------------------------------------------------+
#
前后过程不会超过5分钟——我的机器是10年前的老机器。
然后运行:

代码: 全选

# httpd -V
Server version: Apache/1.3.29 (Unix)
Server's Module Magic Number: 19990320:15
Server compiled with....
 -D EAPI
 -D HAVE_MMAP
 -D HAVE_SHMGET
 -D USE_MMAP_SCOREBOARD
 -D USE_MMAP_FILES
 -D HAVE_FLOCK_SERIALIZED_ACCEPT
 -D HAVE_SYSVSEM_SERIALIZED_ACCEPT
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D DYNAMIC_MODULE_LIMIT=64
[size=100][color=red][B]-D HARD_SERVER_LIMIT=50000[/B][/color][/SIZE]
 -D HTTPD_ROOT="/var/www"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/httpd.scoreboard"
 -D DEFAULT_LOCKFILE="logs/httpd.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"
 -D ACCESS_CONFIG_FILE="conf/access.conf"
 -D RESOURCE_CONFIG_FILE="conf/srm.conf"
#
实际使用中别这样设,在这里设成50000是开玩笑的,否则你的服务器肯定受不了。

发表于 : 2011-03-17 20:44
junfengfan
我在openbsd4.8 release安装后,把src.tar.gz下载电脑上;然后 tar -zxvf src.tar.gz -C /usr/src;
第三步,vi /usr/src/usr.sbin/httpd/src/include/httpd.h ,把256改成666后;第四步,
# cd /usr/src/usr.sbin/httpd
# make
# make install

可是,当我 # make 上面却显示 make: no target to make.

发表于 : 2011-03-17 21:06
leo
1. 先修改源代码并确保httpd.h文件中的注释符还在,这里不要习惯性思维,不能去掉,也就是这样写

代码: 全选

[B][size=100][color=#ff0000]#define HARD_SERVER_LIMIT 666[/color][/SIZE][/B]
2. 如果还不行,可能是以前编译过导致的配置文件权限问题,先删除 /usr/src/usr.sbin/httpd/obj下的所有文件,再在 /usr/src/usr.sbin/httpd/ 的目录下, 运行

代码: 全选

# chmod +x configure
# ./configure
# make
# make install
3. 确保上面两步了执行无误后,如果还出现“make: no target to make”的提示(可能是无法执行配置文件),删除/usr/src 目录,重新下载src.tar.gz文件解压缩并更新或升级你的源代码(根据你使用的版本),然后重复步骤1或者2。
4. 如果上次编译距现在的时间比较长,内核或用户岛的源代码可能已经发生了比较大的变化,这时可能还需要先安装补丁文件或者根据FAQ上的提示升级或更新系统,然后再执行上面的步骤。
5. 注意这里原来限制的256并非是OpenBSD开发人员自行限制的,而是apache 1.3的原来的设置,目的是为了保护小内存服务器的正常运行,也就是说在一般OS默认apache 1.X版本中httpd.h这里全是限制了256。

发表于 : 2011-03-17 22:04
junfengfan
# chmod +x configure
# ./configure
# make 过程中出现:
***Error code 1
stop in /usr/src/usr.sbin/httpd/src (line 90 of Makefile).
***Error code 1
Stop in /usr/src/usr.sbin/httpd ( line 202 of ./Makefile).
***Error code 1
Stop in /usr/src/usr.sbin/httpd ( line 184 of Makefile ).

发表于 : 2011-03-17 22:09
leo
如果你确保自己没有去掉那条限制语句的注释符,那么将 /usr/src目录删除,重新下载源代码并更新源代码,然后再make install。

发表于 : 2011-03-17 23:08
leo
因为错误是Makefile文件引起的,可能是因为你修改了配置后没有生成新的makefile。如果已经更新完源代码,在make, make install以前先用这个命令重新生成一下makefile(这里假设你对apache和其模块没有自己的特殊要求,如果有请自行修改下面的参数):

代码: 全选

./configure --with-layout="OpenBSD" --suexec-docroot="/cgi-bin" --suexec-logfile="/logs/suexec_log" --enable-suexec \
--enable-module=ssl --enable-module=so --enable-module=auth_anon --enable-shared=auth_anon \
--enable-module=expires --enable-shared=expires --enable-module=headers --enable-shared=headers \
--enable-module=auth_db --enable-shared=auth_db --enable-module=auth_dbm --enable-shared=auth_dbm \
--enable-module=auth_digest --enable-shared=auth_digest --enable-module=cern_meta --enable-shared=cern_meta \
--enable-module=define --enable-shared=define --enable-module=digest --enable-shared=digest \
--enable-module=info --enable-shared=info --enable-module=log_agent --enable-shared=log_agent \
--enable-module=log_referer --enable-shared=log_referer --enable-module=mime_magic --enable-shared=mime_magic \
--enable-module=mmap_static --enable-shared=mmap_static --enable-module=proxy --enable-shared=proxy \
--enable-module=rewrite --enable-shared=rewrite --enable-module=speling --enable-shared=speling \
--enable-module=unique_id --enable-shared=unique_id --enable-module=usertrack --enable-shared=usertrack \
--enable-module=vhost_alias --enable-shared=vhost_alias

发表于 : 2011-03-19 20:54
junfengfan
利用OB的源代码修改APACHE的最大连接数和版本号的方法

# cd /usr/src/usr.sbin/httpd
# vi src/include/httpd.h
==============================================
#ifndef HARD_SERVER_LIMIT
#define HARD_SERVER_LIMIT 1024
#endif

#define SERVER_BASEVENDOR "GOD Group"
#define SERVER_BASEPRODUCT "GOD_SITE"
#define SERVER_BASEREVISION "34.06.32"
==============================================
编译安装:
# make -f Makefile.bsd-wrapper obj
# make -f Makefile.bsd-wrapper cleandir
# make -f Makefile.bsd-wrapper depend
# make -f Makefile.bsd-wrapper
# make -f Makefile.bsd-wrapper install
重新启动HTTPD:
# apachectl restart

我这样编译,没有出错~~~

发表于 : 2011-03-19 21:58
leo
过了就好。参看了apache 1.3的说明,这个HARD_SERVER_LIMIT在windows上的默认值为1024,但是它的含义是指threads而不是processed。http://httpd.apache.org/dev/apidoc/apid ... LIMIT.html
修改版本号的目的是为了保护服务器吗?