1. 程式人生 > >Linux原始碼安裝Apache

Linux原始碼安裝Apache

Linux原始碼安裝Apache

原始碼安裝

linux上的軟體大部分都是c語言開發的,那麼安裝需要gcc編譯程式才可以進行原始碼安裝。

yum install -y gcc	#先安裝gcc	

安裝原始碼包需要三個步驟

  1. ./configure

    在這一步可以定製功能,加上相應的選項即可,具有有什麼選項可以通過 ./configure --help 命令來檢視。在這一步會自動檢測你的linux系統與相關的套件是否有編譯該原始碼包時需要的庫,因為一旦缺少某個庫就不能完成編譯。只有檢測通過後才會生成一個Makefile檔案。

  2. make
    使用這個命令會根據Makefile檔案中預設的引數進行編譯,這一步其實就是gcc在工作了。

  3. make install
    安裝步驟,生成相關的軟體存放目錄和配置檔案的過程。

上面介紹的3步並不是所有的原始碼包軟體都一樣的,阿銘以前也曾經遇到過,安裝步驟並不是這樣,也就是說原始碼包的安裝並非具有一定的標準安裝步驟。這就需要你拿到原始碼包解壓後,然後進入到目錄找相關的幫助文件,通常會以INSTALL或者README為檔名。所以,你一定要去看一下。下面阿銘會編譯安裝一個原始碼包來幫你更深刻的去理解如何安裝原始碼包。

實際操作步驟

cd ~
wget -c http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.37.tar.gz	#下載原始碼包
curl -O http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.37.tar.gz #下載原始碼包 tar -zxvf httpd-2.4.37.tar.gz #解壓原始碼包 cd httpd-2.4.37 ./configure --help | less #檢視配置幫助 ./configure --prefix=/usr/local/apache2 #指定安裝目錄,通常/usr/local/是常用的安裝目錄,新版本的Apache這一步通不過,注意後面的解釋

注意:

可能會報錯:configure: error: APR not found. Please read the documentation.

關於apr not found的問題解決, Apache Portable Runtime

##下載病安裝apr-1.5.2這個軟體,httpd需要依賴他來執行
wget -c http://apache.fayea.com//apr/apr-1.5.2.tar.gz
cd apr-1.5.2
./configure

#報錯:rm: cannot remove `libtoolT': No such file or directory
在configure裡面 RM='$RM  -f'   這裡的$RM後面一定有一個空格。 如果後面沒有空格,直接連線減號,就依然會報錯。把RM='$RM'改為RM='$RM  -f'

make 

make install

##下載安裝apr-util1.5.4
wget -c http://apache.fayea.com//apr/apr-util-1.5.4.tar.gz

#解壓
tar -zxvf apr-util-1.5.4.tar.gz

cd apr-util-1.5.4

#編譯
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

make 

make install

yum install -y gcc-c++	#下面的擴充套件需要c++編譯器

#安裝pcre
wget -c https://sourceforge.net/projects/pcre/files/pcre/8.39/pcre-8.39.zip

#解壓
unzip pcre-8.39.zip

cd pcre-8.39

./configure --prefix=/usr/local/pcre

make

make install #或者make && make install  

解決所有錯誤後再去編譯httpd

cd httpd
echo $?	#驗證上一步是否成功,不是必須的

ls -l Makefile	#檢視生成的Makefile檔案

./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre

make #編譯

yum install -y make	#如果上面的make找不到那麼就安裝make,有就忽略

echo $?	#驗證是否成功,可以忽略

make install	#最後一步,才是真正的安裝

echo $?	#檢測是否正確安裝

ls /usr/local/apache2/	#檢視安裝後的檔案

cat config.log	#如果出錯了,先看命令列提示的報錯資訊,然後再看這個檔案

apache的使用

cp /usr/local/apache2/bin/apachectl /sbin/
apachectl start	#啟動Apache
##設定Apache開機自啟動
vim /etc/rc.d/rc.local
#增加一行 /sbin/apachectl start
#或者將httpd服務新增到ntsysv服務管理工具
apachectl stop #關閉Apache以免不必要的麻煩
cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd
vim /etc/rc.d/init.d/httpd
修改為
#!/bin/sh
#
#chkconfig: 345 85 15 //#不能省略,注意空格
#description: httpd for 52lamp 20101016 21:54 //任意字串
#
......
第二行中345的含義:
#       0 - operation completed successfully
#       1 -
#       2 - usage error
#       3 - httpd could not be started
#       4 - httpd could not be stopped
#       5 - httpd could not be started during a restart
修改有關許可權
#cd /etc/rc.d/init.d/
#chmod a+x httpd
#chkconfig --add httpd
#ntsysv
httpd已經在列表中,按F1可以看到剛才編寫的服務描述httpd for 52lamp 20101016 21:54。
#apachectl start
#ps -e |grep httpd
23247 ?        00:00:00 httpd
23248 ?        00:00:00 httpd
23249 ?        00:00:00 httpd
23251 ?        00:00:00 httpd
23252 ?        00:00:00 httpd
在瀏覽器中輸入127.0.0.1,看起來一切正常;但是區域網內其他電腦不能訪問!
#service iptables stop
如果不想關閉防火牆,放開80埠即可。
#vi /etc/sysconfig/iptables
增加一行-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
#service iptables restart //重啟防火牆
現在一切OK

配置虛擬主機

cd /usr/local/apache2/
 cd conf/
 vim httpd.conf
 #新增一行
 ServerName www.caoliu.com
#修改Windows下面drivers 中 etc 中的host
#重啟Apache
#關閉防火牆
#修改首頁文字資訊
cd /usr/local/apache2/
cd htdocs/

[[email protected] htdocs]# ls
index.html

#修改文字資訊
vim index.html 
撤銷:<kbd>Ctrl/Co