Apache默认虚拟主机
一台服务器可以访问多个网站,每个网站都是一个虚拟主机
任何一个域名解析到这台机器,都可以访问的虚拟主机就是默认虚拟主机
#vim /usr/local/apache2.4/conf/httpd.conf/ //搜索httpd-vhost ,去掉#
1.每个VirtualHost *:80 代表一个主机,一个主机就是一个网站,虚拟主机配置文件可以定义多个VirtualHost。
2.在虚拟主机里有一个默认虚拟主机(第一段VirtualHost ),就是无论任何域名解析到这个IP上都会访问这个虚拟主机。当搜索所有配置段,你发现访问的域名没有在配置里面出现,那它就会默认走虚拟主机的配置。
#vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf/ //编辑虚拟主机配置文件
原虚拟主机配置文件:
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
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
ServerAdmin:指定管理员邮箱,这个没有什么实质作用。
DocumentRoot:为该虚拟主机站点的根目录,网站的程序就放在这个目录下面。
ServerName:为网站的域名,不支持写多个
ServerAlias:为网站的第二域名,只有alias可以写多个域名,用空格分隔。
Errorlog:为站点的错误日志
Customlog:为站点的访问日志。
修改之后的配置文件:
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
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
更改完配置文件之后创建虚拟主机的根目录
#mkdir /data/wwwroot
#mkdir /data/wwwroot/abc.com
#mkdir /data/wwwroot/111.com
在根目录下创建index.php来进行测试
#vim /data/wwwroot/abc.com/index.php
#/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
用浏览器访问,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 //查看配置是否正确