小背景
這幾天折騰Linux,跟着別人一步一步進行Linux中httpd服務的安裝,踩了很多坑,幸運的是最後還是完成了,下面是對過程的簡單記錄。
實驗環境
- Linux環境:CentOS Linux 7
- Windows環境:win10
- 虛擬機:VMware® Workstation 12 Pro
實驗過程
- 在本次實驗中,我們使用的是源碼包安裝的方式和yum在線安裝兩種安裝形式,最後會有個小的對比。
- 首先下載apache的安裝包,點此下載,解壓:
tar -zvxf httpd-2.4.39.tar.gz
;進入解壓目錄:cd httpd-2.4.39
;如下圖所示,在INSTALL文件中其實提供了安裝的具體步驟,就是通過三條命令搞定。./configure --prefix=/usr/local/apache2
;make
;make install
; 即可,之後啓動服務。這個prefix就是你軟件安裝的位置,通過源碼安裝軟件的時候一般情況下都安裝在/usr/local 的目錄下,因此此次實驗也是在這個目錄下面。
- 原來以爲我也會這麼簡單就安裝好了,但是當我運行第一個命令的時候就報錯:APR not found,那麼只好去下載APR的庫,點此下載,下載之後和上述操作一樣,解壓–> 進入目錄–>make && make install,安裝好了之後,再次進入httpd的目錄中,再次configure一次,這次的命令需要加上新的後綴:
./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr
,其中後面的是你安裝的APR所在的目錄。 - 這次APR not found錯誤解決了,出現了新的錯誤:APR-util not found,然後就去下載APR-util的庫唄,點此下載,下載好了之後,再來一遍:解壓–> 進入目錄–>make && make install,安裝好了之後,再次進入httpd的目錄中,再次configure一次,這次的命令需要加上新的後綴:
./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
,其中後面的是你安裝的APR-util所在的目錄。 - 好了這次configure執行成功了,但是在make的時候又出現了錯誤:pcre-config for libpcre not found,這個那還和前面一樣唄,先去下載再說,下載目錄爲:點此下載,
- 如上圖所示,由於一開始我下載的是pcre2,安裝好了之後,在httpd服務make編譯的時候還是出現了錯誤,Did not find pcre-config script,後來參考了這篇論壇問答裏的老哥說的,不要安裝pcre2,直接安裝pcre即可,於是又進入
/usr/local
目錄下面把pcre2的目錄刪掉,其實就是卸載pcre2軟件,之後重新安裝了pcre,之後再次進入,httpd目錄下面,執行命令:./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
,這次前面的錯誤沒有了,但是出現了一個和之前apr相關的錯誤:can not find libapr-0.la in /usr/local/apr-1.6.1/lib,出現這個錯誤的原因是:APR-util是依賴於APR的庫的而在配置文件中的安裝目錄可能和自己的安裝目錄不一致,因此直接進入APR的庫目錄,將配置文件修改,如下圖所示: cd /usr/local/apr-util/lib
vi libaprutil-1.la
,找到配置依賴位置,並進行修改(此處需要根據自身的安裝位置進行調整)
- 之後最後一次運行下面兩個命令,httpd終於安裝成功了:
./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
;make && make install
- 安裝成功之後,就需要啓動服務,源碼安裝的一般直接在安裝目錄啓動即可,通過
/usr/local/apache2/bin/apachectl start
命令啓動服務,此時會提示缺少服務器名稱,這是小問題沒啥關係。但是我想使用本地電腦的瀏覽器訪問虛擬機的頁面,一直無法連接。 - 針對上面的問題,首先想到將虛擬機和本機的網絡連接方式換成橋接的方式,如下圖所示。
- 換好之後,通過
ifconfig
獲取到虛擬機的IP地址
- 之後在本地通過ping命令發現可以通,但是在瀏覽器中輸入IP地址還是無法連接,參考這篇文章首先查看防火牆的狀態(
systemctl status firewalld.service
),之後將防火牆關閉(systemctl stop firewalld.service ),再次查看防火牆狀態發現已經關閉了。
- 最後在本機瀏覽器中輸入IP地址,終於好了!
- 前面有提到會使用兩種方法來安裝httpd服務,因此我們首先將源碼安裝的httpd服務關閉,
/usr/local/apache2/bin/apachectl stop
,關閉之後通過yum install -y httpd
安裝httpd服務,yum在線安裝之後一般啓動命令會在/sbin/目錄下,可以直接在任意目錄下使用,啓動yum安裝的http服務apachectl start
,在本機的瀏覽器中刷新一下會發現兩者的頁面是不一樣的,如下所示: - 至此CenOS Linux 7下安裝httpd服務實驗就算結束了,在此過程中踩了很多坑,但也學到了很多,也希望可以幫助到其他一起來踩坑的小夥伴,寫的不好還請輕噴。