apache基本部署

來源:互聯網
上載者:User

標籤:網路負載   實驗   admin   控制   並發   ref   timeout   dsp   選項   

 

工作模式1、Prefork MPM

Prefork MPM實現了一個非線程的、預派生的web伺服器。它在Apache啟動之初,就先預派生一些子進程,然後等待串連;可以減少頻繁建立和銷毀進程的開銷,每個子進程只有一個線程,在一個時間點內,只能處理一個請求。這是一個成熟穩定,可以相容新老模組,也不需要擔心安全執行緒問題,但是一個進程相對佔用資源,消耗大量記憶體,不擅長處理高並發的情境。(-1)


2、Worker MPM
和prefork模式相比,worker使用了多進程和多線程的混合模式,worker模式也同樣會先預派生一些子進程,然後每個子進程建立一些線程,同時包括一個監聽線程,每個請求過來會被分配到一個線程來服務。線程比起進程會更輕量,因為線程是通過共用父進程的記憶體空間,因此,記憶體的佔用會減少一些,在高並發的情境下會比prefork有更多可用的線程,表現會更優秀一些;另外,如果一個線程出現了問題也會導致同一進程下的線程出現問題,如果是多個線程出現問題,也只是影響Apache的一部分,而不是全部。由於用到多進程多線程,需要考慮到線程的安全了,在使用keep-alive長串連的時候,某個線程會一直被佔用,即使中間沒有請求,需要等待到逾時才會被釋放(該問題在prefork模式下也存在)。(-2)


3、Event MPM
這是Apache的工作模式,它和worker模式很像,不同的是在於它解決了keep-alive長串連的時候佔用線程資源被浪費的問題,在event工作模式中,會有一些專門的線程用來管理這些keep-alive類型的線程,當有真實請求過來的時候,將請求傳遞給伺服器的線程,執行完畢後,又允許它釋放。這增強了在高並發情境下的請求處理。





查看apache工作模式:
# httpd -V

切換工作模式:
rpm安裝的apache
#vim /etc/sysconfig/httpd
#vim /etc/httpd/conf.modules.d/00-mpm.conf
修改不同的載入模組

編譯安裝的apache
./configure --prefix=""
編譯安裝需要指定
在configure配置編譯參數的時候,可以使用 --with-mpm=prefork|worker|
event 來指定編譯為那一種MPM,當然也可以用編譯為三種都支援:--enable-
mpms-shared=all,這樣在編譯的時候會在modules目錄下自動編譯出三個
MPM檔案的so,然後通過修改httpd.conf設定檔更改MPM

注意:切換非進程模式需要關閉PHP

初始化進程數
最大空閑進程數
最小空閑進程數
最高並發
每個進程可以接受的串連的次數

初始化進程數
最大空閑進程數
最小空閑進程數
每個進程內的線程數
最高並發
每個進程可以接受的串連的次數

進程模式
線程模式
event模式:
以上兩種穩定的MPM方式在非常繁忙的伺服器應用下都有些不足。儘管HTTP的Keepalive方式能減少TCP串連數量和網路負載,但是 Keepalive需要和服務進程或者線程綁定,這就導致一個繁忙的伺服器會耗光所有的線程。 Event MPM是解決這個問題的一種新模型,它把服務進程從串連中分離出來。在伺服器處理速度很快,同時具有非常高的點擊率時,可用的線程數量就是關鍵的資源限制,此時Event MPM方式是最有效。一個以Worker MPM方式工作的繁忙伺服器能夠承受每秒好幾萬次的訪問量(例如在大型新聞服務網站的高峰時),而Event MPM可以用來處理更高負載。值得注意的是,Event MPM不能在安全HTTP(HTTPS)訪問下工作。
對於Event 模式,apache給出了以下警告:
This MPM is experimental, so it may or may not work as expected .
這種MPM目前處於實驗狀態,他可能不能按照預期的那樣工作。

rpm安裝方式預設3種模式都支援


進程模式:
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256 進程上限
MaxClients 256 最大並發
MaxRequestsPerChild 4000
</IfModule>

線程模式:
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>

event模式:
<IfModule mpm_event_module>
StartServers 3
ServerLimit 16
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400 //同MaxClients
MaxConnectionsPerChild 1000
</IfModule>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
timeout 15

--------------------

keepalive 長串連(保持串連,持久串連)
開啟keepalive:
KeepAlive On //on是開啟,Off是關閉
eepAliveTimeout 15 //兩次get檔案之間的時間間隔
MaxKeepAliveRequests 100 //每次長串連能接受的請求最大次數

開啟進程
client---server

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
keepalive apache設定檔內的一個選項
keepalive tcp/ip也有keepalive
keepalived 高可用方案

 

存取控制

準備測試目錄:
#mkdir /var/www/html/site1
#echo site1 > /var/www/html/site1/index.html
#cat /var/www/html/site1/index.php
<?php
phpinfo();
?>

存取控制測試:
允許所有主機訪問:
<Directory "/var/www/html/site1">
AllowOverride None
Require all granted //wing測試這是預設值,不寫也可
</Directory>

AllowOverride All 允許子目中的 .htaccess 中的設定覆蓋當前設定
AllowOverride None 不允許子目中的 .htaccess 中的設定覆蓋當前設定

只允許一部分用戶端訪問:
<Directory "/var/www/html/site1">
AllowOverride None
Require ip 192.168.245.3 //可以寫網段
Require ip 127.0.0.1
</Directory>


只拒絕一部分用戶端訪問:
<Directory "/var/www/html/site1">
AllowOverride None
<RequireAll>
Require not ip 127.0.0.1 192.168.245.3
Require all granted
</RequireAll>
</Directory>

拒絕所有用戶端訪問:
<Directory "/var/www/html/site1">
AllowOverride None
<RequireAll>
Require all denied
</RequireAll>
</Directory>

wing測試apache 2.2寫法依然生效:
<Directory "/var/www/html/site1">
AllowOverride None
Order allow,deny
Deny from all
</Directory>

<Directory "/var/www/html/site1">
AllowOverride None
Order deny,allow //allow和deny誰寫後面先看誰,跟下面deny和allow的順序無關
Deny from all
Allow from 192.168.245.3
</Directory>

單獨控制某些分頁檔是否可被某些用戶端訪問:
<Directory "/var/www/html/site1">
AllowOverride None
Require all granted
<Files ~ "\.php$" >
Order allow,deny
Deny from all
</Files>
</Directory>

~ 表示匹配
\.php$ .php
\ 逸出字元
$ 表示以前置字元結尾

基於使用者的存取控制:訪問時需要使用者名稱和密碼
1. 建立密碼檔案(添加第一個賬戶)
# htpasswd -cm /etc/httpd/conf/httppasswd user1
-c 建立密碼檔案
-m MD5方式加密

添加多個其他賬戶:
# htpasswd -m /etc/httpd/conf/httppasswd user2

2. 配置支援認證
修改主設定檔:
<Directory "/var/www/html/site1">
AllowOverride All
Require all granted
</Directory>

3.建立.htaccess檔案:
# vim /var/www/html/site1/.htaccess
AuthName "hello kity"
AuthType Basic
AuthUserFile "/etc/httpd/conf/httppasswd"
Require valid-user

 

apache基本部署

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.