Apache和PHP结合
搭建完LAMP架构,接下来开始配置,首先设置Apache让它解析PHP
编辑httpd主配置文件/usr/local/apache2.4/conf/httpd.conf
vim /usr/local/apache2.4/conf/httpd.conf
ServerName www.example.com:80 取消本行注释
<Directory />
AllowOverride none
Require all granted
将此处的denied该为granted,允许所以请求,不设会报403错误
</Directory>
AddType application/x-gzip .tgz 找到这一行(
不是注释的那行),并在下面另加一行内容
AddType application/x-httpd-php .php
<IfModule dir_module>
DirectoryIndex index.html
index.php 找到这部分,在index.html后加上index.php,让httpd支持php
</IfModule>
保存退出
[root@aliyun ~]# /usr/local/apache2.4/bin/apachectl -t 测试语法
Syntax OK 语法正确
[root@aliyun ~]# /usr/local/apache2.4/bin/apachectl start
启动httpd
httpd (pid 12148) already running
运行成功
[root@aliyun ~]# netstat -lnp |grep httpd
查看启动的端口(
测试方法1
)
tcp
0 0 0.0.0.0:
80
0.0.0.0:* LISTEN 11560/
httpd
[root@aliyun ~]# curl localhost 利用curl下载本地文件并打印 (
测试方法2)
<html><body><h1>It works!</h1></body></html>
测试是否正确解析php
vim /usr/local/apache2.4/htodcs/test.php 创建一个php的测试脚本,写入如下内容
<?php
echo "我是来打酱油的!";
?>
此处空一行,否则输出时,会和后面的bash信息连在一起
保存退出
[root@aliyun ~]# curl localhost/test.php
利用curl下载本地文件并打印
我是来打酱油的! php解析成功
设置Apache默认虚拟主机
域名和虚拟主机是一一对应的关系,默认虚拟主机专门用来处理没有和本地虚拟主机有对应关系的域名指向,即错误地指向本机的域名,没有在本机标注过的域名
配置/usr/local/apache2.4/conf/httpd.conf
vim /usr/local/apache2.4/conf/httpd.conf
搜索httpd-vhost
# Virtual hosts 找到这一部分内容
Include conf/extra/httpd-vhosts.conf 取消本行的注释#,使扩展
配置文件httpd-vhosts.conf生效
保存退出,
此选项一旦打开,配置文件里的example.com相关的信息都会失效,包括:
ServerAdmin you@example.com
ServerName www.example.com:80
DocumentRoot "/usr/local/apache2.4/htdocs"
<Directory "/usr/local/apache2.4/htdocs">
即使未被注销也会失效
配置/usr/local/apache2.4/conf/extra/httpd-vhosts.conf
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
在最下面找到VirtualHost部分
<VirtualHost *:
80
>
80是http的服务端口,不用改
ServerAdmin
webmaster
@
test.com
网站管理员邮箱,设置成自己的网站
DocumentRoot "
/data/wwwroot/www.test.com
"
虚拟主机根目录放网站程序
ServerName
test.com
网站名,域名
ServerAlias
www
.
test.com
网站别名,域名别名,可写多个要用空格隔开
ErrorLog "logs/
test.com
-error_log"
错误日志保存路径
CustomLog "logs/
test.com
-access_log"
common
日志格式
访问日志保存路径
</VirtualHost>
虚拟主机1
<VirtualHost *:80>
80是http的服务端口,不用改
ServerAdmin webmaster@
123.com
网站管理员邮箱,设置成自己的网站
DocumentRoot "/
data/wwwroot/123.com
"
虚拟主机根目录放网站程序
ServerName
123.com
网站名,域名,只能写一个
ErrorLog "logs/
123.com
-error_log"
错误日志保存路径
CustomLog "logs/
123.com
-access_log" common
访问日志保存路径
</VirtualHost>
虚拟主机2,
有几个网站就设几个虚拟主机,当没有设置过的其他域名指向本机时,都会访问设置的第一个主机,即默认的虚拟主机。80端口是默认的http访问端口,如果改为其它的端口,例如8080,则需要指定访问端口,例如:www.123.com:8080,才能打开网页。
测试默认虚拟主机设置是否正确
[root@aliyun ~]# mkdir -p /data/wwwroot/123.com /data/wwwroot/www.test.com
[root@aliyun ~]# echo "我是来打酱油的!" > /data/wwwroot/123.com/index.html
[root@aliyun ~]# echo "我是来打醋的!" > /data/wwwroot/www.test.com/index.html
[root@aliyun ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@aliyun ~]# /usr/local/apache2.4/bin/apachectl graceful
[root@aliyun ~]# curl -x127.0.0.1:80
123.com
我是来打酱油的!
[root@aliyun ~]# curl -x127.0.0.1:80
www.test.com
我是来打酱油的!
我是来打酱油的!
如果www.baidu.com的域名被解析指向本机,则会被转到访问默认虚拟主机123.com