下一页 上一页 目录

3. 整合所有组件

3.1 可以尝试的 Apache 模块

除了 SSL、PHP 和 frontpage 之外,我使用的模块还有

Module env_module          mod_env.o
Module config_log_module   mod_log_config.o
Module mime_module         mod_mime.o
Module negotiation_module  mod_negotiation.o
Module dir_module          mod_dir.o
Module cgi_module          mod_cgi.o
Module asis_module         mod_asis.o
Module imap_module         mod_imap.o
Module action_module       mod_actions.o
Module alias_module        mod_alias.o
Module rewrite_module      mod_rewrite.o
Module access_module       mod_access.o
Module auth_module         mod_auth.o
Module anon_auth_module    mod_auth_anon.o
Module digest_module       mod_digest.o
Module expires_module      mod_expires.o
Module headers_module      mod_headers.o
Module browser_module      mod_browser.o

3.2 提高 CGI 的安全性

如果您是 ISP(当您阅读本文时,您可能就是),您会希望提高安全性。suexec 实用程序允许您这样做;它将以网站所有者的 UID 而不是 Web 服务器的 UID 来执行 cgi。转到 /usr/src/apache_1.2.6/supportmake suexecchmod 4711 suexec 并将其复制到 ../src/httpd.h 中指定的位置,默认情况下为 /usr/local/etc/httpd/sbin/suexec。如果路径对您来说有点难懂 - 对我来说确实如此 - 编辑 httpd.h 并将路径设置为更方便的值。

3.3 编译和安装服务器守护进程

进入 /usr/src/apache_1.2.6/src 并编辑 Configuration 以设置您想要包含在 Apache 守护进程中的所有模块。完成后,运行 ./Configuremake。这是最后(也是最复杂)的编译步骤,所以祈祷成功吧。如果成功,将 cp httpsd 复制到 /usr/sbin。守护进程有点大,在组装 Web 服务器时请考虑这一点。创建目录 /var/httpd,其中包含子目录 cgi-binconfhtdocsiconsvirt1virt2logs。在 /usr/src/apache_1.2.6/conf 中,编辑 access.conf-distmime.typessrm.conf-dist 以满足您的需求,并将它们复制到 var/httpd/conf/access.confsrm.confmime.types。将您使用 make certificate 创建的 httpsd.pem 复制到 /var/httpd/conf。使用以下 httpd.conf

ServerType standalone
Port 80
Listen 80
Listen 443
User wwwrun
Group wwwrun
ServerAdmin webmaster@yourhost.com
ServerRoot /var/httpd
ErrorLog logs/error_log
TransferLog logs/access_log
PidFile logs/httpd.pid
ServerName www.yourhost.com
MinSpareServers 3
MaxSpareServers 20
StartServers 3

SSLCACertificatePath /var/httpd/conf
SSLCACertificateFile /var/httpd/conf/httpsd.pem
SSLCertificateFile /var/httpd/conf/httpsd.pem
SSLLogFile /var/httpd/logs/ssl.log
 
<VirtualHost www.virt1.com>
SSLDisable
ServerAdmin webmaster@virt1.com
DocumentRoot /var/httpd/virt1
ScriptAlias /cgi-bin/ /var/httpd/virt1/cgi-bin/
ServerName www.virt1.com
ErrorLog logs/virt1-error.log
TransferLog logs/virt1-access.log
User virt1admin
Group users
</VirtualHost>

<VirtualHost www.virt1.com:443>
ServerAdmin webmaster@virt1.com
DocumentRoot /var/httpd/virt1
ScriptAlias /cgi-bin/ /var/httpd/virt1/cgi-bin/
ServerName www.virt1.com
ErrorLog logs/virt1-ssl-error.log
TransferLog logs/virt1-ssl-access.log
User virt1admin
Group users
SSLCACertificatePath /var/httpd/conf
SSLCACertificateFile /var/httpd/conf/httpsd.pem
SSLCertificateFile /var/httpd/conf/httpsd.pem
SSLLogFile /var/httpd/logs/virt1-ssl.log
SSLVerifyClient 0
SSLFakeBasicAuth
</VirtualHost>

