1. 程式人生 > >Linux學習 (三) LAMP 環境搭建(還有apache不能解析php問題)

Linux學習 (三) LAMP 環境搭建(還有apache不能解析php問題)

Ubuntu下面的LAMP環境搭建:

先說一下Ubuntu下面一些檔案的目錄:

Debian, Ubuntu (Apache httpd 2.x):
ServerRoot              ::      /etc/apache2
DocumentRoot            ::      /var/www
Apache Config Files     ::      /etc/apache2/apache2.conf
                        ::      /etc/apache2/ports.conf
Default VHost Config    ::      /etc/apache2/sites-available/default, /etc/apache2/sites-enabled/000-default
Module Locations        ::      /etc/apache2/mods-available, /etc/apache2/mods-enabled
ErrorLog                ::      /var/log/apache2/error.log
AccessLog               ::      /var/log/apache2/access.log
cgi-bin                 ::      /usr/lib/cgi-bin
binaries (apachectl)    ::      /usr/sbin
start/stop              ::      /etc/init.d/apache2 (start|stop|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean)
​​​​​​Centos:(字型改不了,註明一下)
ServerRoot              ::      /etc/httpd
Primary Config Fle      ::      /etc/httpd/conf/httpd.conf
Other Config Files      ::      /etc/httpd/conf.d
Module Locations        ::      /usr/lib/httpd/modules
DocumentRoot            ::      /var/www/html
ErrorLog                ::      /var/log/httpd/error_log
AccessLog               ::      /var/log/httpd/access_log
cgi-bin                 ::      /var/www/cgi-bin (empty and disabled by default)
binary                  ::      /usr/sbin/httpd
runtime directory       ::      /etc/httpd/run
start/stop              ::      /sbin/service httpd {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}

/etc/apache2/apache2.conf 全域性配置

/etc/apache2/envvars 環境變數

/etc/apache2/ports.conf httpd服務埠資訊

/etc/apache2/conf.d/ 一般性配置檔案存放地

/etc/apache2/mods-available/ 已安裝的模組

/etc/apache2/mods-enabled/ 已經啟用的模組

/etc/apache2/sites-available/ 可用站點資訊

/etc/apache2/sites-enabled/ 已經啟用的站點資訊,當中的檔案是到

/etc/apache2/sites-available/ 檔案的軟連線。

基本上按照網上的教程就ok,不過預設安裝php7,還有就是apache2.conf(網上很多教程是httpd.config都一樣)這個檔案在/etc/apache2這個目錄下面,centos是/etc/httpd目錄下,php.ini是在/var/lib64目錄下面,還有就是如果apache不能解析php檔案,也就說php的原始碼被輸出,卻沒有對應的頁面出現,幾種可能啊,大家自己根據情況判斷,一個是你檢查你的apache2.conf檔案,看有沒有對應的

 

LoadModule php5_module        /usr/lib/apache2/modules/libphp5.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

centos下面你可以去/etc/httpd下面尋找libphp5.so檔案,這個一個硬連結,對應的還在/usr/lib/apache2/modules/libphp5.so下面,檢查你有沒有這個動態庫,也就是.so檔案,但是我自己搭建的時候這樣試過還是沒有辦法解析php檔案,遍尋網際網路,最後在一個學長的幫助下找到了答案,

執行:
sudo apt-get install libapache2-mod-php5
sudo a2enmod php5

如果顯示為:
This module does not exist!

那就要徹底刪除libapache2-mod-php5,然後重新安裝它
sudo apt-get remove --purge libapache2-mod-php5
sudo apt-get install libapache2-mod-php5
重啟apache2
sudo /etc/init.d/apache2 restart

因為我當時解除安裝刪除了php5,所以即使我下載了php7的外掛,他應該也是沒有安裝上去,所以等於外掛沒有安裝,然後寫這個php檔案

<?php phpinfo(); ?>
這個就會打印出來你的php的配置資訊了

你輸入地址就會得到這個圖片

Apache伺服器的目錄和檔案

1、WEB站點目錄
/var/www Apache站點檔案的目錄這個你可以在apache2.conf裡面修改
/var/www/html 存放WEB站點的WEB檔案
/var/www/cgi-bin CGI程式檔案
/var/www/html/manual Apache WEB伺服器手冊

2、配置檔案
.htaccess  基於目錄的配置檔案,.htaccess檔案包含對它所在目錄中檔案的訪問控制指令
/etc/httpd/conf/httpd.conf Apache WEB伺服器配置檔案目錄

3、啟動指令碼
/etc/rc.d/init.d/httpd WEB伺服器守護程序的啟動指令碼
/etc/rc.d/rc3.d/S85httpd 將執行級目錄(/etc/rc3.d)連線到目錄/etc/rc.d/init.d中的啟動指令碼

4、應用檔案
/usr/sbin 存放Apache WEB伺服器程式檔案和應用程式的位置
/usr/doc/ 放置Apache WEB伺服器文件
/var/log/http 放置Apache 日誌檔案的位置

另外還有一點需要補充,如果你用的是centos或者redhat等等其他的Linux來搭建LAMP,你就沒有libapache2-mod-php5這個東西,因為這是debian的東西,所以具體問題還要具體對待,儘量去閱讀官方文件,用谷歌搜尋

這幾天接觸了apache和LAMP這個東西,遇到了一些小挫折,其實那個php不能解析的問題困擾了我很久,找了一個開發人員也沒有很好的解決,畢竟這有點屬於運維的知識了,但那天晚上,脾氣上來了一定要解決,最後在一個學長的幫助下解決了,然後晚上高興的回去又把centos的虛擬機器網路弄好,全然忘了第二天是概率論考試,這可能就是程式設計師的一種自我擰巴的過程吧,加油!

apache還有nginx都是很有趣的東西,我也會一點點學習,加油!

最後我做一點apache官方文件的入門指南翻譯,http://httpd.apache.org/docs/2.4/,英語能力不高,如有翻譯不好之處,歡迎指出

入門指南:

如果你是apache 伺服器的新手,甚至是第一次執行網站,你不知道從那開始問什麼問題,本文件將向你介紹一些基礎知識

客戶端、伺服器和URL:

Web上的地址用URL表示 - 統一資源定位符 - 他指定了一個協議(例如http),伺服器名稱(例如 www.apache.org),URL路徑(例如 /docs/current/getting-started.html),以及可能的查詢字串(例如?arg=value),用於將附加引數傳遞給伺服器。

注:這是我在百度百科查到的東西:

統一資源定位符(Uniform Resource Locator,URL)是對可以從網際網路上得到的資源的位置和訪問方法的一種簡潔的表示,是網際網路上標準資源的地址。網際網路上的每個檔案都有一個唯一的URL,它包含的資訊指出檔案的位置以及瀏覽器應該怎麼處理它。基本URL包含模式(或稱協議)、伺服器名稱(或IP地址)、路徑和檔名,如“協議://授權/路徑?查詢”。完整的、帶有授權部分的普通統一資源標誌符語法看上去如下:協議://使用者名稱:密碼@子域名.域名.頂級域名:埠號/目錄/檔名.檔案字尾?引數=值#標誌

客戶端(例如,web瀏覽器)使用指定的協議連線到伺服器(例如,您的Apache HTTP Server),並使用URL路徑請求資源。

URL路徑可以表示伺服器上的任意數量的事物。它可能是一個檔案(如getting-started.html)處理程式(如伺服器狀態)或某種程式檔案(如index.php)。我們將在下面的網站內容部分討論這個問題。

伺服器將傳送一個響應,該響應由狀態程式碼和可選的響應主體組成。狀態程式碼指示請求是否成功,如果不成功,則表示存在何種錯誤情況。這告訴客戶端它應該如何處理響應。您可以在HTTP Server wiki中閱讀可能的響應程式碼 。

事務的詳細資訊和任何錯誤條件都寫入日誌檔案。下面將在“ 日誌檔案和疑難解答”部分中對此進行更詳細的討論。

主機名和DNS:

為了連線到伺服器,客戶端首先必須將伺服器名稱解析為IP地址 - 伺服器所在的Internet上的位置。因此,為了使您的Web伺服器可訪問,伺服器名稱必須位於DNS中。

如果您不知道如何執行此操作,則需要與網路管理員或Internet服務提供商聯絡,以便為您執行此步驟。

多個主機名可能指向相同的IP地址,並且可以將多個IP地址連線到同一物理伺服器。因此,您可以使用稱為虛擬主機的功能在同一物理伺服器上執行多個Web站點。

如果您正在測試無法訪問Internet的伺服器,則可以將主機名放在hosts檔案中以進行本地解析。例如,您可能希望在主機檔案中放置一條記錄,以將請求對映www.example.com到本地系統,以進行測試。此條目如下所示:

127.0.0.1 www.example.com

主機檔案可能位於/etc/hosts或 C:\Windows\system32\drivers\etc\hosts

這個大概是什麼意思呢,就是借用你的主機

你可以閱讀更多有關在hosts檔案Wikipedia.org/wiki/Hosts_(file)的,和更多的DNS Wikipedia.org/wiki/Domain_Name_System

