1 Apache和PHP结合
httpd主配置文件/usr/local/apache2.4/conf/httpd.conf
vim /usr/local/apache2.4/conf/httpd.conf //修改以下4个地方
- 注意:配置文件里:不能同时打开php5和php7,否则会报错
开启ServerName
//修改ServerName,去掉前面的#
开启Apache服务时候:
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.139.111. Set the 'ServerName' directive globally to suppress this message
然后修改ServerName
重启一下Apache服务:就不会报ServerName信息了
[root@linux01 ~]# /usr/local/apache2.4/bin/apachectl restart
开启允许访问测试:
- 在windows浏览器里直接输入ip地址访问
会出现无法访问页面
解决问题步骤:
- 先查看linux的80端口有没启动
- 再检查windows测试linux的80端口是否连通
先开机telnet客户端,控制面板
->程序
->打开或关闭windows功能
->打开telnet客户端
- 测试linux80端口
4. 出现无法连通,那应该是linux的防火墙关闭80端
对linux的设置防火墙规则,对80端口放行
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
然后在windows上输入telnet 192.168.139.111 80 可以连通了
在浏览器上测试
有时在浏览器上访问时候还是会出现403
修改配置文件为Require all granted
刚才所以可以访问,是因为默认配置的/usr/local/apache2.4/htdocs了开启了Require all granted
开启支持php解析功能
添加
AddType application/x-httpd-php .php
//注意 .php前是有一个空格
DirectoryIndex index.html index.php
//访问的时候默认网页
配置完之后
[root@linux01 ~]# /usr/local/apache2.4/bin/apachectl -t //测试语法
[root@linux01 ~]# /usr/local/apache2.4/bin/apachectl graceful //重新
加载配置文件
- 增加一个测试php网页
<?php
phpinfo();
?>
[root@linux01 ~]# vim /usr/local/apache2.4/htdocs/1.php
在浏览器输入http://192.168.139.111/1.php
/usr/local/apache2.4/bin/apachectl -t //检查配置文件语法
/usr/local/apache2.4/bin/apachectl start //Apache服务启动
/usr/local/apache2.4/bin/apachectl restart //Apache服务重启
/usr/local/apache2.4/bin/apachectl graceful //重新加载配置文件(适合正在运行的服务,如果配置文件有问题不会加载,保存原配置文件运行)
/usr/local/apache2.4/bin/apachectl stop //Apache服务关闭
2 Apache默认虚拟主机
一台服务器可以访问多个网站,每个网站都是一个虚拟主机
概念:域名(主机名)、DNS、解析域名、hosts
默认虚拟主机,使用域名访问服务器,因为测试的服务器没有做域名认证,所以使用windows的hosts测试
windows的host在C:\Windows\System32\drivers\etc
的hosts
文件添加
192.168.139.111 111.com 123.com
在windows测试
域名都会解析到服务器192.168.139.111上
任何一个域名解析到这台机器,都可以访问的虚拟主机就是默认虚拟主机
跳转到/usr/local/apache2.4/htdocs
所有的域名都指向到这里路径下,不太好管理,毕竟一台服务器跑多个域名
另外一种方式是打开虚拟主机,可以配置每个域名管理一个文件目录
vim /usr/local/apache2/conf/httpd.conf
//搜索httpd-vhost
,去掉#
(就会启动虚拟主机,可以写多个servername
(如果解析到服务器的ip上,都会访问到默认的虚拟主机上),原配置/usr/local/apache2.4/conf/httpd.conf的servername就会失效
)
[root@linux01 ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf //改为如下
每个虚拟主机可以设置管理一个文件目录
修改例子:
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/abc.com"
ServerName abc.com
ServerAlias www.abc.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.111.comaaa.com
ErrorLog "logs/111.com-error_log"
CustomLog "logs/111.com-access_log" common
</VirtualHost>
创建每个虚拟主机对应的目录
[root@linux01 ~]# mkdir -p /data/wwwroot/abc.com
[root@linux01 ~]# mkdir -p /data/wwwroot/111.com
重新加载配置文件
[root@linux01 ~]# /usr/local/apache2/bin/apachectl –t
[root@linux01 ~]# /usr/local/apache2/bin/apachectl graceful
创建默认访问网页
[root@linux01 ~]# echo "abc.com" > /data/wwwroot/abc.com/index.html //网站默认的主页就是index.html
[root@linux01 ~]# echo "111.com" > /data/wwwroot/111.com/index.html
测试域名访问
[root@linux01 ~]# curl -x127.0.0.1:80 abc.com
abc.com
[root@linux01 ~]# curl -x127.0.0.1:80 abcd.com
abc.com
[root@linux01 ~]# curl -x127.0.0.1:80 abcde.com
abc.com
因为虚拟主机的第一个是 abc.com,所有没有定义的域名访问都会指向第一个虚拟主机
[root@linux01 ~]# curl -x127.0.0.1:80 111.com
111.com
测试完成了,都可以访问到指定的域名的目录的文件
例外浏览器测试:
在windows的hosts
文件添加192.168.139.111 abc.com 111.com