Apache的安装及使用
PHP最初是 Persional Home Page 的缩写,表示个人主页。
下载Apache
进入apache服务器官网 http://httpd.apache.org/ 这里我们以下载稳定版的
Apache httpd 2.4.39 Released 为例,点击download。
下载后解压,改名为httpd,放到D盘根目录。
Apache 各目录作用
目录名 | 说明 |
---|---|
bin | Apache执行文件所在目录,如httpd.exe、ApacheMonitor.exe 等 |
cgi-bin | GCI网页程序存放目录 |
conf | Apache服务器配置文件所在目录 |
error | 错误文件目录,用于保存因服务器设置或浏览器请求的数据错误时产生的错误 |
htdocs | 默认Web文档根目录,就是存放默认首页的位置 |
icons | Apache预设的一些小图标存放目录 |
include | |
lib | |
logs | Apache 日志文件存放目录,主要包括访问日志 access.log 和错误日志 error.log |
modules | Apache服务器支持的动态加载模块所在目录 |
安装 Aapche 服务
使用管理员身份运行cmd,命令行下进入到 Apache 下面的 bin 目录,输入
httpd -k install
把apache安装成windows后台服务。
命令启动Apache服务:httpd -k start
httpd -k stop
停止
httpd -k restart
重启
更多命令,请使用 httpd -help
查看
如果出现以下错误
【原因】
httpd.conf 里面配置的 ServerRoot 路径跟实际路径不一致,导致路径无效。
【解决方案】
修改 D:\httpd\Apache24\conf 目录下的 httpd.conf 文件,在38行左右
Define SRVROOT "D:/httpd/Apache24"
ServerRoot "${SRVROOT}"
注意路径是 “/
”不是“\
”
端口冲突问题
Apache 默认使用的端口号为 80,如果遇到 80 端口被其他应用程序占用的情况,有两种解决方案:
方案一:将占用 80 端口的程序关闭掉,具体做法如下:
在cmd中运行 netstat -ano "80"
查看是哪个PID在使用 80 端口,
查找到PID 后可以使用 kill 命令将其结束掉进程。
也可以按 Ctrl + Shift + Esc
组合键 (或者搜索 services.msc
)
打开“服务”面板,查找对应的PID再鼠标右键结束进程。
如果占有80端口的程序比较重要,不能将其关闭,则考虑修改Apache使用的端口。
方案二:修改Apache使用的端口号
比如将默认的80端口修改为88端口,
httpd.conf 文件第60行左右
#Listen 12.34.56.78:80
Listen 88
httpd.conf 在224行左右
ServerName localhost:88
运行成功
Apache系统环境变量的配置
(手动配置是永久性的修改,命令配置只对当前窗口有效)
ApacheMonitor
在Apache 目录中的 bin 目录有个ApacheMonitor.exe 可以控制apache 的启动、停止、重启服务
用管理员的身份运行 ApacheMonitor.exe ,运行后会出现在任务栏中
虚拟主机配置
1、首先需要启用辅助配置
在Apache目录中有两个 httpd-vhosts.conf
文件:
这里我们使用的是
D:\httpd\Apache24\conf\extra 目录下的 httpd-vhosts.conf
文件,在 502 行左右,去掉 # Include conf/extra/httpd-vhosts.conf
前面的注释“#”
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
2、然后在文件末尾添加如下代码
<VirtualHost *:88>
DocumentRoot "D:/WWW/taobao"
ServerName www.taobao.com
</VirtualHost>
注意:
1、端口号
2、路径是 “/
”不是“\
”
3、在 C:\Windows\System32\drivers\etc 目录下的 host 文件中添加一行
# 这里仅做演示!!!
127.0.0.1 www.taobao.com
修改访问权限配置
httpd.conf 在231行附近
默认的配置是
<Directory />
AllowOverride none
Require all denied
</Directory>
或者是
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
目录权限控制是通过 Directory 指令段来实现的。
Order deny,allow
表示先判断 deny 语句再判断 allow 语句。
然后就是 deny 和 allow ,如 Deny from all
表示拒绝所有的,由于没有 allow 语句,所以最终的判断就是拒绝所有。
再举个例子:
//下面配置表示允许所有客户端来访问
Order deny,allow
Allow from all
//下面配置表示允许所有客户端来访问,但是拒绝 IP 为192.168.1.100 的访问
Order deny,allow
Allow from all
Deny from 192.168.1.100
首先要知道再哪来配置,在 Apache 中有两种方式来进行配置目录权限:
第一种:独立是使用 Directory 段来配置,如上面的
第二种:在对应的 VirtualHost 中配置,建议使用这种来配置
D:\httpd\Apache24\conf\extra 目录下的 httpd-vhosts.conf
文件添加如下代码
<VirtualHost *:88>
DocumentRoot "D:/WWW/taobao"
ServerName www.taobao.com
<Directory "D:/WWW/taobao">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
【报错】
Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration
【解决方案】
去掉 httpd.conf 在52行左右的注释“#”
LoadModule access_compat_module modules/mod_access_compat.so
默认首页
在 httpd.conf 中的 280 行左右
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
重启Apache
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步