<VirtualHost www.virt2.com>
SSLDisable
ServerAdmin webmaster@virt2.com
DocumentRoot /var/httpd/virt2
ScriptAlias /cgi-bin/ /var/httpd/virt2/cgi-bin/
ServerName www.virt2.com
ErrorLog logs/virt2-error.log
TransferLog logs/virt2-access.log
</VirtualHost>

根据编译时包含的模块,并非所有指令都可用。您可以使用 httpsd -h 检索可用指令列表。

3.4 为网站添加 frontpage 支持

进入 /usr/local/frontpage/version3.0/bin 并加载 ./fpsrvadm。选择 installapache-fp。接下来的问题应该按以下方式回答

Enter server config filename: /var/httpd/conf/httpd.conf
Enter host name for multi-hosting []: www.virt2.com
Starting install, port: www.virt2.com:80, web: ""
Enter user's name []: virt2admin
Enter user's password:
Confirm password:
Creating root web
Recalculate links for root web
Install completed.

用户名必须是网站所有者的 unix 登录名。密码不一定需要与系统密码匹配。您必须手动将 sendmailcommand:/usr/sbin/sendmail %r 添加到 /usr/local/frontpage/www.virt2.com:80.conf,否则您的用户将无法发送 Web 生成的电子邮件。kill -HUP 您的 httpsd 以使 fp 重新读取其配置。您现在可以使用 frontpage 客户端访问 www.virt2.com

在某些情况下,fpsrvadm 会抱怨必须首先安装根 Web。这非常无用,但您应该这样做以使 fpsrvadm 安静下来。

3.5 启动守护进程

使用 httpsd -f /var/httpd/conf/httpd.conf 启动 Apache。您现在可以通过 http 和 https 访问 www.virt1.com,这非常酷。当然,如果您想提供全网 SSL,或者用户可能会嘲笑您,您必须为真正的证书付费。

从 php 示例目录复制一个演示文件到 virt1 以测试 phtml。

3.6 剩余的一些考虑事项

不要使用 frontpage 97 扩展。它们不起作用,至少在 Linux 下是这样。当安装特定版本的 c++ 库时,它们似乎可以工作,但您的日志很快就会充满 premature end of script headers,您的邮箱也会充满投诉。在版本 3.0.2.1330 之前,不要使用 frontpage 98 扩展。不要感到困惑,版本号有点不统一。当 telnet 到端口 80,输入 "get / http/1.0" 并按两次回车键时,您会得到 frontpage 的版本号 3.0.4。

您可以通过执行 /usr/local/frontpage/currentversion/exes/_vti_bin/shtml.exe -version 找到更具体的版本号。较旧的版本有一个讨厌的错误,需要 httpd.conf 可由 Web 服务器的 gid 写入。如果您稍微关心安全性,这应该会让您尖叫。自 3.0.2.1330 以来的版本更可用。

3.7 已知错误

当在 frontpage 客户端中点击 Recalculate Links 时,服务器会启动一个消耗 99% CPU 周期和约 10MB 内存的进程。但即使对于中等大小的网站和快速机器,客户端有时也会收到超时消息,尽管计算将正确完成。告知 frontpage 用户要有耐心,不要多次点击 Recalculate Links。告知自己为服务器配备至少 64MB 内存。

请注意,在编写本文时,SSL 和 frontpage 都可以工作,但不能同时工作,这意味着您既不能使用 SSL 发布您的网站,也不能通过 https 使用 Web 机器人。您可以在端口 80 上发布您的网站,并在端口 443 上加密访问它,但您的计数器等将无法工作。我认为这是一个错误。这个问题应该在 SSL 0.9.0 中得到修复。

3.8 最后的总结

对于那些认为本 howto 的标题几乎和文档一样长的人:您听过 Meat Loaf 吗?

好的,读者们,今天的教程到此结束。欢迎随时向我发送您的反馈、永恒的感谢、鲜花、电子现金、汽车、油田等。


下一页 上一页 目录