Linux中Apache与php结合以及Apache的虚拟主机配置文件

Apache默认虚拟主机

一台服务器能够访问多个网站,每一个网站都是一个虚拟主机php

任何一个域名解析到这台机器,均可以访问的虚拟主机就是默认虚拟主机html

#vim /usr/local/apache2.4/conf/httpd.conf/ //搜索httpd-vhost ,去掉#web

1.每一个VirtualHost *:80 表明一个主机,一个主机就是一个网站,虚拟主机配置文件能够定义多个VirtualHost。apache

2.在虚拟主机里有一个默认虚拟主机(第一段VirtualHost ),就是不管任何域名解析到这个IP上都会访问这个虚拟主机。当搜索全部配置段,你发现访问的域名没有在配置里面出现,那它就会默认走虚拟主机的配置。vim

#vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf/ //编辑虚拟主机配置文件浏览器

原虚拟主机配置文件:服务器

<VirtualHost *:80>br/>ServerAdminwebmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/dummy-host.example.com"
ServerNamedummy-host.example.com
ServerAliaswww.dummy-host.example.com
ErrorLog "logs/dummy-host.example.com-error_log"
CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>app

<VirtualHost *:80>br/>ServerAdminwebmaster@dummy-host2.example.com
DocumentRoot "/usr/local/apache2.4/docs/dummy-host2.example.com"
ServerNamedummy-host2.example.com
ErrorLog "logs/dummy-host2.example.com-error_log"
CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>curl

ServerAdmin:指定管理员邮箱,这个没有什么实质做用。
DocumentRoot:为该虚拟主机站点的根目录,网站的程序就放在这个目录下面。
ServerName:为网站的域名,不支持写多个
ServerAlias:为网站的第二域名,只有alias能够写多个域名,用空格分隔。
Errorlog:为站点的错误日志
Customlog:为站点的访问日志。tcp

修改以后的配置文件:

<VirtualHost *:80>
DocumentRoot "/data/wwwroot/abc.com"
ServerName abc.com
ServerAlias www.abc.com www.123.com
ErrorLog "logs/abc.com-error_log"
CustomLog "logs/abc.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "/data/wwwroot/111.com"
ServerName 111.com
ServerAlias www.example.com
ErrorLog "logs/111.com-error_log"
CustomLog "logs/111.com-access_log" common
</VirtualHost>

更改完配置文件以后建立虚拟主机的根目录
#mkdir /data/wwwroot
#mkdir /data/wwwroot/abc.com
#mkdir /data/wwwroot/111.com

在根目录下建立index.php来进行测试
#vim /data/wwwroot/abc.com/index.php

<?php
echo abc.com;
?>

#/usr/local/apache2/bin/apachectl –t //测试语法正确
/usr/local/apache2/bin/apachectl graceful //加载配置文件

而后进行测试
#curl -x192.168.37.130:80 abc.com //测试结果显示abc.com
#curl -x192.168.37.130:80 aaa.com //测试结果显示abc.com

Apache与php结合

httpd的主配置文件/usr/local/apache2.4/conf/httpd.conf

#vim /usr/local/apache2.4/conf/httpd.conf
须要改四处地方:

改ServerName,将#注释掉
Require all denied改成Require all granted //不改会显示状态码403
AddType application/x-httpd-php .php //解析php
DirectoryIndex index.html index.php //索引

#/usr/local/apache2.4/bin/apachectl -t //测试语法
Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful //加载配置文件,报错也不会重启服务

#vim /usr/local/apache2.4/htdocs/1.php //进行测试可否解析php

<?php
phpinfo();
?>

用浏览器访问,192.168.37.130/1.php

如若解析不成功,有多是防火墙的缘由,此时临时加上iptables规则

#iptables -I INPUT -p tcp --dport 80 -j ACCEPT //临时加上80防火墙规则

#iptables -D INPUT -p tcp --dport 80 -j ACCEPT //删除防火墙规则

#/usr/local/apache2.4/bin/apachectl -t //检测语法是否错误

#/usr/local/apache2.4/bin/apachectl graceful //加载配置文件,报错也不会重启服务

若仍是不能解析,则须要看看如下的文件
/usr/local/apache2.4/bin/apachectl -M //是否加载了php模块

ls /usr/local/apache2.4/modules/libphp5.so //是否有php模块文件

#vim /usr/local/apache2.4/conf/httpd.conf //查看配置是否正确

相关文章
相关标签/搜索