LAMP架構(Apache和PHP結合、Apache默認虛擬主機)

Apache和PHP結合:配置httpd支持php

  • 修改主配置文件 /usr/local/apache2.4/conf/httpd.conf
    • ServerName 處取消註釋(解決apache啓動時提示ServerName的問題)
    • Directory標籤下 Require all denied修改成granted,解決訪問403問題
    • 增長php的解析 AddType application/x-httpd-php .php
    • 增長索引頁 DirectoryIndex index.html index.php

此處的403指的是啓動apache的時候彈出的403警告(見下圖),解決方法就是取消ServerName的註釋:php

  • 此時啓動時報錯:
[root@yolks2 conf]# /usr/local/apache2.4/bin/apachectl start
/usr/local/apache2.4/bin/apachectl: 行 79:  6766 段錯誤               $HTTPD -k $ARGV

查看/usr/local/apache2.4/conf/httpd.conf文件,發現以前安裝PHP5和PHP7的時候此處加載了兩個模塊,此處引發的衝突,註釋掉任意一個便可保存文件再次重啓試試。html

啓動狀況:能夠看到此處問題已解決linux

  • 此處使用windows機器瀏覽器輸入linux虛擬機器IP地址,提示不能打開

  • 咱們使用windows機器進行ping測試,測試發現能夠通

  • 臨時添加80端口客戶機測試
iptables  -I  INPUT  -p  tcp  --dport  80  -j  ACCEPT

  • 直接輸入ip地址便可看到顯示 it works

  • 檢查apache配置文件是否有錯誤
/usr/local/apache2.4/bin/apachectl  -t

  • 不重啓服務從新加載配置文件
/usr/local/apache2.4/bin/apachectl  graceful
  • 編寫php文件測試
vi  /usr/local/apache2.4/htdocs/test_20171015.php

<?php
phpinfo();
?>

正常解析如圖apache

  • 不正常解析則顯示源代碼,排查步驟以下:
    • 檢查加載模塊是否有php模塊,例如:ls /usr/local/apache2.4/modules/libphp5.so 文件是否存在
    • 配置文件檢查,例如: vim /usr/local/apache2.4/conf/httpd.conf裏有沒有libphp5.so配置存在
    • 檢查AddType的php解析,配置規範不規範有沒有漏掉空格等

Apache虛擬主機

  • 編輯apache主配置文件開啓虛擬主機
    • /usr/local/apache2.4/conf/httpd.conf文件中 開啓Virtual hosts

  • 編輯虛擬主機配置文件
    • /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

  • 上圖所示的VirtualHost標籤對中字段的含義:
    • ServerAdmin : 在全部返回給客戶端的錯誤信息中包含的管理員郵件地址
    • DocumentRoot : 定義網站根目錄
    • ServerName : 域名
    • ServerAlias : 域名別名
    • ErrorLog : 錯誤日誌文件保存位置
    • CustomLog : 客戶請求日誌
  • 建立上圖所示的目錄
mkdir  /data/wwwroot/

mkdir  /data/wwwroot/abc.com

mkdir  /data/wwwroot/111.com
  • 編寫虛擬主機abc目錄的測試php文件
vim   /data/wwwroot/abc.com/idnex.php

//  編寫測試內容以下

<?php
echo "this is test abc.com";
?>
  • 編寫虛擬主機111目錄的測試php文件
vim   /data/wwwroot/111.com/idnex.php

//  編寫測試內容以下

<?php
echo "this is test 111.com";
?>
  • 測試配置是否正常
/usr/local/apache2.4/bin/apachectl  -t
  • 從新加載配置文件
/usr/local/apache2.4/bin/apachectl  graceful
  • 測試
curl  -x192.168.248.129:80  www.abc.com
[root@yolks2 conf]# curl -x192.168.248.129:80 www.abc.com
this is test abc.com[root@yolks2 conf]# curl -x192.168.248.129:80 www.111.com
this is test abc.com[root@yolks2 conf]# curl -x192.168.248.129:80 www.123.com
this is test abc.com

若是咱們訪問 www.example.com 則會指向配置的111.com目錄下的index.php或者經過111.com訪問vim

[root@yolks2 conf]# curl -x192.168.248.129:80 www.example.com
this is test 111.com[root@yolks2 conf]#curl -x192.168.248.129:80 111.com
this is test 111.com[root@yolks2 conf]#
  • 總結
  1. 主配置文件只要開啓Virtual hosts ,本主配置文件的ServerName失效,DocumentRoot也失效
  2. 虛擬主機配置文件打開便可配置多個Virtual hosts標籤對,每一個Virtual hosts都有本身的DocumentRoot和ServerName,一個Virtual hosts表明一個站點,都是一個虛擬主機。默認虛擬主機即不管任何域名都會訪問默認主機。
相關文章
相關標籤/搜索