第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

首頁 慕課教程 HTTP 入門教程 HTTP 入門教程 Web 服務(wù)器:APACHE HTTPD

Web 服務(wù)器:APACHE HTTPD

剛?cè)腴T Web 的小伙伴很容易迷失在 Apache、Tomcat、Httpd、Nginx 這些陌生詞匯中,所以在開始本章節(jié)的內(nèi)容前我們先來認(rèn)識下它們。

  • Apache:全球最權(quán)威的軟件開源協(xié)會,很多公司會把自己內(nèi)部的一些系統(tǒng)開源并提交申請給 Apache,讓 Apache 統(tǒng)一來管理這些開源項目為全世界的軟件做貢獻,同時也提升了公司的知名度和一些商業(yè)的戰(zhàn)略價值。尷尬的一點是早期的 Http Server 就叫做 Apache,后來的版本改名為 Httpd 了,所以很多人習(xí)慣說 Apache 服務(wù)器,其實默認(rèn)指的是 Httpd;

  • Httpd:Apache 旗下的 Web 服務(wù)器,它只提供靜態(tài)資源的訪問;

  • Tomcat:Apache 旗下的另一個開源項目,區(qū)別于 Httpd 的是它支持動態(tài)內(nèi)容服務(wù);

  • Nginx:Apache 的另一個開源服務(wù)器,但是更多時候拿他來作為代理服務(wù)器。Nginx 的功能非常強大,遠(yuǎn)超了 Http 服務(wù)器的范疇,更像是一個網(wǎng)絡(luò)管理工具。

1. Httpd 簡介

Httpd 是 C 語言編寫的遵從 Http 協(xié)議的服務(wù)器,是一個高度模塊化軟件,由 Server 和 Module 組成。這些模塊大都是動態(tài)模塊,因此可以隨時加載。

Httpd 作為起步比較早的一個 Web 開源項目,代碼的穩(wěn)定性/社區(qū)/文檔 都是比較可靠的,他支持的功能非常豐富,并且可以按需地引入自己所需要的模塊。

Httpd 一般比較的對象是 Nginx 服務(wù)器,他們兩個是靜態(tài)資源服務(wù)器的首選:

  • Nginx 輕量且并發(fā)能力高于 Httpd;
  • Nginx 能夠?qū)崿F(xiàn)負(fù)載均衡;
  • Httpd 支持的功能模塊比較豐富;
  • Httpd 的 rewrite 功能強于 Nginx。

當(dāng)然,也有的網(wǎng)站架構(gòu)同時用到了 Nginx 和 Httpd ,用 Nginx 作為負(fù)載均衡,將流量分發(fā)到后面的 Httpd Web服務(wù)端。

2. Httpd 的工作模型

對于請求 Httpd 有 3 種處理模型,MPM(Mulit Path Modules,多路徑處理模塊)它們會影響到 Httpd 的速度和可伸縮性。在編譯的時候可以根據(jù)需要使用 --with-mpm 選項來指定 Httpd 的工作方式,默認(rèn)是 prefork 模式。

工作模式 說明
prefork 服務(wù)器啟動時會生成多個進程,并且每一個進程處理一個請求,這種模式并發(fā)能力較差。
worker 服務(wù)啟動的時候也是會生成多個進程,但是每個進程又會生成多個線程,讓線程來負(fù)責(zé)處理請求。這種模式會比prefork并發(fā)能力好些。
event 基于事件的驅(qū)動,一個進程處理多個請求,這種模式的并發(fā)處理能力最強。

可以通過 httpd -V 命令查看當(dāng)前的工作模型:

Tips:比較舊的版本需要用 apachectl -V 命令來查看當(dāng)前工作模型。

$ httpd -V
Server version: Apache/2.4.18 (Unix)
Server built:   Feb 18 2020 02:28:26
Server's Module Magic Number: 20120211:52
Server loaded:  APR 1.5.2, APR-UTIL 1.5.4
Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture:   64-bit
Server MPM:     event
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)

不同的工作模式,對應(yīng)著不同的配置。

prefork

