Apache配置(Apache与PHP联系)
以wampserver为例:httpd-vhosts.conf
和httpd.conf
在D:\wamp64\bin\apache\apache2.4.23\conf
中
里面内容若是改错了,在original中复原(复制粘贴到错的位置)
注意:配置文件中的行首#是指注释
监听端口
监听端口可以随意修改为任意一个未被其他程序监听的端口,可以通过设置配置文件httpd.conf
中的Listen
指令后面的数字修改
Listen 80
网站根目录
- 网站根目录就是存放我们网站文件的最顶层目录,通常url中域名后面的第一个斜线对应的就是网站根目录
-
默认文档指的是我们在访问某一个目录时(没有指定具体的文件),默认访问的文件叫做默认文档
注:动态网站情况会比较特殊,需要单独考虑,不一定是这个规则。
默认 Apache 的网站根目录是安装目录中的 htdocs
文件夹,为了方便对网站文件的管理,一般我们会将其设置在一个自定义目录中(如果你不介意其实不修改也无所谓)。
如果需要设置网站根目录,可以通过修改配置文件 httpd.conf
中的网站根目录选项切换。
以下例子修改到 D:/www 目录下
DocumentRoot "E:/desk/github/github"
<Directory "E:/desk/github/github">
默认文档
当客户端访问的是一个目录而不是具体文件时,服务端默认返回这个目录下的某个文档(文件),这个文档就称之为默认文档。
配置文件 httpd.conf
的 DirectoryIndex
,默认文档可以配置多个(有前到后依次去找,找到为止,如果没找到任何一个则启用目录浏览)
<IfModule dir_module>
DirectoryIndex index.php index.php3 index.html index.htm
</IfModule>
index.php index.php3 index.html index.htm都是默认文档
禁止启用默认文档(一般公司为了文件保密,不让别人看到)
删除 Option 中的 Indexes
<Directory "E:/desk/github/github">
...
Options +Indexes +FollowSymLinks +Multiviews
...
</Directory>
虚拟主机
如果一台机器上只有一个网站的话,没有任何问题,但是如果想要在一台机器上部署多个站点,就必须通过配置虚拟主机的方式解决。
- 由于后期对虚拟主机的配置操作非常常见,所以我们一般将虚拟主机的配置单独放到一个配置文件中,然后在主配置文件中引入,避免破坏主配置文件中的其他配置。
- Include conf/extra/httpd-vhosts.conf 配置的作用就将另外一个配置文件引入(使其生效)
具体的操作方式就是在主配置文件 httpd.conf 取消注释
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
然后找到 Apache 的虚拟主机配置文件httpd-vhosts.conf
,添加如下的虚拟主机配置节点,然后重新启动 Apache。(以后这两个地址的文件可直接输入对应 ServerName 进入,而输入localhost
进入httpd.conf
中定义的地址E:/desk/github/github
)
注:第一次浏览器输入自定义域名,可能弹出搜索内容,可以输入:http://ServerName
正确访问
<VirtualHost *:80>
# 域名
ServerName practice
# 根目录
DocumentRoot E:/desk/github/github/QD-practice
# 字典
<Directory "E:/desk/github/github/QD-practice">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
<VirtualHost *:80>
# 域名
ServerName project
# 根目录
DocumentRoot E:/desk/github/github/QD-project
# 字典
<Directory "E:/desk/github/github/QD-project">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
如果真的要使用project
和practice
域名的话,就只能通过修改 hosts
(地址:Windows:C:\Windows\System32\drivers\etc
macOS:\etc
)文件达到目的,原因很简单:这个域名不是我们自己的,我们没有办法修改这个域名在公网上的 DNS。
注意:
- 如果使用了虚拟主机,则默认必须全部使用虚拟主机,即之前的默认网站也必须通过虚拟主机方式配置,否则访问不到。参考:http://skypegnu1.blog.51cto.com/8991766/1532454
- 如果虚拟主机的端口使用的不是 80 ,则需要在主配置文件中添加一个对这个端口的监听
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
127.0.0.1 project
127.0.0.1 practice
配置 PHP 支持
PHP 文件的扩展名就是 .php 我们可以尝试在刚刚配置的网站中添加一个扩展名为 php 的文件,具体步骤
- 在服务器上安装 PHP
- 解压 php 到纯英文路径目录中
- 在 Apache 中添加支持 PHP 的配置
- 在 Apache 添加 PHP 处理模块
#LoadModule watchdog_module modules/mod_watchdog.so
#LoadModule xml2enc_module modules/mod_xml2enc.so
#在引号中引入php文件地址
LoadModule php5_module "${INSTALL_DIR}/bin/php/php5.6.25/php5apache2_4.dll"
- 在
<IfModule mime_module>
节点中添加 .php 扩展名解析支持
#
# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
默认文档配置节点 <IfModule dir_module>
中添加 index.php
默认文档指的是在访问一个目录而不是具体文件名时,默认执行的文件名
<IfModule dir_module>
DirectoryIndex index.php index.php3 index.html index.htm
</IfModule>
重启Apache
Apache 与 PHP
他们两者各自有各自负责的领域,各自的职责,但是我们在使用 PHP 做动态网站开发时,两者就会产生联系