LAMP(4)Apach和php结合、Apache默认虚拟主机
????????????????????????Apach和php結合
1.修改apache配置文件?
?vim /usr/local/apache2.4/conf/httpd.conf
(1)修改ServerName ?把前面注釋的#取消
(這里在啟動httpd的時候,會提示要定義一個ServerName,若定義了則在啟動時就不會再提示)
在window瀏覽器中訪問我們的linux機器的ip:
出現這種問題的時候:我們首先排查網絡的原因(在window測試)
第一步:ping 192.168.136.133
第二步:檢查80端口:
?telnet 192.168.136.133 80
(若無telnet工具,則在 控制面板-->程序-->啟動或關閉window功能->選中telnet客戶端)
? 若出現這種提示:
說明我們根本沒有開啟80端口 (iptables -nvL可以查看到)
添加80端口:
臨時添加開啟80:iptables -I INPUT -p tcp --dport 80 -j ACCEPT
添加了以后則可以在瀏覽器中訪問到了
(2)修改Require (不修改的話,在瀏覽器訪問時會出現403錯誤)
(修改了這里就不能在瀏覽器訪問了)
修改完配置文件后執行命令:
(1)檢查配置文件語法是否正確:
/usr/local/apache2.4/bin/apachectl -t
重新加載配置文件命令:(即使配置文件修改不成功時也不會殺死我們的進程)
/usr/local/apache2.4/bin/apachectl graceful
(2)重啟apache服務
/usr/local/apache2.4/bin/apachectl restart
(3)添加一行和php相關的內容(不添加php無法解析)
AddType application/x-httpd-php .php
(4)修改一行索引頁語句(加上了index.php時在訪問地址時。可以省略地址欄的index.php)
DirectoryIndex index.html index.php
?修改完測試下是否我們的php能正常解析:
? 創建一個php測試文本:vi?/usr/local/apache2.4/htdocs/1.php
在修改完成以后在瀏覽器訪問:http://192.168.136.133/1.php,出現不能解析,只是出現源代碼:
檢查錯誤:
第一步:?查看php5模塊是否加載
/usr/local/apache2.4/bin/apachectl -M
第二步:查看是否有libphp5.so文件:
ls /usr/local/apache2.4/modules/libphp5.so
第三步:配置文件是否加了
AddType application/x-httpd-php .php (.php前面有個空格)
第四步:
是否修改成這樣(其實這步不是最重要)
/usr/local/apache2.4/bin/apachectl -t
(在修改完配置文件后,執行?/usr/local/apache2.4/bin/apachectl -t
?判斷配置文件是否修改正確)
(我在實驗的時候所有的步驟都正確,但是在訪問測試網頁的時候,php無法解析
? 解決方法:重啟php服務:?/usr/local/apache2.4/bin/apachectl restart
)
這樣我們的php才是解析成功 的:
????????? ? ?????????????????????????????????????Apache默認虛擬主機
問題:為什么我們在?創建一個php測試文本:vi?/usr/local/apache2.4/htdocs/1.php
把定義的測試網頁放在 htdocs下,我們就能在瀏覽器訪問到1.php呢?
答:原因是:?vim /usr/local/apache2.4/conf/httpd.conf
配置文件中:
則它 的域名就是上面定義的ServerName
這個就是apache的默認主機,當任意一個域名指向到機器的ip就可以訪問到我們機器的站點
window下hosts的使用:
Hosts文件是什么?
Hosts文件主要作用是定義IP地址和主機名的映射關系,是一個映射IP地址和主機名的規定。可以用文本文件打開!當用戶在瀏覽器中輸入一個需要登錄的網址時,系統會首先自動從Hosts文件中尋找對應的IP地址,一旦找到,瀏覽器會立即打開對應網頁,如果沒有找到,則瀏覽器會將網址提交DNS服務器進行IP地址解析。這也是提高快速打開網頁的方法!
host路徑:C:\Windows\System32\drivers\etc
在hosts文件定義一個域名讓它解析到我們的ip
檢測是否域名正確的解析到所指向的ip
ping 域名 ?看看顯示是不是指向到我們的定義ip中
(這個是臨時的讓 定義的域名訪問到我們ip服務器上,僅是在DNS未啟用時有效)
默認虛擬主機的步驟:(可以定義多個ServerName)
好處是我們的一臺服務器可以跑多個域名,不用局限所有域名都是解析到我們的同一個地方,一個配置文件只能定義到一個ServerName
1.打開默認虛擬主機
當我們打開了虛擬主機,則 原來httpd.conf這個文件下的
?DocumentRoot就不會再生效,原來的ServerName也不會生效。
2.打開虛擬主機配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
(每一組<VirtualHost *80></VirtualHost>都代表一個主機,一個網站)
ServerAdmin:服務郵箱(可刪除)
DocumentRoot:定義網站的根目錄
ServerName ? :網站域名 ?(這里只能定義一個)
ServerAlias ?:網站域名別名(別名可多個,都是訪問到同一個網站域名,訪問內容哦都一樣)
ErrorLog ? ?:錯誤日志
?CustomLog:訪問日志
3.創建對應的網站根目錄
4.在對應的網站根目錄創建一個站點
vim?/data/wwwroot/abc.com/index.php
vim?/data/wwwroot/111.com/index.php
配置完執行下面兩條命令:
/usr/local/apache2.4/bin/apachectl -t ?檢查配置文件語法是否正確:
?/usr/local/apache2.4/bin/apachectl graceful ?重新加載配置文件命令:(即使配置文件修改不成功時也不會殺死我們的進程)相當重啟服務一樣
? ?測試虛擬主機
此時我們直接ping 指定域名,并無解析訪問到我們定義 abc.com在本機上。
1.編輯 hosts 文件 vim /etc/hosts
(如: 添加 192.168.136.133:80 ?abc.com )
2.使用 ?命令 curl ?(這個命令就是瀏覽器的地址欄,可在命令行中看到虛擬主機內容))
curl -x192.168.136.133:80 abc.com
這里可以看出,當我們的一個域名,有定義的別名或無定義過的一個域名,當它在
解析的時候如果指向到我們服務器的ip,它都會解析到我們的默認虛擬主機
如果我們在相應的虛擬主機上定義了訪問的域名,那么域名在解析ip時就會去訪問被定義有該訪問域名的虛擬主機。
http://192.168.136.133/index.php
那么在地址欄中怎么去訪問到111.com這臺虛擬主機的index.php
首先要在window下的hosts文件
增加 ?記錄 ? 192.168.136.133 ?111.com?
????????????????????????????????????Apache的用戶認證
(類似訪問一個網站時,在顯示內容前需要輸入用戶名密碼后成功才顯示內容)
?
?
? vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把111.com那個虛擬主機編輯成如下內容
<VirtualHost *:80>
? ? DocumentRoot "/data/wwwroot/111.com"
? ? ServerName 111.com
? ? <Directory /data/wwwroot/111.com> //指定認證的目錄
? ? ? ? AllowOverride AuthConfig //這個相當于打開認證的開關
? ? ? ? AuthName "111.com user auth" //自定義認證的名字,作用不大,可自定
? ? ? ? AuthType Basic //認證的類型,一般為Basic
? ? ? ? AuthUserFile /data/.htpasswd ?//指定密碼文件所在位置
? ? ? ? require valid-user //指定需要認證的用戶為全部可用用戶,就是密碼文件定義的用戶
? ? </Directory>
</VirtualHost>
?/usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd cansheng?
?重新加載配置:
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
?綁定hosts,瀏覽器測試
?curl -x192.168.136.133:80 111.com //狀態碼為401,則為需用戶驗證
?curl -x192.168.136.133:80 ?-ucansheng:123456 111.com //狀態碼為200,表示正常
(-ucansheng:123456 ?表示用戶名和密碼)
步驟:
1.vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把111.com那個虛擬主機編輯成如下內容
2.生成密碼文件(/data/.htpasswd),和創建用戶和密碼:
/usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd cansheng
在增加一個用戶(此時不用加 -c ,因為密碼文件已創建)
/usr/local/apache2.4/bin/htpasswd ?-m /data/.htpasswd zhangcansheng
測試:
測試前執行:(加載)
(1)/usr/local/apache2.4/bin/apachectl -t
(2)/usr/local/apache2.4/bin/apachectl graceful
1.curl -x192.168.136.133:80 111.com
?curl -x192.168.136.133:80 -ucansheng:123456 111.com?
1.修改配置文件:
2.創建要用戶認證的文件:
vim /data/wwwroot/111.com/admin.php
測試前執行:(加載)
(1)/usr/local/apache2.4/bin/apachectl -t
(2)/usr/local/apache2.4/bin/apachectl graceful
此時訪問111.com不用驗證了,應為現在針對111.com下的admin.php 才要認證:
制定用戶名密碼:
成功驗證登錄
轉載于:https://blog.51cto.com/13589255/2086992
總結
以上是生活随笔為你收集整理的LAMP(4)Apach和php结合、Apache默认虚拟主机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何将PPT转换成手机APP
- 下一篇: Redux vs Mobx系列(-):i