Apache for Windows

操作系统要求

运行Apache 2.4的Windows平台必须是Windows 2000或更高版本。始终获取并安装最新的版本以避免操作系统错误。

超过2.2的Apache HTTP Server版本将无法在Windows 2000之前的任何操作系统上运行。

最佳

下载Apache for Windows

Apache HTTP Server Project本身不提供软件的二进制版本,只提供源代码。单个提交者可以提供二进制包作为方便,但它不是可交付的版本。

如果您无法自己编译Apache HTTP Server,则可以从Internet上提供的众多二进制发行版中获取二进制包。

在Microsoft Windows上部署Apache httpd以及(可选)PHP和MySQL的常用选项包括:

最佳

自定义Apache for Windows

Apache配置的配置文件在conf子目录下。这些是配置文件通常和Unix版本一样,但在Windows上有一些针对Apache的不同指令。请参阅 所有可用指令的指令索引

Apache for Windows的主要区别是:

  • 因为Apache for Windows是多线程的,所以它不会为每个请求使用单独的进程,因为Apache可以在Unix上使用。相反,通常只有两个Apache进程在运行:父进程和处理请求的子进程。在子进程内,每个请求都由一个单独的线程处理。

    流程管理指令也不同:

    MaxConnectionsPerChild:与Unix指令一样,它控制单个子进程在退出之前将服务的连接数。但是,与Unix不同,替换过程不会立即可用。MaxConnectionsPerChild 0除非指示更改行为以克服第三方模块或进程内应用程序中的内存泄漏,否则请使用默认值。

    警告:启动新的子进程时,将重新读取服务器配置文件。如果您已修改httpd.conf,则新子进程可能无法启动,或者您可能会收到意外结果。

    ThreadsPerChild:这个指令是新的。它告诉服务器它应该使用多少个线程。这是服务器可以同时处理的最大连接数,因此如果您获得大量点击,请确保将此数字设置为足够高。建议的默认值是 ThreadsPerChild 150,但必须调整此值以反映要接受的最大同时连接数。

  • 接受文件名作为参数的指令必须使用Windows文件名而不是Unix文件名。但是,因为Apache可能会将反斜杠解释为“转义字符”序列,所以应始终在路径名中使用正斜杠,而不是反斜杠。

  • 虽然文件名在Windows上通常不区分大小写,但在映射到文件系统之前,URL仍然在内部区分为区分大小写。例如, <Location>, Alias,和ProxyPass指令都使用大小写敏感的参数。因此,<Directory>在尝试限制对文件系统中内容的访问时使用该指令尤为重要,因为该指令适用于目录中的任何内容,无论其如何访问。如果您希望确保在URL中仅使用小写,则可以使用以下内容:

    RewriteEngine On
    RewriteMap lowercase int:tolower
    RewriteCond "%{REQUEST_URI}" "[A-Z]"
    RewriteRule "(.*)" "${lowercase:$1}" [R,L]
  • 运行时,Apache只需要对logs目录和任何已配置的缓存目录树进行写访问。由于不区分大小写和短8.3格式名称的问题,Apache必须验证给定的所有路径名。这意味着Apache评估的每个目录,从驱动器根目录到目录叶,必须具有读取,列表和遍历目录权限。如果Apache2.4安装在C:\Program Files中,那么根目录,Program Files和Apache2.4文件夹必须对Apache都可见。

  • Apache for Windows包含在运行时加载模块的功能,无需重新编译服务器。如果正常编译Apache,它将在\Apache2.4\modules目录中安装许多可选模块 。要激活这些或其他模块,LoadModule 必须使用该指令。例如,要激活状态模块,请使用以下(除了状态激活指令之外还需要配置access.conf):

    LoadModule status_module modules/mod_status.so

    还提供有关创建可加载模块的信息。

  • Apache还可以加载ISAPI(Internet服务器应用程序编程接口)扩展,例如Microsoft IIS和其他Windows服务器使用的扩展。有更多信息。请注意,Apache 无法 加载ISAPI筛选器,并且带有某些Microsoft功能扩展的ISAPI处理程序将无法运行。

  • 运行CGI脚本时,Apache用于查找脚本解释器的方法可使用该ScriptInterpreterSource 指令进行配置 。

  • 由于通常很难管理具有.htaccess后缀等名称的Windows 文件,因此您可能会发现使用该AccessFilename 指令更改此每目录配置文件的名称很有用。

  • 在Windows NT上运行时,Apache启动期间的任何错误都会记录到Windows事件日志中。此机制充当Apache尚未准备好使用该error.log文件的情况的备份。您可以使用事件查看器查看Windows应用程序事件日志,例如“开始” - “设置” - “控制面板” - “管理工具” - “事件查看器”。

