探探自动配对PHP_CentOS7 - 安装Apache HTTP Server和PHP
安裝Apache HTTP Server和PHP
你可能聽說過LAMP的縮寫,它代表Linux,Apache,MySQL和PHP。 它指的是用于提供網站和Web應用程序的流行技術配對。 本文教您如何安裝Apache HTTP Server(簡稱Apache)并將其配置為與PHP一起使用以提供動態Web內容.
Apache是20多年前首次發布的,它是最早的Web服務器之一,它仍然是最受歡迎的服務器之一。 它在LAMP堆棧中的任務是通過響應他們對Web資源的請求來與用戶交互。 也許它的一個賣點是它的設計允許其功能通過模塊擴展。 mod_ssl中存在許多模塊,它們為mod_rewrite添加了HTTPS支持,允許您動態修改請求URL.
PHP是一種用于創建動態Web內容的腳本語言。 它在幕后工作,腳本的輸出通常由Apache提供以滿足請求。 PHP通常作為模塊(mod_php)安裝,將語言的解釋器嵌入到Apache的處理中,但是現在,將PHP作為獨立進程運行是首選。 這是我們將在本文中采用的方法.
準備
此配方需要具有有效網絡連接的CentOS系統。 它假定系統配置了IP地址192.168.56.100。 通過使用root帳戶登錄或使用sudo,還需要管理權限。
請注意,官方CentOS存儲庫安裝PHP 5.4。 如果要安裝較新版本,Remi存儲庫提供5.5,5.6和7.0。 要安裝其中一個5.x版本,請打開/etc/yum.repos.d/remi.repo文件,找到[remi-php55]或[remi-php56]部分中的enabled選項并將其值設置為1 。對于7.0,更新/etc/yum.repos.d/remi-php70.repo中的enabled選項.
注意
PHP 6發生了什么? 這是一個漫長的故事......開發PHP的志愿者團隊正在開發第6版,但該計劃面臨許多障礙,最終被擱置。 為了防止最新版本和任何關于PHP 6的博客帖子之間出現混淆,我們決定將其版本號提升到7.簡而言之,PHP 6確實存在但從未達到適當的發布狀態且大部分都很酷 計劃為6的功能使其成為PHP 5.3,5.4和7.0.
怎么做
請按照以下步驟安裝Apache HTTP Server和PHP:
- 安裝httpd和php-fpm軟件包:
- 使用文本編輯器打開Apache的配置文件:
- 找到ServerName選項。 刪除出現在行開頭的#以取消注釋,然后更改選項的值以反映服務器的主機名或IP地址:
- 找到DirectoryIndex選項并將index.php添加到列表中:
- At the end of the file, add the following configuration:
- 將更改保存到配置并關閉文件。
- 驗證是否已啟用mod_proxy(列為proxy_module)和mod_proxy_fcgi(proxy_fcgi_module)擴展模塊:
- 兩個模塊都應出現在輸出中。
- 啟動Apache和PHP的FPM服務,并使它們在系統重新啟動時自動啟動:
- 在系統的防火墻中打開端口80以允許HTTP請求通過:
工作原理
有幾種方法可以將PHP與Apache的HTTP服務器集成,以生成動態Web內容。 從歷史上看,使用Apache的mod_php模塊是可行的方法,但現在首選的方法是將PHP作為一個單獨的進程運行,Web服務器使用FastCGI協議進行通信。 因此,我們為Apache HTTP Server安裝了httpd包,為PHP解釋器及其進程管理器安裝了php-fpm包:
yum install httpd php-fpmPHP FastCGI進程管理器(FPM)包含在5.3版本的核心PHP發行版中。 將PHP與Apache分離可以鼓勵更具可擴展性的體系結構,并且使用持久性PHP進程可以減少CPU開銷,因為不必為每個請求生成新的解釋器.
Apache的主要配置文件是/etc/httpd/conf/httpd.conf,其中我們更新了ServerName選項以反映我們服務器的主機名或IP地址。 雖然此步驟并非嚴格必要,但如果我們不設置該選項,則服務器會將警告消息寫入其日志文件。 此外,服務器能夠識別自身也很有用:
ServerName 192.168.56.100:80接下來,我們通過將index.php添加到其值列表來更新DirectoryIndex選項。 當用戶請求解析為目錄的資源時,服務器將在該目錄中查找與DirectoryIndex列表中的某個名稱匹配的文件。 如果找到,Apache將返回該文件以滿足請求。 此行為允許訪問者使用諸如www.example.com之類的URL訪問網站的主頁,而不是www.example.com/index.html:
DirectoryIndex index.html index.php列出文件的順序非常重要。 例如,如果目錄中存在index.html和index.php,那么將返回index.html,因為它在選項列表中的index.php之前列出.
然后我們導航到文件末尾以添加以下代理配置。 如果ProxyPassMatch的正則表達式與傳入請求匹配,則服務器將檢索給定的URL并返回該內容:
ProxyPassMatch ^/(.*.php)$ fcgi://127.0.0.1:9000/var/www/html/$1正則表達式使用描述如何匹配文本的特殊符號編寫。 大多數字符在字面上是匹配的,但有些字符具有特殊含義:
- .: 這符合任何角色。 模式不。 匹配文本芽,bug,包子,總線等.
- +: 這與前一個元素匹配一次或多次。 模式fe + t匹配fet,feet和fetet等,但不匹配ft.
- *: 這可選地任意次數匹配前面的元素。 模式fe * t匹配ft,fet,feet,fetet等.
- ?: 這可選地匹配前一個元素一次。 圖案顏色與顏色和顏色相匹配.
- ^: 這會將匹配錨定到行的開頭。 模式^ abc僅匹配abcif abc出現在文本的開頭(^在[]中使用時具有特殊意義).
- $: 這將匹配錨定到行尾。 如果xyz出現在行的末尾,則模式xyz $僅匹配xyz.
- [ ]: 這匹配括號內給出的任何字符。 模式co [lr]與冷和繩索相匹配。 當[]中的第一個字符是^時,列表被否定; co [^ lr] d匹配男女同校但不冷或繩索.
- ( ): 這會將元素分組并捕獲匹配項。 模式跳轉(編輯)? 匹配跳躍和跳躍.
如果你想要任何這些特殊字符在字面上匹配,那么你應該使用前導反斜杠來逃避它們,例如foo .html將匹配foo.html而不是fooahtml,foobhtml等等.
特殊數字變量(如$ 1和$ 2)包含任何捕獲的匹配項的值。 它們的填充順序是括號捕獲匹配的順序,因此(foo)。(html)將$ 1設置為foo,將$ 2設置為html.
有了這個理解,你現在應該能夠破譯正則表達式^ /(。* .php)$捕獲以擴展名.php結尾的請求資源的路徑和文件名。 $ 1變量代表捕獲的路徑,因此對/about/staff.php的請求將代理為fcgi://127.0.0.1:9000 / var / www / html / about /staff.php其中PHP的Fast-CGI監聽器是 在端口9000上偵聽本地接口.
Apache的功能通常通過模塊擴展,作為一種安全措施,在IfModule塊中包裝特定于模塊的配置選項是一種很好的做法。 這些塊的打開包含模塊的名稱,并顯示在尖括號<>中。 塊的關閉顯示為 IfModule>,就像關閉HTML元素一樣.
服務器從中提供文件的目錄由選項DocumentRoot設置。 默認值為/ var / www / html,因此我們放置在其中或其中的子目錄中的任何文件都是可訪問的。 作為一個例子來說明這一點,分發包括一個示例index.html文件,我們可以用它來驗證服務器是否正確運行; 將/usr/share/httpd/noindex/index.html文件復制到/ var / www / html:
cp /usr/share/httpd/noindex/index.html /var/www/html然后,打開瀏覽器并導航到系統的域或IP地址。 您應該看到歡迎頁面:
您可以將Apache的默認索引頁復制到Web目錄,以測試服務器是否已啟動并正在運行
對于PHP,您需要將一個PHP文件放在Fast-CGI服務可以讀取的位置。 代理URL是fcgi://127.0.0.1:9000 / var / www / html / $ 1,因此我們可以將我們的PHP文件放在/ var / www / html中.
使用以下內容創建info.php文件:
<?php phpinfo();現在保存文件,然后導航到瀏覽器中的頁面。 您應該看到PHP的phpinfo()函數的輸出,它提供了有關如何配置PHP以及哪些模塊可用的詳細信息:
PHP報告有關其環境和請求的信息
注意
出于安全考慮,建議您刪除welcome index.html文件(如果您將其復制過來),并在驗證一切正常后刪除info.php腳本。 它們提供的信息可以為惡意用戶提供有關您的Web服務器設置的更多信息,而不是您希望擁有的信息.
See also
Refer to the following resources for more information on working with Apache and PHP:
- Apache HTTP Server Project (http://httpd.apache.org/)
- The PHP home page (http://php.net/)
- Apache mod_proxy_fcgi documentation (http://httpd.apache.org/docs/current/mod/mod_proxy_fcgi.html)
- Httpd Wiki: PHP-FPM (http://wiki.apache.org/httpd/PHP-FPM)
- RFC-2616: HTTP/1.1 (http://www.rfc-base.org/txt/rfc-2616.txt)
總結
以上是生活随笔為你收集整理的探探自动配对PHP_CentOS7 - 安装Apache HTTP Server和PHP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redisson的锁的类型_厉害了,中间
- 下一篇: 股票中长线看什么指标?