apache 安裝與配置詳細教程

Linux Apache web服務器

學習要點:

1.apache用途,工作模式,httpd.conf的配置重要參數
2.虛擬主機
3. 工作模式的參數優化

Apache 概述:

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

apache發佈靜態站點,html jpg htm jss  png css txt 

wget -r -x http://www.baidu.com  抓取網站內容

進程(Process)是計算機中的程序關於某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操作系統結構的基礎。在早期面向進程設計的計算機結構中,進程是程序的基本執行實體;在當代面向線程設計的計算機結構中,進程是線程的容器。程序是指令、數據及其組織形式的描述,進程是程序的實體。
線程,有時被稱爲輕量級進程(Lightweight Process,LWP),是程序執行流的最小單元。一個標準的線程由線程ID,當前指令指針(PC),寄存器集合和堆棧組成。另外,線程是進程中的一個實體,是被系統獨立調度和分派的基本單位,線程自己不擁有系統資源,只擁有一點兒在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源。

1) 從概念上

進程:一個程序對一個數據集的動態執行過程,是分配資源的基本單位。
線程:一個進程內的基本調度單位。
線程的劃分尺度小於進程,一個進程包含一個或者更多的線程。
進程是系統進行資源分配和調度的一個獨立單位.
本單位.線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源。

2) 從執行過程中來看

進程:擁有獨立的內存單元,而多個線程共享內存,從而提高了應用程序的運行效率。
線程:每一個獨立的線程,都有一個程序運行的入口、順序執行序列、和程序的出口。但是線程不能夠獨立的執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。

3) 從邏輯角度來看:(重要區別)

多線程的意義在於一個應用程序中,有多個執行部分可以同時執行。但是,操作系統並沒有將多個線程看做多個獨立的應用,來實現進程的調度和管理及資源分配。

apache的特點:

功能強大,配置簡單,帶度快,處理靜態文件 ,應用廣泛,性能穩定,並支持代理和負載均衡

apache適應場合

apache運行靜態html網頁,圖片,處理靜太小文件不如ningx
apache結合php引擎運行php,perl, python等程序 LAMP
apache結合tomcat resin運行jsp java等程序,
apache作代理,負載,rewrite規測過濾

Apache 的工作模式

  1. prefork:它是一個無線程設計的工作模式,進程與進程之間相互獨立,一個連接佔一個子進程,如果現有的子進程不能滿足負載控制進程將派生新的子進程,可以通過配置文件來定義, 這種工作模式的優點是性能高,且比較穩定,不適用於高併發網站,比較消耗內存,如1個進程佔用100M的內存,若內存只有1G那麼只有1000/100=10個連接可用

  2. worker:它是一個多進程多線程混合工作模式,線程共享進程的內存,一個工作進程(子進程)可以處理大量的連接 ,如果其中的一個子進程斷開,那麼整個子進程的所有線程將會斷開,也就是說所有的連接將會斷開。如果現有子進程中的線程總數不能滿足負載控制進程將派生新的子進程,這種工作模式的優點是網站併發能力強,但不太穩定
    這個嘛

  3. event:
    這是Apache最新的工作模式,它和worker模式很像,不同的是在於它解決了keep-alive長連接的時候佔用線程資源被浪費的問題,在event工作模式中,會有一些專門的線程用來管理這些keep-alive類型的線程,當有真實請求過來的時候,將請求傳遞給服務器的線程,執行完畢後,又允許它釋放。這增強了在高併發場景下的請求處理。Event MPM不能在安全HTTP(HTTPS)訪問下工作。

prefork模式:apache默認工作模式

每個工作進程(子進程)處理一個請求連接,如果默認啓動的工作進程滿了,新來的請求,會佔用空閒進程連接,空閒進程不夠,master會預先生成更多的進程,直到所有的請求數(併發數)達到maxclient爲止。
worker模式:
每個工作進程(子進程)生成多個線程,每個線程接受新來的請求,空閒進程不夠,master會預先生成更多的工作進程,工作進程再生成多個線程,滿足用戶來訪問,直到所有的請求數(併發數)達到maxclient爲止。

查詢apache的工作模式

[root@localhost httpd]# httpd -l

<IfModule mpm_prefork_module>
StartServers              8        #工作進程(子進程), master進程只有1個,一般配置8-16個預派生 
ServerLimit            1500     #系統設置最大進程數,如果MaxClients超出了ServerLimit定義的範圍那麼它將無效,它的默認值爲256
MinSpareServers         25           #默認生成的最少空閒進程數 ,表示目前沒有接受任何連接也就是沒有佔用任何內存且連接資源
MaxSpareServers        75               #默認生成的最多空閒進程數
MaxClients           1000       #  最大客戶端數,即同時允許的併發連接數,建議配置1000-4096,5000*3600*8
MaxRequestsPerChild   10000             #最大請求數,0代表不限,不推薦這樣配置。它的含義是如果把值配置成10000,當達到10001時,也就是直到超過1萬個請求後它將會從1重新開始
</IfModule>

