送給讀者們一句話:
Only those who constantly retool themselves stand a chance of staying employed in the years ahead
(隻有那些不斷充實自己的人,才有機會在往後的日子裡持續地被雇傭。)
好,進入今天的正題:
在了解rpm和yum後,基本可以滿足大部分的程式安裝了,但是有些源程式還是要自己編譯安裝的,在本機平台編譯的程式,能更好的相容機器的CPU,發揮更好的性能。
下面我們讓一起來編譯安裝一個httpd服務:
當然在編譯之前,請確定系統已經安裝了開發包元件。如果沒有安裝就用yum安裝即可。
# yum groupinstall -y
'Desktop Platform Development' 'Development tools' 'Server Platform Development'
1.解壓httpd源程式包
# tar xvf httpd-2.4.6.tar.bz2
# cd httpd-2.4.6
# ls
可以看到以下檔案:
<a href="http://s3.51cto.com/wyfs02/M02/25/80/wKioL1NhoXij9WtMAAGf3uLS0XU806.jpg" target="_blank"></a>
configure 是一個編譯環境檢測和讓使用者定制編譯配置的腳本,它結合Makefile.in 建立Makefile檔案。
configure --help 可檢視配置的幫助資訊。
直接執行# ./configure --prefix=/usr/local/apache
如果這裡有報錯說沒有找到apr的話,就要先用以下步驟安裝apr和apr-util:
# tar -xvf apr-1.4.6.tar.bz2
# cd apr-1.4.6
# ./configure
# make
# make install
# cd ..
# tar -xvf apr-util-1.5.2.tar.bz2
# cd apr-util-1.5.2
# ./configure --with-apr=/usr/local/apr/
完成這些回到httpd-2.4.6目錄再次執行:# ./configure --prefix=/usr/local/apache
<a href="http://s3.51cto.com/wyfs02/M00/25/80/wKioL1NhrHjheST4AAI7mnKKqfA706.jpg" target="_blank"></a>
檢測完成以後,看下Makefile是否已建立。
<a href="http://s3.51cto.com/wyfs02/M02/25/80/wKiom1NhrWeAdc4zAAMgSisDIhI811.jpg" target="_blank"></a>
檔案已經有了吧,現在可以執行make了:
完成了,沒有報錯,執行make install
<a href="http://s3.51cto.com/wyfs02/M01/25/81/wKioL1NhstyDG_YvAATUztaPEvo507.jpg" target="_blank"></a>
安裝完成!
<a href="http://s3.51cto.com/wyfs02/M00/25/80/wKiom1Nhs_ugu0EVAAJZvkGJa5w782.jpg" target="_blank"></a>
#cd /usr/local/apache
<a href="http://s3.51cto.com/wyfs02/M00/25/81/wKioL1NhtHijjeJ7AABzMScHBoQ230.jpg" target="_blank"></a>
程式就安裝在這裡了。
接下來要做的是,包含頭檔案。
# ln -sv /usr/local/apache/include/ /usr/include/httpd
包含man文檔
# vim /etc/man.config
加上一行MANPATH /usr/local/apache/man
<a href="http://s3.51cto.com/wyfs02/M01/25/80/wKiom1NhuEjid9-YAAGF3Pr5Itc038.jpg" target="_blank"></a>
修改PATH環境變量:
# vim /etc/profile.d/apache.sh
寫入export PATH=/usr/local/apache/bin:$PATH
<a href="http://s3.51cto.com/wyfs02/M00/25/80/wKiom1NhuwaQuWqAAADTxUsORAg678.jpg" target="_blank"></a>
這步也成功了,看下能不能啟動程式。
# apachectl start
<a href="http://s3.51cto.com/wyfs02/M02/25/81/wKioL1NhvFqwEdkcAAN9NaBfemM787.jpg" target="_blank"></a>
看到沒,80端口已經處于LISTEN(偵聽狀态)
用本機通路試試
<a href="http://s3.51cto.com/wyfs02/M01/25/80/wKiom1NhvW-DaJkJAAEZAgzfW5M389.jpg" target="_blank"></a>
也可以成功通路了,編譯安裝apache服務完成。
任務還沒完,接下來學習如何将一個rpm源程式包,編譯打包成一個可以直接使用的rpm二進制包。
先安裝,注意這種是rpm源程式包,安裝隻是把檔案解開成源程式和SPEC檔案。
# rpm -ivh nginx-1.0.5-1.fc16.src.rpm
<a href="http://s3.51cto.com/wyfs02/M02/25/81/wKiom1Nh3rXAlWf2AAGXQsngc2Q100.jpg" target="_blank"></a>
看報一大堆錯咋回事,因為沒有mockbuild這個使用者,useradd 建立即可。
# useradd mockbuild
# cd ~/rpmbuild/SPECS/
裡面有個nginx.spec的檔案就參照他進行編譯打包。
# rpmbuild -ba nginx.spec
<a href="http://s3.51cto.com/wyfs02/M00/25/82/wKioL1Nh4PHz0DkgAAEyfaCcd38316.jpg" target="_blank"></a>
看又報錯了,不過沒事,把這些需要的包裝上就好。
yum install pcre-devel zlib-devel openssl-devel libxslt-devel GeoIP-devel gd-devel -y
安裝完成了,我們再試試。
這次就成功執行了,等編譯完成,我們cd ../PRMS/i686就可以看到,制作好的程式包了。
<a href="http://s3.51cto.com/wyfs02/M00/25/81/wKiom1Nh4xHg074IAAGFjqMtdCI876.jpg" target="_blank"></a>
# cd ../RPMS/i686/
<a href="http://s3.51cto.com/wyfs02/M00/25/82/wKioL1Nh45yw5LeVAACeb7gzGUs610.jpg" target="_blank"></a>
看到了沒,這就是我們剛剛制作好的包,直接用rpm指令安裝。
# rpm -ivh nginx-1.0.5-1.el6.i686.rpm
<a href="http://s3.51cto.com/wyfs02/M01/25/82/wKioL1Nh5FaxsvaNAADPa0S09pA037.jpg" target="_blank"></a>
安裝成功,啟動下試試?
# /etc/init.d/nginx start
<a href="http://s3.51cto.com/wyfs02/M02/25/82/wKioL1Nh5Zbj8PcmAAIoSMWm9Cc056.jpg" target="_blank"></a>
啟動成功!!!
用本機通路下:
<a href="http://s3.51cto.com/wyfs02/M01/25/82/wKiom1Nh5gWzjC0gAAOyetCBYsE365.jpg" target="_blank"></a>
哈哈,忙活了我一上午,終于圓滿完成。 ——以上内容純筆者手打,親測實驗截圖。
有問題歡迎與我交流QQ:1183710107
本文轉自qw87112 51CTO部落格,原文連結:http://blog.51cto.com/tchuairen/1405277