1. 程式人生 > 實用技巧 >5月28日

5月28日

11.14-11.15 Apache和PHP結合

ApachePHP結合

配置httpd支援php

1. 修改配置檔案httpd.conf路徑:

vim /usr/local/apache2.4/conf/httpd.conf

blob.png

1.1 修改配置一:(允許所有請求訪問

1.1.1修改httpd的主配置檔案/usr/local/apache2.4/conf/httpd.conf

搜尋ServerName,把#ServerName www.example.com:80前面的#號刪除讓其生效

啟動apache服務不會跳提示。

blob.png

1.1.2 找到如下內容更改:

Requirealldenied改為 Requireallgranted

blob.png

修改目的:是允許所有請求訪問,如果不設定該行,則我們訪問的時候會報

403錯誤。

1.2 修改二:(為了支援PHP,需要增加一行與PHP相關的配置)

找到如下內容, 在該行下面新增一行配置

AddTypeapplication/x-gzip /gz .tgz

新增一行:AddType application/x-httpd-php .php

blob.png

1.3 修改三:(設定預設訪問頁面index.php

找到如下內容更改

DirectoryIndexindex.html 改為 DirectoryIndexindex.htmlindex.php

blob.png

2. 臨時開關80埠命令:

iptables-I INPUT -p tcp --dport 80 -j ACCEPT //新增規則

iptables -D

INPUT -p tcp --dport 80 -j ACCEPT //刪除規則

3. 測試配置檔案是否正確,重新載入配置命令:

/usr/local/apache2.4/bin/apachectl -t //改完配置檢查配置語法是否正確,正常顯示“Syntax OK

/usr/local/apache2.4/bin/apachectl start //啟動服務

/usr/local/apache2.4/bin/apachectl graceful //不重啟服務的情況下,重新載入配製檔案

blob.png

netstat -lntp 檢視埠

blob.png

3.1 剛剛啟動apache服務時報錯:

blob.png

因為裝了兩個PHP57會有衝突要做如下修改

/usr/local/apache2.4

/conf/httpd.conf中的

LoadModule php5_module modules/libphp5.so註釋掉加#

並新增LoadModule php7_module modules/libphp7.so,完美解決

blob.png

4. 測試編輯一個PHP指令碼:

vim /usr/local/apache2.4/htodcs/test.php //增加如下內容

<?php

echo 123;

?>

伺服器驗證:curl localhost/test.php

客戶端驗證:用瀏覽器開啟網址:47.97.163.117/test.php 會在瀏覽器中顯示php的資訊。

4.1 解析報錯:

blob.png

解決思路:

檢查php不能解析的原因:

檢視Apache有沒有載入php模組/usr/local/apache2.4/bin/apachectl -M , 如果沒有載入就檢視有沒有這個檔案,如果沒有這個檔案就載入不了.

ls /usr/local/apache2.4/modules/libphp5.so;

如果有這個檔案但並沒有顯示,就檢查配置檔案裡

vim /usr/local/apache2.4/conf/httpd.conf,有沒有載入libphp5.so的配置;

檢查配置檔案裡有沒有加這一行:AddType application/x-httpd-php .php,記得在.php前要加空格;

檢查配置檔案裡有沒有加index.php;

結果:發現以上配置都正常,最後發現是index.html用root使用者建的檔案,apache許可權不夠。注:index.html預設許可權是644

解決方法:

更改檔案許可權;chmod 755 /usr/local/apache2.4/htdocs/index.html

5.如果是阿里雲看是否開放了80埠

blob.png

11.16-11.17 Apache預設虛擬主機

Apachehttpd)預設虛擬主機

一臺伺服器可以訪問多個網站,每個網站都是一個虛擬主機,概念:域名(主機名)、DNS、解析域名、hosts。任何一個域名解析到這臺機器,都可以訪問的虛擬主機就是預設虛擬主機。

1.修改Apache的配置檔案:(開啟虛擬主機配置生效)

編輯配置檔案,搜尋httpd-vhost,去掉#號,然後儲存配置檔案:

vim /usr/local/apache2.4/conf/httpd.conf

blob.png

2. 編輯修改虛擬主機配置檔案:

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf (預設配置如下圖)

blob.png

備註:

每個VirtualHost *:80 代表一個主機,一個主機就是一個網站,虛擬主機配置檔案可以定義多個VirtualHost

在虛擬主機裡有一個預設虛擬主機(第一段VirtualHost ),就是無論任何域名解析到這個IP上都會訪問這個虛擬主機。當搜尋所有配置段,你發現訪問的域名沒有在配置裡面出現,那它就會預設走虛擬主機的配置。

2.1 修改配置如下:

修改後:

<VirtualHost *:80>

DocumentRoot"/data/wwwroot/abc.com"

ServerNameabc.com

ServerAliaswww.abc.com www.123.com

ErrorLog"logs/abc.com-error_log"

CustomLog"logs/abc.com-access_log"common

</VirtualHost>

<VirtualHost *:80>

DocumentRoot"/data/wwwroot/111.com"

ServerName111.com

ServerAliaswww.example.com

ErrorLog"logs/111.com-error_log"

CustomLog"logs/111.com-access_log"common

</VirtualHost>

blob.png

2.2 內容定義說明:

ServerAdmin:指定管理員郵箱,這個沒有什麼實質作用。

DocumentRoot:為該虛擬主機站點的根目錄,網站的程式就放在這個目錄下面。

ServerName:為網站的域名,不支援寫多個

ServerAlias:為網站的第二域名,只有alias可以寫多個域名,用空格分隔。

Errorlog:為站點的錯誤日誌

Customlog:為站點的訪問日誌。

3. 更改完成配置檔案後需要在/data目錄下建立對應的目錄檔案

blob.png

4.在相對應的站點根目錄下定義一個index.php檔案

vim /data/wwwroot/abc.com/index.php

定義內容如下:

blob.png

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

定義內容如下:

blob.png

5. 修改完配置,檢查配置檔案語法是否正確:

/usr/local/apache2.4/bin/apschectl -t

blob.png

6. 重新載入配置檔案:

/usr/local/apache2.4/bin/apschectl graceful

blob.png

7. 測試結果,可以使用hosts檔案裡面去做域名解析,或者使用curl -x命令,示例如下

blob.png

7.1 hosts指向:

blob.png

blob.png

blob.png

總結

1.在主配置檔案中Include conf/extra/httpd-vhosts.conf生效開啟了虛擬主機配置檔案Vhosts.conf,那主配置其它配置檔案DoucmentRootServerName都失效。

2.虛擬主機配置檔案一旦開啟,它裡面可以定義很多個VirtualHost虛擬機器,每一個VirtualHos裡面都可以定義DoucmentRootServerNameServerAlias可以寫多個(可以有多個域名指向),每個VirtualHost都代表一個站點,都是一個虛擬主機。

3.在虛擬主機裡面有一個比較特殊的,就是預設虛擬主機,所謂預設虛擬主機,若有其它域名也指向該IP,但虛擬主機裡面沒有配製 該域名,那麼 將會訪問 第一個虛擬機器(預設虛擬機器).



轉載於:https://blog.51cto.com/404006045/2121324