配置httpd結合php及默認虛擬主機
1?httpd的主配制文件: /usr/local/apache/conf/httd.conf
1?在我們安裝好httpd之後,會有一個提示set ServerName,我們進入以上這個配制文件,把Servername前面的#號去掉,然後註釋掉一個php,這樣就不會提示出錯了。
2?增加一行配制:Require all granted 如果不加這一行,訪問是403
我們要首先要ping 下80端口是不是通的,
臨時讓linux防火墻開啟80端口: iptables -I INPUT -p tcp --dport 80 -j ACCEPT, 就可以訪問了。
檢查配制語法是否對: /usr/local/apache/bin/apachectl -t
3?增加一行跟php相關的配制,AddType application/x-httpd-php .php,加在AddType類似行
4?增加一個索引頁: DirectoryIndex index.php 直接在index.html後面空格一行加上index.php就好了
5?寫一個測試的腳本:vim /usr/local/apache2.4/htodcs/1.php 增加內類
<?php
echo 123;
?>
(增加一個文件不用重啟,如果php不能解析顯示的就是原代碼,那我們就要想到有沒有apache文件:php5_module 有沒有這個模塊,有沒有/usr/local/apche/modules/libphp5.so 這個文件,還要檢查制制文件沒有loadmoudel以及有沒有 AddType application/x-httpd-php .php)
6?重啟httpd: /usr/local/apache/bin/apachectl restart
二、httpd的默認虛擬主機
一臺服務器可以訪問多個網站,第個網站都是一個虛擬主機,我們為什麽會訪問到index.html 1.php 是因為DocumentRoot "usr/local/apache/htdocs 這個參數定義了這個網站的目錄在哪裏。
怎麽在windows寫hosts :/windosw/system32/drivers/etc/hosts 用寫字版打開。在裏面加一行,192.168.1.23 www.abc.com 我們在瀏覽器裏面直接打開www.abc.com 它就直接跳轉到192.168.1.23在dns沒有生效的情況下用。
3?一臺服務器上,我可以跑多個域名,不想讓全部域全部指向同一個ip,所以我們需要給它打開一個虛擬主機配制文件,在/usr/local/apache/conf/httdp.conf 搜索:extra 找到/virtual hosts 這一行,把這行的#號去掉,打開這個後,htdocs裏面文件就不用,以前的servername我們就不用了。
打開二級虛擬配制文件: /usr/local/apache/conf/extra/httpd-vhosts.conf可以定義多個servername, 裏面第一對virtualhost 就打表一個主機
DocumentRoot:網站的根目錄在哪裏 如:/data/wwwroot/abc.com
ServerName : 如可以定義成abc.com 只能寫一個
ServerAlias : 定義別名: 如: www.abc.com 可以寫多個
ErrorLog :錯誤日誌路徑 如: logs/abc.com-error_log
CustomLog: 訪問日誌路徑 如:"logs/abc.com-access_log" common
一旦讓虛擬主機生效了,那麽以前的定義的servername 就失效了
5、創建對應的目錄:
mkdir /data/wwwroot
mkdir /data/wwwroot/abc.com
6、在對應的站點目錄下創建php
vim /data/wwwroot/abc.com/index.php
7、檢查有沒有錯: /usr/local/apache/bin/apachectl -t
8、重新加載:/usr/local/apache/bin/apchectl graceful
9、測試虛擬主機:
curl 命令和瀏覽器交替使用:
-x 比如我們要訪問www.abc.com ,如果沒有綁定hosts,那麽ping 就會ping到外網上去。可以編輯/etc/hosts 也可以用curl+x直接訪問:
curl -x192.168.1.23:80 www.abc.com
這樣我們就可以訪問到虛擬主機上去了
如果虛擬主機生效,那麽主配制文件就失效了,
默認虛擬主機就是:無論任何域名,只要解析到這個ip上,都會訪問這個默認虛擬主機。
配置httpd結合php及默認虛擬主機