相信你們大多都聽過linux 的編譯安裝,但它究竟是怎麼把源代碼變爲本身電腦裏能夠應用的軟件哪?今天,小編就以httpd 爲例詳細講解一下。linux
什麼是編譯安裝——編譯:將源代碼變爲機器可執行的代碼文件。安裝:將可執行文件安裝到操做系統裏,纔可使用。apache
1、下載httpd最新版本的源碼包vim
(1)若是電腦裏有老版本的狀況下,rpm -qi httpd 查看詳細信息,裏邊有這個命令下載的官網,沒有老版本就去官網查找。centos
(2)去官網下載最新版本(本身想要的版本)(通常在downloads下)app
(3)rz上傳到linux ,並解壓包 tar -xf httpd-2.4.27.tar.bz2工具
2、查看INSTALL、README 這些幫助信息spa
進入cd httpd-2.4.27/操作系統
查詢 cat INSTALL,裏邊有簡單的安裝過程,和一些例子3d
查詢 cat README,(what is it ?)裏邊有一些Apache 的功能介紹blog
3、configure腳本(檢測當前編譯環境)
(1)./configure --help 查詢這個腳本的用法,
--prefix=PREFIX 指定默認安裝總目錄, 默認爲/usr/local/
--sysconfdir=/PATH 配置文件安裝位置,默認就安裝到指定安裝總目錄的下面
Optional Features: 須要什麼功能
--disable-FEATURE 關閉某些功能
--enable-FEATURE 開啓某些功能
(2)下面咱們就來執行這個腳本,添加一些簡單的設置
./configure --prefix=/app/apache24 --sysconfdir=/etc/apache24 --enable-rewrite
① 首次安裝,會提示出一些錯誤,由於有些包沒有安裝
② 咱們只需按照提示的錯誤,把須要的都安裝上去(直到沒有提示錯誤)
先查詢缺乏的 yum search apr-devel(通常關於開發的都叫 devel)
再安裝 yum -y install apr-devel
中間會提示一個,沒有C編譯工具,缺乏gcc的錯誤,這時候,咱們須要下一個包組Development Tools
yum -y groupinstall "Development Tools"
③ configure腳本徹底執行成功(多了一個Makefile)沒有Makefile ,不能下面make過程
4、make 和 make install 編譯
make 編譯後,多了不少.o .lo 文件 (二進制文件),在此以前的工做,任何用戶都能作,而且都在httpd-2.4.27 這個目錄下進行
make install 安裝到指定位置,只有root 能作,
安裝完畢
5、啓動服務
(1)netstat -ntl 查看本地監聽端口,有沒有開啓80端口
若是沒有開啓, service httpd start 開啓80端口
(2)設置防火牆,由於防火牆組織了80端口
iptables -vL 查看防火牆策略,防火牆阻止,能夠關閉防火牆
systemctl status firewalld.service 查看當前防火牆狀態(只有centos 7 中有)
或 systemctl is-active firewalld.service 查看當前防火牆狀態
systemctl stop firewalld.service 暫時關閉防火牆(下次開機會在開啓)
systemctl is-enabled firewalld.service 查看開機時是否開啓防火牆
systemctl disable firewalld.service 設置開機時不開啓防火牆
若是是centos 6 如下的較低版本
service iptables stop 關閉防火牆
chkconfig httpd off 設置開機時不開啓防火牆
(3)若是是安裝新版本,需現將舊版本卸載 rpm -e httpd (rpm -qf `which httpd`查詢當前版本)
(4)/app/apache24/bin/apachectl start 開啓服務
就此服務開啓成功!!!
/app/apache24/bin/apachectl stop 能夠關閉服務
6、安裝後的配置
(1)設置PATH export PATH=$PATH:/app/apache24/bin/
設置後,能夠 apachectl start 開啓服務
apachectl stop 關閉服務
(2)導入幫助手冊man
vim /etc/man_db.conf
加入一行 MANDATORY_MANPATH /app/apache24/man
就能夠man apachectl
到此就完成全部工做了!!!
但願對你們有幫助,有什麼錯誤請告訴我~