最佳

运行Apache即服务

Apache附带了一个名为Apache Service Monitor的实用程序。有了它,您可以在网络上的任何计算机上查看和管理所有已安装的Apache服务的状态。为了能够使用监视器管理Apache服务,您必须首先安装该服务(通过安装或手动自动)。

您可以从Apache bin子目录的命令提示符处将Apache安装为Windows NT服务,如下所示:

httpd.exe -k install

如果需要指定要安装的服务的名称,请使用以下命令。如果您的计算机上有多个不同的Apache服务安装,则必须执行此操作。如果在安装期间指定名称,则还必须在任何其他-k操作期间指定名称。

httpd.exe -k install -n "MyServiceName"

如果您需要为不同的服务具有专门命名的配置文件,则必须使用以下命令:

httpd.exe -k install -n "MyServiceName" -f "c:\files\my.conf"

如果使用没有任何特殊参数的第一个命令 -k install,则将调用该服务Apache2.4 并假定配置为conf\httpd.conf

删除Apache服务很容易。只需使用:

httpd.exe -k uninstall

可以使用以下命令指定要卸载的特定Apache服务:

httpd.exe -k uninstall -n "MyServiceName"

正常启动,重新启动和关闭Apache服务通常通过Apache服务监视器,通过使用NET START Apache2.4和/ NET STOP Apache2.4或通过正常Windows服务管理的命令来完成。在以任何方式启动Apache作为服务之前,您应该使用以下方法测试服务的配置文件:

httpd.exe -n "MyServiceName" -t

您也可以通过命令行开关来控制Apache服务。要启动已安装的Apache服务,您将使用以下命令:

httpd.exe -k start -n "MyServiceName"

要通过命令行开关停止Apache服务,请使用以下命令:

httpd.exe -k stop -n "MyServiceName"

要么

httpd.exe -k shutdown -n "MyServiceName"

您还可以使用以下命令重新启动正在运行的服务并强制它重新读取其配置文件:

httpd.exe -k restart -n "MyServiceName"

默认情况下,所有Apache服务都注册为以系统用户(LocalSystem帐户)身份运行。该 LocalSystem帐户通过任何Windows安全机制(包括文件系统,命名管道,DCOM或安全RPC)对您的网络没有任何权限。但是,它在当地拥有广泛的特权。

永远不会授予该LocalSystem帐户任何网络权限!如果您需要Apache能够访问网络资源,请为Apache创建一个单独的帐户,如下所述。

建议用户创建一个单独的帐户来运行Apache服务。如果您必须通过Apache访问网络资源,则需要这样做。

  1. 创建一个普通的域用户帐户,并确保记住其密码。
  2. 为新创建的用户授予Log on as a service和的权限Act as part of the operating system。在Windows NT 4.0上,这些权限是通过域用户管理器授予的,但在Windows 2000和XP上,您可能希望使用组策略来传播这些设置。您还可以通过本地安全策略MMC管理单元手动设置这些。
  3. 确认创建的帐户是Users组的成员。
  4. 授予读取账号和执行(RX)权限的所有文件和文件夹的脚本(htdocscgi-bin 举例)。
  5. 将帐户更改(RWXD)权限授予Apache logs目录。
  6. 授予帐户读取和执行(RX)httpd.exe二进制可执行文件的权限 。

