📄 www-howto-7.html
字号:
for loop来简化命令档。<P>相关细节参考<A HREF="javascript:if(confirm('http://sunsite.unc.edu/LDP/HOWTO/mini/IP-Alias.html \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://sunsite.unc.edu/LDP/HOWTO/mini/IP-Alias.html'" tppabs="http://sunsite.unc.edu/LDP/HOWTO/mini/IP-Alias.html">IP alias mini howto</A>。<P>接下来就是设定网域名称服务器[DNS]来查询这些新的网域。如果你没有你的网域名称,可到<A HREF="javascript:if(confirm('http://www.internic.net/ \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.internic.net/'" tppabs="http://www.internic.net/">Internic</A>注册。可参考DNS-HOWTO来设定你的DNS。<P>最後要设定Apache来让这些虚拟网域正常工作。使用<CODE>httpd.conf</CODE>设定档。其中有个例子,可以参考。所有的指令都放在<CODE>virtualhost</CODE>指令标签之内,任何指令都可放入。一般来说,要设定各别的根目录,script目录及log档案目录,只要加入<CODE>virtualhost</CODE>标签,就可以不断加入新的虚拟主机。<P>在一些极特殊的情况下,如果某一个虚拟主机需要使用某一指令,但不幸它又不能放入虚拟主机的标签中,那就只好使用不同服务器。Bindaddress指令即为一例。每一个服务器都要有不同的名称及设定档。每一服务器只负责一个由Bindaddress指令所指定的位址。结果系统资源就被大大的浪费掉了。<P><H3>共用IP位址虚拟主机</H3><P>此为建立虚拟主机的新方法。单一IP位址被采用,因而IP位址是用在真实机器上[而非虚拟主机]。在上述例子中,30,000个虚拟主机只会用掉50个IP位址[每台机器一个]。这要搭配HTTP1.1协议,浏览器在送出请求时,通知服务器它要接到那个网站。如果浏览器无法支持HTTP1.1,就会去读服务器的首页,其中应有选单供选择要使用的虚拟主机。这样子,原来你以为你拥有自己的服务器的那种感觉,就会被破坏了。<P>设定步骤比固定IP位址的方式容易。你仍然要从Intenic注册你的网域名称,然後设定网域名称服务器。但是网域名称服务器却是要指到原来网域名称的IP位址。Apache的设定方式仍然不变。因为你在virtualhost标签内使用相同IP位址,Apache就知道你的虚拟主机要共用IP位址。<P>针对老式的浏览器则有几种调整工作要做,我只介绍其中最佳者。首先须将你的首页目录设为一个虚拟主机[固定IP或共用IP位址]。这样子你的首页目录就可以腾出来用于连接到各个虚拟主机上去。然後就是为老式浏览器开一个'後门'。作法是用<CODE>ServerPath</CODE>指令,为每一个<CODE>virtualhost</CODE>标签内的虚拟主机定义路径。例如,在www.mysite.com中加一个<CODE>ServerPath /mysite/</CODE>,老的浏览器就可以用www.mysite.com/mysite/存取该主机的资料。然後在首页目录放入一预设首页,其中好好地劝使用者改用新的浏览器,并且条列该主机上各个网站的'後门'。如此一旦一个老式浏览器读到此站,就会显示一个首页,告知如何连到正确的网页。而新式浏览器则可直接连到正确的网页。还要注意一件事,即你的首页中的连结必须定义清楚。因为每一页都可以以两个不同的URL来连结[例如:www.mysite.com和www.mysite.com/mysite/]。<P>希望到此为止,你还能保持头脑清晰,终究上述的内容并不容易搞清楚。搞不好,你最後还是决定使用专用IP位址。相关资料可以从Apache网站取得<A HREF="javascript:if(confirm('http://www.apache.org/manual/host.html \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.apache.org/manual/host.html'" tppabs="http://www.apache.org/manual/host.html">http://www.apache.org/manual/host.html</A>。<P>如果有人有关于共用IP位址的资料,请告诉我。我想知道到底有多少浏览器可支持HTTP 1.1。如有一份清单列出他们的版本就更好。<P><H2><A NAME="ss7.5">7.5 CGI scripts</A></H2><P>有两种方式让你的网站用户运用CGI script功能。第一种方式是,只要是CGI script,其延伸档名即为<CODE>.cgi</CODE>。另一种方式是建立一script次目录[通常叫<CODE>cgi-bin</CODE>]。两种方式也可并用。不论使用那一种方式,你的script必须设成可执行模式[<CODE>chmod 711</CODE>]。但是让用户使用script存取可能会有保全的风险,所以先要细心的研究。<P>我个人比较喜欢使用第一种方式,尤其是当script很复杂时。这种方式允许把script放在任何目录中。我个人喜爱将script放入相关首页目录中。如果一个网站有许许多多的script,那麽将他们分散安置比集中在一个目录中要容易看得多了。而且设定也比较简单。首先在<CODE>srm.conf</CODE>档後面开启[uncomment]<CODE>.cgi</CODE>标式,然後检查是否每一目录的<CODE>access.conf</CODE>档中都有<CODE>option ExecCGI</CODE>或<CODE>All</CODE>。<P>建立script次目录则较为保全。作法是在<CODE>srm.conf</CODE>档中使用scriptAlias指令。第一个参数是代名[Alias],第二个参数是真实目录。例如指令<CODE>ScriptAlias /cgi-bin/ /usr/httpd/cgi-bin/</CODE>定义:当呼叫目录<CODE>/cgi-bin/</CODE>时,真正的script是在<CODE>/usr/httpd/cgi-bin/</CODE>中执行。为了保全的理由,在<CODE>access.conf</CODE>档中设定该目录的特性为<CODE>Options none,AllowOveride none</CODE>[只要开启[uncomment]该行即可]。但要注意,不要把它设为任何首页的次目录。例如说,如果你的首页目录为<CODE>/home/httpd/html/</CODE>,不要设为<CODE>/home/httpd/html/cgi-bin</CODE>,但可以设为<CODE>/home/httpd/cgi-bin</CODE>。<P>如果要允许用户有自己的script次目录,可以使用数个<CODE>ScriptAlias</CODE>命令。如果使用虚拟主机,则在<CODE>virtualhost</CODE>标签内放入<CODE>ScriptAlias</CODE>命令。有人可以告诉我不须要一一加入ScriptAlias命令的方法吗?<P><H2><A NAME="ss7.6">7.6 使用者网页目录</A></H2><P>有两种不同方式来设定使用者的网页目录。第一个方法是在使用者的网页目录下建立一个个别的次目录。[一般为<CODE>public_html</CODE>]。第二个方法是,另外为每一个网页目录建立一个目录树,两种方法都须在<CODE>access.conf</CODE>档中设定存取选项。<P>第一个方法是Apache预设的方式。这种方法是,当要读<CODE>/~bob/</CODE>的网页,Apache读<CODE>public_html</CODE>目录中bob的首页目录。作法是在<CODE>srm.conf</CODE>档中用<CODE>UserDir</CODE>指令来设定。该目录必须是world可读取及world可执行。因为要Apache来读取使用者的目录,该目录必须为world可执行,所以会产生一些保全的风险。<P>第二种方法则较容易设定。只有<CODE>srm.conf</CODE>档中的<CODE>UserDir</CODE>指令需要被修改。格式有很多种,请参考Apache的文件,弄清楚各种定义。如果想让每ㄧ使用者在目录<CODE>/home/httpd/</CODE>下,有自己的目录,就要使用指令<CODE>UserDir /home/httpd</CODE>。那麽当<CODE>/~bob/</CODE>被读取时,读取的目录就会变为<CODE>/home/httpd/bob/</CODE>。若是要让bob的目录下另加一个次目录做为他的首页目录,就用<CODE>UserDir /home/httpd/*/html</CODE>指令。读取的目录就变成<CODE>/home/httpd/bob/html/</CODE>,同时也建立一个script目录[例如:<CODE>/home/httpd/bob/cgi-bin/</CODE>]。<P><H2><A NAME="ss7.7">7.7 Daemon模式与Inetd模式</A></H2><P>Apache可在下述两种模式下运作。其一为daemon模式,在这个模式下Apache不停运作[Apache称之为 standalong]。另一为inetd super-server。<P>daemon模式比inetd模式好。Apache以它为预设模式。使用inetd模式的唯一情况是,当使用率很低时,例如内部测试script、小型企业的区域网络等...。Inetd模式可节省内存空间,因为Apache只有当必要时才开启,平常内存中只有inetd daemon。<P>如果你不常使用Apache,可以考虑让它维持在daemon模式,而且只有必要时才启动Apache。那麽你不再需要时,可以杀掉Apache[要杀的是父程序序而不是子程序]。<P>要设定Inetd模式,有一些档要修改。首先查一下<CODE>/etc/services</CODE>档案,看一看http是否存在,如果不在,则以下列方式加入<P><BLOCKQUOTE><CODE><PRE>http 80/tcp</PRE></CODE></BLOCKQUOTE><P>在Port 79 [finger]的後面也许值得考虑。然後修改<CODE>/etc/inetd.conf</CODE>档案,加入<P><BLOCKQUOTE><CODE><PRE>http stream tcp nowait root /usr/sbin/httpd httpd</PRE></CODE></BLOCKQUOTE><P>如果Apache在不同位置,路径要随Apache的目录来改变。第二个http不是typo,它只是inetd daemon的需求。如果你不再使用inetd daemon,那就把档案中你不想启动的服务改为注解行[像FTP、 finger、 telnet及其他常用于inetd daemon的服务项目]。<P>如果你在用inetd daemon,只要给它一个SIGHUP讯号[用kill命令,参考kill的man page]或重新启动系统让修改项目生效。如果<CODE>inetd</CODE>不在使用,可以以手动方式启动的。也可以加在init档案[也许是<CODE>rc.local</CODE>档]中,使得开机时Inetd自动启动。<P><H2><A NAME="ss7.8">7.8 开放Put及delete命令</A></H2><P>新的网页发行工具支持以http上载网页[而不限于用FTP]。其中有的甚至还不支持FTP上载。Apache也支持http上载,但所要用的script则没有包含,因而上载所用的script可能成为保全的大漏洞。在写或用别人的script前,请先搞清楚状况。<P>如果有人知道任何此类的script,请告诉我。我会把它的网址纳入。<P>相关细节参考 Apacheweek <A HREF="javascript:if(confirm('http://www.apacheweek.com/features/put \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.apacheweek.com/features/put'" tppabs="http://www.apacheweek.com/features/put">http://www.apacheweek.com/features/put</A>。<P><H2><A NAME="ss7.9">7.9 使用Authentication/Access Control</A></H2><P> 这是我最喜爱的一个功能。它让你不须要用到CGI script就可以保护目录或档案。它还
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -