Awọn imọran 5 lati ṣe alekun Išẹ ti Olupin Wẹẹbu Apache Rẹ


Gẹgẹbi ijabọ kan laipẹ nipasẹ Netcraft (ile-iṣẹ Intanẹẹti ti o mọ daradara ti o pese laarin awọn iṣẹ miiran awọn iṣiro lilo aṣawakiri wẹẹbu), Apache tẹsiwaju lati jẹ olupin ayelujara ti o lo julọ julọ laarin awọn aaye ati awọn kọnputa ti nkọju si Intanẹẹti.

Ni afikun, Apache n ni iriri idagbasoke ti o tobi julọ laarin awọn olupin wẹẹbu ti o ga julọ, atẹle nipa Nginx ati IIS. Nitorinaa, ti o ba jẹ oluṣakoso eto ni idiyele ti iṣakoso awọn fifi sori Apache, o nilo lati mọ bi o ṣe le rii daju pe olupin ayelujara rẹ ṣe ni agbara ti o dara julọ ni ibamu si awọn aini rẹ (tabi iwọ alabara).

Ninu àpilẹkọ yii a yoo jiroro awọn imọran diẹ ti yoo ṣe iranlọwọ fun ọ lati rii daju pe Apache yoo ṣiṣẹ laisiyonu ati ni anfani lati mu nọmba awọn ibeere ti o n reti lati ọdọ awọn alabara latọna jijin.

Sibẹsibẹ, jọwọ ranti pe a ko ṣe apẹrẹ Apache pẹlu idi ti siseto awọn igbasilẹ ala - ṣugbọn, paapaa bẹ, o tun lagbara lati pese iṣẹ giga ni fere eyikeyi ọran lilo ti o le ṣee ronu.

Sample # 1: Nigbagbogbo pa Apache ni imudojuiwọn si ẹya tuntun rẹ

O lọ laisi sọ pe nini ẹya tuntun ti Apache ti fi sori ẹrọ jẹ ọkan ninu awọn ohun akọkọ ti o nilo lati ronu. Gẹgẹ bi Oṣu Kọkànlá Oṣù 19, 2015, ẹya tuntun ti Apache ti o wa ni awọn ibi ipamọ CentOS 7 jẹ 2.4.6, lakoko ti Debian’s jẹ 2.4.10.

Sibẹsibẹ, ilọsiwaju ti aipẹ kan le wa tabi atunṣe kokoro ti a ti fi kun si ẹya iduroṣinṣin ti a tu sita, eyiti o jẹ ki o wa lati ṣe igbasilẹ ati fi sori ẹrọ lati orisun. Akopọ ati awọn ilana fifi sori ẹrọ ni a tun pese nibi - kan ranti pe ti o ba yan ọna imudojuiwọn yii, o le fẹ ṣe afẹyinti awọn faili iṣeto/lọwọlọwọ/awọn olugbalejo fojuṣe bi iṣọra kan.

Ni eyikeyi iṣẹlẹ, o le ṣayẹwo ẹya ti a fi sii lọwọlọwọ bi atẹle:

# httpd -v               [On RedHat/CentOS based systems]
# apache2 –v             [On Debian/Ubuntu based systems] 

Gẹgẹbi ofin atanpako, duro pẹlu ọna imudojuiwọn ti a pese nipasẹ oluṣakoso package ti pinpin ti o yan ( yum imudojuiwọn httpd tabi aptitude ailewu-igbesoke apache2 , fun CentOS tabi Debian, lẹsẹsẹ) ayafi ti ko ba si ọna miiran. O le ka awọn akọsilẹ itusilẹ tuntun ni apakan Iwe Akọsilẹ Apache ni oju opo wẹẹbu Project Project Apache HTTP.

Sample # 2: Ti o ba nlo Ekuro ti o dagba ju 2.4, ronu igbesoke ni bayi

Kí nìdí? Awọn ẹya ekuro 2.4 ati loke ni ipe eto ekuro sendfile ṣiṣẹ nipasẹ aiyipada. Iyẹn, lapapọ, n mu awọn gbigbe faili nẹtiwọọki iṣẹ ṣiṣe ga (eyiti o fẹ ni ọna ti awọn ibaraẹnisọrọ olupin olupin wẹẹbu) ati jẹ ki Apache lati fi akoonu aimi yiyara ati pẹlu iṣamulo Sipiyu kekere nipasẹ ṣiṣe kika nigbakan ati firanṣẹ awọn iṣẹ.

O le wo ekuro ti o fi sii lọwọlọwọ pẹlu:

