天天看點

Linux網站架構系列之Apache----部署篇

Apache是世界使用排名第一的Web伺服器軟體。它可以運作在幾乎所有廣泛使用的計算機平台上,由于其跨平台和安全性被廣泛使用,是最流行的Web伺服器端軟體之一。其在Linux平台上,結合Mysql,Php形成的LAMP網站架構是一個強大的Web應用程式平台,并且因其低廉的成本,高效的性能受到中小型企業的強烈追捧。

本篇将為大家講述如何部署一台Apache伺服器。

環境:

1

2

3

4

5

6

7

8

9

<code>CentOS6.4 x86_64位 采用最小化安裝,系統經過了基本優化</code>

<code>selinux為關閉狀态,iptables為無限制模式</code>

<code>ip:192.168.1.113</code><code>/24</code>

<code>apache版本:httpd-2.4.6</code>

<code>apr版本:apr-1.4.8</code>

<code>apr-util版本:apr-util-1.5.2</code>

<code>pcre版本:pcre-7.8</code>

<code>源碼包存放位置:</code><code>/server/tools</code>

<code>源碼包編譯安裝位置:</code><code>/etc/local/</code><code>軟體名稱</code>

一、準備工作

1、開發環境部署

因為本次實驗中系統是最小化安裝的,是以在安裝apache之前需要先安裝開發環境和依賴包。

<code>[root@c64-web ~]</code><code># yum groupinstall "Development tools" "Server Platform Development" -y   #安裝這兩個開發環境的軟體包組</code>

<code>[root@c64-web ~]</code><code># yum install pcre* -y #安裝pcre相容的正規表達式</code>

由于我們安裝的httpd-2.4.6版本比較新,是以預設開發環境包中自帶的apr包版本比較低,隻能支援2.2.x系列的httpd版本,而這裡至少要1.4版本以上的apr才被支援。是以我們需要先編譯安裝apr才行。

注意:apache2.2.x版本,隻要安裝了系統的預設開發環境包組,就不需要再安裝apr了。

apr介紹

Apache可移植運作時( Apache Portable Runtime,簡稱APR),它是Apache HTTP伺服器的支援庫,提供了一組映射到下層作業系統的API。APR的目标則是希望安全合并所有的能夠合并的代碼而不需要犧牲性能,是以Apache使用這個之後可以有效的提高Apache的靜态頁面的處理能力。

apr安裝

<code>[root@c64-web ~]</code><code># cd /server/tools/     #首先我們要先進到存放源碼的目錄</code>

<code>[root@c64-web tools]</code><code># wget http://apache.dataguru.cn/apr/apr-1.4.8.tar.gz  #下載下傳apr源碼包</code>

<code>[root@c64-web tools]</code><code># tar zxf apr-1.4.8.tar.gz    #解壓源碼包</code>

<code>[root@c64-web tools]</code><code># cd apr-1.4.8</code>

<code>[root@c64-web apr-1.4.8]</code><code># ./configure --prefix=/usr/local/apr  #編譯前配置,并指定安裝目錄,友善維護</code>

<code>[root@c64-web apr-1.4.8]</code><code># make           #執行編譯</code>

<code>[root@c64-web apr-1.4.8]</code><code># make install   #執行安裝</code>

<code>執行編譯和安裝的過程我們可以縮減為下面一條指令即可</code>

<code>[root@c64-web tools]</code><code># make&amp;&amp;make install  #該指令表示,當執行make編譯成功後接着執行make install進行安裝</code>

僅僅裝了apr是不夠的,這裡還需要安裝apr-util這個開發包。

為什麼呢?

一般情況下,我們很容易把APR開發包了解為僅僅是一個開發包,不過事實上并不是如此。目前,完整的APR實際上包含了三個開發包:apr、apr-util以及apr-iconv,每一個開發包分别獨立開發,并擁有自己的版本。而apr-iconv在apache安裝時暫不涉及,在以後tomcat調優時會涉及到這個開發包,到時再關注即可。是以,下面我們就繼續開始安裝apr-util。

<code>[root@c64-web apr-1.4.8]</code><code># cd ..</code>

<code>[root@c64-web tools]</code><code># wget http://apache.dataguru.cn/apr/apr-util-1.5.2.tar.gz</code>

<code>[root@c64-web tools]</code><code># tar zxf apr-util-1.5.2.tar.gz</code>

