apache server 介紹和安裝配置WordPress

 

概念介紹php

一、apache server 是一個流行的http服務器。對應的可執行軟件是httpd 和 apachectl。httpd提供http服務,apachectl控制httpd的執行。html

二、CGI 即 Common Gateway Interface, 是apache server 上程序和http交互的協議,在多種語言上都有實現,因此你在apache服務器上能夠運行perl、php、python等腳本。apache默認提供的是文旦內容,即訪問服務上的資源時,獲得的是一個純文本文檔。CGI讓程序可以提供動態網頁內容。python

三、FCGI, Fast CGI ,是CGI的改進版,性能比CGI好。web

四、apache能夠加載動態模塊,FCGI就是用於給apache加載的一個動態庫。apache要加載哪些模塊,是在配置文件中設置的。apache

五、在apache上使用CGI運行腳本的時候,須要給腳本文件設置可執行權限,不然被認爲是服務器異常,http返回500狀態碼,日誌中輸出: Permission denied: AH01241: exec of '/usr/local/bin/apache/cgi-bin/printenv' failed。bash

六、APR 、 APR-UTIL 安裝運行apache軟件須要的環境服務器

七、Perl 一個腳本語言app

環境搭建

ide

一、安裝apache server性能

官網: http://www.apache.org/ 

進入download頁下載壓縮文件。解壓後是沒法直接安裝的。須要下載 APR 、 APR-UTIL 並解壓到apache的srclib目錄下。文件層級以下

 

以後執行下面的命令,把其中的PREFIX替換成安裝目錄

$ ./configure --prefix=PREFIX
     $ make
     $ make install
     $ sudo PREFIX/bin/apachectl start

  

安裝後的apache服務默認監聽的端口是80,監聽這個端口須要使用root權限。你能夠在config/httpd.config文件中修改要監聽的端口:Listen 8081。

apachectl start啓動服務後,訪問 http://localhost:8081/ 能夠看到 It Works頁面,說明apache 正常啓動了。此時apache只提供文檔內容,尚未配置CGI交互能力。

 

二、apache基本配置

apache的配置文件使用xml格式,默認配置文件是config/httpd.config。

apache按目錄進行配置。<Directory> 標籤用來配置某一個目錄的信息。下面的配置表示設置/usr/local/bin/apache/htdocs目錄的訪問權限對全部ip公開(Require all granted ,2.4版本之前使用Allow指令設置,2.4之後的版本不能使用Allow 指令),表示設置該目錄的子目錄不能夠重寫配置(AllowOverride None),表示該目錄下的能夠進行的操做有顯示列表(Indexes),訪問鏈接文件(FollowSymLinks)。

<Directory "/usr/local/bin/apache/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

  

apache默認輸出的日誌不多,你須要在http.config中把LogLevel修改成下面的內容來打印更多的信息。若是不修改,下面提到的一些日誌你是看不到的。

LogLevel debug

  

三、CGI模塊安裝 和 apache 配置CGI功能 (以Perl爲例)

從apache官網下載模塊mod_fcgid,解壓後執行:

./configure.apxs
    make
    make install

  

安裝好以後,apache的modules目錄下應該有modules/mod_cgid.so文件。在http.config文件中增長配置:LoadModule cgid_module modules/mod_cgid.so,從而使得apache能加載CGI模塊。

http.config中默認有下面的配置: 它表示給/usr/local/bin/apache/cgi-bin/路徑設置一個別名 /cgi-bin/ 即 可使用 http://localhost:8081/cgi-bin/test-cgi 形式的地址訪問/usr/local/bin/apache/cgi-bin/下的test-cgi資源。Alias指令也是設置別名,不一樣的是ScriptAlias下的資源會當作腳原本執行。

ScriptAlias /cgi-bin/ "/usr/local/bin/apache/cgi-bin/"

  

修改配置後,直接重啓apache是不能運行腳本的。從error.log中能夠看到對應的錯誤提示。

 

一、第一個錯誤是腳本執行權限錯誤。由於/cgi-bin目錄下的腳本默認只有讀寫權限,直接訪問會致使http 500錯誤,此時error.log中會輸出 Permission denied: AH01241: exec of '/usr/local/bin/apache/cgi-bin/printenv' failed。

二、第二個錯誤是腳本格式錯誤。此時error.log中提示:Exec format error: AH01241: exec of '/usr/local/bin/apache/cgi-bin/printenv' failed。須要在腳本頭中添加#!/bin/bash #!/usr/bin/perl 等,用來代表使用哪個解釋器來執行腳本。

三、若是你執行perl腳本,還有可能看到這條日誌: can't locate fcgi.pm in @inc。它代表你的perl缺乏CGI模塊。能夠按照perl官網的提示下載安裝。

 

最終在apache上經過CGI訪問腳本的效果以下:

四、配置php腳本的CGI

 首先從apache官網下載mod_fcgid模塊,解壓後執行下面的命令進行安裝:

./configure.apxs
    make
    make install

  

httpd.conf  中設置.php 處理器

AddHandler fcgid-script .php

  

安裝後在apache的modules目錄下會出現 mod_fcgid.so 。此時在httpd.config 中配置加載mod_fcgid.so( ) 

LoadModule fcgid_module modules/mod_fcgid.so

<IfModule fcgid_module>
    FcgidBusyTimeout 3600
</IfModule>

  

若是遇到這個異常 Can't locate FCGI.pm in @INC,請安裝prel的FCGI模塊(從perl官網安裝)

 

給腳本目錄配置處理器 SetHandler fcgid-script

<Directory "/usr/local/bin/apache/cgi-bin">
    #AddHandler fcgid-script .php
    SetHandler fcgid-script
    AllowOverride None
    Options None
    Require all granted
</Directory>

  

給php腳本添加可執行權限 chmod u+x *.php 。此時訪問php腳本能夠看到腳本提供的動態網頁內容。腳本和效果以下:

<?php
phpinfo()
?>

  

 

若是你遇到這個錯誤(mod_fcgid: error reading data),請按照下面的內容配置httpd.config 

Alias /webroot/ /Users/k/webroot/
    <Location /webroot/>
        AddHandler fcgid-script .php
        Options +ExecCGI
        FcgidWrapper /Users/k/weblib/php-wrapper .php

        # Customize the next two directives for your requirements.
        Order allow,deny
        Allow from all
    </Location>



<Directory "/Users/k/webroot">
    AddHandler fcgid-script .php
    AllowOverride None
    #Options None
    Options +ExecCGI
    Require all granted
</Directory>

  

安裝WordPress

配置好apache和php cgi以後,直接下載WrodPress並解壓到apache訪問目錄,設置腳本的可執行權限。

配置目錄索引頁支持index.php

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

  

以後訪問WordPress資源,就能夠看到WordPress的安裝頁了,效果入下:

 

按照WordPress的安裝引導完成設置後,你可能遇到這個錯誤(php JIT compilation failed: no more memory in):解決的辦法是找到php的配置文件php.ini 按照下面的內容修改。

 

把
;pcre.jit=1
改爲
pcre.jit=0
注意刪除前面的逗號
相關文章
相關標籤/搜索