# uname -r

ki o ṣe afiwe rẹ si ekuro iduroṣinṣin tuntun ni www.kernel.org (4.3 ni akoko kikọ yi).

Biotilẹjẹpe o jẹ ilana ti a ko pinnu fun awọn olubere, igbesoke ekuro rẹ jẹ adaṣe ti o nifẹ lati ni imọ siwaju sii nipa awọn inu ti Linux.

AKỌRỌ # 3: Yan Modulu Ilana Pupọ (MPM) ti o ṣiṣẹ dara julọ fun ọran rẹ

Ni iṣe, awọn MPM faagun iṣẹ-ṣiṣe modular ti Apache nipa gbigba ọ laaye lati pinnu bi o ṣe le tunto olupin wẹẹbu lati sopọ si awọn ibudo nẹtiwọọki lori ẹrọ, gba awọn ibeere lati ọdọ awọn alabara, ati lo awọn ilana ọmọde (ati awọn okun, ni ọna miiran) lati mu iru awọn ibeere bẹ.

Bibẹrẹ pẹlu ẹya 2.4, Apache nfun awọn MPM oriṣiriṣi mẹta lati yan lati, da lori awọn aini rẹ:

  1. Awọn prefork MPM nlo awọn ilana ọmọde lọpọlọpọ laisi asapo. Ilana kọọkan n kapa asopọ kan ni akoko kan laisi ṣiṣẹda awọn okun ọtọtọ fun ọkọọkan. Laisi lilọ sinu awọn alaye pupọ pupọ, a le sọ pe iwọ yoo fẹ lati lo MPM yii nikan nigbati o ba n ṣatunṣe aṣiṣe ohun elo ti o nlo, tabi ti ohun elo rẹ ba nilo lati ba pẹlu, awọn modulu ti ko ni okun-tẹle bi mod_php.
  2. The Osise MPM nlo ọpọlọpọ awọn okun fun awọn ilana ọmọde, nibiti okun kọọkan n mu asopọ kan ni akoko kan. Eyi jẹ yiyan ti o dara fun awọn olupin iṣowo giga bi o ṣe ngbanilaaye awọn asopọ igbakan diẹ sii lati ni abojuto pẹlu Ramu ti o kere ju ti iṣaaju lọ.
  3. Lakotan, iṣẹlẹ MPM jẹ MPM aiyipada ni ọpọlọpọ awọn fifi sori Apache fun awọn ẹya 2.4 ati loke. O jọra si MPM oṣiṣẹ ni pe o tun ṣẹda awọn okun lọpọlọpọ fun ilana ọmọde ṣugbọn pẹlu anfani kan: o fa KeepAlive tabi awọn isopọ ainipẹkun (lakoko ti wọn wa ni ipo yẹn) lati ni ọwọ nipasẹ okun kan, nitorinaa ṣe iranti iranti ti o le wa ni ipin si awọn okun miiran. MPM yii ko yẹ fun lilo pẹlu awọn modulu alaiwu-tẹle bi mod_php, fun eyiti a gbọdọ lo aropo iru PHP-FPM dipo.

Lati ṣayẹwo MPM ti a fi sii nipasẹ fifi sori Apache rẹ, o le ṣe:

# httpd -V

Aworan ti o wa ni isalẹ fihan pe olupin wẹẹbu pataki yii nlo MPM prefork.

Lati yi eyi pada, iwọ yoo nilo lati satunkọ:

# /etc/httpd/conf.modules.d/00-mpm.conf          [On RedHat/CentOS based systems]
# /etc/apache2/mods-available/<mpm>.load   [On Debian/Ubuntu based systems]

Nibiti le jẹ mpm_event, mpm_worker, tabi mpm_prefork.

ati laini ila ti o ṣe ikojọpọ module ti o fẹ bii bẹ:

LoadModule mpm_event_module modules/mod_mpm_event.so

Akiyesi: Lati jẹ ki iṣẹlẹ MPM ṣiṣẹ ni Debian, o le ni lati fi package jo libapache2-mod-fastcgi sori ẹrọ lati awọn ibi ipamọ ti kii ṣe ọfẹ.

Ni afikun, fun CentOS iwọ yoo nilo php-fpm (pẹlu fcgi ati mod_fcgid) lakoko ti o wa ni Debian a pe ni php5-fpm (pẹlu apache2-mpm-iṣẹlẹ).

Kẹhin, ṣugbọn kii kere ju, tun bẹrẹ olupin wẹẹbu ati iṣẹ tuntun ti a fi sori ẹrọ php-fpm (tabi php5-fpm):