<code>[root@c64-web tools]</code><code># cd apr-util-1.5.2</code>

<code>[root@c64-web apr-util-1.5.2]</code><code>#  ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr      #因為apr-util依賴于apr,是以這裡需要指定apr的安裝路徑</code>

<code>[root@c64-web apr-util-1.5.2]</code><code># make&amp;&amp;make install #這裡用上面提到的快捷指令</code>

2、源碼包驗證

開發環境搞定之後,就要準備apache的源碼包了。我們可以從apache的官網或者鏡像站點進行下載下傳。同時我們還需要下載下傳apache的公鑰和數字簽名檔案,以便實作對源碼包一緻性的驗證,確定包的安全性。

<code>[root@c64-web apr-util-1.5.2]</code><code># cd ..</code>

<code>[root@c64-web tools]</code><code># wget http://www.eu.apache.org/dist/httpd/httpd-2.4.6.tar.gz</code>

<code>[root@c64-web tools]</code><code># wget http://www.eu.apache.org/dist/httpd/httpd-2.4.6.tar.gz.asc</code>

<code>[root@c64-web tools]</code><code># wget http://www.apache.org/dist/httpd/KEYS</code>

這裡我們采用下面這種方式來進行包驗證

<code>% gpg --</code><code>import</code> <code>KEYS</code>

<code>% gpg --verify httpd-2.2.8.</code><code>tar</code><code>.gz.asc</code>

驗證結果如下:

10

11

12

13

14

15

16

<code>[root@c64-web tools]</code><code># gpg --import KEYS    #用gpg指令導入公鑰</code>

<code>gpg: key 2719AF35: </code><code>"Ben Laurie &lt;[email protected]&gt;"</code> <code>not changed</code>

<code>gpg: key A99F75DD: </code><code>"Rodent of Unusual Size &lt;[email protected]&gt;"</code> <code>not changed</code>

<code>……</code>

<code>gpg: key 6D5954FA: </code><code>"Eric Covener &lt;[email protected]&gt;"</code> <code>not changed</code>

<code>gpg: Total number processed: 64</code>

<code>gpg:           w</code><code>/o</code> <code>user IDs: 4</code>

<code>gpg:              unchanged: 60</code>

<code>[root@c64-web tools]</code><code># gpg --verify httpd-2.4.6.tar.gz.asc #驗證httpd-2.4.6.tar.gz.asc</code>

<code>gpg: Signature made Tue 16 Jul 2013 12:44:25 AM CST using RSA key ID 791485A8</code>

<code>gpg: Good signature from </code><code>"Jim Jagielski (Release Signing Key) &lt;[email protected]&gt;"</code>   <code>#出現這一行說明這個簽名是有效的</code>

<code>gpg:                 aka </code><code>"Jim Jagielski &lt;[email protected]&gt;"</code>

<code>gpg:                 aka </code><code>"Jim Jagielski &lt;[email protected]&gt;"</code>

<code>gpg: WARNING: This key is not certified with a trusted signature! </code><code>#這個警告是因為本地密鑰庫不信任該公鑰</code>

<code>gpg:          There is no indication that the signature belongs to the owner.</code>

<code>Primary key fingerprint: A93D 62EC C3C8 EA12 DB22  0EC9 34EA 76E6 7914 85A8</code>

如果gpg --verify的指令輸出資訊和上面相似,就可以确信http-2.4.6.tar.gz确實來自Apache。這裡可以忽略上面表明公鑰不可信的警告。因為保證公共密鑰簽名來自所有者的惟一方法是,密鑰的所有者親自把磁盤上的密鑰交給你。不過,采取上面的步驟後,我們已經可以在某種程度上确信下載下傳的http-2.4.6.tar.gz可信了。

二、開始安裝

所有準備工作都做好了,下面開始安裝apache

17

18

<code>[root@c64-web tools]</code><code># tar zxf httpd-2.4.6.tar.gz</code>

<code>[root@c64-web tools]</code><code># cd httpd-2.4.6</code>

<code>[root@c64-web httpd-2.4.6]</code><code># ./configure \</code>

<code>--prefix=</code><code>/usr/local/apache-2</code><code>.4.6 \      </code><code>#配置檔案目錄</code>

<code>--with-apr=</code><code>/usr/local/apr</code><code>\             </code><code>#指定apr安裝路徑</code>

