記CentOS7的httpd原始碼包安裝的實驗程序
注:以下純屬本人(小白)見解,如有錯誤請求各位大佬幫忙指正,新人寫博有啥錯誤也麻煩各位大佬給個指點,
作者:lonely-sail
相關下載:
httpd依賴包:apr、apr-util(官網下載:http://apr.apache.org/)、pcre(官網下載:http://pcre.org/)
軟體包:httpd
官網下載:http://httpd.apache.org/
鏈接:https://pan.baidu.com/s/1kjp345efsq-N9FyPDVFKSw
提取碼:wdgs
apr推薦用:apr-util-1.6.1和 apr-1.7.0
pcre推薦用:pcre-8.39
任務:在CentOS7安裝apache(版本httpd-2.4.39)
實驗開始:
前提:由于原始碼包必須先編譯后安裝,所以必須先安裝編譯器:gcc
rpm -qa | grep “gcc”---檢測是否安裝了編譯器
步驟一
下載好安裝包并上傳到root的桌面

步驟二
在/usr/local這個目錄創建一個安裝目錄
我創建了一個名為java的目錄作為安裝依賴包和軟體包的路徑

步驟三
tar -zxf apr-1.7.0.tar.gz -C /usr/local/java ---解壓縮apr-1.7.0

./configure --prefix=/usr/local/java/apr ---執行configure并指定安裝路徑
make ---編譯
make install ---安裝

步驟四
tar -zxf apr-util-1.6.1.tar.gz -C /usr/local/java ---解壓縮apr-util-1.6.1

使用./configure --prefix=/usr/local/java/apr-util時

這里報錯:意思是要求用--with-apr 引數指明apr的安裝路徑
/configure -help | grep apr 可通過幫助命令查看--with-apr的作用
再用./configure --prefix=/usr/local/java/apr-util --with-apr=/usr/local/java/apr就成功了
make時又出現新錯誤

上網查看是因為缺少的expat庫要進行安裝
由于自帶的網路yum源沒用我自己去阿里整了阿里的centos7的yum源
首先備份系統的yum源檔案

阿里鏡像源:https://developer.aliyun.com/mirror/?spm=a2c6h.25603864.0.0.66127e091uICjn

yum install -y expat-devel

再make就成功了
make install

步驟五
tar -zxf pcre-8.39.tar.gz -C /usr/local/java ---解壓縮pcre-8.39

遇到這種情況我是重新上傳就成功解壓縮了

./configure --prefix=/usr/local/java/pcre
make
make install

步驟六
tar -jxf httpd-2.4.39.tar.bz2 -C /usr/local/java

雖然用 ./configure --prefix=/usr/local/apache24 --with-apr=/usr/local/java/apr --with-apr-util=/usr/local/java/apr-util --with-pcre=/usr/local/java/pcre成功執行了./configure
但用make編譯時出現了錯誤

上網查看了collect2: error: ld returned 1 exit status 錯誤分析
當在不同檔案中有相同函式定義時候會出現collect2: error: ld returned 1 exit status 錯誤,
有人覺得是apr-util的版本兼容問題,用降低apr-util的版本解決了此問題,
但我覺得這樣不是按錯誤分析的結論解決的方法,于是經過我查找,發現可以用--with-included-apr的一個引數選項解決的辦法
閱讀httpd-2.4.39的INSTALL檔案里有說明
下載apr和apr-Util的原始碼壓縮包并解壓后放到:httpd原始碼目錄/srclib/apr與 和 httpd原始碼目錄/srclib/apr-util (命名中不要帶版本號),并且執行./configure時使用: --with-included-apr

--with-included-apr 同時作用于apr和apr-util
于是我先make clean清理下
再把解壓縮的apr-1.7.0和apr-util-1.6.1放到了httpd-2.4.39的srclib并重命名為apr和apr-util

我覺得應該是分開編譯過的apr和apr-util有相同函式定義,于是我打算讓編譯httpd時一同編譯apr和apr-util應該就不會出現這個問題
可能是apr1.7.0和apr-util-1.6.1有相同函式定義,我看別人降低到apr-util-1.3.11就不會,網盤里有,
于是乎我就只用--with-pcre指明pcre的安裝路徑,apr和apr-util我就不用指明了,使用 .configure --with-included-apr引數選項就行
./configure --with-included-apr --prefix=/usr/local/java/apache24 --with-pcre=/usr/local/java/pcre
再make就成功了
make install

安裝成功
啟動服務
cd apache24/bin/
./apachectl start 啟動服務

查看埠號是否開啟
ss -antpl | grep 80

可以看到已經處于監聽狀態
再用127.0.0.1訪問一下自己看看是否會出現It works!

實驗結束!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/521757.html
標籤:其他
下一篇:Linux Lvs的防火墻標記