# systemctl restart httpd php-fpm && systemctl enable httpd php-fpm
# systemctl restart apache2 php5-fpm && systemctl enable apache2 php5-fpm

Botilẹjẹpe o le ṣeto Apache lati lo MPM kan pato, iṣeto ni a le bori lori ipilẹ olugba-fun-foju kan ni ọna kanna bi a ti tọka tẹlẹ.

O kan ju awọn afi ti o baamu silẹ sinu faili iṣeto fun olugbalejo foju kọọkan ati pe o ti ṣetan lati lọ - ṣugbọn rii daju pe o nlo MPM ọkan ati ọkan fun vhost.

Lakotan, jọwọ ṣe akiyesi pe laibikita pinpin ti o yan, php-fpm da lori imuse ti FastCGI, eyiti o jẹ idi ti Mo ṣe iṣeduro awọn fifi sori ẹrọ afikun ni iṣaaju.

Fun awọn alaye diẹ sii ati awọn apẹẹrẹ lori php-fpm ati bii o ṣe le ṣe pẹlu iṣẹlẹ MPM ṣe alekun iṣẹ ti Apache, o yẹ ki o tọka si awọn iwe aṣẹ osise.

Eyi ni ohun ti Mo rii lẹhin iyipada MPM aiyipada lati prefork si iṣẹlẹ ni apoti kanna ti o han ni aworan ti tẹlẹ:

Ni CentOS 7, iwọ yoo nilo lati rii daju pe awọn iṣẹ http ati https ti ṣiṣẹ nipasẹ ogiriina, ati pe a ti fi awọn wiwo nẹtiwọọki daradara si agbegbe aiyipada.

Fun apere:

# firewall-cmd --zone=internal --add-interface=tun6to4 
# firewall-cmd --zone=internal --add-interface=tun6to4 --permanent 
# firewall-cmd --set-default-zone=internal 
# firewall-cmd --add-service=http 
# firewall-cmd --add-service=https 
# firewall-cmd --add-service=http --permanent 
# firewall-cmd --add-service=https --permanent 
# firewall-cmd --reload

Idi ti Mo fi mu eyi wa ni pe Mo ni iriri ariyanjiyan laipẹ nibiti awọn eto iṣeto ina ti aiyipada ninu awọsanma VPS ṣe idiwọ php-fpm ati Apache lati ṣiṣe awọn faili php.

Gẹgẹbi idanwo ipilẹ (Mo ni idaniloju pe o le ronu ti awọn idiju diẹ sii tabi awọn ti o nira), Emi yoo ṣẹda faili php kan ti o ṣayẹwo aye faili miiran ti a npè ni test.php ninu itọsọna kanna ti CentOS meji Awọn olupin 7 pẹlu awọn abuda ohun elo hardware kanna ati fifuye ṣugbọn pẹlu MPM oriṣiriṣi. Ọkan ninu wọn yoo lo iṣẹlẹ ati ekeji yoo lo prefork:

Eyi ni koodu PHP ti Mo ti fipamọ sinu faili ti a npè ni checkiffileexists.php :

<?php
$filename = 'test.php';

if (file_exists($filename)) {
    echo "The file $filename exists";
} else {
    echo "The file $filename does not exist";
}
?>

Lẹhinna a yoo ṣiṣẹ ohun elo aṣapẹẹrẹ Apache (ab) pẹlu awọn ibeere igbakanna 200 titi awọn ibeere 2000 yoo pari:

# ab -k -c 100 -n 2000 localhost/checkiffileexists.php

Jẹ ki a ṣiṣe idanwo naa ki o ṣe afiwe awọn abajade. San ifojusi si awọn iṣiro iṣẹ:

Bi o ti le rii, iṣẹ ti olupin pẹlu iṣẹlẹ jẹ ti o ga julọ si alabaṣiṣẹ prefork rẹ ni gbogbo abala idanwo yii.

AKỌRỌ # 4: Pin Ramu ni ọgbọn fun Apache

Boya ohun elo hardware ti o ṣe pataki julọ lati mu sinu akọọlẹ ni iye Ramu ti a pin fun ilana Apache kọọkan. Lakoko ti o ko le ṣakoso eyi taara, o le ni ihamọ nọmba ti awọn ilana ọmọ nipasẹ itọsọna MaxRequestWorkers (eyiti a mọ tẹlẹ bi MaxClients in Apache 2.2), eyiti yoo fi awọn opin si lilo Ramu nipasẹ Apache. Lẹẹkansi, o le ṣeto iye yii lori ile-iṣẹ kan tabi fun ipilẹ alejo gbigba foju.

