在CentOS7.3上編譯安裝httpd-2.4.27


????在實際生產中,軟件廠商并不總會提供針對Linux平臺的rpm軟件包,有時會以源碼的形式發布軟件。源碼,比如c語言的源碼,可以跨平臺運行。在只能獲得源碼的情況下,那么就需要用戶根據自己的平臺,進行手動的編譯安裝。此時,需要借助一些專門的編譯工具,而Linux中就提供了這樣的工具,比如針對Java的maven管理器以及針對c、c++語言的make項目管理器。

????下面介紹一下如何在CentOS7.3上用make項目管理器來編譯安裝 httpd-2.4.27。
????注:httpd-2.4.27是用c語言編寫的源碼包,完整名稱為httpd-2.4.27.tar.bz2。

第一步:準備工作。查看系統是否已經安裝了httpd,如果已經安裝的話,將其卸載。

# 查看是否已經安裝了httpd的相關rpm包
[root@centos7 ~]#rpm -qa "httpd*"
httpd-tools-2.4.6-45.el7.centos.x86_64
httpd-2.4.6-45.el7.centos.x86_64
# 如果安裝了,將其remove掉
[root@centos7 ~]#yum -y remove "httpd*"

第二步: 安裝開發包組

# 安裝開發包組,開發包組里面包含了很多的編譯工具軟件
[root@centos7 ~]#yum groupinstall "Development tools"

????安裝開發包組屬于通用過程,一般編譯安裝的時候,都需要用到開發包組提供的功能。

第三步: 將源碼放到指定目錄下,解包

# 將源碼移動到指定目錄下,建議放到/usr/local/src/這個目錄
[root@centos7 ~]#cp httpd-2.4.27.tar.bz2   /usr/local/src/

# 進入/usr/local/src/目錄
[root@centos7 ~]#cd /usr/local/src/

# 將源碼壓縮包解壓到src目錄下
[root@centos7 src]#tar xvf httpd-2.4.27.tar.bz2

# 進入剛解壓得到的httpd-2.4.27/目錄下
[root@centos7 src]#cd httpd-2.4.27/

第四步: 查看一下說明文檔和安裝文檔

# 查看說明文檔
[root@centos7 httpd-2.4.27]#cat README

# 查看安裝幫助文檔
[root@centos7 httpd-2.4.27]#cat INSTALL

第五步: 使用configure腳本生成Makefile

????configure腳本主要是指定軟件支持哪些功能,同時通過選項傳遞參數,指定安裝路徑等。configure腳本執行時會參考用戶的設定以及makefile.in這個模板文件生成 makefile。configure腳本還要檢查依賴到的外部環境,如依賴的軟件包。

# 查看configure腳本的幫助
[root@centos7 httpd-2.4.27]#./configure --help

# 用configure腳本指定安裝的路徑為/app/httpd24/
# 配置文件的路徑為/etc/httpd24/,--enable-ssl表示啟用加密

[root@centos7 httpd-2.4.27]#./configure --prefix=/app/httpd24/ 
--sysconfdir=/etc/httpd24/ --enable-ssl

# 執行過程中會檢查依賴的包,缺什么包就安裝什么包
# 下面四個包裝完之后,上面的configure腳本命令才可以執行

[root@centos7 httpd-2.4.27]#yum install apr-devel
[root@centos7 httpd-2.4.27]#yum install apr-util-devel
[root@centos7 httpd-2.4.27]#yum install pcre-devel
[root@centos7 httpd-2.4.27]#yum -y install openssl-devel

第六步: 編譯和安裝

# 編譯:make,安裝:make install
[root@centos7 httpd-2.4.27]#make && make install

????說明:為了加快編譯速度,可以采用這條命令make -j 4 && make install。-j表示可以多進程,多線程的并發編譯。如果處理器數量為4個,-j最多寫4。

????安裝完確認指定目錄是否已經成功創建:/app/httpd24/和/etc/httpd24/。

第七步: 對httpd軟件進行環境配置

