Di vê gotarê de, em ê têbikoşin ka çima barkirina serverê zêde dibe û li ser awayên cihêreng ji bo xweşbînkirina pêvajoyên barkirina bilind nîqaş bikin. Di Apache/Nginx û MySQL-ê de baldariyek taybetî dê were dayîn optimîzasyona kodê, em ê li ser cachkirinê wekî amûrek alîkar biaxivin, û her weha xetereyên derveyî yên gengaz, wek êrîşên DDOS, û awayên pêşîlêgirtina wan jî binirxînin.
Çima Barkirina Server Diqewime
Berî ku hûn dest bi xweşbîniya serverê bikin, pêdivî ye ku meriv analîzek berbiçav a barkirina heyî ya li ser çavkaniyan bike. Di vê yekê de pîvana barkirina CPU, karanîna RAM, çalakiya torê, û pîvanên din ên sereke hene. Fêmkirina dînamîk û bargiraniyên lûtkeyê destûrê dide nasîna kêşan û xweşbînkirina veqetandina çavkaniyê, bi vî rengî aramî û performansa binesaziya serverê zêde dike.
Ji bo çareserkirina pirsgirêkên destpêkê yên barê servera bilind, em pêşniyar dikin ku teşhîseke giştî ya serverê were kirin . Ger ev têrê neke, analîzek berfirehtir a çavkaniyan pêwîst e. Wekî amûrek alîkar, lêkolîna tomarên servera Linux-ê dikare bibe alîkar, ji ber ku di pir rewşan de çavkaniya pirsgirêkê li vir tê dîtin.
Pêşkêşkara Apache / Nginx Optimîzekirin
Ji ber Indekskirinê Barkirina Server Zêde bû
Zêdebûna barkirinê ji ber nîşankirina li ser serverê dikare çêbibe, mînakî, dema ku motorên lêgerînê hejmareke mezin ji rûpelan li ser malpera we dişoxilînin. Ev dikare bibe sedema zêdebûna karanîna çavkaniyên serverê û, di encamê de, performansa malperê hêdî bike. Naskirina sedemê nisbeten hêsan e; hûn hewce ne ku pelê ku li vir heye vekin:
/var/www/httpd-logs/sitename.access.log
Dema ku ji hêla motorên lêgerînê ve têne navnîş kirin, bikarhêner dê navnîşên xwezaya jêrîn bibînin:
11.22.33.44 - - [Date and Time] "GET /your-page-path HTTP/1.1" 200 1234 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
Wek çareseriyek yekem ji bo kêmkirina barê, hûn dikarin danîna meta tagên "noindex" û "nofollow" li ser rûpelên ku ne hewce ne ku werin navnîşkirin bikar bînin. Çareseriya duyemîn pelê .htaccess e , ku tê de divê tomarên ku bi motorên lêgerînê yên taybetî re têkildar in werin zêdekirin, mînakî, da ku ji Yandex û Google veşêrin:
SetEnvIfNoCase User-Agent "^Yandex" search_bot
SetEnvIfNoCase User-Agent "^Googlebot" search_bot
Order Allow,Deny
Allow from all
Deny from env=search_bot
Bi heman awayî, ji bo motorên lêgerînê yên din jî divê sererastkirin bên kirin. Divê bê zanîn ku şiyanên .htaccess tenê bi astengkirina endekskirinê ve sînordar nînin. Em pêşniyar dikin ku hûn di gotarê de bi taybetmendiyên wê yên sereke bêtir nas bibin.
Bikaranîna Mîhengên Caching
Mîhengên caching ên şaş li ser serverê jî dikarin bibin sedema bargiraniyek zêde. Ji bo baştirkirina vê parametreyê, guhertinên têkildar hewce ne ku di pelên mîhengê an .htaccess de werin kirin . Di rewşa Apache de, vebijarka paşîn, ji bo Nginx - ya berê çêtir e.
Li ser serverek Apache , hûn hewce ne ku pelê .htacess vekin û koda jêrîn têxinê:
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf|doc|docx)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>
Dûv re, modula Expires bi karanîna fermanê çalak bike:
sudo a2enmod expires
Piştî vê yekê, servera malperê ji nû ve bidin destpêkirin:
sudo service apache2 restart
Û bi destnîşankirina modulê çalak bikin:
ExpiresActive On
Li ser serverek Nginx , bes e ku koda jêrîn li pelê mîhengê zêde bike:
location ~* .(jpg|jpeg|gif|png|ico|css|swf|flv|doc|docx)$ {
root /var/www/yoursite.com;
}
Û ji nû ve barkirina karûbarê pêk bînin:
sudo service nginx restart
Ji bîr mekin ku bi van mîhengan, rêwerzên Allow û Deny dê werin derbaskirin.
Bikaranîna Daneyên Compression
Çalakkirina pêçandina daneyan bi karanîna Gzip li ser serverên webê yên Apache û Nginx dibe alîkar ku mîqdara daneyên ku di navbera server û xerîdar de têne veguheztin kêm bike, ku performansê baştir dike û dema barkirina rûpela malperê kêm dike.
Ji bo çalakkirina Gzip li ser Apache , hûn hewce ne ku modula mod_deflate çalak bikin :
sudo a2enmod deflate
Dûv re, servera malperê ji nû ve bidin destpêkirin:
sudo service apache2 restart
Û di dawiyê de, bloka jêrîn li pelê veavakirinê an jî .htaccess zêde bikin:
<IfModule mod_deflate.c>
# Configure compression for specified file types
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript application/json
# If the browser matches the specified pattern, apply compression only to text/html files
BrowserMatch ^Mozilla/4 gzip-only-text/html
# If the browser matches the specified version patterns of Mozilla 4.0.6, 4.0.7, 4.0.8, disable compression
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# If the browser is MSIE (Internet Explorer), disable compression for all files except text/html
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# If the request contains the specified pattern (extensions of image files), disable compression
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip
</IfModule>
Ev veavakirin ji bo hin cureyên pelan komkirin û ji bo wêneyan asteng dike.
Di rewşa Nginx de , mîhengkirin di bloka http ya pelê mîhengkirinê de pêk tê. Pêdivî ye ku koda jêrîn were zêdekirin:
gzip on;
gzip_disable "msie6";
# Adds the Vary header, indicating that the response may change depending on the Accept-Encoding header value
gzip_vary on;
# Enables compression for any proxy servers
gzip_proxied any;
# Sets the compression level. A value of 6 provides a good balance between compression efficiency and resource use
gzip_comp_level 6;
# Sets the size of the buffer for compressed data (16 buffers of 8 kilobytes each)
gzip_buffers 16 8k;
# Specifies that data compression should be used only for HTTP version 1.1 and higher
gzip_http_version 1.1;
# Sets the file types that can be compressed
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
Mîna Apache , li vir parametreyên pêçandinê ji bo hin cureyên pelan têne danîn. Piştî ku guhertin li ser yek ji serverên webê têne kirin, ji nû ve barkirina xizmetê pêwîst e:
sudo service apache2 restart
Or
sudo service nginx restart
DDOS Êrîşa Server
Barkirina zêde ya serverê dikare wekî encama êrîşek DDoS çêbibe. Naskirina hebûna êrîşek DDoS dikare bi şopandina zêdebûna nişkêve ya seyrûsefer, daxwazên ne normal, û daketina performansa serverê were kirin. Vekolîna têketinên ji bo daxwazên dubare yên ji yek navnîşana IP-ê an şopandina portê jî dikare êrîşek DDoS-ê ya gengaz destnîşan bike. Gelek tedbîrên parastinê hene, lê em ê tenê behsa bingehîn bikin.
Bi karanîna CDN (Tora Radestkirina Naverokê) . CDN dikare wekî navbeynkarek di navbera servera weya webê û bikarhêneran de xizmet bike, trafîkê belav bike û naverokê ji bo kêmkirina bandora êrîşeke DDoS tomar bike. CDN dikarin mekanîzmayên parastina DDoS yên çêkirî jî hebin, di nav de belavkirina bar û fîlterkirina trafîkê.
Mîhengkirina dîwarên agir û pergalên tespîtkirina destwerdanê (IDS/IPS) . Dîwarên agir dikarin werin mîheng kirin da ku trafîkê li gorî pîvanên cûrbecûr, wekî navnîşanên IP û portan, fîltre bikin. IDS/IPS dikare tevgera trafîkê ya neasayî tespît bike û girêdanên gumanbar asteng bike. Ev amûr dikarin di şopandin û astengkirina trafîka potansiyel a zirardar de bi bandor bin.
Veavakirina serverên webê Apache û Nginx ji bo kêmkirina bandora êrîşên DDoS.
Wekî çareseriyek ji bo Apache, em modula mod_evasive çalak dikin . Ji bo vê yekê, rêza jêrîn di pelê mîhengê httpd.conf an apache2.conf de zêde bikin an jî şîroveyê jê derxînin :
LoadModule evasive20_module modules/mod_evasive.so
Di heman pelê de, hûn hewce ne ku bloka mîhengan zêde bikin:
<IfModule mod_evasive20.c>
# Hash table size for storing request information
DOSHashTableSize 3097
# Number of requests to one page before activating protection
DOSPageCount 2
DOSPageInterval 1
# Number of requests to all pages before activating protection
DOSSiteCount 50
DOSSiteInterval 1
# Blocking period in seconds for IP addresses
DOSBlockingPeriod 10
</IfModule>
Bi heman awayî, em modula mod_ratelimit çalak dikin :
LoadModule ratelimit_module modules/mod_ratelimit.so
Û veavakirinê lê zêde bike:
<IfModule mod_ratelimit.c>
# Setting the output filter for rate limiting (Rate Limit)
SetOutputFilter RATE_LIMIT
# Beginning of the settings block for the location "/login"
<Location "/login">
# Setting the environment variable rate-limit with a value of 1
SetEnv rate-limit 1
# Ending of the settings block for the location "/login"
</Location>
</IfModule>
Mîhengkirina Nginx dişibihe Apache . Di pelê mîhengkirina nginx.conf de , divê rêwerzên jêrîn werin bikar anîn:
http {
...
# Defining a zone for connection limits
limit_conn_zone $binary_remote_addr zone=addr:10m;
# Defining a zone for request limits
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s;
server {
...
# Configuring connection limits
limit_conn addr 10;
# Configuring request limits
limit_req zone=req_zone burst=5;
...
}
}
Piştî guhertinên li her karûbaran, pêdivî ye ku ew ji nû ve werin barkirin:
sudo systemctl restart apache2
zêr:
sudo systemctl restart nginx
Van mînakan tenê veavakirinek bingehîn peyda dikin, ku li gorî hewcedariyên taybetî û cewherê êrîşan dikare bêtir were adapte kirin.
Optimîzekirina Pirsên MySQL
Çêtirkirina pirsên databasa MySQL li ser serverek webê dikare bi awayên cûrbecûr were bidestxistin, û yek ji wan mîhengkirina rast a pelê mîhengkirinê ye. Bi gelemperî, ev pel bi navê my.cnf an my.ini tê binavkirin û di peldanka /etc/ an /etc/mysql/ de ye . Pêdivî ye ku hûn wê vekin û guhertinên jêrîn bikin:
[mysqld]
# Location of the file for recording slow queries. Be sure to replace it with your path
log-slow-queries = /var/log/mariadb/slow_queries.log
# Threshold time for considering slow queries (in seconds)
long_query_time = 5
# Enabling recording of queries that do not use indexes
log-queries-not-using-indexes = 1
# Disabling query caching
query_cache_size = 0
query_cache_type = 0
query_cache_limit = 1M
# Size of temporary tables
tmp_table_size = 16M
max_heap_table_size = 16M
# Size of the thread cache
thread_cache_size = 16
# Disabling name resolving
skip-name-resolve = 1
# Size of the InnoDB buffer pool. Set to 50-70% of available RAM
innodb_buffer_pool_size = 800M
# Size of the InnoDB log file
innodb_log_file_size = 200M
Werin em her weha pêşnîyarên din jî bifikirin ku dikarin danûstendina bi databasa serverê re hêsantir bikin:
- bi kar tînin DAXÛYANKIRIN fermana berî pirsek SQL-ê da ku pêkanîna wê analîz bike. Ev dihêle hûn ji bo pirsê plansaziyek darvekirinê bistînin û diyar bikin ka kîjan index têne bikar anîn, kîjan tablo têne seh kirin, hwd.
- Indeks lêgerîna daneyê bileztir dikin, ji ber vê yekê navnîşên bi rêkûpêk hatine sêwirandin dikarin performansa pirsê bi girîngî baştir bikin. Bala xwe bidin stûnên ku pir caran tê de têne bikar anîn KO or BIHEVGIRÊDAN şertên
- Bikaranîna birevin HILBIJARTIN *. Li şûna ku hûn hemî stûnên di tabloyê de hilbijêrin, tenê wan stûnên ku bi rastî ji bo pirsa we hewce ne diyar bikin.
- Ji karanîna fonksiyonan di nav de dûr bixin KO şert û mercên. Karanîna fonksiyonan (wek KÊMKIRIN, YÊN JORÎN, ÇEP, RAST) di KO şert û merc dikarin indexan bêkêr bikin. Biceribînin ku di şert û mercên rasterast de ji karanîna wan dûr bisekinin.
- Bikaranîn Jİ NİZİNE li ku derê gengaz be, ji ber ku ew bi gelemperî bikêrtir e. Di heman demê de, pê ewle bine ku stûnên têkildar ên ji bo tevlêbûnê xwedan navnîşan in.
- Bikaranîn SÎNORKIRIN ji bo sînordarkirina hejmara rêzên vegerî heke hûn hewce ne ku tenê hejmarek encamek bistînin.
- Encamên lêpirsîna caching-ê bihesibînin, nemaze heke ew kêm caran diguhezin, da ku barkirina serverê kêm bikin.
Pêşkêşkara Mail Barkirina Bilind li Ser Serverê Diafirîne
Di vê beşê de, em ê lêkolîn bikin ka meriv çawa diyar dike ku servera nameyan barekî zêde dikişîne û çi gav dikarin werin avêtin da ku xebata wê baştir bikin, di nav de kontrolkirina rêza peyaman û mîhengkirina parametreyên serverê. Bi kontrolkirina rêza peyaman dest pê bikin. Amûra mailq dikare di vê yekê de bibe alîkar, ji bo çalakkirina wê, fermana têkildar di termînalê de binivîsin:
mailq
Ev ê navnîşek peyamên di dorê de, heke hebe, nîşan bide. Her peyam dê bi nasnameya xwe ya yekta û agahdariya di derbarê rewşa şandinê de were xuyang kirin. Encamek bi vî rengî dikare bi vekolîna têketinên xerîdar nameyê were bidestxistin.
Di pir rewşan de, dema ku ew dest bi şandina spam dike, di bûyera lihevhatina serverê de barkirina zêde çêdibe. Lêbelê, heke piştî kontrolkirina rêveberê pê ewle be ku server ji derve ve nehatiye êrîş kirin û bikarhêner spam paşguh nakin, ew dem e ku hûn biçin ser xweşbînkirina servera nameyê. Li vir gavên ku dê alîkariyê bikin hene:
- Piştrast bikin ku tomarên DNS yên domaina we rast hatine mîheng kirin, tevî SPF, Nizanim, û DMARC tomar ji bo baştirkirina radestkirina nameyê û parastina li dijî spam. Veavakirina rast a parametreyan dikare di gotara li ser de were dîtin teşhîs server mail.
- Mîhengên torê, tevî veavakirina firewall û qaîdeyên rêvekirinê, kontrol bikin da ku ji blokan dûr nekevin û radestkirina e-nameyê bilezînin.
- Parametreyên rêza peyamê li gorî barkirina serverê mîheng bikin. Dibe ku ev mîqdara herî zêde ya dorê û dema derbasbûnê pêk bîne.
- Li çareseriyên ku me di vê gotarê de berê nîqaş kiribûn, bifikirin. Bi periyodîk databasa servera nameyê xweşbîn bikin da ku performansê baştir bikin, mekanîzmayên cachkirinê bikar bînin da ku lêgerîn û pêvajoyek daneyê bilez bikin, wek pirsên DNS.
- Ger servera e-nameyê hîn bi rêkûpêk bi bargiraniya zêde re rû bi rû bimîne, vebijarkên pîvandinê bifikirin, wek mînak karanîna komek pêşkêşkerên nameyê an çareseriyên ewr.
Xelasî
Zêdebûna barkirina serverê rasterast bandorê li leza barkirina malperê dike, di dawiyê de bandor li ser ezmûna bikarhêner û navûdengê di motorên lêgerînê de dike. Bi vî rengî, birêvebirina bi bandor a vê barkirinê di misogerkirina fonksiyona domdar a çavkaniyê de û zêdekirina gihîştina wê ji bo mêvanan rolek sereke dilîze.