標籤:部署 make 配置環境 弊端 ror col project doc pcr
【本文為筆者在學習Linux 下的軟體安裝時,嘗試使用源碼安裝Apache 的過程,事後進行一個小小的總結,發現錯誤望指正。】
一、典型的源碼編譯安裝軟體的過程包括以下3步:
1) 運行 configure 命令,並結合必要的參數以產生Makefile ;(讀者可以自行百度Makefile 相關知識)
2) 運行 make 命令產生各類別模組和主程式;
3) 運行 make install 命令將必要的檔案複製到安裝目錄中。
(以上過程都在對應軟體安裝包的根目錄中進行)
二、安裝過程
Linux 系統中,一般是在 /usr/local/src 目錄中下載源碼包 (不是硬性規定,只是一個習慣),在該目錄下可以通過命令:
wegt http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.27.tar.gz 下載。資源來自清華大學開源軟體鏡像站(https://mirrors.cnnic.cn/),很多鏡像資源都可以在裡面找到。
下載完成後使用 tar 進行解壓,然後進入 /usr/local/src/httpd-2.4.27 目錄,進入目錄後需要使用 configure 工具產生Makefile ,對於我這樣的菜鳥來說只用了最簡單的方式產生,因為配置Apache 時可以加入的參數實在是太多了。命令: ./configure --prefix=/usr/local/apache/ 在這之後,configure 會產生很多輸出,開始checking 很多編譯環境(是夠有gcc 工具、軟體依賴關係之類的)。
這時候很多人會出現安裝失敗的報錯資訊(configure: error: APR not found. Please read the documentation. 沒有找到APR,請閱讀文檔)這時候需要先配置相關依賴,一般來說後面還會出現缺少 apr-util 以及 pcre 的情況。若沒有出錯則直接跳到第4步即可。(註:1-3步 是報錯後配置環境,應該在 /usr/local/ 目錄下進行操作,配置完成後檢查目前的目錄是否存在 apr apr-util pcre 三個檔案夾,然後再進入到 /usr/local/src/httpd-2.4.27 目錄中繼續之前操作 )
1 下載包
wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz
wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz
wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.zip
2 安裝(下面示範 apr 的安裝 其他安裝方式相同)
tar -zxf apr-1.4.5.tar.gz
cd apr-1.4.5
./configure --prefix=/usr/local/apr
make && make install (這種組合命令,如果不是在root 下運行,使用 sudo 也只能通過root 運行 make 而 make install 依然沒有許可權,筆者是通過bash 解決
【sudo bash -c ‘ make && make install ‘】)
3 最後在編譯Apache 的時候 加上:
./configure --prefix=/usr/local/apache/ --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre/
4 完成上一步之後會在目前的目錄下產生Makefile 檔案,這時候使用make 和 make install 命令安裝即可。 命令: make && make install
5 以上操作順利完成後,Apache 已經安裝完成,可以通過命令: /usr/local/apache/bin/apachectl start 開啟服務
然後使用 ifconfig 指令查看伺服器位址:
6 最後在瀏覽器中輸入欄位名地址,結果如下安裝成功:
這種源碼編譯的方式,只是體驗一下這個過程,熟悉其中的流程以及原理後加深自己的理解,以上方式安裝雖然看似很簡單,但是是由於使用了簡單的編譯方式。使用源碼編譯安裝軟體其實存在很多弊端,首先,系統中必須存在gcc 工具(對於安全生產有一定的影響);其次,源碼編譯本身是有很多的選擇性參數的,這些參數對應著不同的功能,安裝時指定了哪些參數,軟體就具備哪些功能,而對於不同的使用環境,需求應該是不同的,因此最壞的情況下,需要重新進行編譯安裝(除一些通過添加模組來添加功能的項目外,這些項目可以不重新編譯,只需要編譯相應的模組即可)。另外,編譯安裝的過程耗時很長,並不適用於大規模的項目部署。最後源碼編譯無法完成軟體的管理功能(卸載、升級、檢測...)。重在瞭解,另外RedHat 為瞭解決源碼編譯存在的種種不足,使用了更加簡單的RPM (RedHat Package Manager)包管理機制。讀者可以在 http://man.linuxde.net/rpm 查看詳細內容。
Linux學習日記——源碼編譯Apache