????/app/httpd22/bin目錄里面存放了httpd軟件的運行命令。如果想運行該軟件,就得進入到bin目錄下執行相應的命令。我們可以把/app/httpd22/bin目錄添加到PATH環境變量中,便于我們操作。

# 將改變PATH環境變量的命令寫成腳本
[root@centos7 ~]#echo 'export PATH=/app/httpd24/bin:$PATH' > /etc/profile.d/httpd24.sh

# 執行shell腳本,把/app/httpd22/bin路徑添加到PATH環境變量中
[root@centos7 ~]#. /etc/profile.d/httpd24.sh

# 查看PATH變量,確認已經改變
[root@centos7 ~]#echo $PATH
/app/httpd24/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

# 啟動Apache HTTP服務器的前端程序apachectl
[root@centos7 ~]#apachectl start

# 查看80端口是否已經被啟用  
[root@centos7 ~]#ss -ntl  

# 修改首頁文件
[root@centos7 ~]#vim /app/httpd24/htdocs/index.html
<html><body><h1>Hello, it works!</h1></body></html>

# 為軟件添加man幫助
[root@centos7 ~]#vim /etc/man_db.conf 

# 在/etc/man_db.conf文件里添加下面的一行,這樣就可以使用man幫助查看幫助文檔了。
MANDATORY_MANPATH   /app/httpd24/man

????至此,如何在CentOS7.3上編譯安裝httpd-2.4.27已經介紹完了。
????附:自動化安裝腳本,適合centos6和centos7

#!/bin/bash
# 刪除相同軟件
count=`rpm -qa "httpd*" | wc -l`
if [ "$count" -ge 1 ];then
        yum -y remove "httpd*"
fi
# 安裝開發包組
yum -y groupinstall "Development tools"

# 安裝
OS_RELEASE=`egrep -o " [0-9]+" /etc/centos-release|cut -d" " -f2`
if [ "$OS_RELEASE" -eq 6 ];then
        # 關閉防火墻
        chkconfig iptables off
        service iptables stop
        # 關閉SELinux
        sed 's/SELINUX=disabled\|SELINUX=enforcing/SELINUX=permissive/' -i /etc/selinux/config
        setenforce  0
        echo  "----------------your system release is CentOS 6, install begin--------------"
        cp httpd-2.2.34.tar.bz2   /usr/local/src/
        cd /usr/local/src/
        tar xvf httpd-2.2.34.tar.bz2
        cd  httpd-2.2.34
        yum -y install openssl-devel 
        ./configure --prefix=/app/httpd22/ --sysconfdir=/etc/httpd22/ --enable-ssl
        make && make install
        echo 'export PATH=/app/httpd22/bin:$PATH' > /etc/profile.d/httpd22.sh
        #. /etc/profile.d/httpd22.sh
        /app/httpd22/bin/apachectl start
        echo "MANPATH       /app/httpd22/man" >> /etc/man.config
        
else [ "$OS_RELEASE" -eq 7 ];
        echo   "----------------your system release is CentOS 7, install begin--------------"
        # 關閉防火墻
        systemctl stop firewalld.service
        systemctl disable firewalld.service
        # 關閉SELinux
        sed 's/SELINUX=disabled\|SELINUX=enforcing/SELINUX=permissive/' -i /etc/selinux/config
        setenforce  0
        cp httpd-2.4.27.tar.bz2   /usr/local/src/
        cd /usr/local/src/
        tar xvf httpd-2.4.27.tar.bz2
        cd  httpd-2.4.27
        yum -y install apr-devel;yum -y install apr-util-devel
        yum -y install pcre-devel
        yum -y install openssl-devel
        ./configure --prefix=/app/httpd24/ --sysconfdir=/etc/httpd24/ --enable-ssl
        make && make install
        echo 'export PATH=/app/httpd24/bin:$PATH' > /etc/profile.d/httpd24.sh
        #. /etc/profile.d/httpd24.sh
        /app/httpd24/bin/apachectl start
        echo "MANDATORY_MANPATH                       /app/httpd24/man" >> /etc/man_db.conf
        mandb
fi
        echo "----------------Install finished!----------------"

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容