通常一个好的做法是授予用户Apache服务作为对整个Apache2.4目录的读取和执行(RX)访问,除了logs用户必须至少具有更改(RWXD)权限的子目录。

如果您允许帐户以用户身份和服务身份登录,那么您可以使用该帐户登录并测试该帐户是否具有执行脚本的权限,读取网页以及您可以在控制台窗口。如果这样做,并且您已按照上述步骤操作,则Apache应作为服务执行而不会出现任何问题。

错误代码2186是一个很好的指示,您需要查看该服务的“登录身份”配置,因为Apache无法访问所需的网络资源。另外,请密切关注Apache配置为运行的用户的权限。

将Apache作为服务启动时,您可能会遇到来自Windows服务控制管理器的错误消息。例如,如果您尝试使用Windows控制面板中的“服务”小程序启动Apache,则可能会收到以下消息:

Could not start the Apache2.4 service on \\COMPUTER 
Error 1067; The process terminated unexpectedly.

如果启动Apache服务有任何问题,您将收到此一般错误。为了查看导致问题的真正原因,您应该按照命令提示符下的运行Apache for Windows的说明进行操作。

如果您遇到服务问题,建议您按照以下说明尝试从控制台窗口启动httpd.exe,并在努力再次将其作为服务启动之前解决错误。

最佳

将Apache作为控制台应用程序运行

运行Apache作为服务通常是推荐使用它的方法,但有时从命令行工作更容易,尤其是在初始配置和测试期间。

要从命令行运行Apache作为控制台应用程序,请使用以下命令:

httpd.exe

Apache将执行,并将继续运行,直到通过按Control-C停止它。

您还可以通过Start Menu --> Programs --> Apache HTTP Server 2.4.xx --> Control Apache Server安装期间安装的控制台中的快捷方式启动Apache来运行Apache 。这将打开一个控制台窗口并在其中启动Apache。如果您没有将Apache作为服务安装,则该窗口将保持可见,直到您通过在运行Apache的控制台窗口中按Control-C来停止Apache。服务器将在几秒钟后退出。但是,如果您将Apache安装为服务,则快捷方式将启动该服务。如果Apache服务已经运行,则快捷方式不会执行任何操作。

如果Apache作为服务运行,您可以通过打开另一个控制台窗口并输入以下内容来告诉它停止:

httpd.exe -k shutdown

作为服务运行应优先于在控制台窗口中运行,因为这可以让Apache结束任何当前操作并正常清理。

但是,如果服务器在控制台窗口中运行,则只能通过在同一窗口中按Control+C来停止它。

您也可以告诉Apache重启。这会强制它重新读取配置文件。任何正在进行的操作都可以不间断地完成。要重新启动Apache,请在用于启动Apache的控制台窗口中按Control-Break,或输入

httpd.exe -k restart

如果服务器作为服务运行。

注意熟悉Apache的Unix版本人民:这些命令提供的Windows等同于和。选择使用的命令行选项是对Unix上使用的命令的提醒。kill -TERM pidkill -USR1 pid-kkill

如果Apache控制台窗口在启动后立即或意外关闭,请从“开始”菜单 - >“程序”中打开命令提示符。切换到安装Apache的文件夹,键入命令httpd.exe,然后阅读错误消息。然后切换到logs文件夹,查看error.log 文件是否存在配置错误。假设安装了httpdC:\Program Files\Apache Software Foundation\Apache2.4\,您可以执行以下操作:

c: 
cd "\Program Files\Apache Software Foundation\Apache2.4\bin" 
httpd.exe

然后等待Apache停止,或按Control+C。然后输入以下内容:

cd ..\logs 
more < error.log

使用Apache时,了解它将如何找到配置文件非常重要。您可以通过两种方式在命令行上指定配置文件:

  • -f 指定特定配置文件的绝对路径或相对路径:

    httpd.exe -f "c:\my server files\anotherconfig.conf"

    要么

    httpd.exe -f files\anotherconfig.conf

  • -n 指定要使用其配置文件的已安装Apache服务:

    httpd.exe -n "MyServiceName"

在这两种情况下,ServerRoot都应在配置文件中设置正确的 。

如果没有用-f or 指定配置文件-n,Apache将使用编译到服务器中的文件名,如conf\httpd.conf。此内置路径相对于安装目录。您可以从SERVER_CONFIG_FILE使用-V开关调用Apache时标记为的值验证编译的文件名,如下所示:

httpd.exe -V

然后,Apache将尝试ServerRoot通过以下顺序尝试以下内容来确定它:

  1. ServerRoot经由该指令-C命令行开关。
  2. -d命令行上开关。
  3. 当前的工作目录。
  4. 您执行二进制安装时创建的注册表项。
  5. 服务器根编译到服务器中。这是 /apache在默认情况下,您可以使用验证 httpd.exe -V,并寻找打成一个值 HTTPD_ROOT

如果您没有进行二进制安装,Apache会在某些情况下抱怨丢失的注册表项。如果服务器能够找到其配置文件,则可以忽略此警告。

此键的值是 ServerRoot包含conf子目录的目录。当Apache启动时,它httpd.conf从该目录中读取文件。如果此文件包含的ServerRoot 指令包含与从上面的注册表项获取的目录不同的目录,则Apache将忘记该注册表项并使用配置文件中的目录。如果将Apache目录或配置文件复制到新位置,则更新文件中的ServerRoot指令 httpd.conf以反映新位置至关重要 。

最佳

测试安装

在启动Apache(在控制台窗口或作为服务)之后,它将监听端口80(除非您更改Listen配置文件中的 指令或仅为当前用户安装Apache)。要连接到服务器并访问默认页面,请启动浏览器并输入以下URL:

http://localhost/

Apache应该回复一个欢迎页面,你应该看到“It Works!”。如果没有任何反应或您收到错误,请查看子目录中的 error.log文件logs。如果您的主机未连接到网络,或者您的DNS(域名服务)配置存在严重问题,则可能必须使用以下URL:

http://127.0.0.1/

如果您碰巧在备用端口上运行Apache,则需要将其明确地放在URL中:

http://127.0.0.1:8080/

基本安装正常后,您应该通过编辑conf子目录中的文件来正确配置它。同样,如果更改Apache的Windows NT服务配置,请首先尝试从命令行启动它,以确保服务启动时没有错误。

由于Apache 无法与另一个TCP / IP应用程序共享同一端口,因此您可能需要在运行Apache之前停止,卸载或重新配置某些其他服务。这些冲突的服务包括其他WWW服务器,一些防火墙实现,甚至一些客户端应用程序(如Skype),它们将使用端口80来尝试绕过防火墙问题。

最佳

配置对网络资源的访问

可以使用Windows提供的两种机制来指定通过网络访问文件:

映射的驱动器号

例如,  Alias "/images/" "Z:/"

UNC路径

例如, Alias "/images/" "//192.168.1.1(文件服务器IP)/www/images/"

映射的驱动器号允许管理员维护到Apache httpd配置之外的特定计算机和路径的映射。但是,这些映射仅与交互式会话相关联,并且在作为服务启动时不能直接用于Apache httpd。 在httpd.conf中仅使用UNC路径作为网络资源,这样无论Apache httpd如何启动,都可以一致地访问资源。(奥术和容易出错的程序可能会解决对映射驱动器号的限制,但不建议这样做。)

具有UNC路径的DocumentRoot示例

DocumentRoot "//dochost/www/html/"

示例DocumentRoot在UNC路径中具有IP地址

DocumentRoot "//192.168.1.50/docs/"

示例别名和具有UNC路径的相应目录

Alias "/images/" "//imagehost/www/images/"

<Directory "//imagehost/www/images/">
#...
<Directory>

将Apache httpd作为服务运行时,必须创建一个单独的帐户才能访问网络资源,如上所述。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值