linux学习lesson42



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地址访问

会出现无法访问页面
解决问题步骤:

  1. 先查看linux的80端口有没启动
    在这里插入图片描述
  2. 再检查windows测试linux的80端口是否连通
    先开机telnet客户端,控制面板->程序->打开或关闭windows功能->打开telnet客户端
    在这里插入图片描述
  3. 测试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\etchosts文件添加

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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/InfiniteIdea_Go/article/details/84064117