1. 程式人生 > >Apache 編譯安裝2.2

Apache 編譯安裝2.2

linux基礎運維學習

一、Apache介紹

1、Apache是什麽?

Apache是世界使用排名第一的Web服務器軟件。它可以運行在幾乎所有廣泛使用的計算機平臺上,由於其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。它快速、可靠並且可通過簡單的API擴充,將Perl/Python等解釋器編譯到服務器中。同時Apache音譯為阿帕奇,是北美印第安人的一個部落,叫阿帕奇族,在美國的西南部。Apache源於NCSA server服務。

1.1 Apache的應用場合

1》使用Apache運行靜態HTML頁,圖片,(處理靜態文件不如Nginx)

2》使用Apache結合PHP、Perl等程序,lamp被稱之為經典組合

3》使用Apache結合Tomcat/resin運行jsp,java等程序,成為中小企業的首選

4》使用Apache做代理.負載均衡,rewrite規則過濾等

二、Apache的編譯安裝

2、開始安裝Apache軟件包

Apache的安裝非常簡單,具體操作過程如下

2.1 下載安裝包

[[email protected] /]# mkdir -p /home/loveyu/tools
[[email protected] /]# cd  /home/loveyu/tools
[[email protected] tools]# wget http://mirrors.hust.edu.cn/apache
[[email protected]
/* */ tools]# ls -l -rw-r--r-- 1 root root 7684420 Jan 13 02:38 httpd-2.2.32.tar.gz

2.2 編譯安裝Apache

編譯安裝參數說明(通過命令./configure -help 查看Apache的編譯參數)

1》./configure檢查編譯環境是否符合編譯需求,並定義當前程序編譯時啟用哪個特性或功能,以及安裝路徑的定義

2》--prefix=/usr/local/apache指定Apache的安裝路徑為/usr/local/apache,如果不指定安裝路徑,則為默認路徑為/usr/local/apache

3》--enable-deflate提供對內容的壓縮傳輸編碼支持,一般html,js,css的內容的站點,使用此參數會極大提高傳輸速度,提升訪問者的體驗

4》--enable-expires激活允許通過配置文件控制http的"expires:"金額"cache-control"頭內容,及即對網站圖片,js,css等內容,提供客戶端瀏覽器緩存設置。這是Apache調優的一個重要選項之一

5》--enable-heads 提供允許對http請求頭的控制

6》--with-mpm-worker選擇Apache mpm的模式為worker模式,因worker模式原理是更多的使用線程來處理請求,所以可以處理更多的並發請求,而系統資源的開銷小於基於進程的mpm prefork(默認為他)

7》--enable-rewrite 提供基於URL規則的重寫功能。即根據已知URL地址,轉換其他想要的URL地址,這是Apache調優的一個重要選項之一,(偽靜態功能)

8》 --enable-so激活Apache服務的DSO(全稱Dynamic Shared Object,動態共享對象)支持,即在以後可以以DSO的、方式編譯安裝共享模塊,這個模塊本身不能以DSO方式編譯

[[email protected] tools]#./configure --prefix=/usr/local/apache --enable-deflate --enable-expires --enable-heads --with-mpm-worker --enable-rewrite  --enable-so
[[email protected] tools]#make    #執行編譯命令
[[email protected] tools]#make install 
[[email protected]  tools]# ln -s /var/local/apache/   /application/apache #將其做個做鏈接,方便使用
[[email protected]  tools]# ls -ld /application/apache
lrwxrwxrwx 1 root root 17 May  7 11:45 apache -> /usr/local/apache
[[email protected] local]# /application/apache/bin/apachectl -l檢查安裝

/application/apache/bin/目錄下apachectl是一個shell腳本,用來啟動、檢查、Apache服務。

2.2 檢驗安裝成果

apache 完成安裝後並不直接提供服務,需要先啟動Apache服務,具體操作如下

/application/apache/bin/apachectl  start
[[email protected] local]# netstat -lnt   #檢查80端口
lsof -i tcp:80   #反查80端口
ps -ef |grep http查看進程
在瀏覽器中輸入192.168.0.102出現IT works則表時Apache安裝成功

註意:在此過程中要學會看/application/apache/logs/error_log Apache的錯誤日誌。

2.3 部署一個簡單的web站點

Apache的默認站點目錄,是安裝目錄下的/application/apache/htdocs,這可以從Apache主配置文件/application/apache/conf/httpd.conf中查到