Lati ṣe eyi, o yẹ ki o ṣe akiyesi iye apapọ ti Ramu ti Apache lo, lẹhinna isodipupo rẹ nipasẹ nọmba MaxRequestWorkers, ati pe iye iranti ni yoo pin fun awọn ilana Apache. Ohun kan ti o ko fẹ ki olupin wẹẹbu rẹ ṣe ni lati bẹrẹ lilo swap, nitori iyẹn yoo dinku iṣẹ rẹ ni pataki. Nitorinaa, o yẹ ki o tọju lilo Ramu nigbagbogbo nipasẹ Apache laarin awọn opin ti o le mu ki o ma gbekele swap fun rẹ.

Fun apeere, bulọọki atẹle yoo ni ihamọ nọmba ti awọn alabara nigbakan si 30. Ti awọn alabara diẹ ba lu ogun naa, wọn le ni iriri idaduro tabi ikuna asiko kan ti o le yanju ni rọọrun nipasẹ itura aṣawakiri. Lakoko ti eyi le ṣe akiyesi aifẹ, o ni ilera fun olupin ati ni igba pipẹ, o dara julọ fun aaye rẹ bakanna.

O le gbe ibi-idena yii sinu /etc/httpd/conf/httpd.conf tabi /etc/apache2/apache2.conf , da lori boya o nlo CentOS tabi Debian.

Jọwọ ṣe akiyesi pe opo kanna kan si gbogbo awọn MPM - Mo n lo iṣẹlẹ nibi lati tẹsiwaju pẹlu imọran ti a ṣalaye ninu aba iṣaaju:

<IfModule mpm_event_module>
    StartServers 3
    MinSpareThreads          25
    MaxSpareThreads          75
    ThreadLimit                      64
    ThreadsPerChild          25
    MaxRequestWorkers    30
    MaxConnectionsPerChild    1000
</IfModule>

Ni eyikeyi iṣẹlẹ, o ni iṣeduro niyanju pe ki o tọka si awọn iwe Apache 2.4 lati wo iru awọn itọsọna ti gba laaye fun MPM ti o yan.

Sample # 5: Mọ awọn ohun elo rẹ

Gẹgẹbi ofin atanpako, o yẹ ki o kojọpọ eyikeyi awọn modulu Apache ti a ko nilo muna fun ohun elo rẹ lati ṣiṣẹ. Eyi yoo nilo o kere ju imoye gbogbogbo ti awọn ohun elo ti n ṣiṣẹ lori olupin rẹ, pataki ti o ba jẹ olutọju eto ati pe ẹgbẹ miiran wa ni idiyele idagbasoke.

O le ṣe atokọ awọn modulu ti a kojọpọ lọwọlọwọ pẹlu:

# httpd -M          [On RedHat/CentOS based systems]
# apache2ctl -M     [On Debian/Ubuntu based systems]

Lati gbe/mu awọn modulu kuro ni CentOS, iwọ yoo nilo lati ṣe asọye laini ti o bẹrẹ pẹlu LoadModule (boya ni faili iṣeto akọkọ tabi ni oluranlọwọ inu /etc/httpd/conf.modules.d.

Ni apa keji, Debian pese ohun elo ti a pe ni a2dismod lati mu awọn modulu kuro ati pe a lo bi atẹle:

# a2dismod module_name

Lati jeki o pada:

# a2enmod module_name

Ni eyikeyi idiyele, ranti lati tun Apache tun bẹrẹ fun awọn ayipada lati ni ipa.

Akopọ

Ninu nkan yii a ti ṣe atunyẹwo awọn imọran 5 ti yoo ṣe iranlọwọ fun ọ lati ṣe atunṣe olupin wẹẹbu Afun ki o mu iṣẹ rẹ pọ si. Ni afikun, o yẹ ki o ranti pe iṣapeye ati iṣẹ laisi aabo ko wulo, nitorinaa o le fẹ lati tọka si awọn imọran imọran Apache ni linux-console.net pẹlu.

Niwọn bi a ko ti le bo gbogbo awọn abala ti akọle yii daradara ni nkan yii, boya o yoo ronu awọn imọran miiran ti iwọ yoo fẹ lati pin pẹlu iyoku agbegbe. Ti o ba bẹ bẹ, ni ominira lati jẹ ki a mọ nipa lilo fọọmu asọye ni isalẹ.