<IfModule prefork.c>
StartServers 5 # 啟動 apache 時啟動的 httpd 進程個數(shù)。
MinSpareServers 5 # 服務(wù)器保持的最小空閑進程數(shù)。
MaxSpareServers 10 # 服務(wù)器保持的最大空閑進程數(shù)。
MaxClients 150 # 最大并發(fā)連接數(shù)。
MaxRequestsPerChild 1000 # 每個子進程被請求服務(wù)多少次后被 kill 掉。0表示不限制,推薦設(shè)置為1000。
</IfModule>

worker

<IfModule worker.c> 
    StartServers 2 # 啟動 apache 時啟動的 httpd 進程個數(shù)。 
    MaxClients 150 # 最大并發(fā)連接數(shù)。 
    MinSpareThreads 25 # 服務(wù)器保持的最小空閑線程數(shù)。 
    MaxSpareThreads 75 # 服務(wù)器保持的最大空閑線程數(shù)。 
    ThreadsPerChild 25 # 每個子進程的產(chǎn)生的線程數(shù)。 
    MaxRequestsPerChild 0 # 每個子進程被請求服務(wù)多少次后被 kill 掉。0表示不限制,推薦設(shè)置為1000。 
</IfModule> 

event

<IfModule perchild.c> 
    NumServers 5 #服務(wù)器啟動時啟動的子進程數(shù) 
    StartThreads 5 #每個子進程啟動時啟動的線程數(shù) 
    MinSpareThreads 5 #內(nèi)存中的最小空閑線程數(shù) 
    MaxSpareThreads 10 #最大空閑線程數(shù) 
    MaxThreadsPerChild 2000 #每個線程最多被請求多少次后退出。0不受限制。 
    MaxRequestsPerChild 10000 #每個子進程服務(wù)多少次后被重新 fork。0表示不受限制。 
</IfModule> 

2.1 工作模型切換

prefork 模式效率比較高,但要比 worker 使用內(nèi)存更大,根據(jù)自己的需求選擇合適的工作模式,假如要切換工作模式可以通過下面的方法。我們前面提到,工作模式需要編譯的時候指定,下面操作生效的前提是編譯的時候選擇了所有模式 --enable-mpms-shared=all

vi /etc/httpd/conf.modules.d/00-mpm.conf

#LoadModule mpm_event_module modules/mod_mpm_event.so
//將注釋去掉,或者修改成需要的工作模型

3. Httpd 安裝

安裝模式有 2 種,手動離線安裝和 yum 安裝,由于 httpd 是 C 程序,如果是手動安裝的話要先安裝 C 對應(yīng)的環(huán)境和 httpd 依賴的一些包。yum 的安裝方式相對比較簡單。

3.1 yum 安裝 Httpd

yum install httpd.x86_64

3.2 Httpd 的主要配置

  • /etc/httpd/conf/httpd.conf:主配置文件;
  • /etc/httpd/conf.modules.d/*.conf:模塊配置文件;
  • /etc/httpd/conf.d/*.conf:輔助配置文件;
  • /var/log/httpd/access.log:訪問日志;
  • /var/log/httpd/error_log:錯誤日志;
  • /var/www/html/:用戶的 html 項目代碼。

3.3 啟動

添加 Httpd 開機啟動:

[root@localhost bin]# cp /usr/local/httpd/bin/apachectl /etc/rc.d/init.d/httpd

啟動 Httpd 服務(wù):

[root@localhost bin]# service httpd start

圖片描述

Httpd 啟動后默認(rèn)進入的是歡迎界面,我們的 Html 工程可以放在 /var/www/html,寫個 demo 的 index.html 。

<html>
<head></head>
<body>hello</body>
</html>

圖片描述

4. Httpd 常用命令

  • httpd -v:查看 httpd 的版本號;
  • httpd -l:查看編譯進 httpd 程序的靜態(tài)模塊;
  • httpd -M:查看已經(jīng)編譯進 httpd 程序的靜態(tài)模塊和已經(jīng)加載的動態(tài)模塊。

5. 小結(jié)

Httpd 是上面幾種服務(wù)器誕生最早的一個,所以它的代碼經(jīng)過長時間的修改和生產(chǎn)實際相對來說成熟很多,功能也很豐富,有強大的 rewrite 機制,模塊化按需加載,連工作模式都可以根據(jù)自己的需要在編譯的時候指定,但是因為靈活性比較高,初學(xué)者反而不容易掌握。