<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Tipinės problemos — Dedikuoti.lt</title>
        <link>https://forumas.dedikuoti.lt/</link>
        <pubDate>Sat, 14 Mar 2026 19:46:10 +0000</pubDate>
        <language>lt</language>
           <description>Tipinės problemos — Dedikuoti.lt</description>
   <language>lt</language>
   <atom:link href="https://forumas.dedikuoti.lt/categories/tipines-problemos/feed.rss" rel="self" type="application/rss+xml" />
   <item>
      <title>Kaip sukonfiguruoti dideliam srautui?</title>
      <link>https://forumas.dedikuoti.lt/discussion/945/kaip-sukonfiguruoti-dideliam-srautui</link>
      <pubDate>Fri, 03 Feb 2023 17:58:27 +0000</pubDate>
      <dc:creator>useris</dc:creator>
      <guid isPermaLink="false">945@/discussions</guid>
      <description><![CDATA[<p>Noreciau sukonfiguruoti serveri (pageidautina per Webmin), kad butu atlaikomas didelis uzklausu srautas i svetaine/faila (pvz iki 15K per valanda). Susiduriama, kad tenka matyti 500 Internal Server Error ar kt. klaida. PHP programos yra labai minimalios ir greitos - vos kelios paprastos funkcijos. Procesoriaus ir kitos apkrovos kiek buna rodomos, tai labai mazos. Net vienas CPU branduolys gal tik 50% pasiekia piko metu.</p>

<p>Kokius parametrus siulytumete nustatyti, kad kuo daugiau Entry Processes ir pan. galetu vykti ir uzklausos "nepakibtu"?</p>
]]></description>
   </item>
   <item>
      <title>Centos8 DirectAdmin SMTP neveikia, nors pop3 veikia</title>
      <link>https://forumas.dedikuoti.lt/discussion/924/centos8-directadmin-smtp-neveikia-nors-pop3-veikia</link>
      <pubDate>Thu, 23 Sep 2021 08:11:43 +0000</pubDate>
      <dc:creator>Pauliusl</dc:creator>
      <guid isPermaLink="false">924@/discussions</guid>
      <description><![CDATA[<p>Sveiki, <br />
isirasiau nauja serveri, susikonfiguravau praktiskai identiskai kaip centos6 DA (direct admin) (kuri turime) <br />
sukuriu domena, ijungiu dkim, susikuriu el.pasto vartotoja, matau, testuoju: matau, kad paraso kad issiuncia, taciau po ~24val. gaunu Mail delivery failed laiska. <br />
nors pop3 serveris veikia. Nesvarbu ar siunciu per gmail'o configuruota acc, ar per roundCube ar SquirrelMail, rezultatas tas pats - rodo issisiuncia, atsakymas - failed po ~24val. <br />
Galbut kazko pasikonfiguravau cloudlflare'e? Nors dariau pagal sena kito domeno configuracija, tai tik spf record'as idetas:</p>

<pre><code>&quot;v=spf1 a mx ip4:SERVERIO_IP -all&quot;
</code></pre>
]]></description>
   </item>
   <item>
      <title>Centos8 Directadmin negaliu suinstaliuoti php81</title>
      <link>https://forumas.dedikuoti.lt/discussion/925/centos8-directadmin-negaliu-suinstaliuoti-php81</link>
      <pubDate>Fri, 10 Dec 2021 19:00:15 +0000</pubDate>
      <dc:creator>Pauliusl</dc:creator>
      <guid isPermaLink="false">925@/discussions</guid>
      <description><![CDATA[<p>negaliu suinstaliuot php81 versijos nes gaunu klaida: <br />
<code>error: 'zend_class_unserialize_deny' undeclared (first use in this function); did you mean 'zend_unserialize_data'?   xmlrpc_server_ce-&gt;unserialize = zend_class_unserialize_deny;                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~ </code><br />
su php73 ir su php80 viskas gerai <img src="https://forumas.dedikuoti.lt/resources/emoji/smile.png" title=":)" alt=":)" height="20" /> taciau su php81 jau nebe.</p>
]]></description>
   </item>
   <item>
      <title>Ką daryti, jeigu jūsų serveris naudojamas šlamšto (spam) siuntimui?</title>
      <link>https://forumas.dedikuoti.lt/discussion/918/ka-daryti-jeigu-jusu-serveris-naudojamas-slamsto-spam-siuntimui</link>
      <pubDate>Fri, 18 Jun 2021 13:11:02 +0000</pubDate>
      <dc:creator>iv_vytenisg</dc:creator>
      <guid isPermaLink="false">918@/discussions</guid>
      <description><![CDATA[<p>Pastebime, kad tai yra viena labiausiai paplitusių problemų su kurią patiria mūsų VPS naudotojai. Labiausiai tikėtina, kad susidūrėte ar susidursite ateityje su šia problema tam tikru momentu, kai naudojatės virtualiai dedikuotais serveriais. Mes nusprendėme sukurti šį straipsnį, kad atkreiptume dėmesį į galimus šlamšto problemos variantus ir sprendimus.</p>

<h2>Kodėl jūsų serveris siunčia šlamštą?</h2>

<p>Tam gali būti daugybė priežasčių, tačiau dažniausiai būna šios:</p>

<ul>
<li>Jūsų VPS buvo nulaužtas;</li>
<li>Jūsų svetainė buvo nulaužta;</li>
<li>Jūs siunčiate spam laiškus.</li>
</ul>

<p>Toliau šiame straipsnyje nagrinėsime dvi pirmąsias iš šių priežasčių atskirai ir pateiksime keletą pasiūlymų, kaip to išvengti.</p>

<h2>Ką daryti, jei jūsų VPS buvo nulaužtas?</h2>

<p>Darant prielaidą, kad jūsų VPS nenaudojamas svetainių talpinimui, o naudojamas duomenims saugoti, duomenims apdoroti, VPN ar kitam, jums nėra reikalingas pašto tarnyba.</p>

<p>Pirmas prevencinis veiksmas turėtų būti išjungti arba pašalinti visas pašto tarnybas, tokias kaip <strong>Exim</strong>, <strong>Postfix</strong>, <strong>Sendmail</strong>, iš savo serveryje.</p>

<p>Antra, <a rel="nofollow" href="https://forumas.dedikuoti.lt/discussion/754/iptables-ugniasienes-konfiguravimas" title="užblokuokite">užblokuokite</a> visus su SMTP susijusius prievadus: <strong>25</strong> (naujai įsigytoms paslaugoms šis prievadas yra blokuojamas automatiškai), <strong>465</strong>, <strong>587</strong>. Tai galima padaryti naudojant <strong>iptables</strong> ar kitą jūsų naudojamą ugniasienės programinę įrangą. Skirtingos programinės įrangos diegimo instrukcijas rasite <a rel="nofollow" href="https://forumas.dedikuoti.lt/categories/serveriu-saugumas" title="šioje forume skiltyje">šioje forume skiltyje</a>.</p>

<p>Kartais el. laiškus galima siųsti naudojant SSH tunelius taip, kad šlamštą siunčia iš <em>localhost</em>. Tai daroma atliekant prievado persiuntimą per SSH, kuris sukuria saugų ryšį tarp localhost ir nuotolinio įrenginio, per kurį galima perduoti užklausą, pvz., SMTP. Kadangi šiam metodui reikalinga prieiga prie kurio nors nulaužto serverio vartotojo, tai parodo, kaip svarbu sukurti sudėtingą slaptažodį, naudoti nestandartinį SSH prievadą, aktyvuoti ir naudoti SSH raktą. Savo prisijungimo duomenis ir prieigą prie serverio saugokite ir perduokite tik žmonėms, kuriais pasitikite.</p>

<p>Paskutinis, bet ne mažiau svarbus aspektas - visada atnaujinkite savo programinę įrangą. Atlikite įprastus saugumo patikrinimus ar antivirusinius patikrinimus.</p>

<h2>Ką daryti, jei jūsų svetainė buvo nulaužta?</h2>

<p>Tai yra labiausiai paplitęs šlamšto siuntimo metodas mūsų serveriuose, nes mūsų VPS yra orientuotas į svetainių talpinimą. Taigi kaip elgtis, jeigu svetainė buvo nulaužta?</p>

<ol>
<li>Patikrinkite ir nuskenuokite serverį naudodami antivirusinę programinę įrangą. Dauguma atakų nėra vienetinės ir jau buvo vykdomos anksčiau, todėl kenkėjišką programą ar injekciją ras tinkami antivirusiniai įrankiai.</li>
<li>Įsitikinkite, kad jūsų turinio valdymo sistema yra atnaujinta, o jei ne, atnaujinkite ją! Atnaujinimai išleidžiami ne tik dėl to, kad į programinę įrangą įtraukta tam tikra nauja funkcija, bet ir siekiant pašalinti pažeidžiamumus, kurie tapo viešais ir kuriais trečioji šalis piktnaudžiavo. Būtinai nustatykite automatinius naujinimus arba bent reguliariai tikrinkite tai rankiniu būdu.</li>
<li>Jei jūsų VPS naudoja Apache kaip numatytąją web tarnybą, tam yra puikus įrankis, vadinamas <strong><a rel="nofollow" href="https://forumas.dedikuoti.lt/discussion/131/mod-security-idiegimas-centos-6-aplinkoje/p1" title="ModSecurity">ModSecurity</a></strong>, tai yra svetainės ugniasienė. Tai padeda nuskaityti ir užblokuoti daugybę įtartinų užklausų nukreiptų į jūsų svetainėms ir nuolat jas tikrinti. Tai puikus būdas užkirsti kelią jūsų svetainių užkrėtimui dažniausiai pasitaikančiomis injekcijomis. ModSecurity galima nustatyti, kad automatiniu būdu būtų blokuojamos nepageidaujamos ar įtartinos užklausos.</li>
<li>Įsitikinkite, kad savo TVS naudojate saugius ir patikimus slaptažodžius, nesidalinkite jais.</li>
<li>Nenaudokite nežinomų papildinių/įskiepių, nes juos galima kurti ir skelbti norint tik tam, kad patekti į jūsų svetainę.</li>
<li>Apribokite failų plėtinius, kuriuos leidžiate įkelti į savo svetaines.</li>
<li>Priskirkite savo failams ir aplankams tinkamas teises ir pabandykite išvengti 777 teisių.</li>
</ol>

<h2>Ką daryti, jei atlikote visus prevencinius veiksmus ir vis tiek gavote pranešimą, kad jūsų serveris siunčia spam?</h2>

<p>Nepaisant to, kad šlamštas ir masinių laiškų siuntimas mūsų VPS neleidžiami, jūsų svetainės greičiausiai vis tiek retkarčiais siųs kai kuriuos el. laiškus. Tokie kaip registracijos patvirtinimo el. laiškai, slaptažodžio nustatymo iš naujo jūsų klientams, naujienlaiškio užsakymo laiškai, kai kurie jūsų sistemos informacijos pakeitimų žurnalai ir kt. Šie el. laiškai gali būti pažymėti kaip šlamštas ir atmesti, o tai galiausiai lemia tai, kad serveris įtraukiamas į juodąjį sąrašą. Žemiau pateikiame keletą idėjų, kaip padaryti šiuos el. Laiškus patikimesnius kitiems pašto serveriams.</p>

<ol>
<li>Sukurkite ir naudokite <a rel="nofollow" href="https://forumas.dedikuoti.lt/discussion/702/spf-ir-dkim-naudojimas-ubuntu-debian-aplinkoje#latest" title="SPF, DKIM">SPF, DKIM</a> įrašus savo domenui.</li>
<li>Venkite kai kurių spam laiškuose naudojamų raktinių žodžių. Tai iš esmės visi raktiniai žodžiai, susiję su pardavimu, siūlymu ir rinkodara apskritai.</li>
<li>Jūsų siunčiama informacija turėtų būti skirta tik bendrais ir informaciniais tikslais. Tokie el. laiškai jokiu būdu neturėtų būti susiję su rinkodaros tikslais ar kuriais naujienlaiškiais.</li>
</ol>

<h2>Baigiamosios pastabos</h2>

<p>Visada patikrinkite savo pašto išrašus, serverio prieigos išrašus, norėdami pamatyti galimas anomalijas ar įsilaužimus. Atnaujinkite savo sistemą ir programinę įrangą. Jei patekote į juodąjį sąrašą, tai yra faktas, jog siuntimas vykodmas. Susitelkite į problemos tyrimą ir išsprendimą. Reklaminių laiškų siuntimas yra draudžiama veikla mūsų paslaugų teikimo sąlygose, kurias galite peržiūrėti paspausdami šią <a rel="nofollow" href="https://sutartys.iv.lt/preview/serverio_nuoma.php" title="nuorodą">nuorodą</a>.</p>

<p>Svarbiausia prisiminti. Šlamštą draudžia mūsų paslaugų teikimo sąlygos, kurias galite peržiūrėti paspausdami šią nuorodą.</p>
]]></description>
   </item>
   <item>
      <title>Dažniausios serverio nepasiekiamumo per SSH priežastys</title>
      <link>https://forumas.dedikuoti.lt/discussion/789/dazniausios-serverio-nepasiekiamumo-per-ssh-priezastys</link>
      <pubDate>Thu, 26 Jul 2018 11:39:10 +0000</pubDate>
      <dc:creator>iv_almantasm</dc:creator>
      <guid isPermaLink="false">789@/discussions</guid>
      <description><![CDATA[Pasitaiko atvejų, kai dėl vienos ar kitos priežasties prie serverio nepavyksta prisijungti per SSH tarnybą. Šioje pamokoje apžvelgsime dažniausiai pasitaikančias priežastis bei galimus problemų sprendimus. Daugumai problemų spręsti  prie serverio reikės prisijungti per avariniam serverio administravimui skirtą konsolę. Kaip tai padaryti rasite <a href="https://forumas.dedikuoti.lt/discussion/572/serverio-konsole-narsykleje" rel="nofollow">šioje nuorodoje</a><br />
<br />
<b>1. Neveikia SSH tarnyba</b><br />
<br />
Prisijungus per <a href="https://forumas.dedikuoti.lt/discussion/572/serverio-konsole-narsykleje" rel="nofollow">konsolę</a> patikrinkite ar SSH tarnyba aktyvi:<br />

<pre><code>/etc/init.d/sshd status
</code></pre>
<br />
arba<br />

<pre><code>service sshd status
</code></pre>
<br />
Jei gaunate atsakymą panašų į:<br />

<pre><code>openssh-daemon is stopped
</code></pre>
<br />
SSH tarnybą galite paleisti su komanda:<br />

<pre><code>/etc/init.d/sshd start
</code></pre>
<br />
arba<br />

<pre><code>service sshd start
</code></pre>
<br />
<b>2. Pakeistas standartinis SSH tarnybos prievadas</b><br />
<br />
Standartiškai prie SSH tarnybos yra prisijungiama 22-u prievadu. Visgi neretai pasitaiko atvejų, kai standartinis prievadas saugumo sumetimais yra pakeičiamas į kitą ir apie tai pamirštama. Patikrinti koks prievadas naudojamas Jūsų serveryje, galite prisijungus prie serverio per <a href="https://forumas.dedikuoti.lt/discussion/572/serverio-konsole-narsykleje" rel="nofollow">konsolę</a>. Paleiskite komandą:<br />

<pre><code>netstat -nltup
</code></pre>
<br />
CentOS7 atveju komanda bus:<br />

<pre><code>ss -nltup
</code></pre>
<br />
Viena iš eilučių turi būti tokia:<br />

<pre><code>Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      5184/sshd
</code></pre>
<br />
Jei skiltyje &quot;<b>Local Address</b>&quot; vietoj šio atveju matomo skaičiaus <b>22</b> matysite kitą skaičių - tai reiškia, kad naudojate ne standartinį prievadą ir prie serverio Jums reikia jungtis naudojant Jums nurodomą prievadą.<br />
<br />
<b>3. Neveikia tinklo sąsaja</b><br />
<br />
Platesnę šios galimos problemos apžvalgą <a href="https://forumas.dedikuoti.lt/discussion/575/tinklo-sasajos-atstatymas-naudojantis-klientu-sistemos-konsole#latest" rel="nofollow">rasite šioje pamokoje</a><br />
<br />
<b>4. root naudotojui uždrausta jungtis per SSH</b><br />
<br />
Prisijungus prie serverio <a href="https://forumas.dedikuoti.lt/discussion/572/serverio-konsole-narsykleje" rel="nofollow">per konsolę,</a> patikrinkite failo <b>/etc/ssh/sshd_config</b> konfigūraciją. Jei matote, eilutę:<br />

<pre><code>PermitRootLogin no
</code></pre>
<br />
pakeiskite informaciją į:<br />

<pre><code>PermitRootLogin yes
</code></pre>
<br />
bei perkraukite SSH tarnybą:<br />

<pre><code>/etc/init.d/sshd restart
</code></pre>
<br />
arba<br />

<pre><code>service sshd restart
</code></pre>
<b><br />
5. IP adresas iš kurio bandoma prisijungti, blokuotas serverio ugniasienėje</b><br />
<br />
Lengviausias būdas išvalyti serverio ugniasienės taisykles - prisijungti prie <a href="https://klientams.iv.lt/" rel="nofollow">savo klientų sistemos</a>.<br />
Pasirinkite savo serverio paslaugą ir nuspauskite mygtuką &quot;Išvalyti iptables&quot;. Visgi prieš atliekant šiuos veiksmus galite išsaugoti dabartines iptables taisykles. Tai atliksite prisijungę prie serverio<a href="https://forumas.dedikuoti.lt/showthread.php?t=572" rel="nofollow"> per konsolę</a>:<br />

<pre><code>iptables-save &gt; kelias_kur_išsaugoti_dabartines_taisykles (pvz. /var/tmp/saved_iptables)
</code></pre>
<br />
Taisykles atstatyti galėsite su komanda:<br />

<pre><code>iptables-restore &lt;  kelias_kur_išsaugotos_taisyklės (pvz. /var/tmp/saved_iptables)
</code></pre>
<br />
* Kitas būdas - peržiūrėti taisykles rankiniu būdu. Tai atliksite su komanda:<br />

<pre><code>iptables -L -nv
</code></pre>
<br />
Jei pastebėsite taisyklę, kuri blokuoja susijungimą ją galėsite pašalinti su komanda:<br />

<pre><code>iptables -D &lt;taisyklė&gt;
</code></pre>
<br />
Taip pat, jei serveryje nėra taisyklės, leidžiančios prisijungti per SSH (22 prievadu), galite ją pridėti su komanda:<br />

<pre><code>iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
</code></pre>
]]></description>
   </item>
   <item>
      <title>Kaip rasti daug disko vietos užimančius failus/direktorijas?</title>
      <link>https://forumas.dedikuoti.lt/discussion/784/kaip-rasti-daug-disko-vietos-uzimancius-failus-direktorijas</link>
      <pubDate>Wed, 04 Jul 2018 16:21:01 +0000</pubDate>
      <dc:creator>iv_vytenisg</dc:creator>
      <guid isPermaLink="false">784@/discussions</guid>
      <description><![CDATA[Dažnai pasitaiko atveju kai serveryje išnaudojama disko vieta, tačiau serverio administratorius disko išnaudojimo priežasties nežino ir negali nustatyti, kokie failai ar direktorijos užima daug vietos. Tokiais atvejais dažnai padeda failų skaičiaus (inode) direktorijose pateikimas, tačiau būna atveju kai viename faile saugomas neįprastai didelis kiekis informacijos (pavyzdžiui: tarnybos išrašas (angl. log)).<br />
<br />
Šioje pamokoje pateiksime kelis pavyzdžius, kaip ieškoti disko vietos išnaudojimo priežasties.<br />
<br />
<br />
<b>0. Preliminarūs reikalavimai:</b><br />
<br />
- Dedikuotas serveris naudojantis vieną iš mūsų parengtų operacinių sistemų šablonų.<br />
<br />
<br />
<b>1. Failų kiekio serveryje (inode) pateikimas:</b><br />

<pre><code>for i in `ls -1A`; do echo "`find $i | sort -u | wc -l` $i"; done | sort -rn | head -5
</code></pre>
<br />
<br />
<b>2. Failų, didesnių nei 1024k, išrikiavimas pagal dydį (50 vienetų):</b><br />

<pre><code>find / -mount -size +1024k -type f -exec du -Sh {} \;|sort -rh | head -n 50
</code></pre>
<br />
Jeigu naudojama konkreti direktorija (šiuo atveju <i>/home</i>):<br />

<pre><code>find /home -mount -size +1024k -type f -exec du -Sh {} \;|sort -rh | head -n 50
</code></pre>
<br />
<br /><b>
3. Didžiausių direktorijų išrikiavimui naudojama komanda:</b><br />

<pre><code>du -a / | sort -n -r | head -n 50
</code></pre>
<br />
Jeigu naudojama konkreti direktorija (šiuo atveju <i>/home</i>):<br />

<pre><code>du -a /home | sort -n -r | head -n 50
</code></pre>
<br />
Šias komandas galima naudoti atsidarius konkrečią direktoriją - tada pateikiama tik konkrečios direktorijos informacija.<br />
<br />
Kaip pavyzdžiui:<br />

<pre><code>cd /home
du -a | sort -n -r | head -n 50
</code></pre>]]></description>
   </item>
   <item>
      <title>Tinklo neveikimas naudojant CentOS</title>
      <link>https://forumas.dedikuoti.lt/discussion/778/tinklo-neveikimas-naudojant-centos</link>
      <pubDate>Fri, 04 May 2018 14:31:52 +0000</pubDate>
      <dc:creator>iv_vytenisg</dc:creator>
      <guid isPermaLink="false">778@/discussions</guid>
      <description><![CDATA[Administruodami serverius pastebėjome, kad ganėtinai dažnai pasitaikanti problema klientams, kurie naudoja CentOS operacinę sistemą, yra <b>NetworkManager</b> serviso naudojimas vietoje mūsų naudojamo standartinio <i>network</i> serviso. Jeigu serveryje būna aktyvuojamas NetworkManager servisas, serveris nebūna pasiekiamas dėl tinklo programinės įrangos nesuderinamumo. Dažniausiai NetworkManager būna įdiegimas kartu su kitais tinklo ar programų paketais, kai diegimas atliekamas tiksliais nepasirenkant konkrečių įrankių, o diegiant visą paketą iš karto. Ši problema dažniausiai nepasireiškia tik įdiegus NetworkManager, nes šis servisas automatiškai neaktyvuojamas. Problema pastebima perkrovus serverį kai automatiškai paleidžiami visi servisai ir vienu metu paleidžiami keli tinklo servisai.<br />
<br />
<br />
Problemos sprendimas:<br />
<br />
<b>1.</b> Nepaisant to, kad pasireiškus šiai problemai serveris nebus pasiekiamas, turėsite galimybę prisijungti prie serverio per klientų sistemoje esančią konsolę. Platesnę informaciją, kaip prisijungti prie serverio per konsolę galite rasti <a rel="nofollow" href="https://forumas.dedikuoti.lt/discussion/572/serverio-konsole-narsykleje">čia.</a><br />
<br />
<b>2.</b> Prisijungę prie konsolės sustabdykite NetworkManager servisą įvykdydami komandą:<br />

<pre><code>systemctl stop NetworkManager
</code></pre>
<br />
<b>3.</b> Tada nurodome, kad sekantį kartą NetworkManager nebūtų įjungtas perkrovus serverį:<br />

<pre><code>systemctl disable NetworkManager
</code></pre>
<br />
<b>4.</b> Ir paleidžiame tinklo servisą:<br />

<pre><code>/etc/ini.d/network start

arba 

service network start
</code></pre>
<br />
<b>5.</b> Papildomai rekomenduojame pašalinti NetworkManager servisą:<br />

<pre><code>rpm -qa | grep -i NetworkManager
</code></pre>
<br />
<b>6.</b> Ir pašaliname RPM paketus:<br />

<pre><code>rpm -e package_name
</code></pre>
<br />
Ir viskas, šių veiksmų pilnai pakanka išspręsti problemą ir užkirsti kelią jos pasikartojimui ateityje. Be abejo, visada rekomenduojame sekti diegiamos programinės įrankos paketų įrankius - diekite tik tuos paketus, kurie Jums yra reikalingi ir bus naudojami.]]></description>
   </item>
   <item>
      <title>Proceso limitavimas serveryje</title>
      <link>https://forumas.dedikuoti.lt/discussion/772/proceso-limitavimas-serveryje</link>
      <pubDate>Fri, 20 Apr 2018 10:06:21 +0000</pubDate>
      <dc:creator>iv_vytenisg</dc:creator>
      <guid isPermaLink="false">772@/discussions</guid>
      <description><![CDATA[<img alt="attachmentphpattachmentid345stc1d1524207709" src="https://forumas.dedikuoti.lt/attachment.php?attachmentid=345&amp;stc=1&amp;d=1524207709" title="Image: https://forumas.dedikuoti.lt/attachment.php?attachmentid=345&amp;stc=1&amp;d=1524207709" /><br />
<br />
Pasitaiko atveju kai vienas procesas išnaudoja pakankamai didelį CPU kiekį taip trukdant kitiems procesams atlikti savo darbą. Vienas procesas turi laukti kol kitas pabaigs veiksmus ir tik tada pradėti savo darbą. Ši problema gali būti išsprendžiama limituojant CPU resursus pasitelkiant <b>CPULimit</b> programinę įrangą.<br />
<br />
Pagrindis <b>CPULimit</b> tikslas yra sumažinti leidžiama CPU kiekį tuo metu kai atliekamas konkretus procesas. Limitavus nėra daroma įtaka <i>nice</i> reikšmei ar pirmenybių nustatymams - ribojamas konkretus CPU išnaudojimas. Taip pat, <b>CPULimit</b> adaptuojasi prie visos sistemos dinamiškai bei greitai.<br />
<br />
<br /><b>
0. Preliminarūs reikalavimai:</b><br />
<br /><div>
- OpenVZ virtualizacijos Linux serveris naudojantis mūsų parengtus Ubuntu/Debian/CentOS operacinės sistemos šablonus.</div><div><br /></div>
<br /><b>
1. CPULimit diegimas:
</b><ul>
<li>Ubuntu/Debian operacinėse sistemose:</li>
</ul>

<pre><code>sudo apt-get install cpulimit
</code></pre>

<ul>
<li>CentOS/Fedora operacinėse sistemoje visų pirma reikia įjungti EPEL repozitoriją:</li>
</ul>

<pre><code>sudo yum install epel-release
</code></pre>
<br />
ir tada atlikti diegimą:<br />

<pre><code>sudo yum install cpulimit

arba 

sudo dnf install cpulimit
</code></pre>
<br /><b>
</b><br /><b>
2. Naudojimas:</b><br />
<br />
Atlikus sėkmingą diegimą galite atlikti pavyzdinį CPU limitavimą. Visų pirma paleiskite komandą, kuri naudos didelį kiekį CPU. Susikurkite failą:<br />

<pre><code>nano highcpu.sh
</code></pre>
<br />
Ir įkelkite šį turinį:<br />

<pre><code>#!/bin/bash
while :; do :; done;
</code></pre>
<br />
Failą išsaugokite . Ši paprasta programa sukurs ciklą, kuris išnaudos maksimalų galima CPU resursą. Įgalinkite šį paleidimui:<br />

<pre><code>chmod +x highcpu.sh
</code></pre>
<br />
Ir paleiskite jį naudojant komandą:<br />

<pre><code>./highcpu.sh &amp;
</code></pre>
<br />
Jums bus pateikiamas proceso ID numeris (PID), kaip pavyzdžiui:<br />

<pre><code>[1] 1887
</code></pre>
<br />
Ir patikrinkite, kiek resursų šis procesas išnaudoja paleisdami <i>top</i> komandą:<br />

<pre><code>PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND     
 1887 root      20   0    9508   1200   1012 R  99.7  0.0   0:21.46 highcpu.sh  
  237 root      20   0   47564   1604   1108 S   0.7  0.0  11:51.14 rpcbind     
  379 root      20   0   71532   3108   1912 S   0.3  0.0   0:29.04 apache2     
    1 root      20   0   37396   3644   2108 S   0.0  0.0   0:09.13 systemd     
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd/1+ 
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.00 khelper/15+ 
   72 root      20   0  133368  70296  70000 S   0.0  0.4   1:38.00 systemd-jo+ 
   75 root      20   0   41628   1452   1004 S   0.0  0.0   0:00.38 systemd-ud+ 
  239 message+  20   0   42828   2044   1492 S   0.0  0.0   0:00.29 dbus-daemon 
  246 root      20   0   28484   1596   1292 S   0.0  0.0   0:00.51 systemd-lo+ 
  248 root      20   0   26008   1128    892 S   0.0  0.0   0:00.60 cron        
  250 syslog    20   0  184624   2580   1184 S   0.0  0.0   0:31.92 rsyslogd    
  289 root      20   0   65448   2080   1364 S   0.0  0.0   0:17.71 sshd        
  318 root      20   0   89652   1280    336 S   0.0  0.0   0:00.00 saslauthd   
  320 root      20   0   89652    964     20 S   0.0  0.0   0:00.00 saslauthd   
  347 root      20   0   14996    832    640 S   0.0  0.0   0:00.00 xinetd      
  349 root      20   0   12780    844    708 S   0.0  0.0   0:00.00 agetty
</code></pre>
<br />
Kaip pastebima iš <i>top</i> komandos atsakymo, <i>highcpu.sh</i> procesas išnaudoja 99.7% CPU. Kadangi yra išnaudojamas toks kiekis, nepavyktų dabar paleisti kito proceso. Po kelių minučių operacinė sistema užstrigtų. Šioje vietoje gali padėti CPULimit.<br />
<br />
Galime apriboti šio proceso veikimas naudojant CPULimit įrankį. Šiuo atveju apribosime procesą iki 30% CPU:<br />

<pre><code>cpulimit -l 30 -p 1887 &amp;
</code></pre>
<br />
* -l 30: apriboja procesą iki 30%;<br />
* -p 2331: yra highcpu.sh PID.<br />
<br />
Dabar patikrinkite CPU išnaudojimą su <i>top</i> komanda:<br />

<pre><code>top
</code></pre>
<br />
ir matome atsakymą:<br />

<pre><code>PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND     
 1887 root      20   0    9508   1200   1012 R  30.7  0.0   0:21.46 highcpu.sh  
  237 root      20   0   47564   1604   1108 S   0.7  0.0  11:51.14 rpcbind     
  379 root      20   0   71532   3108   1912 S   0.3  0.0   0:29.04 apache2     
    1 root      20   0   37396   3644   2108 S   0.0  0.0   0:09.13 systemd     
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd/1+ 
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.00 khelper/15+ 
   72 root      20   0  133368  70296  70000 S   0.0  0.4   1:38.00 systemd-jo+ 
   75 root      20   0   41628   1452   1004 S   0.0  0.0   0:00.38 systemd-ud+ 
  239 message+  20   0   42828   2044   1492 S   0.0  0.0   0:00.29 dbus-daemon 
  246 root      20   0   28484   1596   1292 S   0.0  0.0   0:00.51 systemd-lo+ 
  248 root      20   0   26008   1128    892 S   0.0  0.0   0:00.60 cron        
  250 syslog    20   0  184624   2580   1184 S   0.0  0.0   0:31.92 rsyslogd    
  289 root      20   0   65448   2080   1364 S   0.0  0.0   0:17.71 sshd        
  318 root      20   0   89652   1280    336 S   0.0  0.0   0:00.00 saslauthd   
  320 root      20   0   89652    964     20 S   0.0  0.0   0:00.00 saslauthd   
  347 root      20   0   14996    832    640 S   0.0  0.0   0:00.00 xinetd      
  349 root      20   0   12780    844    708 S   0.0  0.0   0:00.00 agetty
</code></pre>
<br />
Kaip pastebite <i>top</i> komandos atsakyme, <i>highcpu.sh</i> yra sumažintas iki 30.7% (gali būti pastebima -3/+3% paklaida). Likę resursai gali būti naudojami kitiems procesams.<br />
<br />
Papildomas galimas limitavimas yra naudojant vykdomosios programos failo pavadinimą. Kaip pavyzdžiui, mūsų failo <i>highcpu.sh</i> limitavimas būtų atliekamas naudojant šią komandą:<br />

<pre><code>cpulimit -l 30 ./highcpu.sh &amp;
</code></pre>
<br />
Taip pat, galite pamatyti procesus, kurie veikia fone (angl. background) naudojant šią komandą:<br />

<pre><code>fg
</code></pre>
<br />
CPULimit taip pat gali būti naudojamas norint sužinoti aplikacijos elgseną kai procesui yra apribojamas CPU resursas.]]></description>
   </item>
   <item>
      <title>Pakilusio apkrovimo problemos sprendimas naudojant DirectAdmin</title>
      <link>https://forumas.dedikuoti.lt/discussion/771/pakilusio-apkrovimo-problemos-sprendimas-naudojant-directadmin</link>
      <pubDate>Thu, 19 Apr 2018 16:31:59 +0000</pubDate>
      <dc:creator>iv_vytenisg</dc:creator>
      <guid isPermaLink="false">771@/discussions</guid>
      <description><![CDATA[Jeigu pastebėjome, kad serverio apkrovimas yra pakilęs ir įvykdę <i>top</i> komandą matome, kad procesas <i>dataskq</i> išnaudoja daugiausia resursų, šioje pamokoje rasite šios problemos sprendimą.<br />
<br />
<br />
<b>0. Preliminarūs reikalavimai:</b><br />
<br />
- OpenVZ virtualizacijos serveris naudojantis mūsų suteiktą DirectAdmin licenciją.<br />
<br />
<br />
<b>1. Situacijos patikrinimas:</b><br />
<br />
Visų pirma patikrinkite serverio išrašus, kuriuos rasite:<br />

<pre><code>/var/log/directadmin/system.log
</code></pre>
<br />
Patikrinkite ar yra vykdomi skaičiavimai. Jeigu naudotojai yra nuolatos pridedami į išrašą (išraše yra įtraukiamai nauji įrašai), tokiu atveju gali būti, kad tai yra tiesiog naktiniai vertinimai, kas yra normalu (darant prielaidą, kad žurnalas toliau auga ir nėra įstrigęs ties vienu vartotoju).<br />
<br />
<br />
<b>2. Problemos paieškos:</b><br />
<br />
Pradedant ieškoti problemos priežasties, reikėtų pateikti užklausą <i>dataskq</i> procesui:<br />

<pre><code>killall -USR1 dataskq
tail -n 10 /var/log/directadmin/errortaskq.log
</code></pre>
<br />
Ši komanda įkels vykdomo <i>dataskq</i> proceso vietą į <i>errortaską.log</i> išrašą. Pagal tai galėsime spręsti, kokius veiksmus reikės atlikti toliau:<br />
<br />
* Jeigu pateikiamas atsakymas nurodys, kad problema su Maildir keliu, tai reiškia, kad yra perpildyta dėžutė, kuri bus patiekiama nurodytame kelyje (angl. path). Patikrinkite dėžutę ir pašalinkite nereikalingus laiškus.<br />
<br />
* Jeigu pateikiamas atsakymas kreipia į <i>brute_force</i> ar panašu failą,  tai reiškia, kad <i>dataskq</i> procesas yra apkraunamas nuo itin didelio kiekio bandymų prisijungti. Problemos sprendimus visų pirma įsitikinkite ar naudojate naujausią DirectAdmin <a rel="nofollow" href="https://www.directadmin.com/versions.php">versiją</a> ir tada įvykdykite komandą:<br />

<pre><code>cd /usr/local/directadmin/data/admin
ls -la brute_force*
</code></pre>
<br />
Šiuo veiksmu mes ieškome didelio <i>brute_log_entries.list</i> failo. Jeigu failai atrodo didelės talpos (faila jau yra didelis kai užima daugiau nei 1MB), tai gali sukelti apkrovimą. Galite ištrinti failą <i>brute_log_entries.list</i>, nes tai nėra būtinas failas Brute Force Monitor veikimui. Šis failas yra skirtas tik tam, kad galėtumėte stebėti vykdomas atakas. DirectAdmin sukurs šį failą iš naujo automatiškai.<br />
<br />
* Jeigu  <i>brute_log_entries.list</i> toliau ir vėl augs, Jūs galite koreguoti šio failo dydį rankiniu būdų DirectAdmin valdymo pulte pasirinkite Admin Level &gt; Admin Settings ir sumažinkite reikšmę šiam nustatymui:
<pre><code>Clear failed login attempts from log X days after entry was made.
</code></pre>
<br />
Rekomenduojame palikti 2 dienų reikšmę. taip pat pakoreguokite kitas reikšmes:
<pre><code>Notify Admins after an IP has X login failures on any account.
Notify Admins after a User has X login failures from any IP.
</code></pre>
<br />
kurios sumažins įrašų skaičių, kurie įvedami į <i>brute_log_entries.list</i> failą.]]></description>
   </item>
   <item>
      <title>SPAM laiškų siuntimo šaltinio identifikavimas PostFix serveryje</title>
      <link>https://forumas.dedikuoti.lt/discussion/756/spam-laisku-siuntimo-saltinio-identifikavimas-postfix-serveryje</link>
      <pubDate>Thu, 15 Feb 2018 12:27:08 +0000</pubDate>
      <dc:creator>iv_almantasm</dc:creator>
      <guid isPermaLink="false">756@/discussions</guid>
      <description><![CDATA[<b>Problemos identikavimas</b><br />
<br />
1. Pirmiausia prisijungte prie serverio su 'root' naudotoju. Įsitikinkite, kad serverio 'php.ini' faile yra įtraukta eilutė<br />

<pre><code>mail.add_x_header = On
</code></pre>
<br />
Šį failą greičiausiai rasite kataloge<b> /etc/php5/cli/php.ini</b><br />
<br />
2. Tuomet patikrinti serverio laiškų eilę galite su komanda:<br />

<pre><code>mailq
</code></pre>
<br />
3. Pateiktame rezultate matysite šiuo metu serverio siunčiamus laiškus. Rezultatas bus panašus į:<br />

<pre><code>5CFC194C2D20*     422 Thu Feb 15 11:27:25  webmaster@domenas.com
                                         gavejas@domenas.lt
</code></pre>
<br />
4. Norint matyti išsamesnę informaciją apie siunčiamą laišką išsirinkite vieną ID ir įveskite:<br />

<pre><code>postcat -q &lt;ID&gt;
</code></pre>
<br />
pavyzdžiui:<br />

<pre><code>postcat -q 5CFC194C2D20
</code></pre>
<br />
5. Šiuo atveju mums bus aktuali eilutė “<b>X-PHP-Originating-Script”</b>, kuri matoma laiško antraštėse. (Ši eilutė matysis, jei serverio nustatymuose bus įtraukta anksčiau minėta eilutė "mail.add_x_header = On"). Įveskite komandą:<br />

<pre><code>postcat -q 5CFC194C2D20 | grep X-PHP-Originating-Script
</code></pre>
<br />
ir gaunamas rezultatas bus panašus į:<br />

<pre><code>X-PHP-Originating-Script: 45:spamas.php
</code></pre>
<br />
Skaičius 45 nurodo, kuris Linux naudotojas atlieka siuntimą  (UID), į pavadinimas "spamas.php", kuris failas atlieka laiškų siuntimą.<br />
<br />
6. Taigi šiuo atveju telieka surasti reikiamą failą bei jį pašalinti. Žinoma, jei buvo įterptas vienas toks failas, tikėtina, kad Jūsų serveryje yra saugumo spragų, kurias reikėtų pašalinti.<br />
<br />
<br />
7. Jei laiško antraštėse rezultatas, rezultatas "X-PHP-Originating-Script" nėra randamas, tai reikštų, kad greičiausiai nepageidaujamų laiškų siuntimui naudojamas ne įterptas žalingas kodas, tačiau viena iš pašto dėžučių. Įveskite komandą:<br />

<pre><code>postcat -q 5CFC194C2D20 | grep sasl_username
</code></pre>
Ji parodys, kurios pašto dėžutės prisijungimo duomenys buvo naudojami išsiunčiant laišką su ID 5CFC194C2D20.<br />
<br />
Gautas rezultatas bus panašus į<br />

<pre><code>named_attribute: sasl_username=info@mano-svetaine.lt
</code></pre>
<br />
8. Taigi šiuo atveju reikėtų pakeisti pašto dėžutės "info@mano-svetaine.lt" prisijungimo duomenis, bei antivirusine programa patikrinti šio naudojo įrenginius iš kurių buvo jungtasi prie pašto dėžutės.<br />
<br />
<b>Laiškų išvalymas</b><br />
<br />
1. Išvalyti siunčiamų laiškų eilę galėsite su komanda:<br />

<pre><code>postsuper -d ALL
</code></pre>
<br />
Jei serverio laiškų eilėje yra reikalingų laiškų, kuriuos gavėjai turi gauti, nepageidaujams laiškus galite ištrinti nurodant konkretaus nepageidaujamo laiško ID, pavyzdžiui:
<pre><code>postsuper -d 5CFC194C2D20
</code></pre>]]></description>
   </item>
   <item>
      <title>Kaip nustatyti ir pašalinti dažniausiai kylančias Docker problemas?</title>
      <link>https://forumas.dedikuoti.lt/discussion/744/kaip-nustatyti-ir-pasalinti-dazniausiai-kylancias-docker-problemas</link>
      <pubDate>Wed, 29 Nov 2017 12:29:45 +0000</pubDate>
      <dc:creator>iv_vytenisg</dc:creator>
      <guid isPermaLink="false">744@/discussions</guid>
      <description><![CDATA[<img alt="" src="https://forumas.dedikuoti.lt/uploads/editor/vp/0kwg7dnda8sv.png" title="Image: https://forumas.dedikuoti.lt/uploads/editor/vp/0kwg7dnda8sv.png" /><br />
<br />
<b>Docker</b> palengvina aplikacijų administravimą naudodamas konteinerių technologiją. Tačiau pasitaiko atveju kai tenka susidurti su problemomis integruojant papildinius, kurių reikalauja Jūsų naudojamos aplikacijos laikomos konteineriuose, ypač jeigu nesate patyręs Docker naudotojas. Dažniausiai pasitaikančios problemos yra susijusios su bibliotekomis, moduliais bei susijungimais su kitais konteineriais.<br />
<br />
<br />
<b>0. Preliminarūs reikalavimai</b><br />
<br />
KVM Linux serveris su įdiegtu Docker. Docker diegimas gali būti atliekamas pagal šią <a rel="nofollow" href="https://forumas.dedikuoti.lt/showthread.php?t=683">pamoką</a>.<br />
<br />
<br />
<b>1. </b><i><b>Dockerfile</b></i><b> problemų sprendimas</b><br />
<br />
Dažniausiai susiduriama su problemomis kai kuriama Docker <i>image</i>. Visų pirma pateikiame skirtumą tarp <i>image</i> ir konteinerių:<br />

<ul>
<li><i>Image </i>yra resursas turintis tik nuskaitymo galimybę. Šis resursas gali būti sukuriamas naudojant <i>Dockerfile</i>. Tai yra resursas, kurį galite dalintis su kitais konteineriais Docker aplinkoje.</li>
<li>Konteineris tai yra įrašomas bei skaitomas resursas, kurį galite sukurti naudodami <i>image</i>, kurią jau sukūrėte anksčiau.</li>
</ul>
<br />
Peržiūrėjus Dockerfile galite matyti žingsnį po žingsnio visus veiksmus, kuriais buvo sukurtas image. Tai reiškia, kad jeigu matote aiškius įvykdytus žingsnius, visi anksčiau buvę žingsniai yra sėkmingai įvykdyti.<br />
<br />
Pasibandymui galime sukurti nedidelį <i>image</i> tam, kad susipažintume su <i>Dockerfile</i>. Sukurkite <i>docker_image</i> direktorijoje, kurį būtų pagrindinėje direktorijoje ir naudodami <a rel="nofollow" href="https://forumas.dedikuoti.lt/showthread.php?t=731">Nano</a> teksto redagavimo įrankį sukurti <i>Dockerfile</i>:<br />

<pre><code>mkdir ~/docker_image
nano ~/docker_image/Dockerfile
</code></pre>
<br />
Ir įkelkite žemiau pateiktą tekstą:<br />

<pre><code># base image
FROM debian:latest

# install basic apps
RUN aapt-get install -qy nano
</code></pre>
<br />
Toliau galite sukurti <i>image</i> iš šio failo tam, kad pamatytumėte, kaip Docker apdoroja nekorektišką komandą. Sukurti <i>image</i> naudodami šį kodą:<br />

<pre><code>docker build -t my_image ~/docker_image
</code></pre>
<br />
Ir pamatysite šį pranešimą terminale:<br />

<pre><code>Step 2 : RUN aapt-get install -qy nano
  ---&gt; Running in 085fa10ffcc2
/bin/sh: 1: aapt-get: not found
The command '/bin/sh -c aapt-get install -qy nano' returned a non-zero code: 127
</code></pre>
<br />
Pranešimas nurodo, kad problema yra antrame žingsnyje. Šį kartą mes naudojome <i>aapt-get</i> vietoje <i>apt-get</i>. Bet tai taip pat reiškia, kad ankstesnis žingsnis buvo įvykdytas korektiškai.<br />
<br />
Toliau koreguosime <i>Dockerfile</i> ir pašalinsime klaidingą komandą:<br />

<pre><code># install basic apps
RUN apt-get install -qy nano
</code></pre>
<br />
Paleiskite <i>docker build</i> komandą pakartotinai:<br />

<pre><code>docker build -t my_image ~/docker_image
</code></pre>
<br />
Ir pamatysite pateikiamą tekstą:<br />

<pre><code>Sending build context to Docker daemon 2.048 kB
Step 1 : FROM debian:latest
---&gt; ddf73f48a05d
Step 2 : RUN apt-get install -qy nano
---&gt; Running in 9679323b942f
Reading package lists...
Building dependency tree...
E: Unable to locate package nano
The command '/bin/sh -c apt-get install -qy nano' returned a non-zero code: 100
</code></pre>
<br />
Su korekcijomis procesas buvo atlikti truputi greičiau, nes Docker buvo išsisaugojęs pirmą žingsnį ir nebesiuntė iš naujo bazinės <i>image</i>. Tačiau yra gaunamas naujas klaidos kodas. Norint jį ištaisyti reikia modifikuoti <i>Dockerfile</i> ir atlikti išvalymą bei gražinti į pradžios stadiją. Atsidarykite konfigūracinį failą:<br />

<pre><code>nano ~/docker_image/Dockerfile
</code></pre>
<br />
Pridėti paryškintą eilutę aukščiau nei komanda įrašyti Nano:<br />

<pre><code># base image
FROM debian:latest

# clean and update sources
<b>RUN apt-get clean &amp;&amp; apt-get update

</b># install basic apps
RUN apt-get install -qy nano<b>
</b></code></pre>
<br />
Išsaugokite failą ir paleiskite <i>docker build</i> dar kartą:<br />

<pre><code>docker build -t my_image ~/docker_image
</code></pre>
<br />
Šį kartą procesas bus įvykdytas sėkmingai:<br />

<pre><code>Sending build context to Docker daemon 2.048 kB
Step 1 : FROM debian:latest
 ---&gt; a24c3183e910
Step 2 : RUN apt-get install -qy nano
 ---&gt; Running in 2237d254f172
Reading package lists...
Building dependency tree...
Reading state information...
Suggested packages:
  spell
The following NEW packages will be installed:
  nano
...

 ---&gt; 64ff1d3d71d6
Removing intermediate container 2237d254f172
Successfully built 64ff1d3d71d6
</code></pre>
<br />
Patikrinkime, kas atsitiks kai pridėsime Python 3 ir PostgreSQL <i>driver'ius</i> į <i>image</i>. Atidarykite <i>Dockerfile</i> dar kartą:<br />

<pre><code>nano ~/docker_image/Dockerfile
</code></pre>
<br />
Ir pridėkite paryškintas eilutes:<br />

<pre><code># base image
FROM debian:latest

# clean and update sources
RUN apt-get clean &amp;&amp; apt-get update

# install basic apps
RUN apt-get install -qy nano

# install Python and modules
<b>RUN apt-get install -qy python3
RUN apt-get install -qy python3-psycopg2</b>
</code></pre>
<br />
Išsaugokite failą, išeikite iš jo ir sukurkite image dar kartą:<br />

<pre><code>docker build -t my_image ~/docker_image
</code></pre>
<br />
Kaip pastebite iš pateikiamo atsakymo, paketai buvo įdiegti sėkmingai. Procesai yra įvykdomi greičiau, nes buvo procesai buvo išsaugoti laikinojo atmintyje. Pateikiamas atsakymas:<br />

<pre><code>Sending build context to Docker daemon 2.048 kB
Step 1 : FROM debian:latest
 ---&gt; ddf73f48a05d
Step 2 : RUN apt-get clean &amp;&amp; apt-get update
 ---&gt; Using cache
 ---&gt; 2c5013476fbf
Step 3 : RUN apt-get install -qy nano
 ---&gt; Using cache
 ---&gt; 4b77ac535cca
Step 4 : RUN apt-get install -qy python3
 ---&gt; Running in 93f2d795fefc
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  krb5-locales libgmp10 libgnutls-deb0-28 libgssapi-krb5-2 libhogweed2
  libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libldap-2.4-2 libnettle4
  libp11-kit0 libpq5 libsasl2-2 libsasl2-modules libsasl2-modules-db
  libtasn1-6
Suggested packages:
  gnutls-bin krb5-doc krb5-user libsasl2-modules-otp libsasl2-modules-ldap
  libsasl2-modules-sql libsasl2-modules-gssapi-mit
  libsasl2-modules-gssapi-heimdal python-psycopg2-doc
The following NEW packages will be installed:
  krb5-locales libgmp10 libgnutls-deb0-28 libgssapi-krb5-2 libhogweed2
  libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libldap-2.4-2 libnettle4
  libp11-kit0 libpq5 libsasl2-2 libsasl2-modules libsasl2-modules-db
  libtasn1-6 python3-psycopg2
0 upgraded, 18 newly installed, 0 to remove and 0 not upgraded.
Need to get 5416 kB of archives.
After this operation, 10.4 MB of additional disk space will be used.

...

Processing triggers for libc-bin (2.19-18+deb8u6) ...
 ---&gt; 978e0fa7afa7
Removing intermediate container d7d4376c9f0d
Successfully built 978e0fa7afa7
</code></pre>
<br />
Visada rekomenduojame įdėmiai peržiūrėti pateikiamus atsakymus komandinėje eilutėje. Paleiskite atnaujinimus <i>build time</i>  aplinkoje būdami konteineryje tam, kad nebūtumėte sustabdyti laikinojoje atmintyje esančiu paketų sąrašu.<br />
<br />
<br />
<b>2. Konteinerių pavadinimų problemos:</b><br />
<br />
Kuo daugiau konteinerių turėsite, tuo daugiau šansų, kad susidursite su konteinerių pavadinimų problemomis - kai kurie konteineriai turės tokius pačius pavadinimus. Panagrinėkime kaip pervadinti ar pašalinti konteinerius tam, kad išvengti užvardinimo problemų.<br />
<br />
Paleiskite konteinerį iš anksčiau naudoto <i>image</i>. Įvykdykite šią komandą:<br />

<pre><code>docker run -ti my_image bash
</code></pre>
<br />
Kai konteineris startuos pamatysite, kad naudojatės pagrindiniu konteinerio naudotoju:<br />

<pre><code>root@80a0ca58s6ec:/#
</code></pre>
<br />
Kai jau turite veikiantį konteinerį peržvelkime su kokiomis problemomis yra galimybė susidurti.<br />
<br />
Kai paleidžiate konteinerį be konkretaus pavadinimo, kaip padarėme dabar, Docker atsitiktinai parenka konteineriui pavadinimą. Galite matyti visus veikiančius konteinerius paleisdami komandą <i>docker ps</i> atsijungę iš konteinerio. Atsijunkite iš konteinerio ir įvykdykite komandą:<br />

<pre><code>docker ps
</code></pre>
<br />
Ši komanda pateiks veikiančių konteinerių sąrašą, kaip pavyzdžiui:<br />

<pre><code>CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
80a0ca58d6ec        my_image            "bash"              22 seconds ago      Up 28 seconds                           docker_container
</code></pre>
<br />
Jums bus pateikiamas kitoks pavadinimas nei <i>docker_container</i>. Docker automatiškai parenka pavadinimą ir tai gali sukelti problemų norint nustatyti, koks tai konteineris.<br />
<br />
Norint nustatyti konkretų konteinerį galime naudoti <i>- -name</i> argumentą paleidžiant konteinerį. Arba galime pervadinti konteinerį į konkretesnį pavadinimą. Paleiskite komandą:<br />

<pre><code>docker rename jūsų_konteinerio_pavadinimas python_box
</code></pre>
<br />
Tada peržiūrėkite konteinerių sąrašą:<br />

<pre><code>docker ps
</code></pre>
<br />
Pateikiamame atsakyme matysite, kad sėkmingai pervadinimo konteinerį:<br />

<pre><code>CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
80a0ca58d6ec        my_image            "bash"              24 minutes ago      Up 24 minutes                           python_box
</code></pre>
<br />
Norint uždaryti konteinerį įveskite <i>exit</i> būdami konteinerio direktorijoje:<br />

<pre><code>root@80a0ca58d6ec:/# exit
</code></pre>
<br />
Taip pat, galite išjungti konteinerį jame nebūdami:<br />

<pre><code>docker kill python_box
</code></pre>
<br />
Kai išjungsite konteinerį tokiu būdu, Docker pateiks atsakymą koks konteineris buvo išjungtas:<br />

<pre><code>python_box
</code></pre>
<br />
Tam, kad įsitikintumėte, kad konteineris neegzistuoja, paleiskite komandą:<br />

<pre><code>docker ps
</code></pre>
<br />
Gausite atsakymą:<br />

<pre><code>CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
</code></pre>
<br />
Šiuo atveju panašu, kad galima būtų sukurti kitą konteinerį su tokiu pačiu pavadinimu, tačiau patikrinkime ar pavyks. Naudosime <i>- -name</i> argumentą nustatant konteinerio pavadinimą:<br />

<pre><code>docker run --name python_box -ti my_image bash
</code></pre>
<br />
Pateikiamas atsakymas:<br />

<pre><code>docker: Error response from daemon: Conflict. The name "/python_box" is already in use by container 80a0ca58d6ecc80b305463aff2a68c4cbe36f7bda15e680651830fc5f9dda772. You have to remove (or rename) that container to be able to reuse that name..
See 'docker run --help'.
</code></pre>
<br />
Jūs negalite perrašyti konteinerio pavadinimo (image pavadinimą galima pervadinti), kuris jau egzistuoja. Docker rašo, kad toks konteineris egzistuoja nepaisant to, kad mes jį pašalinome. Jis nėra veikiantis, tačiau vis dar išlieka galimybė jį startuotį. Mes jį sustabdėme, bet nepašalinome. Komanda docker ps rodo tik veikiančius konteinerius, todėl nėra matomas sustabdytas konteineris.<br />
<br />
Tam, kad paleistume visus konteinerius yra naudojama komanda:<br />

<pre><code>docker ps -a
</code></pre>
<br />
Dabar konteineris <i>python_box</i> bus matomas sąraše:<br />

<pre><code>CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
80a0ca58d6ec        my_image            "bash"              12 minutes ago      Exited (137) 6 minutes ago                       python_box
</code></pre>
<br />
Konteinerio statusas yra <i>Exited (137)</i>, todėl mes ir susidūrėme su pervadinimo problema kai bandėme sukurti konteinerį tuo pačiu pavadinimu.<br />
<br />
Norint pilnai pašalinti konteinerį yra naudojama komanda:<br />

<pre><code>docker rm python_box
</code></pre>
<br />
Ir Docker pateikia konteinerio pavadinimą, kurį pašalino:<br />

<pre><code>python_box
</code></pre>
<br />
Toliau sukurkime naują serverį su pavadinimu <i>python_box</i>, kurį pašalinome anksčiau:<br />

<pre><code>docker run --name python_box -ti my_image bash
</code></pre>
<br />
Procesas sėkmingai įvykdomas ir automatiškai prijungiame prie konteinerio <i>root</i> direktorijos:<br />

<pre><code>root@c05ac9d0c010:/#
</code></pre>
<br />
Atlikus testavimus reikėtų pašalinti šį konteinerį tam, kad nekiltų problemų ateityje. Išėję iš konteinerio atlikite komandą:<br />

<pre><code>docker kill python_box &amp;&amp; docker rm python_box
</code></pre>
<br />
Mes sujungėme dvi komandas į vieną, todėl bus pateikiamas konteinerio pavadinimas du kartus. Pirmas nurodys, kad išjungėme konteinerį, o antras, kad pašalinome:<br />

<pre><code>python_box
python_box
</code></pre>
<br />
Naudokite <i>docker ps -a</i> norėdami patikrinti ar konteineris yra tikrai pašalintas ir galima naudoti jo pavadinimą naujo konteinerio sukūrimui.<br />
<br />
<br />
3. Susijungimų tarp konteinerių problemų sprendimas<br />
<br />
Kadangi konteineriai atskiria skirtingas aplikacijas ir leidžia lengviau jam modifikuoti, pasitaiko atveju kai vienas iš konteinerių būna sugadinamas. Tada tenka jį pakeisti nauju, kas dažnai iššaukia susijungimo problemas.<br />
<br />
Testavimui atlikti susikursime du skirtingus konteinerius - Python ir PostgreSQL. Visų pirma sukursime konteinerį su PostgreSQL duomenų baze. Konteinerio užvadinimui naudosime <i>- -name</i> argumentą. Pavadinimas bus <i>postgre_box</i>:<br />

<pre><code>docker run --name postgres_box --detach postgres
</code></pre>
<br />
Kaip pastebėjote, naudojamas ir <i>- -detach</i> argumentas, kuris leidžia paleisti konteinerį ir automatiškai neprijungia prie jo. Taip pat naudojamas postgres argumentas leidžiantis paleisti PostgreSQL duomenų bazę konteinerio viduje. Atlikus aukščiau pateiktą komandą gausite atsakymą, kuriame matysite konteinerio pilną ID:<br />

<pre><code>Unable to find image 'postgres:latest' locally
latest: Pulling from library/postgres
6a5a5368e0c2: Already exists
193f770cec44: Pull complete
...
484ac0d6f901: Pull complete
Digest: sha256:924650288891ce2e603c4bbe8491e7fa28d43a3fc792e302222a938ff4e6a349
Status: Downloaded newer image for postgres:latest
<b>f6609b9e96cc874be0852e400381db76a19ebfa4bd94fe326477b70b8f0aff65</b>
</code></pre>
<br />
Atsidarykite konteinerių sąrašą tam, kad matytumėte ar konteineris veikia:<br />

<pre><code>docker ps
</code></pre>
<br />
Pateikiamas atsakymas, kuris nurodo, kad <i>postgres_box</i> veikia naudojant 5432 prievadą:<br />

<pre><code>CONTAINER ID        IMAGE               COMMAND                  CREATED                  STATUS              PORTS               NAMES
7a230b56cd64        postgres_box            "/docker-entrypoint.s"   Less than a second ago   Up 2 seconds        5432/tcp            postgres
</code></pre>
<br />
Dabar laikas paleisti Python konteinerį. Tam, kad jis matytų <i>postgres_box</i> konteinerį reikia nurodyti kito konteinerio vietą naudojant <i>- -link</i> argumentą. Python konteinerio paleidimui naudojama komanda:<br />

<pre><code>docker run --name python_box --link postgres_box:postgres -ti my_image bash
</code></pre>
<br />
Dabar atliksime PostgreSQL konteinerio sujungimą su <i>python_box</i> konteineriu:<br />

<pre><code>root@3053f74c8c13:/# nano pg_test.by
</code></pre>
<br />
Ir pridėkite žemiau pateiktą tekstą:<br />

<pre><code>"""Test PostgreSQL connection."""
import psycopg2

conn = psycopg2.connect(user='postgres')
print(conn)
</code></pre>
<br />
Dabar galime sužinoti, kas atsitiks kai bandysite kreiptis į kitą konteinerį:<br />

<pre><code>root@3053f74c8c13:/# python3 pg_test.py
</code></pre>
<br />
Ir Jums bus patiekiamas atsakymas:<br />

<pre><code>Traceback (most recent call last):
  File "pg_test.py", line 5, in &lt;module&gt;
    conn = psycopg2.connect(database="test", user="postgres", password="secret")
  File "/usr/lib/python3/dist-packages/psycopg2/__init__.py", line 164, in connect
    conn = _connect(dsn, connection_factory=connection_factory, async=async)
psycopg2.OperationalError: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
</code></pre>
<br />
Kaip matote, nepavyksta susijungti su duomenų baze, nes Python bando susijungti su duomenų baze lokaliai, o tai nepavyks padaryti, nes duomenų bazė yra kitame konteineryje. Tai tas pats, kad bandytumėte susijungti lokaliai su kitame serveryje esančia duomenų baze.<br />
<br />
Susijungimą galite įvykdyti naudojant konteinerio pavadinimą ir peržiūrint <i>etc/hosts</i> failą <i>ptyhon_box</i> konteineryje:<br />

<pre><code>root@3053f74c8c13:/# cat /etc/hosts
</code></pre>
<br />
Pamatysite, kad <i>postgres</i> yra tikrai pasiekiamas:<br />

<pre><code>127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2      postgres f6609b9e96cc postgres_box
172.17.0.3      3053f74c8c13
</code></pre>
<br />
Todėl dabar galime modifikuoti Python skriptą ir pridėti serverio pavadinimą. Atsidarykite failą:<br />

<pre><code>root@3053f74c8c13:/# nano pg_test.py
</code></pre>
<br />
Ir nurodykite serverio pavadinimą taip, kaip pavyzdyje:<br />

<pre><code>"""Test PostgreSQL connection."""
import psycopg2

conn = psycopg2.connect(host='postgres', user='postgres')
print(conn)
</code></pre>
<br />
Išsaugokite tekstą ir paleiskite skriptą iš naujo:<br />

<pre><code>root@3053f74c8c13:/# python3 pg_test.py
</code></pre>
<br />
Šį kartą skriptas suveiks sėkmingai be problemų:<br />

<pre><code>&lt;connection object at 0x7f64caec69d8; dsn: 'user=postgres host=7a230b56cd64', closed: 0&gt;
</code></pre>
<br />
Visada stenkitės naudoti konteinerių vardus tam, kad sėkmingai įvykdytumėte susijungimus.<br />
<br />
4. Apibendrinimas<br />
<br />
Katik apžvelgėme pagrindines problemas su kuriomis tenka susidurti administruojant Docker. Docker taip pat turi <i>- -debug</i> argumentą, kuris naudojamas Docker kūrėjų. Tačiau jeigu norite sužinoti daugiau apie Docker problemas, naudokite šią komandą:<br />

<pre><code>docker -D [command] [arguments]
</code></pre>
<br />
Taip pat rekomenduojame susipažinti su pagrindinėmis taisyklėmis bei <a rel="nofollow" href="https://www.booleanworld.com/introduction-docker-ecosystem/">eko sistema</a> ir manome, kad dauguma konceptų, kurie iš pradžių atrodė nežinomi, turėtų tapti aiškesni.]]></description>
   </item>
   <item>
      <title>SPAM pobūdžio laiškų siuntimo šaltinio identifikavimas EXIM serveryje</title>
      <link>https://forumas.dedikuoti.lt/discussion/597/spam-pobudzio-laisku-siuntimo-saltinio-identifikavimas-exim-serveryje</link>
      <pubDate>Thu, 05 Feb 2015 10:03:31 +0000</pubDate>
      <dc:creator>IV_RomanL</dc:creator>
      <guid isPermaLink="false">597@/discussions</guid>
      <description><![CDATA[Pamoka kaip greitai ir labai lengvai nustatyti iš kur tiksliai serveryje yra siunčiami SPAM pobūdžio laiškai. Šis metodas deja veiks tik jei naudojamas Exim servisas el.pašto laiškų siuntimui.<br />
<br />
<b>1. Prisijunkite prie serverio SSH konsolės ir įvykdykite komandą:</b><br />

<pre><code>grep cwd /var/log/exim/mainlog | grep -v /var/spool | awk -F"cwd=" '{print $2}' | awk '{print $1}' | sort | uniq -c | sort -n
</code></pre>
Komandos paaiškinimas:<br />
<br />
<b>grep cwd /var/log/exim/mainlog</b> - ši dalis nurodo Exim serviso log failo vietą. Tad "/var/log/exim/mainlog" turėtų būti kelias iki Exim mainlog failo. Jei reikia, pakoreguokite šį parametrą.<br />
<br />
<b>grep -v /var/spool</b> - ši dalis pažymi jog pateiktame rezultate nebūtų eilutės "/var/spool". Šios eilutės keisti nereikia.<br />
<br />
<b>awk -F"cwd=" '{print $2}' | awk '{print $1}'</b> - ši komanda pateikia rezultatą lengvai perskaitoma forma. Šios eilutės keisti nereikia.<br />
<br />
<b>sort | uniq -c | sort -n</b> - eilutė atsakinga už rezultato rikiavimą. Ši komanda rikiuos rezultatus nuo mažiausio iki didžiausio. Šios eilutės keisti nereikia.<br />
<br />
<b>2. Įvykdžius minėta komandą išvedamas rezultatas turėtų būti panašus į tai:</b><br />

<blockquote>

<div>10 /home/vartotojas/public_html/aplankas<br />
30 /home/vartotojas/public_html<br />
10000 /home/vartotojas/public_html/aplankas2</div>
</blockquote>
Skaičius pradžioje pažymi kiek laiškų buvo išsiųsta iš tam tikro aplanko. Kaip matote aplankas "/home/vartotojas/public_html/aplankas2" atsakingas už 10000 laiškų išsiuntimą, tad tikėtina jog tai ir bus katalogas kuriame talpinamas kenkėjiškas failas.<br />
<br />
<b>3. Peržiūrėkime kokie script'ai yra įtartiname aplanke:</b><br />

<pre><code>ls -lahtr /home/vartotojas/public_html/aplankas2
</code></pre>
Rezultatas turėtų būti panašus į:<br />

<blockquote>

<div>drwxr-xr-x 17 vartotojas vartotojas 4.0K Jan 20 10:25 ../<br />
-rw-r--r-- 1 vartotojas vartotojas 5.6K Jan 20 11:27 scriptas.php<br />
drwxr-xr-x 2 vartotojas vartotojas 4.0K Jan 20 11:27 ./</div>
</blockquote>
Tikėtina, jog problemą sukelia failas pavadinimu "scriptas.php".<br />
<br /><b>
4. Peržiūrime įtartino failo statistinę informaciją:</b><br />

<pre><code>grep "scriptas.php" /home/vartotojas/access-logs/domenas.tld | awk '{print $1}' | sort -n | uniq -c | sort -n<b>
</b></code></pre><b>
Svarbu:</b><br />
<br />
<b>/home/vartotojas/access-logs/domenas.tld</b> - ši dalis privalo būti pakeista atitinkamai pagal tai, kur yra jūsų domeno apache "access log" žurnalas.<br />
<br />
Įvykdžius komandą rezultatas bus panašus į:<br />

<blockquote>

<div>2 123.123.123.126<br />
2 123.123.123.125<br />
2 123.123.123.124<br />
10000 123.123.123.123</div>
</blockquote>
Tai yra IP adresai ir jų užklausų kiekis į scriptas.php failą.<br />
<br />
Kaip matote IP adresas 123.123.123.123 pateikė 10000 užklausų į scriptas.php failą.<br />
<br />
<b>Rekomenduojami atlikti veiksmai:</b><br />
<br />
<b>1.</b> Jei tai yra failas kuris reikalingas korektiškam jūsų svetainės veikimui, peržiūrėkite jo kodą, gal jame bus patalpintas kenkėjiškas kodas kuris vykdo SPAM pobūdžio laiškų siuntimą. Pašalinkite kenkėjišką kodą nedelsiant.<br />
<br />
<b>2.</b> Jei tai yra failas kuris nėra jūsų svetainės dalis, tuomet nedelsiant jį pašalinkite ir atlikite visos svetainės kodo reviziją, taip pat pakeiskite FTP prisijungimo slaptažodį.<br />
<br />
<b>3.</b> Blokuokite piktybinį IP adresą iš kurio buvo kreiptasi į kenkėjišką failą (tą galite atlikti IPtables pagalba, .htaccess failo pagalba).<br />
<br />
<b>4.</b> Išvalykite susikaupusių laiškų eilę ir stebėkite ar joje nesikaupia nauji laiškai.]]></description>
   </item>
   <item>
      <title>Tinklo sąsajos atstatymas naudojantis klientų sistemos konsole</title>
      <link>https://forumas.dedikuoti.lt/discussion/575/tinklo-sasajos-atstatymas-naudojantis-klientu-sistemos-konsole</link>
      <pubDate>Tue, 12 Aug 2014 13:58:45 +0000</pubDate>
      <dc:creator>IV_VygandasS</dc:creator>
      <guid isPermaLink="false">575@/discussions</guid>
      <description><![CDATA[Šioje trumpoje pamokoje nurodysime būdus kuriais po nekorektiškai startavusių tarnybų galite atstatyti tinklo sąsają serveriui.<br />
<br />
<b>1. </b>Prisijungiame prie serverio konsolės per mūsų klientų sistemą.<br />
<br />
<b>2.</b> Prisijungiame su "<i>root</i>" vartotoju.<br />
<br />
<b>3. </b>Patikriname ar problema yra nestartavusioje tinklo sąsajoje ar tiesiog nepasileido ssh tarnyba.<br />
<br />
Pamatyti tinklo sąsajų informaciją galime naudojant šią komandą:<br />

<pre><code>ifconfig -a
</code></pre>
Pamatyti atvirus prievadus, kuriuos startuojant ssh tarnyba atidaro galime, naudojant šią komandą:<br />

<pre><code>netstat -tulpn
</code></pre>
arba<br />

<pre><code>netstat -tulpn | grep ssh
</code></pre>
<b>4.</b> Jeigu tinklo sąsaja nėra pakilusi atliekame tai rankiniu būdu:<br />

<pre><code>/etc/init.d/network restart
</code></pre>
arba:<br />

<pre><code>/etc/sysconfig/network-scripts/ifup venet0:0
</code></pre>
<br />
<b>5.</b> Jeigu dėl tam tikrų priežasčių tinklo sąsaja nepakyla. Pridedame ją rankiniu būdu:<br />

<pre><code>ip addr add dev venet0 &lt;IP&gt;/32
ifconfig venet0 up
route add default dev venet0
</code></pre>
<br />
<b>6.</b> Atveju jeigu <i>ssh</i> tarnyba nestartavus, paleidžiame ją rankiniu būdu:<br />

<pre><code>/etc/init.d/sshd restart
</code></pre>
<br />
Dažniau pasitaikančios problemos dėl kurių tarnybos nestartuoja:<br />

<ul>
<li>Nekorektiškai koreguotas /etc/fstab failas.</li>
<li>Trūkstami paketai /bin/ kataloge. Kaip pvz.: ne visos tarnybos nestartuoja korektikšai jeigu trūksta rm įrankio.</li>
<li>Nekorektiška sąsajų konfigūracija, ar papildomi konfigūracijos failai. Pvz.: blogos sintaksės /etc/network/interfaces.tail failas. Kurio turinys galiausiai yra įterpiamas į bendrą /etc/network/interfaces konfigūraciją.</li>
</ul>

<ul>
<li>Debian OS dist-upgrade atveju gali būti pašalintas "upstart" paketas ir pakeistas "sysvinit" paketu. Tokiu atveju sutrinka konteinerio korektiškas startavimas.</li>
</ul>
<br />
Sprendimas:<br />

<pre><code>apt-get install upstart
</code></pre>]]></description>
   </item>
   <item>
      <title>Tipinės svetainės neveikimo priežastys</title>
      <link>https://forumas.dedikuoti.lt/discussion/554/tipines-svetaines-neveikimo-priezastys</link>
      <pubDate>Thu, 12 Jun 2014 16:25:59 +0000</pubDate>
      <dc:creator>IV_VygandasS</dc:creator>
      <guid isPermaLink="false">554@/discussions</guid>
      <description><![CDATA[Šiame informaciniame straipsnyje glaustai aptarsime tipines problemas dėl kurių Jūsų svetainė gali būti neatvaizduojama.<br />
<br />
<b>Tipinių problemų skirstymas<br />
</b><br />
Dažniausiai nesėkmingai bandant priversti naują svetainę veikti reikia atsakyti į šiuos klausimu:<br />

<ul>
<li><b>Ar web serverio tarnybą įdiegta?</b></li>
<li><b>Ar web serverio tarnyba yra paleista?</b></li>
<li><b>Ar web serverio konfigūracijos sintaksė yra teisinga?</b></li>
<li><b>Ar sukonfigūruoti prievadai yra atidaryti/pasiekiami?</b></li>
<li><b>Ar DNS nukreipimai yra atlikti korektiškai?</b></li>
<li><b>Ar yra tinkamai nurodytas svetainės šakninis katalogas?</b></li>
<li><b>Ar web serveris pateikia tinkamus indekso failus?</b></li>
<li><b>Ar svetainės failų ir katalogų teisės bei savininkai yra nurodyti teisingai?</b></li>
<li><b>Ar per konfigūracinius failus nėra ribojama prieiga?</b></li>
<li><b>Jeigu svetainė naudoja duomenų bazes, ar duomenų bazių tarnyba yra paleista?</b></li>
<li><b>Ar svetainė sėkmingai prisijungia prie reikalingos duomenų bazės?</b></li>
<li><b>Ar web serveris yra tinkamai sukonfigūruotas atvaizduoti dinaminį turinį?</b></li>
</ul>
<br />
Pirma vieta kur reikėtų ieškoti problemos priežasties yra atitinkamos tarnybos žurnalų išrašai. Įprastai žurnalų išrašai serveryje yra laikomi /var/log/ kataloge, bei jo subkataloguose.<br />
<br />
Pavyzdžiui, jeigu mūsų web serveris yra <i>Apache</i>, tuomet priklausomai nuo operacinės sistemos <i>Apache</i> žurnalų išrašus rasime /var/log/<i>Apache</i>2/ arba /var/log/<i>httpd</i>/ kataloguose. Taip pat jeigu turime duomenų bazių serverį, tuomet duomenų bazių tarnybos žurnalų išrašus taip pat rasime /var/log/ kataloge.<br />
<br />
Taip pat svarbu atkreipti dėmesį, kokį klaidos pranešimas pateikia (jeigu pateikia) tarnyba kai ši yra paleidžiama, bei koks klaidos pranešimas yra pateikiamas bandant apsilankyti pačioje pageidaujamoje svetainėje.<br />
<br />
Tiek pagal gaunamus klaidų pranešimus apsilankant pačioje svetainėje, tiek žurnalų išrašuose yra pakankamai patogu susirasti problemos priežastį naudojantis pageidaujama paieškos sistema.<br />
<br />
<b>Ar web serverio tarnyba įdiegta?<br />
</b><br />
Pirmas ir pagrindinis dalykas kuris yra reikalingas atvaizduojant internetinę svetainę tai žinoma yra web serverio tarnyba.<br />
<br />
Žinoma visuose serveriuose aptarnaujančiuose internetines svetaines vienu ar kitu momentu buvo/yra įrašyta web serverio tarnyba. Tačiau pasitaiko atvejų kai atliekant operacijas su kitų tarnybų paketais, web serverio tarnyba yra paprasčiausiai pašalinama kartu su kitais paketais.<br />
<br />
Todėl pastebėjus jog visgi web serverio tarnyba buvo tyčia ar netyčia pašalinta, iš naujo įdiegti web serverio tarnybą galime naudojant šias komandas:<br />
<br />
Naudojant <i>Ubuntu</i> ar <i>Debian</i> operacines sistemas, šiomis komandomis bus įdiegiamas <i>Apache</i> web serveris:<br />

<pre><code>sudo apt-get update
sudo apt-get install apache2
</code></pre>
Šiose sistemose <i>Apache</i> procesas yra vadinamas <i>Apache</i>2.<br />
<br />
Naudojant <i>Ubuntu</i> ar <i>Debian</i> operacines sistemas, šiomis komandomis bus įdiegiamas <i>Nginx</i> web serveris:<br />

<pre><code>sudo apt-get update
sudo apt-get install nginx
</code></pre>
Šiose sistemose <i>Nginx</i> procesas yra vadinamas <i>Nginx</i>.<br />
<br />
Naudojant <i>CentOS</i> ar <i>Fedora</i> operacines sistemas, šiomis komandomis bus įdiegiamas <i>Apache</i> web serveris:<br />

<pre><code>sudo yum install httpd
</code></pre>
Šiose sistemose <i>Apache</i> procesas yra vadinamas <i>httpd</i>.<br />
<br />
Naudojant <i>CentOS</i> ar <i>Fedora</i> operacines sistemas, šiomis komandomis bus įdiegiamas <i>Nginx</i> web serveris:<br />

<pre><code>sudo rpm -Uvh http://download.Fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
sudo yum install nginx
</code></pre>
Šiose sistemose <i>Nginx</i> procesas yra vadinamas <i>Nginx</i>.<br />
<br />
<b>Ar web serverio tarnyba yra paleista?</b><br />
<br />
Įsitikinus jog web serverio tarnyba yra įdiegta, reikia įsitikinti jog ji yra paleista.<br />
<br />
Vienas iš būdų kaip tai galime atlikti yra patikrinimas ar <i>Apache</i> tarnyba yra atidariusi prievadą. Tai galime pamatyti įvykdžius šią komandą:<br />

<pre><code>sudo netstat -plunt | grep apache2
</code></pre>
Numatomas rezultatas:<br />

<pre><code>tcp6       0      0 :::80           :::*            LISTEN      2000/apache2
</code></pre>
<u>Pastaba:</u> komandoje naudojamą Apache2 reikėtų pakeisti į mūsų serveryje naudojamą web serverio proceso pavadinimą.<br />
<br />
Jeigu prieš tai pateikta komanda negrąžina jokio rezultato, tuomet tikėtina jog web serverio tarnyba nėra paleista.<br />
<br />
Taip pat patikrinti ar <i>Apache</i> procesas yra paleistas galime pažiūrėti pačio proceso statusą sistemoje, šiomis komandomis:<br />
<br />
<i>Ubuntu</i> ar <i>Debian</i>:<br />

<pre><code>sudo service apache2 status
</code></pre>
<i>CentOS</i> ar <i>Fedora</i>:
<pre><code>sudo service httpd status
</code></pre>
Tokiu atveju priklausomai nuo naudojamos operacinės sistemos web serverio tarnybą paleisti galime žemiau pateiktų komandų principu:<br />
<br />
<i>Ubuntu</i> ar <i>Debian</i>:
<pre><code>sudo service apache2 start
</code></pre>
<i>CentOS</i> ar <i>Fedora</i>:
<pre><code>sudo /etc/init.d/httpd start
</code></pre>
arba
<pre><code>sudo service httpd start
</code></pre>
Jeigu web serverio tarnyba yra startavo, tuomet pakartotinai patikriname netstat komandos rezultatą.<br />
<br />
<b>Ar web serverio konfigūracijos sintaksė yra teisinga?</b><br />
<br />
Jeigu paleisti web serverio tarnybos visgi nepavyksta, dažniausiai tai indikuota problemą tarnybos konfigūraciniame faile. Tiek <i>Apache</i> tiek <i>Nginx</i> turi pakankamai griežtus reikalavimus direktyvų sintaksei.<br />
<br />
Konfigūraciniai failai įprastai yra laikomi /etc/ direktorijos subkataloge, kuris yra vadinamas pagal pačio proceso pavadinimą.<br />
<br />
<i>Ubuntu</i> ar <i>Debian</i> į pagrindinę <i>Apache</i> direktoriją mes galime patekti įvykdę šią komandą:<br />

<pre><code>cd /etc/apache2
</code></pre>
<i>CentOS</i> ar <i>Fedora</i> į pagrindinę <i>Apache</i> direktoriją mes galime patekti įvykdę šią komandą:<br />

<pre><code>cd /etc/httpd
</code></pre>
Šiuose kataloguose konfigūracija gali būti išmėtyta per kelis skirtingus konfigūracinius failus. Todėl pradžiai reikia patikrinti būtent tą konfigūracinį failą, kuriame startuojant tarnyba aptiko klaidą.<br />
<br />
Siekiant tikrinimą supaprastinti galime naudoti konfigūracijos sintaksės tikrinimui skirtas komandas:<br />
<br />
Naudojant <i>Apache</i> naudojama ši komanda:<br />

<pre><code>apache2ctl configtest
</code></pre>
Numatomas rezultatas:<br />

<pre><code>AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
</code></pre>
Naudojant <i>Nginx</i> naudojama ši komanda:<br />

<pre><code>sudo nginx -t
</code></pre>
Numatomas teigiamas rezultatas:<br />

<pre><code>Nginx: the configuration file /etc/Nginx/Nginx.conf syntax is ok
Nginx: configuration file /etc/nginx/nginx.conf test is successful
As you can see, this process checks your syntax as well. If we remove an ending semi-colon from a line in the file (a common error for Nginx configurations), you would get a message like this:
</code></pre>
Numatomas neigiamas rezultatas:<br />

<pre><code>Nginx: [emerg] invalid number of arguments in "tcp_nopush" directive in /etc/nginx/nginx.conf:18
nginx: configuration file /etc/nginx/nginx.conf test failed
There is an invalid number of arguments because nginx looks for a semi-colon to end statements. If it doesn't find one, it drops down to the next line and interpret that as further arguments for the last line.
</code></pre>
Gavus netinkamos konfigūracijos pranešimą reikia peržiūrėti rezultate pateikto failo sintakse, ties nurodyta eilute. Bei pakartotinai atlikti konfigūracijos tikrinimą, tai atlikinėti tol kos konfigūracijos testavimas nurodys teigiamą rezultatą.<br />
<br />
<b>Ar sukonfigūruoti prievadai yra atidaryti/pasiekiami?</b><br />
<br />
Įprastai web serveriai klausosi 80 prievado, o <i>TLS</i>/<i>SSL</i> susijungimams naudoja 443 prievadą. Siekiant pasiekti serveryje esančias svetaines, šie prievadai turi būti atidaryti/pasiekiami.<br />
<br />
Tai patikrinti galime tiek naudojant prieš tai nurodytą netstat komandą:<br />

<pre><code>sudo netstat -plunt | grep apache2
</code></pre>
Tiek naudojant netcat įrankį, vykdant šią komandą:<br />

<pre><code>sudo nc -z 111.111.111.111 80
</code></pre>
Pastaba: vykdomoje komandoje pakeičiame <i>111.111.111.111</i> į mūsų serverio IP adresą, o 80 į pageidaujamą patikrinti prievadą.<br />
<br />
Jeigu prievadas yra atidarytas/pasiekiamas, tuomet nc komandos rezultatas bus grąžintas beveik iš karto. Kitu atveju netcat įrankis bandys pakartotinai vykdyti susijungimą daugybę kartų. Taigi pageidaujant nutraukti nc komandos vykdymą galime tai atlikti nuspaudus klavišų kombinaciją CTRL+C.<br />
<br />
Jeigu prievadai nėra pasiekiami vertėtų peržiūrėti serverio ugniasienės taisykles. Tikėtina, jog jose yra nurodytas draudimas pasiekti serverį 80 ir 443 prievadais.<br />
<br />
<b>Ar DNS nukreipimai yra atlikti korektiškai?</b><br />
<br />
Jeigu svetainė yra pasiekiama naudojant tiesioginį serverio IP adresą, tačiau to nepavyksta atlikti naudojant svetainės domeną vertėtų peržvelgti domeno DNS nustatymus.<br />
<br />
Siekiant per domeną pasiekti pageidaujamą svetainę, domeno DNS nustatymuose turi būti "A" arba "AAAA" (IPv6 atveju) tipo įrašas nukreipiantis domeną į mūsų serverį.<br />
<br />
Patikrinti "A" tipo įrašą pageidaujamam domenui galime naudojant dig įrankį:<br />

<pre><code>host -t A example.com
</code></pre>
Numatomas rezultatas:<br />

<pre><code>example.com has address 93.184.216.119
</code></pre>
Grąžinamame rezultate IP adresas turi atitikti mūsų serverio IP adresą.<br />
<br />
Atliekant pakeitimus domeno aptarnaujamuose DNS serverių nustatymuose būtina atsižvelgti, jog pakeitimams įsigalioti yra reikalingas pakankamai nemažas laiko tarpas kol informacija apie naują domeno nukreipimą bus išplatinta tarp visų DNS serverių.<br />
<br />
<b>Ar yra tinkamai nurodytas svetainės šakninis katalogas?</b><br />
<br />
Jeigu DNS nustatymai yra tinkami, vertėtų patikrinti pačios tarnybos konfigūraciją. T.y. peržiūrėti ne tik sintaksę, tačiau ir parametrų nustatytas vertes. Kadangi tiek teisingai sukonfigūruoti <i>Apache</i> virtual host failai tiek <i>Nginx</i> server block failai užtikrina tinkamą užklausų apdorojimą.<br />
<br />
<i>Apache</i> virtual host poskyris atrodytų daug maž taip:<br />

<pre><code>&lt;VirtualHost *:80&gt;
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin admin@example.com
    DocumentRoot /var/www/html
. . .
</code></pre>
Šis virtual host yra sukonfigūruotas atsakinėti į bet kokias užklausas ateinančias example.com domeną per 80 prievadą.<br />
<br />
Panašiu principu veikia iš <i>Nginx</i> server block, kurie atrodytų daug maž taip:<br />

<pre><code>server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    root /usr/share/nginx/html;
    index index.html index.htm;
    server_name example.com www.example.com;
. . .
</code></pre>
Šis server block yra sukonfigūruotas atsakinėti į identikas užklausas, kaip ir prieš tai nurodytas <i>Apache</i> virtual host.<br />
<br />
Taip pat šiuose konfigūracijų segmentuose yra itin svarbus šakninio katalogo parametras, kuris nurodo kuriame serverio kataloge <i>Apache</i> ar <i>Nginx</i> web serveriai ieškos pačios svetainės failų kas kartą kai gaus užklausas.<br />
<br />
<i>Apache</i> atveju tai būtų šis parametras:<br />

<pre><code>DocumentRoot /var/www/html
</code></pre>
Šiuo atveju svetainės failų būtų ieškoma /var/www/html/ kataloge.<br />
<br />
<i>Nginx</i> atveju tai būtų šis parametras:<br />

<pre><code>root /usr/share/nginx/html;
</code></pre>
Šiuo atveju svetainės failų būtų ieškoma /usr/share/<i>nginx</i>/html/ kataloge.<br />
<br />
<b>Ar web serveris pateikia tinkamus indekso failus?</b><br />
<br />
Jeigu svetainės šakninis katalogas yra nurodytas teisingas, tuomet galimai problemą sukelia blogai nurodytas konfigūracijoje svetainės indekso failas. Tai yra pradinis failas kuris yra pateikiamas lankytojui apsilankius domeną, kuris veda į mūsų serverį.<br />
<br />
<i>Apache</i> atveju indekso failai yra nurodomi DirectoryIndex parametru:<br />

<pre><code>&lt;Directory /var/www/html&gt;
...
    DirectoryIndex index.html index.php
...
&lt;/Directory&gt;
</code></pre>
Nginx atveju indekso failai yra nurodomi index parametru:<br />

<pre><code>server {
...
    index index.html index.htm;
...
</code></pre>
Šiuo atveju abiejose pavyzdinėse parametrų vertėse yra nurodyta iš pradžių ieškoti index.html indekso failo, kurio neradus būtų ieškoma index.php failo šakniniame svetainės kataloge.<br />
<br />
<b>Ar svetainės failų ir katalogų teisės bei savininkai yra nurodyti teisingai?</b><br />
<br />
Viena iš dažniausiai pasitaikančių problemų, kurios yra atsakingos už svetainių neatvaizdavimą yra netinkamai nurodyti katalogų ir failų savininkai bei teisės. Siekiant jog web serveris galėtų pasiekti ir nuskaityti svetainės failus svetainės failai ir katalogas turi priklausyti tinkamai vartotojų grupei, bei turėti atitinkamas teises.<br />
<br />
Vartotojų ir vartotojų grupės reikalingos tam jog web serveris galėtų pasiekti ir nuskaityti svetainės failus gali kisti priklausomai nuo naudojamos operacinės sistemos distribucijos.<br />
<br />
<i>Ubuntu</i> ar <i>Debian</i>t įprastai tai yra <i>www-data</i> vartotojas/grupė. Tiek <i>Apache</i>, tiek <i>Nginx</i> atveju.<br />
<br />
<i>CentOS</i> ar <i>Fedora</i> įprastai tai yra <i>apache</i> vartotojas/grupė. <i>Nginx</i> atveju būtų vartotojas grupė - <i>nginx</i>.<br />
<br />
Peržiūrėti failų ar katalogų teises bei savininkus galime naudojant šią komandą:<br />

<pre><code>ls -l /path/to/web/root
</code></pre>
Siekiant pakeisti savininką naudojame komandą paremtą šia sintakse:<br />

<pre><code>sudo chown savininkas_vartotojas:savininkas_grupe /kelias/iki/failo/
</code></pre>
Siekiant pakeisti savininką rekursyvai pridedamas -R parametras.<br />
<br />
Pvz.:<br />

<pre><code>sudo chown -R savininkas_vartotojas:savininkas_grupe /kelias/iki/failo/
</code></pre>
<b>Ar per konfigūracinius failus nėra ribojama prieiga?</b><br />
<br />
Verta įsitikinti jog priegia prie svetainės nėra apribota per svetainės šakniname kataloge esantį .htaccess failą ar pačioje <i>Apache</i> konfigūracijoje.<br />
<br />
<i>Apache</i> konfigūracijoje ribojimas būtų matomas <i>&lt;Directory&gt;</i> direktyvoje:<br />

<pre><code>&lt;Directory /usr/share&gt;
    AllowOverride None
    Order deny,allow
    Deny from all
&lt;/Directory&gt;
</code></pre>
<i>Nginx</i> atveju priegos ribojimas būtų aprašomas tokiu principu:<br />

<pre><code>location /usr/share {
    deny all;
}
</code></pre>
<b>Jeigu svetainė naudoja duomenų bazes, ar duomenų bazių tarnyba yra paleista?</b><br />
<br />
Taip pat kaip ir tikrinant ar web serverio tarnyba yra paleista atveju kai svetainė naudoja duomenų bazes yra reikalinga patikrinti ar duomenų bazių tarnyba yra paleista.<br />
<br />
MySQL atveju patikrinti galime naudojant šią komandą:<br />
sudo netstat -plunt | grep mysql<br />
<br />
Numatomas rezultatas:
<pre><code>tcp        0      0 127.0.0.1:3306        0.0.0.0:*         LISTEN      3356/mysqld
</code></pre>
<b>Ar svetainė sėkmingai prisijungia prie reikalingos duomenų bazės?</b><br />
<br />
Atsižvelgiant į tai jog turinio valdymo sistemoms yra reikalinga galimybė prisijungti prie konfigūracijoje nurodytos duomenų bazės. Patikrinti pagal pvz. Wordpress config.php faile nurodytus parametrus galime patikrinti ar susijungimas vykdomas korektiškai.<br />
<br />
Tai galime atlikti naudojant šia sitakse paremtą komandą:<br />

<pre><code>mysql -u DB_USER_value -pDB_PASSWORD_value DB_NAME_value
</code></pre>
<b>Ar web serveris yra tinkamai sukonfigūruotas atvaizduoti dinaminį turinį?</b><br />
<br />
Svetainėje pateikiant dinaminį turinį (pvz. PHP), serveryje turi būti įdiegti užklausas į tokį turinį galintys apdoroti paketai.<br />
<br />
<i>Apache</i> web serveriui <i>Ubuntu</i> ar <i>Debian</i> aplinkoje tai atlikti galime naudojant šias komandas:<br />

<pre><code>sudo apt-get update
sudo apt-get install php5 libapache2-mod-php5
sudo a2enmod php5
</code></pre>
<i>Apache</i> web serveriui <i>CentOS</i> ar <i>Fedora</i> aplinkoje tai atlikti galime naudojant šias komandas:<br />

<pre><code>sudo yum install php php-mysql
sudo service httpd restart
</code></pre>
Su <i>Nginx</i> web serveriu yra šiek tiek sudėtingiau, kadangi <i>Nginx</i> neturi PHP modulio kuris gali būti tiesiog įjungtas. Todėl reikia įsitikinti, jog php-fpm yra įdiegtas mūsų konfigūracijoje.<br />
<br />
<i>Nginx</i> web serveriui <i>Ubuntu</i> ar <i>Debian</i> aplinkoje tai atlikti galime naudojant šias komandas:<br />

<pre><code>sudo apt-get update
sudo apt-get install php5-fpm php5-mysql
</code></pre>
<i>Nginx</i> web serveriui <i>CentOS</i> ar <i>Fedora</i> aplinkoje tai atlikti galime naudojant šią komandas:<br />

<pre><code>sudo yum install php-fpm php-mysql
</code></pre>]]></description>
   </item>
   <item>
      <title>Disko vietos sąnaudų nustatymui skirtos komandos/įrankiai</title>
      <link>https://forumas.dedikuoti.lt/discussion/462/disko-vietos-sanaudu-nustatymui-skirtos-komandos-irankiai</link>
      <pubDate>Tue, 06 Aug 2013 16:22:17 +0000</pubDate>
      <dc:creator>IV_VygandasS</dc:creator>
      <guid isPermaLink="false">462@/discussions</guid>
      <description><![CDATA[Šiame straipsnyje pateiksime komandas/įrankius, kurios padėtų nustatyti serveryje daugiausiai vietos užimančius bei daugiausiai failų talpinančius katalogus. Tai pravartu, kai serveryje dėl neaiškių priežasčių pastebimas disko vietos stygius. Arba pačios disko vietos stygiaus nėra, tačiau matoma, kad yra pasiekta <a rel="nofollow" href="http://www.dedikuoti.lt/serveriai.html#vieta">Inode limito</a> riba. Tuomet svarbu yra išsiaiškinti, kurie katalogai labiausiai išnaudoja reikalingus resursus.<br />
<br />
<b>Komandos:</b>
<ul>
<li>Peržiūrėti katalogus pagal failų kiekį mažėjančia tvarka, tikrinamame kataloge ir subkataloguose:
<pre><code>find &lt;katalogas&gt; -type d |  while    read line  ; do    echo "$( find "$line" -maxdepth 1 | wc -l) $line"  ; done |  sort -rn | less 
Pvz.: find /home/ -type d |  while    read line  ; do    echo "$( find "$line" -maxdepth 1 | wc -l) $line"  ; done |  sort -rn | less
</code></pre>
<br />
Arba:
<pre><code>find /&lt;kelias_iki_katalogo&gt; -type f | awk  '{$NF="";a[$0]++}END{for (i in a) print a[i],i }' FS=/ OFS=/ | sort -rn | less
Pvz.: find /home -type f | awk  '{$NF="";a[$0]++}END{for (i in a) print a[i],i }' FS=/ OFS=/ | sort -rn | less
</code></pre>
</li>
<li>Peržiūrėti katalogus pagal failų kiekį mažėjančia tvarka, tikrinamame kataloge:
<pre><code>find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -rn
</code></pre>
</li>
<li>Peržiūrėti Inode kiekį sistemoje:
<pre><code>df -i
</code></pre>
Rezultato pvz.:
<pre><code>Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/simfs           1000000   93618  906382   10% /
none                  524288     154  524134    1% /dev
</code></pre>
</li>
<li>Peržiūrėti rekursyviai bendrą failų kiekį pasirinktame kataloge:<br />

<pre><code>find . -type f | wc -l
</code></pre>
</li>
<li>Peržiūrėti kataloge daugiausiai vietos užimantį failus ar katalogus, tikrinamame kataloge:
<pre><code>du -h -s &lt;katalogas&gt;* | sort -nr
Pvz.: du -h -s /* | sort -nr
</code></pre>
</li>
<li>Peržiūrėti kataloge daugiausiai vietos užimantį failus ar katalogus, tikrinamame kataloge ir subkataloguose (surikiuoja pagal žmogui lengvai suprantamus dydžius):
<pre><code>du -k &lt;katalogas&gt;* | sort -nr | cut -f2 | xargs -d '\n' du -sh | less
Pvz.: du -k /* | sort -nr | cut -f2 | xargs -d '\n' du -sh | less
</code></pre>
</li>
</ul>
<b>Lengvesnei peržiūrai naudojami įrankiai:</b><br />
<br />
<b><i><a rel="nofollow" href="http://dev.yorhel.nl/ncdu">ncdu</a></i> įrankis</b><br />
<br />
<b>1.</b> Įdiegiame įrankį:
<pre><code>yum install ncdu -y
</code></pre>
<br />
Jei gausite klaidos pranešimą, kad toks paketas neegzistuoja, tuomet aktyvuokite EPEL repozitoriją su komanda:<br />

<pre><code>yum install epel-release -y
</code></pre>
<br />
Ją išjungti galėsite faile <b>/etc/yum.repos.d/epel.repo</b> vietoj  <b>enabled=1</b> nurodant <b>enabled=0</b><br />
<br />
2. Įrankio paleidimas:
<pre><code>ncdu
</code></pre>
<br />
Visą skripto naudojimo sintaksę rasime įrankio dokumentaciniame puslapyje:
<pre><code>man ncdu
</code></pre>
<br />
Įrankio pateikiama vartotojo sąsaja:<br />
<img alt="attachmentphpattachmentid25stc1d1375792835" src="https://forumas.dedikuoti.lt/attachment.php?attachmentid=25&amp;stc=1&amp;d=1375792835" title="Image: https://forumas.dedikuoti.lt/attachment.php?attachmentid=25&amp;stc=1&amp;d=1375792835" /><br />
<br />
<b><i><a rel="nofollow" href="http://gt5.sourceforge.net/">gt5</a></i> bash programino kodo skriptas</b><br />
<b><br />
1. </b>Atsisiunčiame <i>gt5</i> archyvą:<br />

<pre><code>wget http://downloads.sourceforge.net/project/gt5/gt5/gt5%2C%20version%201.4.0/gt5-1.4.0.tar.gz
</code></pre>
<br />
<b>2.</b> Išskleidžiame archyvą:<br />

<pre><code>tar xvf gt5-1.4.0.tar.gz
</code></pre>
<br />
<b>3.</b> Pereiname į išarchyvuotą katalogą:<br />

<pre><code>cd gt5-1.4.0/
</code></pre>
<br />
<b>4. </b>Naudojimas:<br />

<pre><code>bash gt5 &lt;tikrinama_pagrindinė_direktorija&gt;
Pvz.: bash gt5 /
</code></pre>
<br />
Visą skripto naudojimo sintaksę rasime <i>./README</i> faile.<br />
<br />
Įrankio pateikiama vartotojo sąsaja:<br />
<img alt="attachmentphpattachmentid27stc1d1375793161" src="https://forumas.dedikuoti.lt/attachment.php?attachmentid=27&amp;stc=1&amp;d=1375793161" title="Image: https://forumas.dedikuoti.lt/attachment.php?attachmentid=27&amp;stc=1&amp;d=1375793161" />]]></description>
   </item>
   <item>
      <title>Dedikuoto serverio problemų diagnozė</title>
      <link>https://forumas.dedikuoti.lt/discussion/59/dedikuoto-serverio-problemu-diagnoze</link>
      <pubDate>Mon, 09 Jan 2012 16:21:16 +0000</pubDate>
      <dc:creator>IV_RomanL</dc:creator>
      <guid isPermaLink="false">59@/discussions</guid>
      <description><![CDATA[Kokių konkrečių veiksmų reiktų imtis norint lokalizuoti galimas nepageidaujamas dedikuoto serverio apkrovas? Šiame informaciniame straipsnyje pateikiamos gairės kuriomis vadovaujantis galėsite nustatyti nemažą dalį problemas keliančių priežasčių ir jų galimus sprendimus. Bet kokiu atveju, problemas diagnozuoti ir jas šalinti turėtų jūsų dedikuoto serverio administratorius, tokiu būdu rizika suklysti bus minimali.<br />
<br />
<b>1. Padidėjęs serverio procesoriaus apkrovimas</b><br />
<br />
Atsiradus dedikuoto serverio sutrikimui dėl aukšto procesoriaus panaudojimo, reiktų nustatyti kas išnaudoja šį resursą. Priežastys galinčios lemtį šį sutrikimą:<br />
<br />
* Nepakankama esamo dedikuoto serverio procesoriaus galios serveryje vykdomoms programoms;<br />
* Staiga padidėjus vykdomų programų skaičiui;<br />
* Dėl nekorektiškai veikiančios (-ų) programos (-ų);<br />
<br />
Prisijungiame prie serverio SSH konsolės ir vykdome komandą:<br />

<pre><code>top
</code></pre>
ir tuomet nuspauskite klavišus <i>SHIFT + M</i><br />
<br />
Prieš jūsų akis turėtų būti pateikta grafa, <u>pavyzdys</u>:
<pre><code>top - 14:08:25 up 38 days, 8:02, 1 user, load average: 1.70, 1.77, 1.68
Tasks: 107 total,   3 running, 104 sleeping,   0 stopped,   0 zombie
Cpu(s): 11.4%us, 29.6%sy, 0.0%ni, 58.3%id, .7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem:   1024176k total,   997408k used,    26768k free,    85520k buffers
Swap:  1004052k total,     4360k used,   999692k free,   286040k cached

  PID USER    PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 9463 mysql   16   0  686m 111m 3328 S   53  5.5 569:17.64 mysqld
18749 apache  16   0  140m 134m 1868 S   12  6.6   1345:01 php_defunct
24636 apache  17   0 34660  10m  712 S    8  0.5   1195:15 php_defunct
22442 apache  24   0  6048 2024 1452 S    8  0.1   0:00.04 php_defunct
</code></pre>
Pateikta lentelė su realiu laiku veikiančiomis aplikacijomis dedikuotame serveryje. Paanalizuokime pateiktus duomenis.<br />
<br />
Eilutė:<br />

<pre><code>Cpu(s): 11.4%us, 29.6%sy, 0.0%ni, 58.3%id, .7%wa, 0.0%hi, 0.0%si, 0.0%st
</code></pre>
čia:<br />
<br />
* us: vartotojo CPU laikas (user CPU time) - tai reikšmė parodanti kokios aplikacijos veikia varotojo vardu. Šiuo atveju pagal pavyzdį veikia "mysql" ir "apache" programos. Jei ši reikšmė yra didesnė už kitas, reiškia apkrova generuoja vartotojo vykdoma programa.<br />
* sy: sistemos CPU laikas (system CPU time) - tai pačios operacinės sistemos branduolio apkrovos reikšmė.<br />
* id: budinčio CPU procentas (idle CPU time) - ši reikšmė parodo kiek procentų CPU nėra panaudojamas. Kuo ši reikšmė didesnė tuo geriau. Jei ši reikšmė itin didelė (daugiau nei 80-85 procentai) tai indikuoja jog sistemos sulėtėjimą lemia ne CPU resurso perkrova.<br />
* wa: nuskaitymo/įrašymo laukimas (I/O wait) - ši reikšmė parodo laiką kurį turi laukti CPU iki kol bus įrašyti/nuskaityti duomenys (dažniausiai kietojo disko). Jei ši reikšmė itin didelė ir jūsų dedikuoto serverio darbas sulėtėjęs, tai gali reikšti kietojo disko problemą arba RAM gedimą.<br />
<br />
Eilutė:
<pre><code>   PID USER    PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
  9463 mysql   16   0  686m 111m 3328 S   53  5.5 569:17.64 mysqld
 18749 apache  16   0  140m 134m 1868 S   12  6.6   1345:01 php_defunct
24636 apache  17   0 34660  10m  712 S    8  0.5   1195:15 php_defunct
22442 apache  24   0  6048 2024 1452 S    8  0.1   0:00.04 php_defunct
</code></pre>
Čia:<br />
<br />
* CPU: indikuoja dedikuotame serveryje veikiančios aplikacijos CPU sunaudojimą. Kuo šis skaičius didesnis, tuo daugiau aplikacija reikalauja CPU galios. Jei matote jog šis skaičius itin didelis ties viena iš aplikacijų (pvz.: mysql), tuomet problema mySQL serveryje.<br />
<br />
<i>Mūsų atveju programa mysql kuri vykdoma vartotojo mysql vardu, sunaudoja 53 procentus CPU resurso.</i><br />
<br />
Ką daryti jei serveryje veikianti aplikacija pradėjo naudoti itin daug CPU resurso?<br />
<br />
<b>a.</b> Nustatyti būtent kokia aplikacija išnaudoja CPU resursą;<br />
<b>b.</b> Aplikaciją optimizuoti ar sukonfigūruoti geresniai dedikuoto serverio  resursų eksploatacijai:<br />
MySQL - <a rel="nofollow" href="https://forumas.dedikuoti.lt/discussion/5/mysql-duomenu-baziu-valdymo-sistemos-konfiguravimas">konfigūracijos/optimizacijos gidas</a><br />
Apache - <a rel="nofollow" href="https://forumas.dedikuoti.lt/discussion/6/apache-web-serverio-konfiguravimas">konfigūracijos/optimizacijos gidas</a><br />
<b>c.</b> Serverio resursų didinimas esant poreikiui (dedikuoto serverio plano didinimas)<br />
<br />
<b>2. Padidėjęs serverio virtualios atminties apkrovimas</b><br />
<br />
Atsiradus dedikuoto serverio sutrikimui dėl aukšto virtualios atminties (RAM)  panaudojimo, reiktų nustatyti kas išnaudoja šį resursą. Priežastys  galinčios lemtį šį sutrikimą:<br />
<br />
* Nepakankamas virtualios atminties (RAM) kiekis, serveryje vykdomoms programoms;<br />
* Staiga padidėjus vykdomų programų skaičiui;<br />
* Dėl nekorektiškai veikiančios (-ų) programos (-ų);<br />
<br />
Vykdome komandą <i>top</i> serverio SSH konsolėje (1 punkto pavyzdys). Pateikiama lentelė su realiu laiku veikiančiomis aplikacijomis, <u>pavyzdys</u>:<br />

<pre><code>   PID USER    PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
    9463 mysql   16   0  686m 111m 3328 S   2  60 569:17.64 mysqld
   18749 apache  16   0  140m 134m 1868 S   1  6.6   1345:01 php_defunct
24636 apache  17   0 34660  10m  712 S    0.8  0.5   1195:15 php_defunct
22442 apache  24   0  6048 2024 1452 S    0.8  0.1   0:00.04 php_defunct
</code></pre>
Čia:<br />
<br />
* MEM: indikuoja dedikuotame serveryje veikiančios aplikacijos RAM sunaudojimą.  Kuo šis skaičius didesnis, tuo daugiau aplikacija reikalauja RAM atminties. Jei matote jog šis skaičius itin didelis ties viena iš aplikacijų  (pvz.: mysql), tuomet problema mySQL serveryje.<br />
<br />
Tam jog peržiūrėtumėte laisvos virtualios atminties kiekį, įvykdykite komandą SSH konsolėje:<br />

<pre><code>free -m
</code></pre>
Jums bus pateikta lentelė su duomenimis, <u>pavyzdžiui</u>:<br />

<pre><code>total            used              free         shared    buffers     cached
Mem:          4096        415       3680          0          0          0
-/+ buffers/cache:        415       3680
</code></pre>
Čia:<br />
<br />
* total: iš viso alokuotos atminties kiekis dedikuotam serveriui. Šis kiekis išreiškiamas Megabaitais (MB).<br />
* used: naudojama atmintis.<br />
* free: laisva, galima panaudoti atmintis.<br />
<br />
Ką daryti jei serveryje veikianti aplikacija pradėjo naudoti itin daug RAM resurso?<br />
<br />
<b>a.</b> Nustatyti būtent kokia aplikacija išnaudoja RAM resursą;<br />
<b>b.</b> Aplikaciją optimizuoti ar sukonfigūruoti geresniai dedikuoto serverio  resursų eksploatacijai:<br />
MySQL - <a rel="nofollow" href="https://forumas.dedikuoti.lt/discussion/5/mysql-duomenu-baziu-valdymo-sistemos-konfiguravimas">konfigūracijos/optimizacijos gidas</a><br />
Apache - <a rel="nofollow" href="https://forumas.dedikuoti.lt/discussion/6/apache-web-serverio-konfiguravimas">konfigūracijos/optimizacijos gidas</a><br />
<b>c.</b> Serverio resursų didinimas esant poreikiui (dedikuoto serverio plano didinimas)<br />
<br />
<b>3. Serverio klaidos žurnalai.</b><br />
<br />
Tam jog lokalizuoti dedikuoto serverio problemą, reiktų peržiūrėti aplikacijų ar paties serverio generuojamus klaidos žurnalus. Bendruoju atveju klaidos žurnalai saugomi aplanke <i>/var/log</i> . Šiame kataloge galite rasti daugelio programų klaidos žurnalus, pavyzdžiui:<br />
<br />
* Apache<br />
* MySQL<br />
* Postfix<br />
* Java<br />
<br />
<u>Pastaba:</u> norint įjungti lėtų užklausų dokumentavimą MySQL sistemai, reiktų atitinkamai papildyti my.cnf failą šiuo įrašu (papildžius būtina perkrauti mysql serverį):<br />

<pre><code>log-slow-queries
</code></pre>
<br />
<b>4. Išaugusios disko vietos sąnaudos/Inode kiekis.</b><br />
<br />
Reikia surasti daugiausiai vietos serveryje užimančius ir didžiausią failų kiekį turinčius katalogus. Daugiau informacijos apie tai galite rasti šiame straipsnyje:<br />
<br />
<a rel="nofollow" href="https://forumas.dedikuoti.lt/discussion/462/disko-vietos-sanaudu-nustatymui-skirtos-komandos-irankiai#latest" title="Link: https://forumas.dedikuoti.lt/discussion/462/disko-vietos-sanaudu-nustatymui-skirtos-komandos-irankiai#latest">"Disko vietos sąnaudų nustatymui skirtos komandos/įrankiai"</a>]]></description>
   </item>
   </channel>
</rss>