<IfModule mpm_worker_module>
StartServers                  2           #工作進程(子進程),master進程只有1個
MaxClients                   150         #每秒總的併發數。每個子進程處理最大請求數,是他下屬線程請求數之和,最好不要超過5000
MinSpareThreads          25             #默認生成的最少線程數
MaxSpareThreads         75             #默認生成的最少最多線程數
ThreadsPerChild            25            #每個子進程所支持的線程數,是他下屬線程請求數之和, 這裏爲25,不能超過75
MaxRequestsPerChild    0             #最大請求數,0代表不限,不推薦這樣配置,如果配置成10000,當達到10001時,重新從1開始處理
</IfModule>

MaxClients of 1000 exceeds ServerLimit value of 256 servers, 

需要設置ServerLimit 1000

maxclients = statservers X Threadsperchild

通過加載模塊的方式加載運行模式的模塊

vim /etc/httpd/conf.modules.d/00-mpm.conf
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

cd /etc/httpd/modules
[root@localhost httpd]# ls modules/mod_mpm_
mod_mpm_event.so    mod_mpm_prefork.so  mod_mpm_worker.so 

Apache 安裝

yum 安裝

yum install httpd* -y

yum install apr-devel apr-util-devel gcc* pcre pcre-devel –y;      安裝依賴包

源碼包安裝:

1、apr安裝
wget -c http://mirrors.cnnic.cn/apache/apr/apr-1.5.2.tar.bz2
tar xvf apr-1.5.2.tar.bz2;cd apr-1.5.2
./configure --prefix=/usr/local/apr/ && make && make install

2、apr-util安裝
wget -c http://mirrors.cnnic.cn/apache/apr/apr-util-1.5.4.tar.bz2
tar xvf apr-util-1.5.4.tar.bz2
cd ../apr-util
./configure --prefix=/usr/local/apr-util/ --with-apr=/usr/local/apr/ && make && make install

3、pcre安裝
wget -c ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.bz2
tar xvf pcre-8.39;cd pcre-8.39
./configure --prefix=/usr/local/pcre && make && make install

   下載源碼包     httpd-2.4.25.tar.gz   
wget –c https://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.25.tar.gz
tar xvf httpd-2.4.25.tar.gz;cd httpd-2.4.25; ./configure --prefix=/usr/local/apache/ --with-arp=/usr/local/apr --with-apr-util=/usr/local/arp-util --with-pcre=/usr/local/pcre --with-mpm=prefork 
make; make install

tar xvf httpd-2.4.25.tar.gz;cd httpd-2.4.25;
 ./configure --prefix=/usr/local/apache/ \
--enable-rewrite \
--enable-deflate \
--enable-expires \
--enable-headers \
--enable-modules=most \
--enable-so \
--with-mpm=worker \
--enable-rewrite && make && make install

--with-mpm=prefork    # 指定工作模式
--enable-rewrite      #  開啓rewrite模塊
--enable-so                #  DSO capability

發佈目錄  /user/local/apache/htdocs/

apache 服務與端口

端口:80
yum安裝方式: server httpd restart

源碼安裝方式: 
/usr/local/apache/bin/apachectl  graceful           # 方式1
/usr/local/apache/bin/httpd -k restart                # 方式2
/usr/local/apache/bin/httpd  -t  配置語法檢查      # 檢查配置
apachectl -t 配置語法檢查

將源碼安裝的命令做成軟鏈接,直接使用
ls –n /usr/local/apache/bin/apachectl /usr/bin

Apachectl retart  # 鏈接完後,可簡寫

-k  start stop restart graceful
-h  幫助文件
-t  檢查錯誤

ipocnfig/fushdns  刷新本地DNS

配置成系統服務:

#  cp /usr/local/apache/bin/apachectl /etc/init.d/httpd 
#  cp /usr/local/apache/bin/apachectl /usr/local/bin/httpd
#  ln -s /etc/init.d/httpd  /etc/rc.d/rc5.d/S61httpd
#  ln -s /etc/init.d/httpd  /etc/rc.d/rc4.d/S61httpd
#  ln -s /etc/init.d/httpd  /etc/rc.d/rc3.d/S61httpd

打開/etc/init.d/httpd文件在#!/bin/bash下面加入
  #chkconfig:345 61 61 
  #description:Apache

設置系統自啓動

執行chkconfig --list |grep httpd就會出現httpd服務開機運行在345級別
註冊服務 chkconfig --add httpd
設置啓動級別 chkconfig --levels 345 httpd on
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章