day 41 Apache和PHP結合及Apache虛擬主機

11.14~11.15 Apache和PHP結合

配置httpd支持PHP:
  • httpd的主配置文件:/usr/local/apache2.4/conf/httpd.conf
  • vim /usr/local/apache2.4/conf/httpd.conf #編輯httpd的配置文件,修改/增加以下4個地方,如果報錯(比如79行有錯),注意不要加載兩個PHP模塊(PHP5和PHP7),需要註釋掉一個PHP模塊(如PHP7)
ServerName #將對應字段前的註釋符號去掉
Require all denied #將幾處“denied”改成“granted”。在Linux虛擬機上打開80端口:iptables -I INPUT -p tcp --dport 80 -j ACCEPT,此時在Windows機器網頁輸入虛擬機IP可顯示“It Works”,如果是“Require all denied”,那麼網頁會顯示“403 Forbidden”,在Windows機器的控制面板--程序和功能--啓用或關閉Windows功能--勾選Telnet客戶端,然後在cmd下運行命令:telnet 虛擬機IP 80,可在Windows機器上telnet到Linux機器上,輸入“Ctrl+]”,再輸“quit”退出telnet登錄。
AddType application/x-httpd-php .php #增加這一行內容可解析PHP,配置文件裏搜索關鍵詞“AddType”
DirectoryIndex index.html index.php #增加PHP索引頁
  • /usr/local/apache2.4/bin/apachectl -t #檢查配置文件的語法,結果顯示“Syntax OK‘表示正常
  • /usr/local/apache2.4/bin/apachectl graceful #重新加載配置文件,並不會重啓服務
  • /usr/local/apache2.4/bin/apachectl start                #啓動apache服務
  • netstat -lntp
  • curl localhost
  • vim /usr/local/apache2.4/htodcs/test.php              #增加測試文件test.php,添加如下測試內容,並進行網頁測試
<?php
echo 123; #或者 "phpinfo();", PHP解析成功則網頁上可把PHP的相關信息打印出來
?>

  • curl localhost/test.php #命令行測試

注:在Windows機器上只輸入Linux虛擬機上的IP能顯示“It Works”,實際上訪問的是/usr/local/apache2.4/htodcs/目錄下的“index html”文件
如果遇到PHP解析不了的問題,通常要檢查Apache的配置文件,主要檢查以下幾項:
  • /usr/local/apache2.4/bin/apachectl -M                               #查看Apache是否加載了PHP模塊
  • 若沒有加載PHP模塊,通過如下命令查看是否有該PHP模塊文件: ls /usr/local/apache2.4/modules/libphp5.so
  • 如果有PHP模塊文件,要檢查Apache配置文件裏是否有加載PHP文件的配置:“LoadModule php5_module modules/libphp5.so” 
  • 繼續檢查Apache配置文件裏是否添加了"AddType application/x-httpd-php .php"這一行內容,注意“.php”前有一個空格,可通過語法檢查命令檢查出來
11.16~11.17 Apache默認虛擬機

  •  一臺服務器可以訪問多個網站,每個網站都是一個虛擬主機
  • 任何一個域名解析(指向)到一臺Linux機器,都可以訪問的虛擬主機就是默認虛擬主機
  • vim /usr/local/apache2/conf/httpd.conf                                                                      #搜索httpd-vhost,去掉註釋符號"#"
  • vim /usr/local/apache2/conf/extra/httpd-vhosts.conf                                                 #編輯虛擬主機配置文件,配置兩個網站,原內容改爲如下。虛擬主機配置文件一旦啓用生效,那麼httpd的配置文件裏定義的DocumentRoot和ServerName就失效
<VirtualHost *:80> #一個VirtualHost代表一個站點
    ServerAdmin [email protected]
    DocumentRoot "/data/wwwroot/aming.com" #該參數定義了訪問網站的根目錄
    ServerName aming.com #網站的域名,可以定義多個
    ServerAlias www.aming.com #網站域名的別名
    ErrorLog "logs/aming.com-error_log" #指定錯誤日誌的路徑
    CustomLog "logs/aming.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/www.123.com"
    ServerName www.123.com
</VirtualHost>

  • mkdir /data/wwwroot/aming.com   
  • mkdir /data/wwwroot/www.123.com                                #創建網站對應的根目錄
  • vim /data/wwwroot/aming.com/index.php                       #在網站對應的根目錄下創建php測試文件
  • vim /data/wwwroot/www.123.com/index.php                  #需要先編輯下index.php配置文件
  • /usr/local/apache2/bin/apachectl –t
  • /usr/local/apache2/bin/apachectl graceful
  • curl -x127.0.0.1:80 aming.com                                       #會去訪問aming.com/index.php
  • curl -x127.0.0.1:80 www.123.com                                  #會去訪問www.123.com/index.php

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章