<code>--with-apr-util=</code><code>/usr/local/apr-util</code><code>\    </code><code>#指定apr-util安裝路徑</code>

<code>--with-pcre \                            </code><code>#支援perl的正規表達式</code>

<code>--</code><code>enable</code><code>-so \                           </code><code>#啟用動态子產品加載</code>

<code>--</code><code>enable</code><code>-ssl \                          </code><code>#基于ssl加密傳輸</code>

<code>--</code><code>enable</code><code>-cgi \                        </code><code>#開啟CGI腳本</code>

<code>--</code><code>enable</code><code>-rewrite \                    </code><code>#允許URL重寫</code>

<code>--with-zlib \                         </code><code>#支援壓縮</code>

<code>--</code><code>enable</code><code>-deflate \                    </code><code>#支援網頁壓縮</code>

<code>--</code><code>enable</code><code>-expires \                    </code><code>#支援網頁緩存</code>

<code>--</code><code>enable</code><code>-headers \                    </code><code>#提供允許對HTTP請求頭的控制</code>

<code>--</code><code>enable</code><code>-modules=most \               </code><code>#支援大多數子產品</code>

<code>--</code><code>enable</code><code>-mpms-shared=all \            </code><code>#mpm子產品的動态切換</code>

<code>--with-mpm=worker                     </code><code>#讓apache以worker方式運作</code>

以上是生産環境中常用的一些編譯參數

此處提供給你們複制,友善快捷執行指令

<code>[root@c64-web httpd-2.4.6]</code><code># ./configure --prefix=/usr/local/apache-2.4.6 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --enable-deflate --enable-expires --enable-headers --enable-modules=most --enable-mpms-shared=all --with-mpm=worker  #此處為友善你們複制執行用的,如執行了上面的就不要再執行這個了</code>

<code>[root@c64-web tools]</code><code># make&amp;&amp;make install</code>

這樣我們的apache已經編譯安裝完成了,對于編譯時執行的諸多參數詳解,我會在下篇博文進行詳細的講述,本篇不做熬述。

三、啟動配置

1、建立目錄軟連結

apache安裝完成之後,我們要先為編譯安裝好的目錄添加軟連結。此操作在生産環境中為重要調優參數,添加這條軟連結的目的有兩點:1、友善人類使用。2、便于以後更新版本。

<code>[root@c64-web httpd-2.4.6]</code><code># ln -s /usr/local/apache-2.4.6 /usr/local/apache</code>

2、啟動服務

建立好目錄軟連結之後,我們就可以開始啟動apache服務了。如果我們是yum或者rpm安裝的話,我們可以直接用service httpd start來進行服務啟動。因為我們是編譯安裝的,是以此處我們要這樣啟動。

<code>[root@c64-web httpd-2.4.6]</code><code># cd /</code>

<code>[root@c64-web /]</code><code># /usr/local/apache/bin/apachectl -t  #首先我們要檢查文法</code>

<code>AH00557: httpd: apr_sockaddr_info_get() failed </code><code>for</code> <code>c64-web</code>

<code>AH00558: httpd: Could not reliably determine the server</code><code>'s fully qualified domain name, using 127.0.0.1. Set the '</code><code>ServerName' directive globally to suppress this message</code>

<code>Syntax OK</code>

此時,我們可以看到在檢查文法時,報了兩個提示。不過這兩個提示不影響,我們的伺服器啟動和運作。在本篇暫時不講,等到後面的排錯篇,我會詳細給大家講解此問題的解決方案。是以,繼續執行開啟指令

<code>[root@c64-web /]</code><code># /usr/local/apache/bin/apachectl start</code>

啟動之後,我們用下面的兩個指令分别檢視端口是否開啟,服務程序是否啟用。

<code>[root@c64-web /]</code><code># netstat -lnt|grep 80</code>

<code>tcp        0      0 :::80                       :::*                        LISTEN</code>

<code>[root@c64-web /]</code><code># ps -ef|grep httpd</code>

<code>root      2009     1  0 05:14 ?        00:00:00 </code><code>/usr/local/apache-2</code><code>.4.6</code><code>/bin/httpd</code>

<code>daemon    2010  2009  0 05:14 ?        00:00:00 </code><code>/usr/local/apache-2</code><code>.4.6</code><code>/bin/httpd</code>

<code>daemon    2011  2009  0 05:14 ?        00:00:00 </code><code>/usr/local/apache-2</code><code>.4.6</code><code>/bin/httpd</code>

