天天看點

使用源碼編譯安裝httpd服務

一、源程式

   autoconf:configure腳本

      軟體項目組會使用autoconf這個工具來生成configure腳本,檢查編譯環境編譯需求,并定義目前程式編譯時啟用哪個特性或功能,以及安裝路徑的定義等等。

      結果:會根據Makefile.in檔案生成makefile檔案

   auto:Makefile.ini檔案

      用于結合configure腳本生成Makefile檔案,makefile檔案是make指令的配置檔案。

二、編譯安裝的前提

   編譯安裝時需要準備好開發環境。有三個跟開發相關的包組:

   1)Desktop Platform Development(有圖形程式時需安裝此包組)

   2)Server Platform Development

   3)Development Tools

   我們的服務是安裝在指令行下的,是以不需要有圖形,是以我們隻需要安裝第2個和第3個包組就可以了。我們需要使用yum工具來進來安裝,而如果你的/etc/yum.repos.d/*.repo下的yum源中所對應的yum倉庫(repository)是網絡站點的話,可能有點慢,如果能把yum倉庫配置到本地伺服器的話,那安裝這兩個包組也就是分分鐘的事了。既然需要用到yum,那就不得不提一提yum的用法了。

三、yum 指令

 yum [-y]

   1)repolist[all|enabled|disabled]

      列出所有可用yum repo,預設隻顯示已啟用的

   2)clean[all|packages|metadata|expire-cache|rpmdb|plugins]

      清理緩存,metadata:中繼資料,expire-cache:過期緩存

   3)list[all|installed|available]

      列出rpm包,installed:已安裝的,available:可安裝的。

   4)info package_name

      列出包的描述資訊      相關指令:rpm -qi

   5)groupinfo "packge_group_name"

      顯示包組資訊,包組加引号是其可能中間有空格

   6)grouplist

      列出所有包組

   7)install package_name...

      安裝指定的程式包

   8)reinstall package_name...

      重新安裝指定的程式     相關指令:rpm -ivh --replacepkgs

   9)check-update

      檢查可更新的包

   10)update package_name...

       更新指定的程式包

       如:現在是X-1.1,更新包有X-1.2,X-1.3,可指定一個

   11)erase|remove package_name

       解除安裝包,解除安裝一個包時,依賴此包的包也一定補解除安裝

   12)whatprovides|provides /path/to/somefile

       查詢某檔案是由哪個包安裝生成的     相關指令:rpm -qf

   13)downgrade package_name

       降級

   14)groupinstall "group_name"

       安裝指定包組

   15)groupremove "group_name"

       解除安裝指定包組

   16)history

       可以檢視曆史做了哪些操作

四、編譯安裝的步驟

1、拿到源代碼,并解壓

  #tar xf package-vertion.tar{gz|bz|xz}

   展開後的目錄名通常為package-vertion。

2、切換到源碼目錄中

  #cd package-vertion

3、執行configure腳本

  #./configure

4、編譯

  #make

5、安裝

  #make install

  第4步和第5步也可合并:make && make install,make執行成功則執行make install。

configure腳本的通用功能

    1)指定安裝路徑

           --prefix=/usr/local/package_name   指定程式安裝位置

           --sysconfidir=/etc/package_name    指定專門的目錄儲存配置檔案

    2)指定啟用/禁用的特性

           --enable-feature   如:--enable-fpm

           --disable-feature  如:--disable-socket

    3)指定所依賴的功能、程式或檔案

           --with-function    啟用某特性功能

           --without-function  禁用某功能

        不同的程式其configure腳本功能不同,要擷取幫助,  ./configure  --help|less

五、源碼編譯安裝httpd服務

   1)下載下傳httpd源碼包到自己電腦指定的路徑,解壓該源碼包,會出現一個與之同名的httpd目錄,我們要執行的源碼安裝的./configure腳本就在此目錄中。

<a href="http://s3.51cto.com/wyfs02/M02/12/A7/wKiom1MLS5iAw10vAABHId00JJA604.png" target="_blank"></a>

   2)在執行源碼安裝之前,還是看一下我們的開發環境有沒有安裝:"Development Tools"和"Server Platform Development",這裡主要需要的就是"Development Tools",如果此包組沒有安裝,那麼我們的httpd服務還是安裝不上的。可以使用指令yum groupinstall "Development Tools"和yum groupinstall "Server Platform Development"進行安裝,安裝完成後,最好再用yum grouplist指令确認一下。

<a href="http://s3.51cto.com/wyfs02/M01/12/A8/wKioL1MLS4SRZ9MAAABq_uDzNgk612.png" target="_blank"></a>

  3)使用./configure執行源碼安裝,并指定我們的安裝目錄在/usr/local/httpd,面config目錄則獨立出來,不與之在同一目錄,我們把他放在/etc/httpd下。

<a href="http://s3.51cto.com/wyfs02/M01/12/A8/wKioL1MLS5zQWWDaAABUwrz9KLA231.png" target="_blank"></a>

  4)使用make指令進行編譯。

<a href="http://s3.51cto.com/wyfs02/M02/12/A7/wKiom1MLThjhDf4HAABvaJDi4hQ742.png" target="_blank"></a>

  5)make install安裝。第4步和第5步可直接寫成一步:make &amp;&amp; make install 。

<a href="http://s3.51cto.com/wyfs02/M00/12/A7/wKiom1MLS-fgWSRaAABThg48cB0709.png" target="_blank"></a>

  6)沒報錯,安裝成功。

<a href="http://s3.51cto.com/wyfs02/M01/12/A7/wKiom1MLS_fCuMYFAAA6KSn0qkY712.png" target="_blank"></a>

六、httpd服務測試

  1)安裝路徑測試:我們在./configure時,指定安裝路徑在/usr/local/httpd,配置檔案目錄獨立到/etc/http/下,結果與指定相同。

<a href="http://s3.51cto.com/wyfs02/M02/12/A8/wKioL1MLT4OAwGKuAAAh5hXp678632.png" target="_blank"></a>

  2)在httpd啟動之前,先使用netstat -antl檢視是否有否端口,在啟動apachectl之後,再重新檢視netstat -antl,出現80端口,說明httpd服務啟動成功。

<a href="http://s3.51cto.com/wyfs02/M02/12/A8/wKiom1MLU9DB3wx9AABwFx4hG0E712.png" target="_blank"></a>

   3)網頁測試,輸入本機IP,Apache服務啟動成功,源碼編譯安裝httpd服務成功!

<a href="http://s3.51cto.com/wyfs02/M00/12/A8/wKiom1MLVHiys1GdAAAZYyukE8E077.png" target="_blank"></a>

七、編譯安裝後的輸出

   因為我們在編譯安裝的第一步執行configure腳本的時候,我們指定了預設的安裝目錄到/usr/local/httpd和配置檔案到/etc/httpd,是以,系統按照其預設的執行規範就不會找到我們的二進制程式、庫檔案、頭檔案、和man檔案。

1)二進制程式

  我們能夠在系統上直接執行指令而不用輸入絕對路徑需得益于我們的PATH環境變量,是以,我們要想直接執行apachectl start來啟動httpd服務,需要在PATH環境變量中加入apachctl指令的絕對路徑:vim /etc/profile.d/httpd.sh

1

2

<code>PATH=</code><code>/usr/local/httpd/bin</code><code>:$PATH</code>

<code>export</code> <code>PATH</code>

<a href="http://s3.51cto.com/wyfs02/M00/12/B7/wKiom1MMuzHiuOYAAABt5KNqd_s951.png" target="_blank"></a>

把aparchctl指令的絕對路徑寫入PATH變量後,再執行一次腳本檔案或重新開機一下shell,就可以使環境變量生效了,使用aparchctl start啟動httpd服務後,檢視80端口,确實已經可以開啟。

2)頭檔案輸出

  我們安裝在/usr/local/httpd/中的include頭檔案也不會被系統讀到,是以我們最好能把這個地方的頭檔案的整個目錄連結到系統預設的/usr/include下,并建立個httpd。

<a href="http://s3.51cto.com/wyfs02/M01/12/B8/wKioL1MMwvTA-ABwAAAux8GsGqg464.png" target="_blank"></a>

3)庫檔案輸出

  庫檔案也和頭檔案一樣,處在此目錄中依然不會被系統找到,是以不得不再修改一下庫檔案的輸出。在修改之前,我們先檢視一下系統是以讀的庫檔案,在我們vim /etc/ld.so.conf.d/http.conf後,再使用ldconfig -v | grep "^[^[:space:]]"檢視一下庫檔案,就會驚喜的發現我們的/usr/local/httpd/lib也出現在其中了。

<a href="http://s3.51cto.com/wyfs02/M00/12/B8/wKioL1MMxdbwmH4ZAABuWwOhpuw167.png" target="_blank"></a>

4)man檔案的輸出

  既然我們裝了httpd這個服務,那他的man我們是一定需要檢視的,可是還是上面說到的,系統預設的地方找不到,是以我們還是需要自己手動修改一下。vim /etc/man.config,增加下面一條,儲存退出。

<a href="http://s3.51cto.com/wyfs02/M00/12/B8/wKiom1MMysagyc-uAAA2-wBk3LQ621.png" target="_blank"></a>

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

繼續閱讀