我們在使用linux做服務器的時候,因為linux自帶的軟件包都有些老,不是最新的,但是有時候我們為了使用最新的軟件,會使用最新的軟件的源碼來進行安裝。
所以我們需要用心去做了...
在我們拿到一個軟件的源碼時,源碼一般都是使用tar.gz或tar.bz2結尾。
源碼--》配置文件(./configure)--》編譯(makefile)--》(可執行 頭文件 庫文件 手冊)--》安裝
對於源碼的安裝,我們說西安要確定機器安裝了編譯環境
使用yum grouplist |less 查看是否安裝了
Develoment Libraries 和Develoment Tools開發環境,如果沒有,
請先安裝,否則沒法源碼安裝
那我們首先要對源碼進行包的拆解
tar -zxvf 源碼 -C /usr/local/src/(對源碼包解壓到一個路徑,/usr/local/src/是系統給我們用來存放源碼拆解後的文件路徑)
源碼解壓後我們就可以對源碼安裝了。
源碼文件解壓後進入拆解後的文件,一般會看到很多個文件夾或文件,其中有一個INSTALL文件或README文件,以及配置文件這是我們安裝前必看的說明書
我們一安裝apache服務為例做個實驗。
安裝前先把源碼下載到機器裡,進入所在目錄
進入apsche拆解後的目錄
我們看到一個INSTALL文件,查看一下
我們要查看一下configure的使用說明
接下來開始配置安裝apache
報錯了,我們來看啊可能否安裝了apr
我們裝了apr,但是有的調用的文件並不都在apr裡,有的在apr-devel裡,我們去在安裝看下,
然後我們再次執行apache的安裝
這次有報錯了,但是說的明確了,說我們的apr的版本太低了,那我們重新安裝
我們把apr新版的拆解到/usr/local 下
我們安裝apr包和apr-util包
我們會看到生成了很多的makefile文件,那我們直接make
安裝後我們進入apr文件內,因為apache要調用他的庫,可是apr是我們自己安裝的,不是默認的路徑,所以我們要對apr庫進行連接處理,使apache可以調用
那麼我沒呢可以簡單些直接建立一個系統可是識別的文件,這樣可以避免對所有的庫文件做鏈接
建立apr.conf文件,把apr的庫路徑加入進去就ok!
然後我們要更新緩存,在查看是否成功
接著安裝apr-util
然後make和make install
現在apr的問題已經解決了,那我們重新安裝apache
但是還是報錯 ,說我們缺少apr-1-config ,那我們在說明一次,添加他的路徑
為了避免麻煩,我們再次查詢一下所有與apr相關的配置 ,全部帶上
找到後,我們再次重新安裝
但是又報錯了。說我們的pcre沒有找到
我們來解決他,安裝prec
我們再來安裝apache的源碼
沒有報錯,安裝成功,生成了很多的makefile文件
那我們就安裝apache make && make install
到此,我們的apache就是安裝完成了
我們看到了,源碼的安裝很復雜,而且很容易出錯,我們需要做很多的調試
在我們安裝完成後,但是不完美,沒法開機自動啟動
沒關系,我們來幫他,手動啟動或自動啟動
進入/usr/local/apache/bin 目錄下
 
我們只需要在命令行下輸入 ./httpd -f /usr/local/apache/http.conf 就可以啟動,但是不是很完美,我們可以給他寫一個啟動腳本
一般的服務的腳本放在rtc/init.d/目錄下,我們就去這裡寫apache服務腳本
腳本如下:(個人寫的,有些簡陋,請見諒)
#!/bin/bash
prog=/usr/local/apache/bin/httpd
configfile=/etc/apache/httpd.conf
lockfile=/var/lock/subsys/httpd
. /etc/init.d/functions
start() {
if [ -e $lockfile ];then
echo "The program `basename $prog` is started!"
else
echo "The program `basename $prog` is starting......"
sleep 2
$prog && echo -e "[ok]" && touch $lockfile || echo -e "[fail]"
fi
}
stop() {
if [ -e $lockfile ];then
echo "The program `basename $prog` is stoping......"
sleep 2
killproc httpd && echo "[ok]" && rm -rf $lockfile || echo "[fail]"
else
echo "The program `basename $prog` is stoped!"
fi
}
status() {
if [ -e $lockfile ];then
echo "The program `basename $prog` is running......"
else
echo "The program `basename $prog` is stop......"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
stop
start
;;
*)
echo "usage: start|stop|status|restart"
esac
我們對寫下的腳本測試一下
上面的是我們手動的啟動我們的服務,我們可以讓它開機啟動,使用chkconfig命令來實現,我們要在/etc/init.d/httpd 內增加chkconfig
把httpd的啟動緩存加入chkconfig
這樣子httpd服務開機啟動的目地就達到了!
本文出自 “無痕” 博客,請務必保留此出處http://hucwuhen.blog.51cto.com/6253667/1260058