tanggang1740 发表于 2018-11-17 12:54:23

11.14-11.17 Apache和PHP结合 ,httpd的默认虚拟主机

  11.14-11.15 Apache和PHP结合
  
  到目前为止,虽然安装好了apache,mysql,php,但是还没有将他们结合在一起。
  虽然apache利用php调用了一个模块,但是还没有做实验,还不知道他们能不能解析php.
  所以现在得编辑一下Apache,httpd的配置文件。
  httpd主配置文件/usr/local/apache2.4/conf/httpd.conf

  课程操作,
  # vim /usr/local/apache2.4/conf/httpd.conf 主要修改以下几个地方
  1,开启80端口,把#ServerName www.exaple.com:80的#删除。
  2,搜索Require all denied
  改成Require all granted
  3,找到
  AddType application/x-gzip .gz .tgz
  在该行下面添加一行:
  AddType application/x-httpd-php .php
  4,找到DirectoryIndex
  修改为:
  DirectoryIndex index.html index.php
  启动Apache的时候,会有以下报错信息提示,要使它不出现,
  # /usr/local/apache2.4/bin/apachectl start

  AH00558: httpd: Could not>  操作,
  #vim /usr/local/apache2.4/conf/httpd.conf
  搜索ServerName,把#ServerName www.exaple.com:80的#删除。
  #/usr/local/apache2.4/bin/apachectl start
  #vim /usr/local/apache2.4/conf/httpd.conf
  搜索Require all denied
  改成Require all granted
  以为不修改参数 会登录失败的。
  遇到这种报错,

  1 先ping IP连通性
  2 测试端口是否连同
  ip通,端口不通,这是因为没有开启80端口
  加载80端口
  #iptables -I INPUT -p tcp --dport 80 -j ACCEPT
  添加规则让防火墙开通80端口的访问
  #vim /usr/local/apache2.4/conf/httpd.conf
  找到
  AddType application/x-gzip .gz .tgz
  在该行下面添加一行:
  AddType application/x-httpd-php .php
  如果不添加这行,php没办法解析
  找到DirectoryIndex
  修改为:
  DirectoryIndex index.html index.php
  每次修改完httpd配置文件后
  利用/usr/local/apache2.4/bin/apachectl graceful    重新加载修改服务
  /usr/local/apache2.4/bin/apachectl -t //测试语法,检查配置是否有错误
  /usr/local/apache2.4/bin/apachectl start //启动服务
  #vim /usr/local/apache2.4/htodcs/1.php //增加如下内容,以下内容可以把php的相关信息打印出来
  
  打开浏览器登录192.168.189.128/1.php
  发生错误

  检查
  1,检查 php5_module (shared)模块是否存在并shared状态
  # /usr/local/apache2.4/bin/apachectl -M
  2,/usr/local/apache2.4/modules/libphp5.so 是否存在
  3,检查配置文件httpd有没有加载libphp5.so文件
  LoadModule php5_module      modules/libphp5.so
  4,检查httpd有没有加载这一行信息
  AddType application/x-httpd-php .php
  5,检查httpd有没有添加 index.php
  6,检查参数符号有没有错,不要把中文的符号打上去,一定要英文符号。
  7,关闭防火墙。
  成功

  11.16-11.17 httpd的默认虚拟主机。
  
  1.php index.php 之所以在windows端被访问,
  是因为/usr/local/apache2.4/conf/httpd.conf里的其中一项参数定义了网页路径为/usr/local/apache2.4/htdocs,而1.php index.php 又在里面。
  #vim /usr/local/apache2.4/conf/httpd.conf
  DocumentRoot "/usr/local/apache2.4/htdocs"
  
  准备工作,
  # vim /usr/local/apache2.4/conf/httpd.conf
  搜索
  Virtual hosts,把#Include conf/extra/httpd-vhosts.conf的#去掉,修改如下

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

  上述配置是,
  格式***是一个虚拟主机了
  每一个虚拟主机,代表着一个网站。
  **内容可以是,
  DocumentRoot 后面网页的路径,核心参数。
  ServerName 网页的地址,只可以输入一个
  ServerAlias 网页的别名,支持输入多个,
  接下来,创建网站,
  具体操作,创建目录,使其配置生效。
  创建三个网站的父目录,
  # mkdir /data/wwwroot/
  # mkdir /data/wwwroot/abc.com
  # mkdir /data/wwwroot/111.com
  在对应站点目录创建站点文件index.php
  # vim /data/wwwroot/abc.com/index.php

  # vim /data/wwwroot/111.com/index.php

  编辑php脚本,最后最好不要留空白行,不会导致结果有所区别。
  脚本最后留了空白行输出结果会是,
  
  而无留空白行,正确输出是,
  
  # /usr/local/apache2.4/bin/apachectl graceful
  # /usr/local/apache2.4/bin/apachectl -t
  Syntax OK
  要想在本机访问abc.com和111.com
  可以编辑/etc/hosts文件,或者使用curl -x (指定主机ip和端口)
  # curl -x192.168.189.128:80 abc.com
  abc.com#
  前缀abc.com表示已经成功指向默认虚拟主机。
  abc.com# curl -x192.168.189.128:80 www.abcd.com
  abc.com#
  abc.com# curl -x192.168.189.128:80 www.111.com
  因为www.abcd.com没有被标记在虚拟主机里面,所以它会被指向默认虚拟主机abc.com里面。
  abc.com# curl -x192.168.189.128:80 www.111.com
  111.com#
  因为111.com是第二个虚拟主机,已经被标住了,所以会在192.168.189.128:80指向它会进入111.com
  要想宿主机(真实机windows)上登录网页,需要修改windows的hosts文件。
  C:\Windows\System32\drivers\etc

  打开浏览器,尝试连接。


页: [1]
查看完整版本: 11.14-11.17 Apache和PHP结合 ,httpd的默认虚拟主机