5月28日
11.14-11.15 Apache和PHP結合
Apache和PHP結合
配置httpd支援php
1. 修改配置檔案httpd.conf路徑:
vim /usr/local/apache2.4/conf/httpd.conf
1.1 修改配置一:(允許所有請求訪問)
1.1.1修改httpd的主配置檔案/usr/local/apache2.4/conf/httpd.conf
搜尋ServerName,把#ServerName www.example.com:80前面的#號刪除讓其生效
啟動apache服務不會跳提示。
1.1.2 找到如下內容更改:
Requirealldenied改為 Requireallgranted
修改目的:是允許所有請求訪問,如果不設定該行,則我們訪問的時候會報
1.2 修改二:(為了支援PHP,需要增加一行與PHP相關的配置)
找到如下內容, 在該行下面新增一行配置:
AddTypeapplication/x-gzip /gz .tgz
新增一行:AddType application/x-httpd-php .php
1.3 修改三:(設定預設訪問頁面index.php)
找到如下內容更改:
DirectoryIndexindex.html 改為 DirectoryIndexindex.htmlindex.php
2. 臨時開關80埠命令:
iptables-I INPUT -p tcp --dport 80 -j ACCEPT //新增規則
iptables -D
3. 測試配置檔案是否正確,重新載入配置命令:
/usr/local/apache2.4/bin/apachectl -t //改完配置檢查配置語法是否正確,正常顯示“Syntax OK”
/usr/local/apache2.4/bin/apachectl start //啟動服務
/usr/local/apache2.4/bin/apachectl graceful //不重啟服務的情況下,重新載入配製檔案
netstat -lntp 檢視埠
3.1 剛剛啟動apache服務時報錯:
因為裝了兩個PHP版本5和7會有衝突要做如下修改
將/usr/local/apache2.4
LoadModule php5_module modules/libphp5.so註釋掉加#
並新增LoadModule php7_module modules/libphp7.so,完美解決
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 解析報錯:
解決思路:
檢查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埠
11.16-11.17 Apache預設虛擬主機
Apache(httpd)預設虛擬主機
一臺伺服器可以訪問多個網站,每個網站都是一個虛擬主機,概念:域名(主機名)、DNS、解析域名、hosts。任何一個域名解析到這臺機器,都可以訪問的虛擬主機就是預設虛擬主機。
1.修改Apache的配置檔案:(開啟虛擬主機配置生效)
編輯配置檔案,搜尋httpd-vhost,去掉#號,然後儲存配置檔案:
vim /usr/local/apache2.4/conf/httpd.conf
2. 編輯修改虛擬主機配置檔案:
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf (預設配置如下圖)
備註:
每個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>
2.2 內容定義說明:
ServerAdmin:指定管理員郵箱,這個沒有什麼實質作用。
DocumentRoot:為該虛擬主機站點的根目錄,網站的程式就放在這個目錄下面。
ServerName:為網站的域名,不支援寫多個
ServerAlias:為網站的第二域名,只有alias可以寫多個域名,用空格分隔。
Errorlog:為站點的錯誤日誌
Customlog:為站點的訪問日誌。
3. 更改完成配置檔案後需要在/data目錄下建立對應的目錄檔案:
4.在相對應的站點根目錄下定義一個index.php檔案
vim /data/wwwroot/abc.com/index.php
定義內容如下:
vim /data/wwwroot/111.com/index.php
定義內容如下:
5. 修改完配置,檢查配置檔案語法是否正確:
/usr/local/apache2.4/bin/apschectl -t
6. 重新載入配置檔案:
/usr/local/apache2.4/bin/apschectl graceful
7. 測試結果,可以使用hosts檔案裡面去做域名解析,或者使用curl -x命令,示例如下
7.1 hosts指向:
總結:
1.在主配置檔案中Include conf/extra/httpd-vhosts.conf生效開啟了虛擬主機配置檔案Vhosts.conf,那主配置其它配置檔案DoucmentRoot與ServerName都失效。
2.虛擬主機配置檔案一旦開啟,它裡面可以定義很多個VirtualHost虛擬機器,每一個VirtualHos裡面都可以定義DoucmentRoot與ServerName,ServerAlias可以寫多個(可以有多個域名指向),每個VirtualHost都代表一個站點,都是一個虛擬主機。
3.在虛擬主機裡面有一個比較特殊的,就是預設虛擬主機,所謂預設虛擬主機,若有其它域名也指向該IP,但虛擬主機裡面沒有配製 該域名,那麼 將會訪問 第一個虛擬機器(預設虛擬機器).
轉載於:https://blog.51cto.com/404006045/2121324