apache(源碼包安裝)
apache的安裝 (用腳本安裝下面有腳本安裝的方法)
最新版本的就是變态,本來你安裝了apr和apr-util包了,但就是預編譯配置通不過,那就直接上源碼包。
安裝前的準備:
yum -y install gcc
yum -y install gcc-c++
yum -y install openssl-devel
以為安裝這些了就可以了,編譯的時候出現error,基本我屬于那種有警告不管,但是尼瑪出現error了,木有辦法了,那隻有解決了。
[root@localhost /]# rpm -qa | grep apr
apr-util-ldap-1.3.9-3.el6.i686
apr-1.3.9-3.el6.i686
apr-util-1.3.9-3.el6.i686
這幾個是搭建apache必須安裝的,系統顯示已經安裝了相應的rpm包了。但是你去編譯apache的時候還是可能出現錯誤,那不管了,直接上源碼包
error1:
configure: error: APR not found. Please read the documentation.
解決error1:
tar zxvf apr-1.4.2.tar.gz -C /usr/src/
cd /usr/src/apr-1.4.2
./configure --prefix=/usr/local/apr
make && make install
error2:
configure: error: APR-util not found. Please read the documentation
解決error2:cd /
tar zxvf apr-util-1.3.10.tar.gz -C /usr/src/
cd /usr/src/apr-util-1.3.10
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
error3:
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/
解決error3:
tar zxvf pcre-8.11.tar.gz -C /usr/src/
cd /usr/src/pcre-8.11
./configure --prefix=/usr/local/pcre
make && make install
最後這些都解決完了,尼瑪終于沒有錯誤了!!!!我感動啊!!
tar zxvf httpd-2.4.3.tar.gz -C /usr/src/
cd /usr/src/httpd-2.4.3
./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre --enable-so --enable-rewrite --enable-ssl --with-ssl=/usr/lib--enable-auth-digest --enable-cgi --enable-suexec --with-suexec-caller=daemon --with-suexec-docroot=/usr/local/apache2/htdocs
make && make install
apache搭建完成後
裝完成後,了解apache伺服器相關的主要目錄和檔案
/usr/local/apache2/bin/ (httpd伺服器包含的執行程式)
/usr/local/apache2/conf/ (httpd伺服器包含的配置檔案)
/usr/local/apache2/htdocs/ (httpd伺服器存放的網頁檔案的根目錄)
/usr/local/apache2/logs/ (存放通路httpd伺服器的日志)
/usr/local/apache2/man/ (httpd伺服器的幫助手冊)
/usr/local/apache2/modules/ (存放提供給httpd伺服器動态加載的子產品檔案)
開啟搭建好的服務
開啟服務的指令
/usr/local/apache2/bin/apachectl start (開啟服務)
/usr/local/apache2/bin/apachectl stop (關閉服務)
/usr/local/apache2/bin/apachectl restart (重新開機服務)
/usr/local/apache2/bin/apachectl -t (檢查配置檔案是否出錯)
echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.d/rc.local (伺服器開機之後自動開啟服務)
[root@localhost apache2]# /usr/local/apache2/bin/apachectl start(源碼包安裝需要這樣才能開啟服務)
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
httpd (pid 902) already running 顯示已經開啟了,會出現指令的提示,解決這個問題
檢視配置檔案
vim /usr/local/apache2/conf/httpd.conf
###添加這句(直接copy)
ServerName 192.168.4.184:80
###儲存退出
ServerName 192.168.4.184:80 (有域名就寫域名ServerName www.abc.com:80)
在重新開機服務就不會提示上面的資訊了。
[root@localhost apache2]# /usr/local/apache2/bin/apachectl start (這次開啟的時候發現什麼都木有)
但是服務已經開啟了!!
檢視一下httpd的端口狀态和程序狀态
[root@localhost apache2]# netstat -pant | grep httpd
tcp 0 0 :::80 :::* LISTEN 1524/httpd
[root@localhost apache2]# ps aux | grep httpd
root 1524 0.0 0.4 5272 2372 ? Ss 02:39 0:00 /usr/local/apache2/bin/httpd -k start
daemon 1525 0.0 0.4 283004 2116 ? Sl 02:39 0:00 /usr/local/apache2/bin/httpd -k start
daemon 1526 0.0 0.4 283004 2120 ? Sl 02:39 0:00 /usr/local/apache2/bin/httpd -k start
daemon 1527 0.0 0.4 283004 2120 ? Sl 02:39 0:00 /usr/local/apache2/bin/httpd -k start
root 1706 0.0 0.1 4312 728 pts/1 S+ 02:41 0:00 grep httpd
(要殺死程序 killall -9 1524 1525 1526 1527)
每次開啟服務都要這樣敲入這麼長的指令/usr/local/apache2/bin/apachectl start很麻煩
能不能直接向rpm包安裝apache一樣用service httpd start這樣啟動呢?
先rpm -qa | grep httpd確定系統木有rpm包安裝的httpd,有就用yum -y remove httpd删除
然後cp /usr/src/httpd-2.4.3/build/rpm/httpd.init /etc/init.d/httpd
把httpd.init(檔案路徑一定要正确)檔案copy到服務啟動腳本目錄下面并改名為httpd
先修改腳本啟動配置檔案
vim /etc/init.d/httpd
########修改一些内容
prog=$(basename $0 | sed -e 's/^[SK][0-9][0-9]//')
if [ -f /etc/sysconfig/${prog} ]; then
. /etc/sysconfig/${prog}
fi
httpd=${HTTPD-/usr/local/apache2/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/usr/local/apache2/${prog}.pid}
lockfile=${LOCKFILE-/var/lock/subsys/${prog}}
RETVAL=0
check13 () {
CONFFILE=/usr/local/apache2/conf/httpd.conf
########儲存退出
然後在修改apache的配置檔案
vim /usr/local/apache2/conf/httpd.conf
###添加這句
pidfile "/usr/local/apache2/httpd.pid"
###然後儲存退出配置檔案
在試試service httpd start|stop|restart
[root@localhost init.d]# service httpd start
Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
[FAILED]
[root@localhost init.d]# service httpd stop
Stopping httpd: [FAILED]
發現還是出現這樣的錯誤,别急,在來小小的修改一下
[root@localhost rpm]# ps aux | grep httpd
root 20462 0.0 0.4 8204 2080 ? Ss 19:59 0:00 /usr/local/apache2/bin/httpd
daemon 20464 0.0 0.3 8340 1568 ? S 19:59 0:00 /usr/local/apache2/bin/httpd
daemon 20465 0.0 0.3 8340 1568 ? S 19:59 0:00 /usr/local/apache2/bin/httpd
daemon 20466 0.0 0.3 8340 1568 ? S 19:59 0:00 /usr/local/apache2/bin/httpd
daemon 20467 0.0 0.3 8340 1568 ? S 19:59 0:00 /usr/local/apache2/bin/httpd
daemon 20468 0.0 0.3 8340 1568 ? S 19:59 0:00 /usr/local/apache2/bin/httpd
root 20862 0.0 0.6 10912 3308 pts/2 S+ 21:09 0:00 vim httpd
root 20986 0.0 0.1 4308 732 pts/3 S+ 21:37 0:00 grep httpd
[root@localhost rpm]# kill -9 20462 20464 20465 20466 20467 20468(殺死這些程序)
然後在試試service httpd start|stop|restart,行則ok,不行,那就在檢查檢查上面的配置檔案
[root@localhost rpm]# service httpd start
Starting httpd: [ OK ]
[root@localhost rpm]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[root@localhost rpm]#
有人說何必這麼費勁也可以這樣
cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd #複制為系統服務
vim /etc/init.d/httpd #編輯此服務,将前三行修改為
#!/bin/bash
# chkconfig: 35 85 15
#description:Apache httpd
service httpd start
但是這樣敲了之後,這個指令不會出現Starting httpd: [ OK ] ,不信你可以試試,這樣就還需要
檢視是否開啟了沒有netstat -pant | grep 80 有80就開啟了
確定開機伺服器自動啟動
chkconfig --add httpd
chkconfig --level 35 httpd on
每次打開配置檔案的時候都有很多無用的
#######為便于檢視可以用這個指令清楚不需要的東西######
cp http.conf http.conf.bak(先進行備份)
grep -v "#" httpd.conf.bak | grep -v "^$" > httpd.conf
grep -v "#" 去掉#号
grep -v "^$" 去掉空格
##############常用的全局配置參數######################
Serverroot: 用于設定httpd伺服器的根目錄
Listen: 設定apache用于監聽的端口号,預設為80
User: 設定運作httpd程序的使用者身份
Group: 設定運作httpd程序的組身份
Serveradmin: 設定伺服器管理者的e-mail位址
Servername: 設定伺服器的完整主機名
Documentroot: 設定網頁文檔根目錄
Directoryindex: 設定網站的預設首頁格式
Errorlog: 錯誤日志的路徑和檔案名
LogLevel:記錄日志的級别,預設為warn
Customlog: 通路日志的路徑和格式類型
Pidfile: 儲存伺服器程式程序号(pid)的檔案,預設為logs/httpd.pid
Timeout: web伺服器與浏覽器之間網絡連接配接的逾時秒數,預設為300秒
Keepalive: 是否使用保持連接配接功能:off on
Maxkeepaliverequests: 用戶端每次連接配接允許請求的最大檔案數,預設為100個。當keepalive設定為on時才生效
Keepalivetimeout: 保持連接配接的逾時秒數,預設為15秒
Include: 用于包含另一個配置檔案的内容
###################apache的相關操作####################################
1.虛拟目錄
先修改配置檔案
###在<IfModule alias_module>子產品中添加一句,然後在</IfModule>下面添加幾句</Directory >
<IfModule alias_module>
Alias /test "/data/web"
</IfModule>
<Directory "/data/web">
AllowOverride None
Options None
Require all granted
</Directory>
#######</Directory>裡面寫的東西配置檔案裡面是有模闆的copy之後改動一點就ok了然後儲存退出
然後要建立那個虛拟目錄
mkdir -p /data/web
/data目錄可以是挂載到linux系統中的,是以這個目錄就看你硬碟多大了
在建立的目錄裡面 vim index.html裡面随便寫一點東東就ok了
然後重新開機httpd伺服器
通路的時候 http://ip/test(記住這裡一定不要敲/直接回車)
2.虛拟主機
a)同ip同域名不同端口
vim /usr/local/apache2/conf/httpd.conf
修改配置檔案
####添加這些
Listen 8001
Listen 8002
<VirtualHost 172.16.1.1:8001>
ServerAdmin [email protected]
DocumentRoot /data/web/test1
ServerName www.test.com
ErrorLog /data/web/log/test1.err.log
CustomLog /data/web/log/test1.acc.log common
</VirtualHost>
<VirtualHost 172.16.1.1:8002>
DocumentRoot /data/web/test2
ErrorLog /data/web/log/test2.err.log
CustomLog /data/web/log/test2.acc.log common
#####儲存退出
參數的解釋:
ServerAdmin [email protected]
(這個可以随便寫,這個是管理者的郵箱位址)
DocumentRoot /data/web/test1
(這個是存放網頁檔案的目錄)
ServerName www.test.com
(這個是寫域名的,有自己的域名,就寫自己的域名,沒有域名随便寫了也不要緊,因為我們用ip通路)
CustomLog data/web/log/test1.acc.log common
(用于設定httpd伺服器通路日志檔案的路徑和格式類型,這個檔案裡面寫入這你登入的記錄)
ErrorLog /data/web/log/test1.err.log
(用于設定錯誤日志檔案的路徑和檔案名(如果你設定了,那這個目錄和檔案必須存在,木有就建立)這個檔案寫入的是,你登入錯誤的記錄)
建立配置檔案裡面指定的虛拟主機目錄,因為沒有,那就要建立
cd /data/web/ (切換目錄,在這個目錄裡面去建立)
mkdir test1 test2 log (建立兩個存放網頁目錄的檔案和一個存放日志的檔案)
cd log/ (切換到日志的目錄檔案中)
touch test1.err.log test1.acc.log test2.err.log test2.acc.log (建立四個日志檔案)
vim /data/web/test1/index.html (編輯兩個網頁檔案便于測試)
this is test1 page
vim /data/web/test2/index.html
this is test2 page
通路測試 http://ip:8001 (看見this is test1 page 就ok了)
http://ip:8002 (看見this is test2 page 就ok了)
b)同ip不同域名同端口
vim /usr/local/apache2/conf/httpd.conf
####添加這些:wq
<VirtualHost 172.16.1.1:80>
ServerName www.test1.com
ServerName www.test2.com
重新開機服務
如果臨時的不能搭建dns,可以用host檔案代替
vim /etc/hosts
172.16.1.1 www.test1.com
172.16.1.1 www.test2.com
(!!!還是要建立配置檔案裡面指定的虛拟主機目錄!!!)
通路測試 http://www.test1.com (看見this is test1 page 就ok了)
http://www.test2.com (看見this is test2 page 就ok了)
c)不同ip同域名同端口
<VirtualHost 172.16.1.10:80>
<VirtualHost 172.16.1.20:80>
模拟ip出來
ifconfig eth0:0 172.16.1.10 up
ifconfig eth0:1 172.16.1.20 up
通路測試 http://172.16.1.10 (看見this is test1 page 就ok了)
http://172.16.1.20 (看見this is test2 page 就ok了)
3.系統使用者的個人首頁
a)修改配置檔案
####把配置檔案中的這兩句前面的#去掉
LoadModule userdir_module modules/mod_userdir.so
Include conf/extra/httpd-userdir.conf
#####儲存退出,這裡就采用預設的路徑
b)建立使用者給出密碼
#################################
useradd li
useradd liuh
passwd li(li)
passwd liu(liu)
c)在li和liu使用者的宿主目錄中建立檔案
cd /home/li
mkdir public_html
cd public_html
vim index.html(為li使用者建立自己的首頁)
cd /home/liu
vim index.html(為liu使用者建立自己的首頁)
chmod o+x /home/li* (為宿主目錄中的使用者修改權限)
d)重新開機服務
#################通路浏覽器##################
http://ip/~li/ (其中li為使用者名)
###############################################
4.做授權認證
#####添加這幾句(用了一個虛拟目錄)
Alias /test "/data/web"
Options Indexes MultiViews FollowSymLinks
AllowOverride All
AuthType basic
AuthName "welcome test"
AuthUserFile /usr/local/apache2/conf/httppwd
Require user liu
####儲存退出
建立網頁目錄和檔案
vim /data/web/index.html
建立存儲認證使用者賬号及密碼的檔案
/usr/local/apache2/bin/htpasswd -c /usr/local/apache2/conf/httppwd liu
New password:
Re-type new password:
(添加第二個,或者多個的時候都不需要-c了)
/usr/local/apache2/conf/httppwd 這個就是AuthUserFile認證使用者檔案的路徑檔案)
然後重新開機服務
通路 http://ip/test
輸入使用者名和密碼
組的認證
AuthGroupFile /usr/local/apache2/conf/httpgrp
Require group admin
建立組認證的檔案
vim /usr/local/apache2/conf/httpgrp
###添加組裡面的成員
admin:test jie(需要加入直接玩後面添加)
####然後儲存退出
使用者密碼和之前建立的一樣
#######apache配置檔案的一些其它參數######
# User home directories
#Include conf/extra/httpd-userdir.conf (把這個#号去掉就可以做個人首頁網址)
這個可以自己寫路徑,建議路徑的目錄最好在conf目錄下
#LoadModule userdir_module modules/mod_userdir.so (這個# 号是随着上面的一起的,這個
就是userdir的子產品,這句也在配置檔案中,可以找到)
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
這句是做虛拟主機
#########建議主配置檔案内容越少越好######
$$$$$$$$$$$額外的補充$$$$$$$$$$$$$$$$$$$
禁止使用IP直接通路apache
1. 建立立一個預設主機,即出現在所有<VirtualHost *:80>最重要的
<VirtualHost *:80>
ServerName x.x.x
DocumentRoot /var/www/error
RewriteEngine On
RewriteRule ^.* /400.php
2. 編輯檔案/var/www/error/400.php, 輸出以下代碼:
<?php
header("HTTP/1.1 400 Bad Request");
?>
<h1>Bad Request</h1>
如此,即可實作禁止直接用ip通路apache。
解釋一下上面的原理:
1. 将對預設主機的所有請求重寫向到/var/www/error/400.php
2. 利用php程式輸出400狀态。
不足之處,apache伺服器必須安裝php解析子產品。
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$參考腳本$$$$$$$$$$$$$$$$$$$$$
運作腳本提示:
這個是一個腳本,運作這個腳本能夠一次性成功安裝完源碼包搭建的apache,此腳本隻供友善,我執行這個腳本是已經成功安裝幾遍了,此腳本運作成功,先要搭建好yum(如何搭建yum這裡不在此介紹了),然後解壓好所需的源碼包。解壓沒有先後順序,但是安裝的時候有先後順序。
tar zxvf httpd-2.4.3.tar.gz -C /usr/src/
然後在/usr/src/目錄下面vim 一個檔案
eg:vim httpd.sh
然後把下面的copy到httpd.sh裡面儲存退出在給httpd.sh添加可執行的權限
chmod +x /usr/src/httpd.sh
然後在執行腳本 /usr/src/httpd.sh
以下所有都是需要複制的内容(從#bin/bash都開始複制)
#bin/bash
echo "####first,use yum install this rpm####"
echo "###second,install httpd the dependencies###"
echo "#####welcome to apr install#####"
cd /usr/src/apr-1.4.2
./configure --prefix=/usr/local/apr && make && make install
echo "#####apr is installed#####"
echo "#####welcome to apr-util install#####"
cd /usr/src/apr-util-1.3.10
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config && make && make install
echo "#####apr-util is installed#####"
echo "#####welcome to pcre install#####"
cd /usr/src/pcre-8.11
./configure --prefix=/usr/local/pcre && make && make install
echo "#####prce is installed#####"
echo "###now,install httpd###"
echo "#####welcome to httpd install######"
cd /usr/src/httpd-2.4.3
./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre --enable-so --enable-rewrite --enable-ssl --with-ssl=/usr/lib--enable-auth-digest --enable-cgi --enable-suexec --with-suexec-caller=daemon --with-suexec-docroot=/usr/local/apache2/htdocs && make && make install
echo "#####httpd is installed#####"
echo "####please check httpd is ok,if no error above before,please start httpd #####"
本文轉自 jie783213507 51CTO部落格,原文連結:http://blog.51cto.com/litaotao/1186912,如需轉載請自行聯系原作者