????在實際生產中,軟件廠商并不總會提供針對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!----------------"