lyl801013 发表于 2018-11-17 12:31:11

4.12任务 apache结合php以及apache默认虚拟主机

apache和php结合
  

虽然我们现在已经安装好了apache,mysql,php。但是我们还没有让他们结合起来,虽然apache调用了php作为它的一个模块,但我们还不知道他是否能解析php。这时我们还需要去编辑一下httpd的配置文件。  
它的配置文件是/usr/local/apache的全名名字/conf/httpd.conf
  

  # vim /usr/local/apache2.4/conf/httpd.conf
  在这里我们需要编辑几个地方
  1.ServerName
  在我们重启httpd的时候经常会遇到一下提示
  # /usr/local/apache2.4/bin/apachectl restart

  AH00558: httpd: Could not>  乍一看上去是一个报错,但其实是一个警告,看着很别扭,我们想要删掉他。我们可以搜索
  ServerName,然后将#ServerName www.example.com:80前面的“#”号删掉就可以。
  完成后我们重启httpd,然后出现了另一个错误提示
  # /usr/local/apache2.4/bin/apachectl start
  /usr/local/apache2.4/bin/apachectl: 行 79:1399 段错误               $HTTPD -k $ARGV
  这是因为我们刚才在这里添加了两个php,我们只要在其中一个前面加一个“#”号注释掉就可以。
  LoadModule php5_module      modules/libphp5.so
  #LoadModule php7_module      modules/libphp7.so
  然后我们重启httpd,就不会出现提示了。
  2.Require all denied改成,Require all granted。如果不改这一行,我们是访问不到linux的ip的,他会提示我们检查服务器和防火墙,如果我们遇到这样的问题,首先应该查看我们的ip是否畅通。然后我们查看80端口是否畅通。先进入windows中的DOS模式,查看80端口是否打开,如果进入DOS后没有可以查找的命令,我们就进图windows的控制面板,进入程序,然后点击程序与功能,然后点击打开或关闭windows功能,点击telnet前面的方块,就安装上了telnet客户端,然后在DOS中输入telnet+IP地址+端口号查看,只要DOS界面无任何显示,就证明我们的80端口通了。如果不通,它则显示一直在连接。我们也可以用iptabs -nvL去查看80端口的是否打开。
  # iptables -nvL
  Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
  pkts bytes target   prot opt in   out   source               destination

  2614228K ACCEPT   all--         0.0.0.0/0            0.0.0.0/0            state>  1    60 ACCEPT   icmp --         0.0.0.0/0            0.0.0.0/0
  0   0 ACCEPT   all--lo          0.0.0.0/0            0.0.0.0/0         
  1    52 ACCEPT   tcp--             0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
  2370 2330K REJECT   all--      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
  Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
  pkts bytes target   prot opt in   out   source               destination
  0   0 REJECT   all--         0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
  Chain OUTPUT (policy ACCEPT 2143 packets, 336K bytes)
  pkts bytes target   prot opt in   out   source               destination
  结果是没有打开,我们可以先用一条命令去打开80端口。
  iptables -I INPUT -p tcp --dport 80 -j ACCEPT
  然后去windows的浏览器去输入我们虚拟机的ip,这时候就可以连通了。
  有时候我们的浏览器连通了,却显示403,这是因为在我们的配置文件中有一个
  Require all denied,我们要将denied改为granted,配置文件中有两处,都要改。
  我们改完配置首先要去检查一下它的语法,比如我们要检查apache的配置文件语法,就可以这样输入
  /usr/local/apache2.4/bin/apachectl -t //-t就是测试语法的参数
  #/usr/local/apache2.4/bin/apachectl -t
  Syntax OK(出现这个提示,则证明语法正确)
  然后重新加载配置文件,在文件的结尾处加graceful,重新加载。
  3.增加一行和php相关的配置
  AddType application/x-httpd-php .php
  首先我们搜索ADDType
  然后在AddType application/x-compress .Z和AddType application/x-gzip .gz .tgz的下面加一行,AddType application/x-httpd-php .php,这样就可以解析php了。
  4.增加一个索引页
  先进入配置文件进行编辑,然后找到# DirectoryIndex: sets the file that Apache will serve if a directory,
  然后将它替换掉以前的文件,DirectoryIndex index.html index.php
  然后我们验证一下apache是否可以验证php,先写一个测试的脚本
  vim /usr/local/apache2.4/htodcs/1.php
  内容如下
  
  然后我们再浏览器中输入我们的ip后面接/1.php,如果出现页面,则证明成功,但是如果出现了源代码,则证明我们apache的配置文件出错了。一旦出错,我们需要检查一下一个方面。
  1.查看加载模块有没有加载php
  /usr/local/apache2.4/bin/httpd -M
  但是如果没发现有php模块,我们则要查看一下有没有libphp5.so这个文件。
  2.查找libphp5.so文件
  # ls /usr/local/apache2.4/modules/libphp5.so
  /usr/local/apache2.4/modules/libphp5.so
  如果有,但是没有加载,我们就要去配置文件中有没有加载它
  LoadModule php5_module      modules/libphp5.so
  如果有加载,我们还要去看他有没有AddType application/x-httpd-php .php
  3.查找AddType application/x-httpd-php .php
  这里一定要注意一下,在最后的.php前一定要加一个空格,不加空格的话语法检查会报错。
  检查完这几步我们就可以解析我们的php了。
  我们检查修改完配置文件后一定要做一个语法检测,然后再进行graceful加载,否则网站会出错。