<code>daemon    2012  2009  0 05:14 ?        00:00:00 </code><code>/usr/local/apache-2</code><code>.4.6</code><code>/bin/httpd</code>

<code>root      2104  1928  0 05:14 pts</code><code>/0</code>    <code>00:00:00 </code><code>grep</code> <code>httpd</code>

由此看出,我們的服務已經正常啟動了,此時我們用用戶端通路下我們的apache伺服器,已經可以實作正常通路。

<a href="http://blog.51cto.com/attachment/201311/061046738.png" target="_blank"></a>

3、優化啟動

大家應該感覺到上面的啟動項有點很繁瑣的感覺了,在這裡我們可以對apache啟動的控制指令進行優化。優化的方法有3種。

第一種:修改PATH變量

我們可以通過把apache啟動指令的目錄加入到全局環境變量中去,這樣就可以實作直接輸入指令即可操作,無需帶上一長串的路徑了。

<code>[root@c64-web /]</code><code># echo 'export PATH=$PATH:/usr/local/apache/bin' &gt;&gt; /etc/profile</code>

<code>[root@c64-web /]</code><code># tail -1 /etc/profile</code>

<code>export</code> <code>PATH=$PATH:</code><code>/usr/local/apache/bin</code>

第二種:拷貝指令

我們也可以拷貝apache的啟動指令apachectl到系統啟動目錄下

<code>[root@c64-web /]</code><code># cp /usr/local/apache/bin/apachectl /etc/init.d/httpd</code>

第三種:添加軟連結

我們還可以通過添加軟連結的方式,将apache啟動指令目錄添加一條軟連結到/etc/init.d/系統啟動目錄下

<code>[root@c64-web /]</code><code># ln -s /usr/local/apache/bin/apachectl /etc/init.d/httpd</code>

4、開機自啟動

下面,我們就要實作apache服務的開機自啟動了。開機自啟動的實作也是有兩種方式的

第一種:将httpd即apachectl指令加入到系統開機啟動服務chkconf中(此種方法僅限優化啟動中後兩種操作者進行)

首先我需要對/etc/init.d/httpd檔案稍作修改

<code>[root@c64-web /]</code><code># vi /etc/init.d/httpd   #編輯此檔案,在#!/bin/bash下面添加以下兩行</code>

<code>#chkconfig:2345 10 90</code>

<code>#descrption:Activates/Deactivates Apache Web Server</code>

添加完成之後,

<code>[root@c64-web /]</code><code># chkconfig --add httpd   #添加httpd服務到系統開機啟動服務清單</code>

<code>[root@c64-web /]</code><code># chkconfig httpd on      #設定httpd服務開機自啟動</code>

<code>[root@c64-web /]</code><code># chkconfig --list httpd  #從清單中檢視httpd在不同級别的啟動情況</code>

<code>httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off</code>

第二種:添加到開機啟動配置檔案/etc/rc.d/rc.local下

本方法對優化啟動的3種方法都有效,不過你要注意你設定的httpd指令的路徑。本例以優化啟動的第二種方法為前提

<code>[root@c64-web /]</code><code># echo '#httpd start by sunsky in 20131104' &gt;&gt; /etc/rc.d/rc.local  #添加注釋,友善以後檢視</code>

<code>[root@c64-web /]</code><code># echo '/etc/init.d/httpd start &gt;/dev/null 2&gt;&amp;1' &gt;&gt; /etc/rc.d/rc.local</code>

<code>[root@c64-web /]</code><code># tail -2 /etc/rc.d/rc.local #添加完成後一定要看是否添加成功</code>

<code>#httpd start by sunsky in 20131104</code>

<code>/etc/init</code><code>.d</code><code>/httpd</code> <code>start &gt;</code><code>/dev/null</code> <code>2&gt;&amp;1</code>

Apache伺服器的部署到這裡就徹底完工了!怎麼樣是不是很簡單啊。中間有些操作我用了多種方式,是想告訴大家,在linux上,一個問題是有多種解決辦法的,是以一定要多思考,多操作。下一篇博文,我将帶大家一起了解apache的配置檔案,編譯參數和其他知識點的說明。

本文轉自 aaao 51CTO部落格,原文連結:http://blog.51cto.com/nolinux/1319750,如需轉載請自行聯系原作者