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&&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&&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 <[email protected]>"</code> <code>not changed</code>
<code>gpg: key A99F75DD: </code><code>"Rodent of Unusual Size <[email protected]>"</code> <code>not changed</code>
<code>……</code>
<code>gpg: key 6D5954FA: </code><code>"Eric Covener <[email protected]>"</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) <[email protected]>"</code> <code>#出現這一行說明這個簽名是有效的</code>
<code>gpg: aka </code><code>"Jim Jagielski <[email protected]>"</code>
<code>gpg: aka </code><code>"Jim Jagielski <[email protected]>"</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&&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' >> /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' >> /etc/rc.d/rc.local #添加注釋,友善以後檢視</code>
<code>[root@c64-web /]</code><code># echo '/etc/init.d/httpd start >/dev/null 2>&1' >> /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 ></code><code>/dev/null</code> <code>2>&1</code>
Apache伺服器的部署到這裡就徹底完工了!怎麼樣是不是很簡單啊。中間有些操作我用了多種方式,是想告訴大家,在linux上,一個問題是有多種解決辦法的,是以一定要多思考,多操作。下一篇博文,我将帶大家一起了解apache的配置檔案,編譯參數和其他知識點的說明。
本文轉自 aaao 51CTO部落格,原文連結:http://blog.51cto.com/nolinux/1319750,如需轉載請自行聯系原作者