Apache 編譯安裝2.2
一、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]
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