[[email protected] local]# cat /application/apache/conf/httpd.conf|grep -i Documentroot
# DocumentRoot: The directory out of which you will serve your
DocumentRoot "/usr/local/apache/htdocs"執行默認的Apache站點目錄
# This should be changed to whatever you set DocumentRoot to.
# access content that does not live under the DocumentRoot.
[[email protected] local]#cat  /application/apache/htdocs/index.html
<html><body><h1>my name is fenghui</h1></body></html>

技術分享

2.4Apache的bin和log子目錄說明

1》bin 下的子目錄
ab            #Apache http服務器性能測試工具,簡單易用,同類軟件有jmeter,loadrunner,webbench等
apachectl     #Apache的啟動命令,apachectla是一個腳本
apxs          #它是一個為Apache http服務器編譯和安裝擴展模塊的工具,在進行DSO方式模塊編譯時會用到.如後文在編譯PHP軟件時就用到了此命令--with-apxs2=/application/apache/bin/apxs
htcacheclean  #這是清理磁盤緩沖區的命令,需要在編譯時指定相關參數才可以,一般很少用
htpasswd      #建立和更新基本認證文件,如,配置nagios等監控服務時會用到
httpd         #httpd為apache的控制命令,也還可以用apachect執行httpd
rotatelogs   #apache 自帶的日誌輪詢命令,也可以用,但在老男孩的工作場景習慣有cronolog等替代
2》logs子目錄(這是Apache默認的日誌路徑包括錯誤日誌即訪問日誌)
access_log   #這是Apache的默認訪問日誌文件,使用tail -f access.log 可以查看網站用戶訪問情況信息
error_log    #這是Apache的錯誤日誌文件,如果Apache出現啟動故障等問題時,一定要看這個文件
httpd.pid    #這是httpd的pid文件,http進程啟動後,會把所有進程的ID號寫到此文件
[[email protected] apache]# ps -ef |grep httpd|grep -v grep
root     28666     1  0 11:56 ?        00:00:00 /usr/local/apache/bin/httpd -k start
daemon   28667 28666  0 11:56 ?        00:00:00 /usr/local/apache/bin/httpd -k start
daemon   28668 28666  0 11:56 ?        00:00:00 /usr/local/apache/bin/httpd -k start
daemon   28669 28666  0 11:56 ?        00:00:00 /usr/local/apache/bin/httpd -k start
daemon   28670 28666  0 11:56 ?        00:00:00 /usr/local/apache/bin/httpd -k start
daemon   28671 28666  0 11:56 ?        00:00:00 /usr/local/apache/bin/httpd -k start
daemon   28727 28666  0 12:02 ?        00:00:00 /usr/local/apache/bin/httpd -k start
[[email protected] apache]# cat logs/httpd.pid 
28666
3》modules Apache的模塊目錄,比如PHP,memcaceh等模塊編譯後都在這裏

2.5Apache的擴展文件

Apache的擴展配置文件是通過在httpd.conf主配置文件中嵌入include命令實現的,不過默認情況是註釋狀態
摘錄http.conf主配置文件 中部分include行,如下所示;
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
如果取消此行前面的#號,表示開啟虛擬主機的配置,即加載conf/extra/httpd-vhosts.conf
# Local access to the Apache HTTP Server Manual
#Include conf/extra/httpd-manual.conf
# Distributed authoring and versioning (WebDAV)
#Include conf/extra/httpd-dav.conf
[[email protected] conf]# tree -L 2 /application/apache/conf/extra/
/application/apache/conf/extra/
├── httpd-autoindex.conf
├── httpd-dav.conf
├── httpd-default.conf  #這個文件配置的是Apache的相關服務參數,如超時時間,保持連接時間等
├── httpd-info.conf
├── httpd-languages.conf  #語言支持配置
├── httpd-manual.conf
├── httpd-mpm.conf   #服務器池管理,也就是優化Apache的一個配置文件,如選擇Apache的模式及配置連接數等,常用的模式有worker模式和profork模式
├── httpd-multilang-errordoc.conf
├── httpd-ssl.conf   #提供Apache SSL支持配置文件
├── httpd-userdir.conf
└── httpd-vhosts.conf   #這是虛擬主機的配置文件

2.6Apache虛擬主機的配置

2.6.1基於域名的虛擬主機實戰配置

1》開啟配置文件httpd.conf中包含httpd-vhosts.conf文件配置