配置檔案和指令

Apache HTTP Server通過簡單的文字檔案配置。這些檔案可能位於各種位置,具體取決於您安裝伺服器的具體程度。可以在httpd wikihttps://wiki.apache.org/httpd/DistrosDefaultLayout)找到這些檔案的常用位置。如果從原始碼安裝httpd,則配置檔案的預設位置為 /usr/local/apache2/conf。通常呼叫預設配置檔案httpd.conf。這也可能在伺服器的第三方分發中有所不同。

為了便於管理,配置經常被分成多個較小的檔案。這些檔案通過Include指令(https://httpd.apache.org/docs/current/en/mod/core.html#include)(句法:Include file-path|directory-path|wildcard)載入。這些子檔案的名稱或位置並不神奇,並且從一個安裝到另一個安裝可能會有很大差異。排列和細分這些檔案對來說是最有意義的。如果您預設使用的檔案排列對您沒有意義,請隨意重新排列。

通過在這些配置檔案中放置配置指令配置伺服器。指令是一個關鍵字,後跟一個或多個設定其值的引數。

的問題:“ 我在哪裡放置該指令? ”你想要一個指令是起作用,如果它是一個全域性設定,它應該出現在配置檔案中,任何<Directory><Location><VirtualHost>之外的部分,或其他部分。如果它只應用於特定目錄,那麼它應該進入<Directory>引用該目錄的 部分,依此類推。有關這些部分的進一步討論,請參閱https://httpd.apache.org/docs/current/en/sections.html(配置部分)文件。

除主要配置檔案外,某些指令可能.htaccess位於內容目錄中的 檔案中。 .htaccess檔案主要供那些無法訪問主伺服器配置檔案的人使用。您可以.htaccesshttps://httpd.apache.org/docs/current/zh-cn/howto/htaccess.html閱讀有關檔案的更多資訊 。

也可以看這個http://www.htaccess-guide.com/,不過也是英文的,不太友好

網站內容

網站內容可以採用許多不同的形式,但可以大致分為靜態和動態內容。

靜態內容類似於HTML檔案,影象檔案,CSS檔案以及駐留在檔案系統中的其他檔案。該DocumentRoot指令指定檔案系統中應放置這些檔案的位置。該指令可以全域性設定,也可以按虛擬主機設定。檢視配置檔案以確定為伺服器設定的方式。

通常,在index.html未指定檔名的情況下請求目錄時,將提供呼叫的文件。例如,如果DocumentRoot設定為 /var/www/html並且發出請求 http://www.example.com/work/,則該檔案/var/www/html/work/index.html將提供給客戶端。

動態內容是在請求時生成的任何內容,可能會從一個請求更改為另一個請求。有許多方法可以生成動態內容。各種處理程式可用於生成內容。可以編寫CGI程式https://httpd.apache.org/docs/current/zh-cn/howto/cgi.html)來為您的站點生成內容。

像mod_php這樣的第三方模組可用於編寫執行各種操作的程式碼。許多使用各種語言和工具編寫的第三方應用程式都可以在Apache HTTP Server上下載和安裝。支援這些第三方內容超出了本文件的範圍,您應該找到他們的文件或其他支援論壇來回答您關於它們的問題。

日誌檔案和故障排除

作為Apache HTTP Server管理員,您最有價值的資產是日誌檔案,尤其是錯誤日誌。沒有錯誤日誌的任何問題的故障排除就像閉著眼睛開車一樣。

錯誤日誌的位置由ErrorLog指令定義,可以全域性設定,也可以按虛擬主機設定。錯誤日誌中的條目會告訴您出了什麼問題以及何時出錯。他們經常也告訴你如何解決它。每條錯誤日誌訊息都包含一個錯誤程式碼,您可以線上搜尋以獲取有關如何解決問題的更詳細說明。您還可以將錯誤日誌配置為包含日誌ID,然後可以將其與訪問日誌條目相關聯,以便確定導致錯誤情況的請求。

您可以閱讀有關登入日誌文件的更多資訊(https://httpd.apache.org/docs/current/en/logs.html)。

哇,終於翻譯完了,雖然藉助了谷歌翻譯,但是還是有很多不理解的地方,所以對照英文原文再結合谷歌翻譯,有道翻譯看了一遍,然後因為是要寫部落格,然後不理解的新詞彙再谷歌,現在算是對於apache有了一個大概的認識,其中也或多或少的瞭解了一些建站的東西,以後有時間我一定會繼續翻譯apache的文件內容,不過我想我翻譯完的時候估計apache3.x都有了吧,哈哈,just for fun,just do IT,加油!