⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000011.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 4 页
字号:
&nbsp;&nbsp;在通常的情况下,我们可以像处理其他功能那样处理CGI。但是,当你的CGI程序试图&nbsp;<BR>去写一个服务器上的文件时(比如说,留言板),你会发现浏览器将返回一个“服务器&nbsp;<BR>内部错误”的信息。这是因为apache的服务程序缺省是使用nobody权限启动的,所以cg&nbsp;<BR>i程序的权限也是nobody。这样,它不能写任何服务器文件(因为没有哪个文件的属主是&nbsp;<BR>nobody)。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;解决的方法有许多种,最简单的方法是更改httpd.conf中服务器的运行权限,例如,&nbsp;<BR>将User和Group都改成someone,然后就可以写someone的文件了。问题在于,对于一个为&nbsp;<BR>许多用户提供主页空间的服务器来说,这样的方法是行不通的,除非设置为root,但这&nbsp;<BR>又很容易导致安全性问题。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;常用的办法之一是使用setuid。按照我们前面讲的,setuid程序执行时按照自己的拥&nbsp;<BR>有者权限执行。这个办法比较简单,但是许多时候,为了安全性和管理上的方便,系统&nbsp;<BR>是不允许用户远程登陆的,因此也就无法使用chmod等等命令。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;suEXEC是解决这个问题的比较好的方法,它允许下面两个功能:(1)对于虚拟主机,&nbsp;<BR>允许每个VirtualHost段落使用自己的User和Group子句;(2)对于<A HREF="http://www.yourdoma">http://www.yourdoma</A>&nbsp;<BR>in.com/~someone这样的主页服务,允许每个用户在自己的目录下设置一个cgi目录,处&nbsp;<BR>于这个目录中的cgi程序自动获得对应用户的权限。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;要使用suEXEC功能,通常必须重新编译apache。可以看看我前面提到的那个编译例子&nbsp;<BR>,与suEXEC相关的命令是:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--enable-suexec&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;这个选项设置允许suEXEC功能&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--suexec-caller=nobody&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;suexec-caller是调用者的名字,通常就是httpd程序运行时缺省的权限,一般是nobo&nbsp;<BR>dy。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--suexec-logfile=/var/log/httpd/suexec.log&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;suexec的记录文件的名字,以后每个调用都会被记录到/var/log/httpd/suexec.log中&nbsp;<BR>。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--suexec-userdir=public_html&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;对于www.yourdomain.com/~someone这样的调用,缺省的suEXEC目录,例如这样设定之&nbsp;<BR>后,/home/someone/public_html中的文件在调用的时候将自动赋予someone权限。注意&nbsp;<BR>由于我们通常把文档和cgi脚本放在同一目录下,不要忘记设置脚本的执行权限。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--suexec-uidmin=100&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--suexec-gidmin=100&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;最小的suEXEC使用的uid和gid。通常你可以把它们设置成一个合适的值,使得不会有&nbsp;<BR>哪个程序以root,daemon,adm之类的危险身份执行。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--suexec-safepath=/usr/bin:/bin:/usr/local/bin&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;suEXEC程序可以安全调用的程序的目录,通常设定这个目录是为了调用/usr/bin/per&nbsp;<BR>l之类的cgi解释器。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--suexec-docroot=/home/&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;suEXEC功能的底层目录,意味着用户不能用suEXEC功能直接执行/home之外的用户cgi&nbsp;<BR>程序。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;重新编译apache,启动后,就可以使用suEXEC了。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;要启用suEXEC功能,如同我们说的,可以直接把cgi放到自己的suexec-userdir下面,&nbsp;<BR>但是对于虚拟主机用户,一般由管理员直接在httpd.conf中加入对应虚拟主机段落的权&nbsp;<BR>限:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;VirtualHost&nbsp;mail.asnc.edu.cn&gt;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;User&nbsp;wanghy&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;Group&nbsp;wanghy&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;DocumentRoot&nbsp;/home/wanghy/public_html&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;ServerName&nbsp;mail.asnc.edu.cn&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;ScriptAlias&nbsp;/cgi-bin/&nbsp;&quot;/home/wanghy/cgi-bin/&quot;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;/VirtualHost&gt;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;注意User和Group都要填写才行。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;suEXEC有一个很重要的限制,就是cgi程序的拥有者、cgi程序所在的目录,VirtualH&nbsp;<BR>ost的设定三者必须保证user/group的完全一致,否则suEXEC将拒绝执行。这个功能主要&nbsp;<BR>是为了安全。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;事实上,尽管cgi程序几乎是不可缺少的,但是它的运行必须执行大量的装入操作,特&nbsp;<BR>别是装入perl解释器的过程更加耗费资源,因此通常cgi程序会成为服务器的瓶颈所在。&nbsp;<BR>有一些特殊的方法用来处理这个问题,例如fast_cgi,mod_perl等等,详细的知识请参&nbsp;<BR>考apache的手册。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;6.3.7&nbsp;高级课题&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;除了我们前面讲到的apache设置之外,还有一些Apache参数可以使用,它们对调整Ap&nbsp;<BR>ache的性能很重要,这里只给出比较有意义的一些:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;PidFile&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;PidFile指定的文件将记录httpd主守护进程的进程号,我们以前曾经描述过守护进程&nbsp;<BR>的工作方式,显然,主守护进程将控制其他进程的运行,它为其他进程的父进程,对这&nbsp;<BR>个进程发送信号将影响所有的httpd进程。范例:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;pitfile&nbsp;/var/run/httpd.pid&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;ResourceConfig&nbsp;  &nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;AccessConfig&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;这两个参数用于和旧版本Apache兼容。如果定义了这两项,系统还要察看这里设定的&nbsp;<BR>两个文件。通常不需要设置它们。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;Timeout&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;Timeout定义客户程序和服务器连接的超时间隔,超过相应秒数后服务器将断开与客户&nbsp;<BR>机的连接。例如&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;Timeout&nbsp;300&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;KeepAlive&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;KeepAlive参数用于支持HTTP&nbsp;1.1版本的一次连接、多次传输功能,这样就可以在一次&nbsp;<BR>连接中传递多个HTTP请求。范例:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;KeepAlive&nbsp;ON&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;MaxKeepAliveRequests&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;MaxKeepAliveRequests为一次连接可以进行的HTTP请求的最大请求次数。0代表无限制&nbsp;<BR>。例如:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;MaxKeepAlive&nbsp;100&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;KeepAliveTimeout&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;同一个连接之间的两次请求之间的最大时间间隔,例如:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;  KeepAliveTimeout&nbsp;15&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;MinSpareServers&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;MaxSpareServers&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;Apache服务器使用了一个特殊技术,就是预先生成多个空余的子进程驻留在系统中,&nbsp;<BR>一旦有请求出现,就立即使用这些空余的子进程进行处理,这样就不存在生成子进程造&nbsp;<BR>成的延迟了。在运行中随着客户请求的增多,启动的子进程会随之增多,但这些子进程&nbsp;<BR>在处理完一次HTTP请求之后并不立即退出,而是停留在计算机中等待下次请求。如果子&nbsp;<BR>进程数不够,就forks出一些;如果forks出了太多的子进程,就杀死一些。这两个参数&nbsp;<BR>用来设置空闲子进程数的上下限。例如&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;MinSpareServers&nbsp;5&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;MaxSpareServers&nbsp;10&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;StartServers&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;httpd启动时启动的子进程个数,这个参数应该设置为前两个值之间的一个数值,小于&nbsp;<BR>MinSpareServers和大于MaxS&nbsp;pareServers都没有意义。例如&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;StartServers&nbsp;8&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;MaxClients&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;最多启动多少个子进程处理服务。例如&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;MaxClients&nbsp;200&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;MaxRequestsPerChild&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;每个子进程最多处理多少个请求然后退出。由于许多系统会有内存泄漏或者其他的问&nbsp;<BR>题,这个数值太大可能导致系统不稳定,太小又会造成不必要的forks和kill。通常的缺&nbsp;<BR>省值是30,不过我们建议把它调整的稍大一些,特别由于2.2.14以后的内核已经修复了&nbsp;<BR>内存泄漏的错误。例如&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;MaxRequestPerChild&nbsp;300&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;当然如果你对自己的系统有绝对的信心也可以设置成0,代表无限次请求。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;6.3.8&nbsp;联机手册&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;从我们对Apache的描述中就可以看出Apache是一个极端复杂的产品。要知道,世界上&nbsp;<BR>有将近一半的Web服务器系统在运行Apache,而且有大量的开发者在为Apache做模块开发&nbsp;<BR>。因此,Apache的联机手册采用单独的HTML文件来提供,通常,在安装Apache的时候,&nbsp;<BR>这些文件被安装到了/home/httpd/html/manual目录下,直接在浏览器中打开/home/htt&nbsp;<BR>pd/html/manual/index.html就可以看到这些使用信息了。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;6.4&nbsp;BBS和MUD&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;6.4.1&nbsp;BBS&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;如果你在教育网内,也许你会对BBS比其他任何Internet服务都要熟悉的多。理论上讲&nbsp;<BR>,讨论组和基于页面的讨论区也不错,但是实际上学生通常更喜欢BBS。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;我们讨论的BBS一般都是基于internet和telnet协议的终端BBS,尽管也有用页面或者&nbsp;<BR>拨号构成的BBS,但是通常它们总是不太受人欢迎。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;目前最常用的BBS服务工具是FireBird&nbsp;BBS,现在用的一般都是汉化版本。通常FireB&nbsp;<BR>ird的安装文档写的十分详细,很容易按照说明安装,所以我们也不想再详细地叙述这个&nbsp;<BR>东西了,通常FireBird系列的BBS服务程序的安装过程都是类似的,你可以看随FireBir&nbsp;<BR>d的文档,主要包括下面的几步:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;建立BBS相关账号,包括bbs,bbsadm,bbsuser。由于bbs账号是不需要口令的,所以&nbsp;<BR>通常你可以用手工编辑/etc/passwd文件再pwconv的办法建立这么几个账号。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;展开FireBird&nbsp;BBS的安装包&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;编译源代码,基本过程就是我们通常的办法:./configure;make;make&nbsp;install。然&nbsp;<BR>后建立SYSOP账号和guest账号,就可以实验BBS了。如果你需要增加功能或者修改信息,&nbsp;<BR>可以看随安装包来的文档。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;目前的另外一个时髦的倾向是给基于终端的BBS加上从Web访问的功能。比如bbs2www等&nbsp;<BR>。它们可以直接安装在已有的FireBird&nbsp;BBS上。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;如果你要架设一个有许多人上站的BBS,通常可以考虑把bbsd服务进程改成直接由tel&nbsp;<BR>net来执行,或者说用bbsd作为telnet守护进程。做法很简单,直接把inetd.conf里面的&nbsp;<BR>相应部分改掉就可以了。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;6.4.2&nbsp;文本MUD&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;文本的MUD是telnet服务中仅次于BBS的,通常我们最常用的MUD系列是ES2系列,例如&nbsp;<BR>ES&nbsp;II,XKX等等。这个系列的Mud基本的结构是&quot;MUDOS+MUDLIB&quot;,就是一个telnet服务程&nbsp;<BR>序加上相应的资源文件。一般这种Mud,架站的基本方法就是找到一个MudOS(用来支持M&nbsp;<BR>ud服务的服务器程序),再下载一个已有的MUDLIB(包括故事,NPC,战斗规则等等,然后&nbsp;<BR>慢慢修改)。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;如果要了解更多的信息,最好是找到一个完整的MUDOS+MUDLIB,然后自己研究,实际&nbsp;<BR>上,对于架设过BBS的用户,架设文本MUD是很简单的事情。真正的问题,在于架站之后&nbsp;<BR>还要经常修正MUDLIB里面的BUG,增加MUDLIB的新代码等等。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>当我越过无尽虚空的时候,我看见星辰的欲望,光荣和毁灭,这是光辉世界的宿命,&nbsp;<BR>一切的一切,最终必将落入黑暗和虚无。&nbsp;<BR>所以,我随着星光飞翔,去逃脱必然的终结,也许有一天,我将回到世界的原初,&nbsp;<BR>等待新的星辰的诞生。&nbsp;<BR>尘埃是星的起源,星的终结。&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;202.112.90.20]&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -