• 认真地记录技术中遇到的坑!

Windows Apache重新安装

web服务器 悠悠 1年前 (2018-03-08) 697次浏览 0个评论

因为时间太久了,或者改了Apache的某些东西,Apache老是抽风,不能加载PHP的一些dll扩展,所以重新安装Apache。本文将介绍如何在本地有Apache的情况下卸载安装。

下载Apache

系统:Windows7 x64位,Apache下载地址为:https://www.apachehaus.com/cgi-bin/download.plx

选择适合自己系统的版本,点击右边的 Download 即可下载。

下载文件为:httpd-2.4.29-o110g-x64-vc14.zip。

解压到以前Apache的位置或者任意位置,需要配置环境变量,指向Apache安装更目录的 bin 子目录下面。

卸载以前的Apache

如果首次安装Apache,则可以略过这一步。

修改原来Apache的文件名为别的,然后把新下载的Apache重命名为旧的文件名,这样避免修改环境变量。

修改文件名之前需要:

  • 关闭其他应用中正在编辑的文件,释放文件句柄
  • 关闭Apache的服务,可以通过 ApacheMonitor 关闭,注意用管理员权限启动

修改文件名之后,卸载掉以前的Apache服务。查看以前的Apache服务名称:

桌面右键我的电脑 -> 管理 -> 服务 -> Apache,以Apache2.4位例。

使用管理员权限启动 cmd 命令行,卸载Apache服务:

httpd -k uninstall

修改Apache配置

配置Apache安装目录

首先需要配置Apache的安装目录,搜索:ServerRoot。

Define SRVROOT "D:/Apache24/"
ServerRoot "${SRVROOT}"

对于旧版本不支持 Define 的,直接替换进去即可。

配置PHP

需要在Apache安装目录下: conf/httpd.conf 修改配置文件:

加载PHP模块,示例:

LoadModule php7_module "D:\php-7.1.12-Win32-VC14-x64\php7apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "D:\php-7.1.12-Win32-VC14-x64"

打开重写模块

打开 rewrite 模块,去掉前面的 # 号,用于路由重写:

LoadModule rewrite_module modules/mod_rewrite.so

加载虚拟主机配置,配置多站点

如果要支持不同域名访问,需要开启虚拟主机 vhost 配置,去掉行首的 # 号:

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

多站点配置可以参考:

<VirtualHost *:80>
    DocumentRoot "E:\www\wordpress"
    ServerName  local.wordpress.com
</VirtualHost>

开启目录访问权限

旧版本使用:Allow,Deny,Order三个指令:

  • Allow指令的作用与其英文单词的含义一致,用于设置允许访问当前目录(及其子目录)或文件的用户范围。例如,Allow from all表示允许所有用户访问
  • Deny指令的作用就是「Deny(拒绝)」,用于设置拒绝访问当前目录或文件的用户范围。例如,Deny from all表示拒绝所有用户访问。
  • Order指令用于控制Allow指令和Deny指令的生效顺序
<Directory /web>
Order Allow,Deny
Deny from 112.2.10.2
Allow from all
#先允许所有用户访问,再拒绝112.2.10.2
#总结:允许除IP为112.2.10.2外的所有用户访问
#(即使Deny指令在Allow指令之前,但是根据Order Allow,Deny语句,仍然先看Allow,再看Deny)
</Directory>
<Directory /web>
Order Deny,Allow
Deny from 112.2.10.2
Allow from all
Deny from 123.10.10.1
#先拒绝112.2.10.2访问
#再拒绝123.10.10.1访问
#最后允许所有用户访问
#总结:允许所有用户访问
#(即使Allow指令在Deny指令前,但是根据Order Deny,Allow语句,仍然先看Deny,再看Allow)
</Directory>

新版本中,上面三个指令都会保存,导致服务无法启动,需要使用

  • Require all granted允许外部访问
  • Require host localhost只允许本机访问
  • Require ip x.x.x.x允许指定的IP访问。

安装Apache服务

如果想要每次开机自动启动Apache服务,则需要注册Apache服务,管理员模式下的命令行:

httpd -k install

判断是否安装服务成功

检查配置是否正确

已管理员模式启动Apache安装目录下的:/bin/ApacheMonitor,可以启动服务。

如果启动服务的时候出现:The requested operation has failed!

服务启动失败,首先检查配置是否正确,在命令行中使用下面命令启动可以查看启动失败的原因:

httpd -k start

# 或者下面的命令
httpd -w -n "Apache2.4" -k start

双引号部分需要替换成你自己的Apache服务名称。

启动后,会报错警告以及错误,比如443端口占用,配置错误(会提示哪一行错误)等,逐一修复即可。

对于443端口占用,经常出现,这儿说一下解决方案:

首先查看443端口使用情况,如果占用的四个边缘OB的进程,直接 kill 掉即可。

netstat -aon|findstr "443" 

如果不想杀掉进程,可以修改SSL端口。修改Apache根目录下: conf/extra/httpd-ssl.conf 和 conf/extra/httpd-ahssl.conf 两个文件,把里面的 443 端口换成其他可用的,比如442。

这两个文件修改一个即可,需要将所有443改成442,至于修改哪一个,可以参考 httpd.conf 最后面的配置:

<IfModule ssl_module>
#Include conf/extra/httpd-ssl.conf
Include conf/extra/httpd-ahssl.conf
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

SSL 模块中使用的是哪一个配置就修改哪一个。


转载请注明出处 Windows Apache重新安装
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址