anache默认虚拟主机
  一台服务器可以访问多个网站,每个网站都是一个虚拟主机。
  概念:域名(主机名)、DNS、解析域名、hosts
  虚拟主机:任何一个域名,指向到这个ip,他都会访问到这站点,这个站点就叫默认虚拟主机。
  windows下写hosts
  这个文件在储存的位置在windiws/system32/drives/etc下,用记事本打开,在 For example:下先写入ip,然后后面写网站,保存退出。这样网站就会指向指定的ip。
  打开apache的配置文件
  vim /usr/local/apache2.4/conf/httpd.conf
  查找extra,找到# Virtual hosts
  然后将Include conf/extra/httpd-vhosts.conf前面的“#”去掉。
  #Virtual hosts
  Include conf/extra/httpd-vhosts.conf
  保存退出。
  然后我们打开一个二级配置文件,这个二级配置文件就是虚拟主机的配置文件。在这个配置文件中我们可以配置多个servename。他们都是以开始,以结束
  虚拟主机配置文件:vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
  
  ServerAdmin webmaster@dummy-host.example.com
  (管理员邮箱,可以删除)
  

DocumentRoot "/usr/local/apache2.4/docs/dummy-host.example.com"  
(定义网站的根目录)我们可以修改为 DocumentRoot "/data/wwwroot/123.com",这还是要根据我们的实际网站名需求去改。
  

  
ServerName dummy-host.example.com
  

  (服务器名)可以改为123.com。可以根据实际情况,修改成网站名。
  ServerAlias www.dummy-host.example.com
  (服务器别名) www.123.com www.abc.com 可以根据实际情况,修改成网站名,而且可以写多个。
  

ErrorLog "logs/dummy-host.example.com-error_log"  
错误日志,可根据实际情况改名。
  

  
CustomLog "logs/dummy-host.example.com-access_log" common
  
访问日志,可根据实际情况修改。
  

  
  一对一对出现,这就代表着一台虚拟主机。一个主机就是一个网站。
  定义一个网站最核心的是DocumentRoot和ServerName。serveralias可以写多个,但ServerName只能写一个。
  修改完后我们去创建对应的目录
  # mkdir /data/wwwroot/
  # mkdir /data/wwwroot/123.com
  # mkdir /data/wwwroot/111.com
  可根据网站名具体修改
  然后在对应的站点根目录下创建一个index.php
  # vim /data/wwwroot/123.com/index.php
  然后在vim中编辑
  
页: [1]
查看完整版本: 4.12任务 apache结合php以及apache默认虚拟主机