使用vi命令編輯Apache主配置文件httpd.conf。具體步驟:
[[email protected] loveyu]# cd /application/apache/conf/
[[email protected] conf]# cp httpd.conf httpd.conf.loveyu.20170511
[[email protected] conf]# vi httpd.conf
404 # Virtual hosts
405 Include conf/extra/httpd-vhosts.conf
#取消"#"號等於打開虛擬主機的配置

2》配置虛擬主機(如果默認的虛擬主機配置不刪除,重啟Apache會報語法錯誤)進入虛擬主機配置文件,編輯虛擬主機配置文件 vi httpd-vhosts.conf具體操作如下

[[email protected] /]# cd /application/apache/conf/extra/
[[email protected] extra]# cp httpd-vhosts.conf httpd-vhosts.conf.loveyu.20170511
[[email protected] extra]# grep -v \# httpd-vhosts.conf
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/var/blog"     #(這個站點目錄必須存在不然會報錯)
ServerName blog.feitianxihuanni.org
ServerAliasfeitain.org
ErrorLog "logs/blog-error_log"
CustomLog "logs/blog-access_log" common
</VirtualHost>
[[email protected] extra]# mkdir /var/blog -p
#檢查語法錯誤:
[[email protected] extra]# ../../bin/apachectl -t
Syntax OK

3》建立虛擬主機的站點目錄和首頁index.html(測試用)

[[email protected] extra]# mkdir /var/blog -p

[[email protected] extra]# chown -R apache.apache /var/blog賦予權限,這個目錄就是將來放程序用的。此處的授權相當重要,本命令不是最安全的配置,更優化的站點目錄權限控制方法,見後文優化Apache部分,對於本節可以不執行

[[email protected] extra]# ../../bin/apachectl graceful重啟Apache服務

#提示:這裏是graceful參數,graceful表示優雅的重啟,這個參數可以在重啟是使正在瀏覽的用戶沒有感覺,不會強行中斷用戶的訪問參數,而是處理完畢請求後在重新啟動

4》在我們的筆記本電腦上編輯hosts文件添加如下內容

hosts文件的通用路徑為:C:\Windows\System32\drivers\etc,hosts文件是本地的DNS解析文件,其功能是把指定的域名解析成對應的IP,多個域名對應一個IP,默認情況下hosts文件中的配置解析優先於DNS服務器。

192.168.0.102www.feitian.com添加到hosts文件中,下面是虛擬主機的配置文件,加入了擴展模塊,在後面的博客中我們會介紹。

[[email protected] extra]# egrep  -v "^#|^$"  httpd-vhosts.conf
NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/var/blog"
    ServerName www.feitian.com
    ServerAlias	feitian.com
    ErrorLog "logs/blog-error_log"
     # CustomLog "logs/blog-access_log" common
    CustomLog "|/usr/local/sbin/cronolog /var/logs/access_www_%w.log" combined
	ExpiresActive On
	ExpiresDefault "access plus 12 month"
	ExpiresByType text/css "now plus 12 month"
	ExpiresByType image/jpeg "access plus 12 months"
	ExpiresByType image/x-icon "access plus 2 months"
	ExpiresByType text/javascript "access plus 12 month"
	ExpiresByType image/gif "access plus 12 month"
	ExpiresByType image/jpg "access plus 12 mont"
	ExpiresByType image/png "access plus 12 mont"
	ExpiresByType application/x-shockwave-flash "access plus 12 month"
	ExpiresByType video/x-flv "access plus 12 month"
	<ifmodule mod_deflate.c>  
	AddOutputFilterByType DEFLATE	text/html text/plain text/css  text/javascript  text/css
	AddOutputFilterByType DEFLATE	application/x-httpd-php
	AddOutputFilterByType DEFLATE	application/x-javascript
	AddOutputFilter DEFLATE js css		
	DeflateCompressionLevel 6  			
	SetOutputFilter DEFLATE  
	</ifmodule> 
</VirtualHost>

技術分享

下面是站點目錄中的index.html文件

[[email protected] extra]# ll /var/blog/
total 4
-rw-r--r-- 1 root root 161 Aug  3 18:50 index.html
[[email protected] extra]# cat /var/blog/index.html 
<html>
<head><title>feitian blog</title>
</head> 
<body>
<br><br><br><br>
I am fenghui
<br><br>
https://user.qzone.qq.com/2219701263/infocenter
</body>
</html>


本文出自 “13122323” 博客,請務必保留此出處http://13132323.blog.51cto.com/13122323/1953402

Apache 編譯安裝2.2