記CentOS7的httpd源碼包安裝的實驗過程 註:以下純屬本人(小白)見解,如有錯誤請求各位大佬幫忙指正。新人寫博有啥錯誤也麻煩各位大佬給個指點。 作者:lonely-sail 相關下載: httpd依賴包:apr、apr-util(官網下載:http://apr.apache.org/)、pc ...
記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!
實驗結束!