博文結(jié)構(gòu)
創(chuàng)新互聯(lián)建站專注于麥積網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供麥積營銷型網(wǎng)站建設(shè),麥積網(wǎng)站制作、麥積網(wǎng)頁設(shè)計(jì)、麥積網(wǎng)站官網(wǎng)定制、成都小程序開發(fā)服務(wù),打造麥積網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供麥積網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
安裝apache
工作模式
新版本的 httpd-2.4 新增以下特性;
新增模塊; mod_proxy_fcgi(可提供 fcgi 代理)
mod_ratelimit(限制用戶帶寬)
mod_request(請(qǐng)求模塊,對(duì)請(qǐng)求做過濾)
mod_remoteip(匹配客戶端的 IP 地址)
對(duì)于基于 IP 的訪問控制做了修改,不再支持 allow,deny,order 機(jī)制,而是統(tǒng)一使用 require 進(jìn)行
新增以下幾條新特性;
1、MPM 支持在運(yùn)行時(shí)裝載;不過要開啟這種特性,在編譯安裝要啟用這三種功能; --enable-mpms-shared=all --with-mpm=event
2、支持 event
3、支持異步讀寫
4、在每個(gè)模塊及每個(gè)目錄上指定日志級(jí)別
5、增強(qiáng)版的表達(dá)式分析器
6、每請(qǐng)求配置:
7、毫秒級(jí)別的 keepalive timeout
8、基于 FQDN 的虛擬主機(jī)不再需要 NameVirtualHost 指令
9、支持使用自定義變量
下載源碼包
注:apr(Apache Portable Runtime)Apache 可移植運(yùn)行庫,它是一個(gè)對(duì)操作系統(tǒng)調(diào)用的抽 象庫,用來實(shí)現(xiàn) Apache 內(nèi)部組件對(duì)操作系統(tǒng)的使用,提高系統(tǒng)的可移植性。 安裝 apr 和 apr-util
[root@localhost media]# ls
apr-1.5.2.tar.gz cronolog-1.6.2.tar.gz openssl-1.0.1u.tar.gz
apr-util-1.5.4.tar.gz httpd-2.4.23.tar.gz pcre-8.39.tar.gz
[root@localhost media]# tar zxf apr-1.5.2.tar.gz -C /usr/src/
[root@localhost media]# tar zxf apr-util-1.5.4.tar.gz -C /usr/src/
[root@localhost media]tar zxf zlib-1.2.8.tar.gz -C /usr/src/
[root@localhost media]# tar zxf pcre-8.39.tar.gz -C /usr/src/
[root@localhost media]# tar zxf httpd-2.4.23.tar.gz -C /usr/src/
[root@localhost media]# tar zxf openssl-1.0.1u.tar.gz -C /usr/src/
[root@localhost src]# cd /usr/src/
[root@localhost src]# ls
apr-1.5.2 apr-util-1.5.4 debug httpd-2.4.23 kernels openssl-1.0.1u pcre-8.39
[root@localhost src]# cd apr-1.5.2/
[root@www apr-1.5.2]# ./configure --prefix=/usr/local/apr
[root@www apr-1.5.2]# make && make install
[root@www ~]# cd apr-util-1.5.4/
[root@www apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@www apr-util-1.5.4]# make && make install
[root@www ~]# cd zlib-1.2.8/
[root@www zlib-1.2.8]# ./configure --prefix=/usr/local/zlib
[root@www zlib-1.2.8]# make && make install
[root@www ~]# cd pcre-8.39/
[root@www pcre-8.39]# ./configure --prefix=/usr/local/pcre
[root@www pcre-8.39]# make && make install
安裝 apache2.4.23 時(shí)提示 openssl 版本過低,centos7 自帶版本 openssl-1.0.1e
[root@www ~]# cd openssl-1.0.1u/
[root@www openssl-1.0.1u]# ./config -fPIC --prefix=/usr/local/openssl enable-shared
[root@www openssl-1.0.1u]# make && make install
[root@www ~]# mv /usr/bin/openssl /usr/bin/openssl.1.0.1e
[root@www ~]# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
[root@www ~]# cd httpd-2.4.23/
[root@www httpd-2.4.23]# ./configure --prefix=/usr/local/http-2.4.23 --enable-so --enable-cgi --enable-cgid --enable-ssl --with-ssl=/usr/local/openssl --enable-rewrite --with-pcre=/usr/local/pcre --with-z=/usr/local/zlib --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-mpm=event--enable-proxy --enable-proxy-fcgi --enable-expires --enable-deflate
[root@www httpd-2.4.23]# make && make install
[root@www httpd-2.4.23]# ln -s /usr/local/http-2.4.23/bin/* /usr/local/bin/
\\優(yōu)化 http 程序執(zhí)行路徑
[root@www httpd-2.4.23]# ln -s /usr/local/http-2.4.23/bin/* /usr/local/bin
\\修改配置文件 httpd.conf,設(shè)置其中的 ServerName 值
[root@www /]# /usr/local/http-2.4.23/apachectl start
[root@www httpd-2.4.23]# cp /usr/local/http-2.4.23/bin/apachectl /etc/init.d/httpd
\\開機(jī)后自動(dòng)啟動(dòng)
[root@www httpd-2.4.23]# vi /etc/init.d/httpd \\添加下面?zhèn)z行帶#
# chkconfig: 35 85 15 (在 3 和 5 啟動(dòng)模式下的--啟動(dòng)優(yōu)先級(jí))
# description: apache 2.4.23
[root@www httpd-2.4.23]# chkconfig --add httpd
[root@www httpd-2.4.23]# chkconfig httpd on
\\將 Apache 加入開機(jī)自動(dòng)啟動(dòng)
[root@www httpd-2.4.23]# service httpd start
[root@www httpd-2.4.23]# netstat -anplt | grep 80 tcp6
0 0 :::80 :::* LISTEN 4807/httpd
參數(shù)解釋:
--enable-so:支持動(dòng)態(tài)共享模塊(即打開 DSO 支持)
--enable-rewrite:支持 url 重寫
--enable-ssl:支持 ssl --with-ssl=/usr/local/openssl:指定 ssl 安裝位置
--enable-cgi:?jiǎn)⒂?cgi --enable-cgid:MPM 使用的是 event 或 worker 要啟用 cgid -
-enable-modules=most:明確指明要靜態(tài)編譯到 httpd 二進(jìn)制文件的模塊,為 空格分隔的模塊名列表、all 或者 most,all 表示包含所有模塊,most 表示包含大部分常用模 塊
--enable-mods-shared=most:明確指明要以 DSO 方式編譯的模塊,為空格分隔 的模塊名列表、all 或者 most,all 表示包含所有模 塊,most 表示包含大部分模塊
--enable-mpms-shared=all:啟用 MPM 所有支持的模式,這樣 event、worker、prefork 就會(huì)以 模塊化的方式安裝,要用哪個(gè)就在 httpd.conf 里配置就好了。
--with-mpm=event:指定啟用的 mpm 模式,默認(rèn)使用 enevt 模式,在 apache 的早期版本 2.0 默認(rèn) prefork,2.2 版本是 worker,2.4 版本是 event.
--with-pcre=/usr/local/pcre:支持 pcre
--with-z=/usr/local/zlib:使用 zlib 壓縮庫
--with-apr=/usr/local/apr:指定 apr 的安裝路徑
--with-apr-util=/usr/local/apr-util:指定 apr-util 的安裝路徑
apache 所運(yùn)行的硬件環(huán)境都是對(duì)性能影響大的因素,即使不能對(duì)硬件進(jìn)行升級(jí),也最好 給 apache 一個(gè)單獨(dú)的主機(jī)以免受到其他應(yīng)用的干擾。各個(gè)硬件指標(biāo)中,對(duì)性能影響大的 是內(nèi)存,對(duì)于靜態(tài)內(nèi)容(圖片、javascript 文件、css 文件等),它決定了 apache 可以緩存多 少內(nèi)容,它緩存的內(nèi)容越多,在硬盤上讀取內(nèi)容的機(jī)會(huì)就越少,大內(nèi)存可以極大提高靜態(tài)站 點(diǎn)的速度;對(duì)動(dòng)態(tài)高負(fù)載站點(diǎn)來說,每個(gè)請(qǐng)求保存的時(shí)間更多一些,apache 的 mpm 模塊會(huì) 為每個(gè)請(qǐng)求派生出相應(yīng)的進(jìn)程或線程分別處理,而進(jìn)程或線程的數(shù)量與內(nèi)存的消耗近似成正 比,因此增大內(nèi)存對(duì)提高動(dòng)態(tài)站點(diǎn)的負(fù)載和運(yùn)行速度也極為有利 其次是硬盤的速度,靜態(tài)站點(diǎn)尤為突出,apache 不斷的在讀取文件并發(fā)送給相應(yīng)的請(qǐng)求, 硬盤的讀寫是極其頻繁的;動(dòng)態(tài)站點(diǎn)也要不斷的加載 web 程序(php 等),一個(gè)請(qǐng)求甚至要讀 取十幾個(gè)文件才能處理完成,因此盡可能的提高硬盤速度和質(zhì)量對(duì)提高 apache 的性能是有 積極意義的。 最后是 cpu 和網(wǎng)絡(luò),cpu 影響的是 web 程序執(zhí)行速度,網(wǎng)絡(luò)影響流量大小。
Apache HTTP 服務(wù)器被設(shè)計(jì)為一個(gè)強(qiáng)大的、靈活的能夠在多種平臺(tái)以及不同環(huán)境下工作的服 務(wù)器。這種模塊化的設(shè)計(jì)就叫做“多進(jìn)程處理模塊”(Multi-Processing Module,MPM),也叫 做工作模式
注:如果要更改工作模式里面的進(jìn)程需要到主配置文件里面把
[root@www ~]# vi /usr/local/http-2.4.23/conf/httpd.conf
Include conf/extra/httpd-mpm.conf \這條前面#去掉就可以更改進(jìn)程了(大約在456頁搜索mpm)
[root@www /]# ps -ef | grep httpd \看進(jìn)程
[root@www /]# apachectl -t \jian檢查語法
其工作方式:當(dāng)Apache服務(wù)啟動(dòng)后,mpm_prefork模塊會(huì)預(yù)先創(chuàng)建多個(gè)子進(jìn)程(默認(rèn)為5個(gè)),每個(gè)子進(jìn)程只有一個(gè)線程,當(dāng)接收到客戶端請(qǐng)求后,mpm_prefork模塊再將請(qǐng)求轉(zhuǎn)交給子進(jìn)程進(jìn)行處理,并且每個(gè)子進(jìn)程同時(shí)只能用于單個(gè)請(qǐng)求。如果當(dāng)前的請(qǐng)求數(shù)將超過預(yù)先創(chuàng)建的子進(jìn)程數(shù)時(shí),mpm_prefork模塊就會(huì)創(chuàng)建新的子進(jìn)程來處理額外的請(qǐng)求。
[root@localhost ~]# vim /usr/local/http-2.4.23/conf/httpd.conf
//編寫httpd的主配置文件,修改一下內(nèi)容
Include conf/extra/httpd-mpm.conf //默認(rèn)存在刪除“#”號(hào)即可
#LoadModule mpm_event_module modules/mod_mpm_event.so
//添加#號(hào)
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
//默認(rèn)存在,刪除#號(hào)即可!
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
//這三行便是apache的三種工作模式,可根據(jù)實(shí)際情況進(jìn)行切換
[root@localhost ~]# systemctl restart httpd //重新啟動(dòng)httpd服務(wù)
[root@localhost ~]# systemctl start httpd //手動(dòng)再啟動(dòng)一下
[root@localhost ~]# httpd -V //查看httpd的工作模式
//找到這一行即可
Server MPM: prefork //可以看到現(xiàn)在Apache工作在prefork模式
[root@www ~]# apachectl –l //小寫 L,只顯示靜態(tài)模塊)
[root@www ~]# vi /usr/local/http-2.4.23/conf/extra/httpd-mpm.conf
//設(shè)置prefork模式也就只有這幾個(gè)參數(shù),具體含義:
//這就是prefork工作模式的參數(shù)-
StartServers 5 //apache啟動(dòng)時(shí)默認(rèn)開啟的子進(jìn)程數(shù)
MinSpareServers 5 //最小的閑置子進(jìn)程數(shù)
MaxSpareServers 10 //大的閑置子進(jìn)程數(shù)
MaxRequestWorkers 250 // 設(shè)置了允許同時(shí)的大接入請(qǐng)求數(shù)量
MaxConnectionsPerChild 0 //0表示每個(gè)子進(jìn)程處理完數(shù)據(jù)后進(jìn)程永不銷毀,設(shè)置成非0時(shí),可防止內(nèi)存泄漏,服務(wù)器在負(fù)載小時(shí)自動(dòng)減少自己進(jìn)程數(shù)
優(yōu)點(diǎn):成熟,兼容所有新老模塊。進(jìn)程之間完全獨(dú)立,使得它非常穩(wěn)定。同時(shí),不需要擔(dān)心線程安全的問題。(我們常用的mod_php,PHP的拓展不需要支持線程安全)
缺點(diǎn):一個(gè)進(jìn)程相對(duì)占用更多的系統(tǒng)資源,消耗更多的內(nèi)存。而且,它并不擅長(zhǎng)處理高并發(fā)請(qǐng)求,在這種場(chǎng)景下,它會(huì)將請(qǐng)求放進(jìn)隊(duì)列中,一直等到有可用進(jìn)程,請(qǐng)求才會(huì)被處理。
和 prefork 模式相比,worker 使用了多進(jìn)程和多線程的混合模式,worker 模式也同樣會(huì)先預(yù)派生一些子進(jìn)程,然后每個(gè)子進(jìn)程創(chuàng)建一些線程,同時(shí)包括一個(gè)監(jiān)聽線程,每個(gè)請(qǐng)求過來會(huì) 被分配到一個(gè)線程來服務(wù)。線程比起進(jìn)程會(huì)更輕量,因?yàn)榫€程是通過共享父進(jìn)程的內(nèi)存空間, 因此,內(nèi)存的占用會(huì)減少一些,在高并發(fā)的場(chǎng)景下會(huì)比 prefork 有更多可用的線程,表現(xiàn)會(huì) 更優(yōu)秀一些;另外,如果一個(gè)線程出現(xiàn)了問題也會(huì)導(dǎo)致同一進(jìn)程下的線程出現(xiàn)問題,如果是 多個(gè)線程出現(xiàn)問題,也只是影響 Apache 的一部分,而不是全部。由于用到多進(jìn)程多線程, 需要考慮到線程的安全了,在使用 keep-alive 長(zhǎng)連接的時(shí)候,某個(gè)線程會(huì)一直被占用,即使 中間沒有請(qǐng)求,需要等待到超時(shí)才會(huì)被釋放(該問題在 prefork 模式下也存在) 總的來說,prefork 方式速度要稍高于 worker,然而它需要的 cpu 和 memory 資源也稍多于 woker。
/自行修改httpd主配置文件,切換模式并重啟服務(wù),接下來
[root@localhost ~]# vim /usr/local/http-2.4.23/conf/extra/httpd-mpm.conf
//這是worker工作模式的參數(shù)
StartServers 3 //apache啟動(dòng)時(shí)默認(rèn)開始的子進(jìn)程數(shù)
MinSpareThreads 75 //最小空閑數(shù)量的工作線程-
MaxSpareThreads 250 //大空閑數(shù)量的工作線程-
ThreadsPerChild 25 //每個(gè)子進(jìn)程產(chǎn)生的線程數(shù)量
MaxRequestWorkers 400 //每個(gè)進(jìn)程大接受的請(qǐng)求數(shù)量
MaxConnectionsPerChild 0 //表示永不銷毀
Worker模式下所能同時(shí)處理的請(qǐng)求總數(shù)是由子進(jìn)程總數(shù)乘以ThreadsPerChild 值決定的,應(yīng)該大于等于MaxRequestWorkers。如果負(fù)載很大,現(xiàn)有的子進(jìn)程數(shù)不能滿足時(shí),控制進(jìn)程會(huì)派生新的子進(jìn)程。默認(rèn)大的子進(jìn)程總數(shù)是16,加大時(shí) 也需要顯式聲明ServerLimit(大值是20000)。需要注意的是,如果顯式聲明了ServerLimit,那么它乘以 ThreadsPerChild的值必須大于等于MaxRequestWorkers,而且MaxRequestWorkers必須是ThreadsPerChild的整數(shù)倍,否則 Apache將會(huì)自動(dòng)調(diào)節(jié)到一個(gè)相應(yīng)值。
優(yōu)點(diǎn):占據(jù)更少的內(nèi)存,高并發(fā)下表現(xiàn)更優(yōu)秀。
缺點(diǎn):必須考慮線程安全的問題,因?yàn)槎鄠€(gè)子線程是共享父進(jìn)程的內(nèi)存地址的。如果使用keep-alive的長(zhǎng)連接方式,也許中間幾乎沒有請(qǐng)求,這時(shí)就會(huì)發(fā)生阻塞,線程被掛起,需要一直等待到超時(shí)才會(huì)被釋放。如果過多的線程,被這樣占據(jù),也會(huì)導(dǎo)致在高并發(fā)場(chǎng)景下的無服務(wù)線程可用。(該問題在prefork模式下,同樣會(huì)發(fā)生)。
這是 Apache 最新的工作模式,是 worker 模式的變種,它把服務(wù)進(jìn)程從連接中分離出來,一 worker 模式不同的是在于它解決了 keep-alive 長(zhǎng)連接的時(shí)候占用線程資源被浪費(fèi)的問題,在 event 工作模式中,會(huì)有一些專門的線程用來管理這些 keep-alive 類型的線程,當(dāng)有真實(shí)請(qǐng)
求過來的時(shí)候,將請(qǐng)求傳遞給服務(wù)器的線程,執(zhí)行完畢后,又允許它釋放。這增強(qiáng)了在高并 發(fā)場(chǎng)景下的請(qǐng)求處理。event 模式不能很好的支持 https 的訪問(HTTP 認(rèn)證相關(guān)的問題)。
地址空間:進(jìn)程內(nèi)的一個(gè)執(zhí)行單元;進(jìn)程至少有一個(gè)線程;它們共享進(jìn)程的地址空間;而進(jìn)程有自己獨(dú)立的地址空間;
資源擁有:進(jìn)程是資源分配和擁有的單位,同一個(gè)進(jìn)程內(nèi)的線程共享進(jìn)程的資源;
線程是處理器調(diào)度的基本單位,但進(jìn)程不是;
二者均可并發(fā)執(zhí)行;
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。