<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>NodeRack - Virtuālo serveru hostings</title>
<description>Virtuālie serveri (VPS) 5 minūtēs jebkurā diennakts laikā. Pilnībā automatizēta pašapkalpošanās sistēma.</description>
<link>https://www.noderack.lv/blogs/rss/</link>
<atom:link href="https://www.noderack.lv/blogs/rss/" rel="self" type="application/rss+xml" />
<item>
<title>Kā atjaunot Ubuntu 12.04 uz 14.04</title>
<description><![CDATA[<p><img src="https://noderack.lv/f/ubuntu-logo112.png" alt="Ubuntu logo" /></p>

<p><br /><br /><br /><br /></p>

<p>Jāņem vērā, ka oficiāli atjaunot vecos <strong>12.04 LTS</strong> serverus uz jaunajiem <strong>14.04</strong> iesaka tikai pēc <strong>14.04.1</strong> relīzes iznākšanas, kas notiks 24. jūlijā. Tas tiek darīts ar nodomu, lai pasargātu lietotājus no kādam, pagaidām nepamanītām kļūdām sistēmas un tās servisu darbībā, taču ja nevēlies gaidīt un atjaunot savu serveri uzreiz, tad turpini lasīt tālāk.</p>

<p>Pietiekami lielas izmaiņas skar Apache un PHP lietotājus, jo Apache versija tiek atjaunota no <strong>2.2</strong> uz <strong>2.4</strong> versiju, kā arī nedaudz mainās Apache konfigurācijas sintakse. Jāatceras, ka visticamāk būs jāveic papildus labojumi pēc atjaunošanas veikšanas esošajā Apache konfigurācijā lai weblapas strādātu kā paredzēts. PHP tiek atjaunots no <strong>5.3</strong> uz <strong>5.5</strong>, kas ir diezgan liels lēciens uz priekšu.</p>

<p>Vairāk par izmaiņām var lasīt šeit <a href="https://wiki.ubuntu.com/TrustyTahr/ReleaseNotes">https://wiki.ubuntu.com/TrustyTahr/ReleaseNotes</a></p>

<h2>Atjaunošana</h2>

<p>Pirms atjaunošanas sākšanas <strong>ieteicams izveidot rezerves kopiju</strong> weblapām/epastiem/datubāzēm un pārējiem svarīgajiem failiem, lai problēmu gadījuma būtu pieeja rezerves kopija.</p>

<p>Pārbaudām servera operētājsistēmas versiju izpildot komandu</p>

<pre><code>lsb_release -a
</code></pre>

<p>Tai vajadzētu atgriezt šādu atbildi (Release versija var mainīties atkarībā no tā, cik bieži tiek atjaunota servera programmatūra).</p>

<pre><code>No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.4 LTS
Release:        12.04
Codename:       precise
</code></pre>

<p>Atjaunojam pieejamo paku sarakstu, un uzstādām jaunāko Ubuntu atjaunošanas rīku</p>

<pre><code>apt-get update
apt-get install update-manager-core
</code></pre>

<p>Laižam Ubuntu atjaunošanas rīku. Papildus jānorāda ka vēlamies izstrādes versiju.</p>

<pre><code>do-release-upgrade -d
</code></pre>

<p>Atbildam uz atjaunošanas rīka uzdotajiem jautājumiem. Atjaunošanas gaitā iespējams būs nepieciešams pārbaudīt vairāku servisu konfigurācijas failu sintaksi un izvēlēties sev vēlamāko versiju. Pēc atjaunošanas beigām pārstartējam serveri un pārbaudām operētājsistēmas versiju vēlreiz palaižot šo komandu</p>

<pre><code>lsb_release -a
</code></pre>

<p>Ja viss ir noritējis veiksmīgi, tad tagad tev uz servera darbojas jaunais <strong>Ubuntu 14.04 LTS (Trusty Tahr)</strong></p>
]]></description>
<link>https://www.noderack.lv/blogs/ka-atjaunot-ubuntu-1204-uz-1404/</link>
<guid>https://www.noderack.lv/blogs/ka-atjaunot-ubuntu-1204-uz-1404/</guid>
<pubDate>Mon, 21 Apr 2014 15:19:00 +0300</pubDate>
</item>
<item>
<title>Apache + PHP-FPM + Chroot</title>
<description><![CDATA[<p>Šajā rakstā pastāstīšu kā izveidot drošu mājaslapu hostingu, izmantojot chroot. Izveidot drošu hostingu ir īpaši svarīgi, ja uz servera ir paredzēts izvietot vairāk kā vienu mājaslapu. Galvenais šīs aizsardzības metodes mērķis ir nodalīt uz servera esošās lapas vienu no otras un neļaut uzbrucējam iegūt pilnu kontroli pār serveri. Lielāko drošības risku rada PHP, tāpēc mēģināsim to ierobežot ar chroot. Rakstā tiks izmantots CentOS 6 (64 bitu versija).</p>

<h2>Kas ir chroot?</h2>

<p>Chroot ir veids kā uz Linux operētājsistēmas izolēt programmu no pārējās sistēmas. Tas tiek panākts, nomainot saknes direktoriju (/) uz kādu citu direktoriju, piemēram, /chroot/manalapa, ko izolētā programma, turpmāk uzskatīs par šī servera saknes direktoriju. Norādot jaunu saknes direktoriju, programmai vairs nav pieejas citiem failiem, kas atrodas augstāk par mūsu norādīto direktoriju. Lai izolētā programma spētu pilnvērtīgi darboties, ir nepieciešams izveidot jaunu vidi, kurā būtu nepieciešamās bibliotēkas, konfigurācijas faili un citas svarīgas lietas. Šo jauno vidi sauc par <em>chroot jail</em>.</p>

<h2>Apache</h2>

<p>Kā webserveri izvēlējos Apache, jo internetā ir pieejama salīdzinoši maz informācija kā izveidot šādu chroot konfigurāciju un arī tāpēc, ka daudzi lietotāji vēl nav gatavi atteikties no Apache dēļ <em>.htaccess</em> faila un <em>mod&#95;rewrite</em>. Ja ir iespējams, tad noteikti vajadzētu izmantot nginx webserveri, bet šoreiz koncentrēšos tieši uz Apache.</p>

<p>Lai uzstādītu Apache webserveri, nepieciešams izpildīt šādu komandu:</p>

<pre><code># yum install httpd
# chkconfig httpd on
</code></pre>

<p>Lai izveidotu mūsu chroot konfigurāciju, ir nepieciešams viens papildus Apache modulis (<em>mod&#95;fastcgi</em>), kas nav pieejams no pakām, tāpēc sakompilēsim to paši.</p>

<p>Ja tas jau nav izdarīts, tad uzstādām Apache header failus un kompileri:</p>

<pre><code># yum install gcc make wget httpd-devel
</code></pre>

<p>Lejupielādējam, sakompilējam un ieinstalējam <em>mod&#95;fastcgi</em> moduli:</p>

<pre><code># wget http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz
# tar -zxvf mod_fastcgi-current.tar.gz
# cd mod_fastcgi-2.4.6
# cp Makefile.AP2 Makefile
# make top_dir=/usr/lib64/httpd
# make install top_dir=/usr/lib64/httpd
# echo "LoadModule fastcgi_module modules/mod_fastcgi.so" &gt; /etc/httpd/conf.d/mod_fastcgi.conf 
# echo "DirectoryIndex index.php" &gt;&gt; /etc/httpd/conf.d/mod_fastcgi.conf 
# service httpd restart
</code></pre>

<h2>PHP</h2>

<p>Ir vairāki veidi, kā darbināt PHP ar Apache:</p>

<ul>
<li><strong>mod&#95;php</strong> darbojas kā Apache modulis un vienmēr ir ielādēts atmiņā, tas palīdz PHP skriptiem izpildīties bez aiztures, bet šāda pieeja patērē daudz operatīvo atmiņu un galvenā problēma ir, ka PHP visām lapām darbojas ar tām pašām privilēģijām, kas ir Apache. Ir mēģinājumi to ierobežot, bet tie visi vairāk vai mazāk ir bijuši nesekmīgi. Ir arī iespējamas problēmas, ja Apache grib darbināt izmantojot <em>worker</em> vai <em>event</em>, nevis <em>prefork</em> MPM.</li>
<li><strong>CGI</strong> režīmā PHP ir atdalīts no Apache procesa un katrai lapai ir iespējams izpildīt PHP ar dažādām privilēģijām. Problēma ar šo metodi ir tāda, ka tā ir lēna, jo katram pieprasījumam tiek palaists jauns PHP process un PHP nav iespējas izmantot <em>opcode cache</em> kā APC vai eAccelerator.</li>
<li><strong>FastCGI</strong> režīms ir vispiemērotākais, jo tas piedāvā visas labās CGI īpašības, kā arī PHP procesam ir iespējams palikt atmiņā, izpildīt skriptus bez aiztures, apstrādāt vairākus pieprasījumus pēc kārtas un izmantot <em>opcode cache</em>.</li>
</ul>

<p>Cerams, ka visiem ir skaidrs, ka mūsu izvēle būs FastCGI.</p>

<p>Tā kā mūsu konfigurācijā Apache vairs nebūs nekādas teikšanas pār PHP, tad mums ir nepieciešams neatkarīgs serviss, kas rūpēsies par PHP procesu palaišanu. Par laimi, kopš PHP 5.3.3, ir pieejams PHP FastCGI Process Manager jeb PHP-FPM. Diemžēl konservatīvajos CentOS repozitorijos šis brīnums nav pieejams, tāpēc to vajadzēs iegūt no citiem repozitorijiem.</p>

<p>Pievienojam EPEL un REMI repozitorijus:</p>

<pre><code># rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
</code></pre>

<p>Un tagad ieinstalējam PHP-FPM no REMI repozitorija:</p>

<pre><code># yum --enablerepo=remi install php-fpm
# chkconfig php-fpm on
</code></pre>

<h2>Chroot jail izveidošana</h2>

<p>Šo procesu būs nepieciešams atkārtot katrai mājaslapai, kas atradīsies uz servera. To ir iespējams automatizēt, uzrakstot nelielu skriptu, bet, lai pārāk nesarežģītu visu, mēs to izdarīsim ar dažām vienkāršām komandām.</p>

<p>Izveidojam chroot jailu domēnam test.lv:</p>

<pre><code># mkdir -p /var/www/vhosts/test.lv
# cd /var/www/vhosts/test.lv
# mkdir -p {bin,dev,etc,htdocs,lib64,tmp/sessions,usr/share,var}
# mkdir -p var/lib/mysql
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod -R 0777 tmp
# echo "root:*:0:0:Root:/:/bin/false" &gt; etc/passwd
# grep -E '^apache:' /etc/passwd &gt;&gt; etc/passwd
# grep -E '^root:|^apache:' /etc/group &gt; etc/group
# cp /bin/false bin
# cp /etc/{hosts,resolv.conf} etc
# cp -a /lib64/libnss_dns* lib64
# cp -r /usr/share/zoneinfo usr/share/zoneinfo
</code></pre>

<h2>Apache vhost</h2>

<p>Ieslēdzam iespēju turēt vairākus domēnus uz vienas IP adreses:</p>

<pre><code># echo "NameVirtualHost *:80" &gt;&gt; /etc/httpd/conf/httpd.conf
</code></pre>

<p>Izveidojam Apache vhostu domēnam test.lv. Šeit mēs pastāstīsim Apache, ka vēlamies, lai visi .php faili tiktu apstrādāti ar PHP-FPM.</p>

<p>Saglabājam šo failā <em>/etc/httpd/conf.d/vhost&#95;test.lv.conf</em>:</p>

<pre><code>&lt;VirtualHost *:80&gt;
    ServerName test.lv
    ServerAlias www.test.lv
    ErrorLog logs/test.lv-error_log
    CustomLog logs/test.lv-access_log common

    DocumentRoot /var/www/vhosts/test.lv/htdocs

    # Liekam visus .php failus padot uz PHP-FPM
    Alias /php-external.fcgi /test.lv.fcgi
    FastCGIExternalServer /test.lv.fcgi -socket /tmp/php-test.lv.sock
    AddType application/x-httpd-php .php
    Action application/x-httpd-php /php-external.fcgi

    # Aizliedzam pieeju no ārpuses
    &lt;Location /php-external.fcgi&gt;
        Order Deny,Allow
        Deny from All
        Allow from env=REDIRECT_STATUS
    &lt;/Location&gt;

&lt;/VirtualHost&gt;
</code></pre>

<p>Restartējam Apache:</p>

<pre><code># service httpd restart
</code></pre>

<h2>PHP-FPM pool</h2>

<p>Tagad ir pienācis laiks izveidot jaunu PHP-FPM pool domēnam test.lv. Šī ir ļoti atbildīga vieta, jo šeit mēs norādīsim, ka vēlamies, lai PHP izmantotu chroot un norādīsim, kur atrodas mūsu chroot jail.</p>

<p>Saglabājam šo failā <em>/etc/php-fpm.d/test.lv.conf</em>:</p>

<pre><code>[test.lv]

listen = /tmp/php-test.lv.sock

user = apache
group = apache

pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 500

chroot = /var/www/vhosts/test.lv

php_admin_value[doc_root] = /htdocs
php_admin_value[open_basedir] = /htdocs/:/tmp/:/usr/php/
php_admin_value[cgi.fix_pathinfo] = 0
php_admin_value[session.save_path] = /tmp/sessions
php_value[date.timezone] = Europe/Riga
</code></pre>

<p>Ja interesē ko katrs parametrs nozīmē, tad to var izlasīt <a href="http://php.net/manual/en/install.fpm.configuration.php">šeit</a>.</p>

<p>Restartējam PHP-FPM:</p>

<pre><code># service php-fpm restart
</code></pre>

<h2>E-pastu sūtīšana ar mail() funkciju</h2>

<p>Šo soli var izlaist, ja neviena mājaslapa neizmantos iebūvēto PHP mail() funkciju, bet izmantos kādu PHP klasi, kas ļauj sūtīt e-pastus uzreiz caur SMTP.</p>

<p>Lai atdzīvinātu mail() funkciju, mēs varētu iekopēt chroot jailā <em>sendmail</em> un visas nepieciešamās bibliotēkas, bet tas rada pārāk daudz darba. Mēs gribam saglabāt chroot jail pēc iespējas mazāku, jo katra papildus bibliotēka palielina risku, ka uzbrucējs varēs izlausties no mūsu chroot jail.</p>

<p>Mēs izmantosim mazu programmu, kas darbosies kā starpnieks starp PHP un mūsu lokālo SMTP serveri. Šo programmu sauc <em>mini&#95;sendmail</em>. Sakompilējam to statiski un iekopējam domēna test.lv chroot jailā.</p>

<pre><code># yum install glibc-static
# cd ~
# wget http://www.acme.com/software/mini_sendmail/mini_sendmail-1.3.6.tar.gz
# tar -zxvf mini_sendmail-1.3.6.tar.gz
# cd mini_sendmail-1.3.6
# sed -i 's/getlogin()/"apache"/g' mini_sendmail.c
# make
# mkdir -p /var/www/vhosts/test.lv/usr/sbin
# cp mini_sendmail /var/www/vhosts/test.lv/usr/sbin/sendmail
</code></pre>

<p>Papildinām chroot jail:</p>

<pre><code># cd /var/www/vhosts/test.lv
# cp /bin/dash bin/sh
# cp -a /lib64/ld-* lib64
# cp -a /lib64/libc.* lib64
# cp -a /lib64/libc-* lib64
</code></pre>

<p>Lai viss strādātu, uz servera jābūt uzinstalētam un palaistam SMTP serverim. To var izdarīt šādi:</p>

<pre><code># yum --enablerepo=remi install postfix
# service postfix start
</code></pre>

<h2>MySQL</h2>

<p>Tā kā PHP darbojas chroot jailā un tam vairs nav pieejas pie MySQL socket, tad PHP var rasties zināmas problēmas pieslēgties pie datubāzes. Tam ir divi risinājumi: slēgties pie datubāzes caur TCP/IP vai arī izveidot hardlinku uz MySQL socketu.</p>

<p>Pirmais risinājums ir ļoti vienkāršs, jo tikai jānomaina serveris pie kura slēgties no <strong>localhost</strong> uz <strong>127.0.0.1</strong> un sockets vairs nebūs nepieciešams.</p>

<p>Otrs risinājums ir izveidot hardlinku no chroota uz īsto socketu. Domēnam test.lv to var izdarīt šādi:</p>

<pre><code># ln /var/lib/mysql/mysql.sock /var/www/vhosts/test.lv/var/lib/mysql/mysql.sock
</code></pre>

<p>Problēma ar šo risinājumu ir tāda, ka hardlinks ir jāatjauno katru reizi, kad tiek restartēts serveris vai MySQL, pretējā gadījumā PHP nevarēs pieslēgties datubāzei. Lai šo problēmu atrisinātu, nepieciešams papildināt MySQL init.d skriptu ar komandu, kas atjaunos hardlinkus visiem chroot jailiem. Lai nesarežģītu visu vēl vairāk, šoreiz neiedziļināsimies init.d skriptu labošanā.</p>

<h2>DOCUMENT&#95;ROOT un SCRIPT&#95;FILENAME problēma</h2>

<p>Šobrīd izmantojot PHP-FPM chroot nākas saskarties ar nelielu nepilnību, ka dažādi $_SERVER masīva elementi satur pilnos ceļus pirms PHP tika nomainīta saknes direktorija. Piemēram, <code>$_SERVER['DOCUMENT_ROOT']</code> ir nevis "/htdocs", bet "/var/www/vhosts/test.lv/htdocs".</p>

<p>Kamēr PHP izstrādātāji to nav salabojuši, var izmantot <em>auto&#95;prepend&#95;file</em> parametru PHP-FPM pool konfigurācijas failā. Izmantojot šo metodi, mēs varam padot savu .php skripu, kas izpildīsies pirms katra pieprasījuma. Šajā skriptā mēs varam salabot mums nepieciešamos ceļus. Skriptam ir jāatrodas konkrētā domēna chroot jailā.</p>

<p>Pievienot konfigurācijas parametru var šādi:</p>

<pre><code>php_admin_value[auto_prepend_file] = /usr/php/fix_env.php
</code></pre>

<p>Skripta paraugs:</p>

<pre><code>&lt;?php

preg_match('/\/var\/www\/vhosts\/.*\/(.*)/', $_SERVER['DOCUMENT_ROOT'], $dr);

$_SERVER['DOCUMENT_ROOT'] = '/'.$dr[1];
$_SERVER['SCRIPT_FILENAME'] = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REDIRECT_URL'];
$_SERVER['PATH_TRANSLATED'] = $_SERVER['SCRIPT_FILENAME'];
$_SERVER['SCRIPT_NAME'] = $_SERVER['REDIRECT_URL'];

?&gt;
</code></pre>

<h2>Viss gatavs</h2>

<p>Lai sāktu lietot jauno chroot hostingu, atliek vien iekopēt savus .php failus attiecīgajā direktorijā. Mūsu piemērā ar domēnu test.lv tas būtu šeit - "/var/www/vhosts/test.lv/htdocs".</p>

<p>Ja tomēr kaut kas nav skaidrs ar šo konfigurāciju, tad vari mēģināt mani uzmeklēt twitter - <a href="https://twitter.com/ricardse">@ricardse</a> un <a href="https://twitter.com/noderack">@noderack</a>.</p>
]]></description>
<link>https://www.noderack.lv/blogs/apache-php-fpm-chroot/</link>
<guid>https://www.noderack.lv/blogs/apache-php-fpm-chroot/</guid>
<pubDate>Thu, 09 Aug 2012 10:07:00 +0300</pubDate>
</item>
<item>
<title>Darbs ar rpm paku menedžeri YUM</title>
<description><![CDATA[<p><img src="https://noderack.lv/f/yum.png" alt="yum" /></p>

<p>Lai paātrinātu dažādu programmatūru un atjauninājumu uzstādīšanu uz serveriem, daudzi Linux distributīvi saviem lietotājiem piedāvā sakompilētas programmu pakas. Šīs pakas tiek glabātas arhīvos, sauktos par repozitorijiem (<em>repository</em>). Šo paku uzstādīšanu un atjaunināšanu palīdz veikt paku menedžeris, kas tavā vietā atcerēsies katras programmas versijas numuru, pārbaudīs pieejamos atjauninājumus, saglabās uzlikto un pieejamo programmu informāciju, veiks elementāru programmas konfigurāciju un citas nepieciešamas lietas.</p>

<p>Centos, Fedora un RedHat ir trīs populārākie distributīvi no daudziem (rpm based), kuri izmanto RPM pakas. Šo paku pārvaldīšanu nodrošina utilītprogramma <strong>rpm</strong>, taču tās sarežģītības un daļēji ierobežoto iespēju dēļ vispopulārākais paku menedžeris šajos distributīvos ir YUM (Yellowdog Updater Modified). YUM piedāvā papildus iespējas un funkcionalitāti, taču izmanto <em>rpm</em>.
<br /><br /></p>

<ul>
<li><a href="http://noderack.lv/blogs/darbs-ar-rpm-paku-menedzeri-yum/#pamatkomandas">Pamatkomandas</a></li>
<li><a href="http://noderack.lv/blogs/darbs-ar-rpm-paku-menedzeri-yum/#yum_grupas">Paku grupas</a></li>
<li><a href="http://noderack.lv/blogs/darbs-ar-rpm-paku-menedzeri-yum/#papildus_repo">Papildus repozitoriji</a></li>
<li><a href="http://noderack.lv/blogs/darbs-ar-rpm-paku-menedzeri-yum/#repo_add_remove">Repozitoriju pieslēgšana vai atslēgšana</a></li>
<li><a href="http://noderack.lv/blogs/darbs-ar-rpm-paku-menedzeri-yum/#komandas">Papildus noderīgas komandas</a></li>
</ul>

<p><br /><br /></p>

<h2 id="pamatkomandas">Pamatkomandas</h2>

<p><br /></p>

<pre><code>yum install pakas_nosaukums
</code></pre>

<p>Uzstāda paku <em>pakas_nosaukums</em> un nepieciešamos papildinājumus, ja tādi vajadzīgi.</p>

<pre><code>yum reinstall pakas_nosaukums 
</code></pre>

<p>Vēlreiz uzstādīt paku <em>pakas_nosaukums</em></p>

<pre><code>yum remove pakas_nosaukums
</code></pre>

<p>Nodzēš paku <em>pakas_nosaukums</em></p>

<pre><code>yum info pakas_nosaukums
</code></pre>

<p>Attēlo detalizētāku aprakstu par paku <em>pakas_nosaukums</em></p>

<pre><code>yum list installed
</code></pre>

<p>Parāda sarakstu ar visām pakām kuras uzstādītas sistēmā</p>

<pre><code>yum search *nosaukums*
</code></pre>

<p>Parādīs sarakstu ar visām pakām, kuru nosaukums saturēs norādīto</p>

<pre><code>yum update
</code></pre>

<p>Uzliek atjauninājumus visām uzstādītajām pakām, vai noteiktai pakai, ja tāda tiek norādīta</p>

<pre><code>yum --exclude=package *pakas_nosaukums* update
</code></pre>

<p>Atjaunot visas pakas, izņemot norādīto paku</p>

<pre><code>yum list updates
</code></pre>

<p>Parāda sarakstu ar visām pakām, kurām pieejami atjauninājumi</p>

<pre><code>yum downgrade *pakas_nosaukums*
</code></pre>

<p>Uzliek norādītas pakas vai paku iepriekšējo versiju, ja tāda ir pieejama.</p>

<pre><code>yum clean all
</code></pre>

<p>Dzēš failus, paku arhīvus un informāciju, kas vairs nav nepieciešami, bet atstāti sistēmā pēc pakas uzstādīšanas.</p>

<pre><code>yum provides "*/libdevmapper.so.1.02"
</code></pre>

<p>Sameklē visas pakas, kuras satur norādīto failu. Šinī gadījumā libdevmapper.so.1.02</p>

<p>YUM saprot <em>wildcard</em> ( * ), ar kura palīdzibu var norādīt frāzi, ar kuru saturošajām paka tiks veiktas prasītās darbībās.</p>

<pre><code>yum install php-*
</code></pre>

<p>uzliks visas pakas, kuru nosaukums sāksies ar <em>php-</em></p>

<p><br /></p>

<h2 id="yum_grupas">Paku grupas</h2>

<p><br />
RPM pakas tiek sagrupētas grupās pēc to darbības. Piemēram pakas kas nepieciešamas sistēmas pamatfunkcijām atrodas grupā <em>Base</em>, pakas kas saistītas ar MySQL - <em>MySQL Database</em> utt.</p>

<pre><code>yum gouplist
</code></pre>

<p>Parāda visas pieejamo paku grupu nosaukumus</p>

<pre><code>yum groupinfo "grupas nosaukums*
</code></pre>

<p>Parādas grupas aprakstu, kā arī visas pakas kuras tajā sagrupētas.</p>

<pre><code>yum groupinstall "grupas nosaukums*
</code></pre>

<p>Uzliek visas pakas, kuras atrodas dotajā grupā</p>

<pre><code>yum groupremove "grupas nosaukums"
</code></pre>

<p>Novāc visas pakas, kuras atrodas dotajā grupā</p>

<p><br /><br /></p>

<h2 id="papildus_repo">Papildus repozitoriji</h2>

<p><br />
Ne vienmēr noklusētajos repizitorijos ir pieejamas nepieciešamās pakas. Ir izveidoti daudzi neoficiāli repozitoriji, kuros entuziasti apkopo pakas ar ieslēgtām nestandarta iespējām, jaunākās programmas</p>

<p>versijas vai programmas ar labojumiem. Populārākie repozitoriji ir <a href="http://repoforge.org/">RPMforge</a>, <a href="http://fedoraproject.org/wiki/EPEL">EPEL</a> un <a href="http://www.atomicorp.com/downloads.html">Atomic</a>. Lai pievienotu papildus repozitoriju, nepieciešams uzstādīt rpm paku ar attiecīgā repozitorija konfigurācijas failiem. Piemēram lai pievienotu RPMforge repozitoriju 64bit sistēmai uz Centos 6 jāizpilda šī komanda</p>

<pre><code>rpm -Uhv http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
</code></pre>

<p>Konfigurācijas faili, kas satur repozitoriju adreses, un to konfigurāciju atrodami direktorijā <em>/etc/yum.repos.d/</em>. Šāds ieraksts failā <em>/etc/yum.repos.d/rpmforge.rep</em> norāda repozitorija nosaukumu. Tā atrašanās adresi, kā arī iespējamo spoguļserveru adreses.</p>

<pre><code>[rpmforge]
name = RHEL $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/rpmforge
mirrorlist = http://apt.sw.be/redhat/el6/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1
</code></pre>

<p><em>enabled</em> norāda, ka šis repozitorijs noklusēti ir ieslēgts, tādējādi pakas no tā varēs uzstādīt bez papildus parametru norādīšanas.</p>

<p><em>protect=1</em> norāda, ka noklusēti pakas no šī repozitorija drīkstēs atjaunot ņemot pakas arī no citiem repozitorijiem, ja šo repozitoriju konfigurācijā būs tāds pats <em>protect=1</em> līmenis.</p>

<p><em>gpgkey</em> norāda GPG atslēgas atrašanās vietu dotajā sistēma, savukārt <em>gpgcheck</em> norāda, vai YUM pārbaudīs paku paraksta atbilstību, vai arī uzticēsies tam bez pārbaudīšanas.</p>

<p><br /><br /></p>

<h2 id="repo_add_remove">Repozitoriju pieslēgšana vai atslēgšana</h2>

<p><br />
Sistēmā pievienotos repozitorijus iespējams pieslēgt vai atslēgt izmantojot yum komandas, tādējādi katru reizi nav jālabo konfigurācijas fails.</p>

<pre><code>yum --enablerepo=rpmforge update php*
</code></pre>

<p>Atjaunos visas php pakas, ar pakām no RPMforge repozitorija.</p>

<pre><code>yum  --disablerepo=rpmforge update php*
</code></pre>

<p>Atjaunos visas php pakas no visiem repozitorijiem izņemot RPMforge</p>

<pre><code>yum repolist all
</code></pre>

<p>Parādīs sarakstu ar ieslēgtajiem un izslēgtajiem repozitorijiem</p>

<p><br /><br /></p>

<h2 id="komandas">Papildus noderīgas komandas</h2>

<p><br />
    yum -y
Pievienojot komandu <em>-y</em> yum neprasīs apstiprinājumu uzdotajām darbībām</p>

<pre><code>rpm2cpio paka.rpm | cpio -idmv
</code></pre>

<p>Atarhivēs rpm paku, bet neuzstādīs to.</p>

<pre><code>yum install yum-utils.noarch -y
yumdownloader php* --destdir=/tmp -y
</code></pre>

<p>Uzstādīs papildus rīkus priekš YUM neprasot apstiprinājumu. Otrā komanda novilks visas rpm pakas, kuru nosaukums sāksies ar <em>php</em> un saglabās tās direktorijā /tmp bez apstiprinājuma</p>

<p>Gadās situācijas kad sistēmā uzstādītajos repozitorijos nav iespējams sameklēt sev vajadzīgo paku. Internetā ir pieejami vairāki meklētāji, kas meklēs vajadzīgo rpm paku norādītajiem distributīviem. Divi lielākie meklētāji ir <a href="http://rpm.pbone.net/">rpm.pbone.net</a> un <a href="http://rpmfind.net/">rpmfind.net</a>. Papildus tam, <a href="http://wiki.centos.org/AdditionalResources/Repositories">šeit ir Centos izstrādātāju uzturēts repozitoriju saraksts</a>.</p>
]]></description>
<link>https://www.noderack.lv/blogs/darbs-ar-rpm-paku-menedzeri-yum/</link>
<guid>https://www.noderack.lv/blogs/darbs-ar-rpm-paku-menedzeri-yum/</guid>
<pubDate>Mon, 19 Mar 2012 16:45:00 +0200</pubDate>
</item>
<item>
<title>NodeRack Virtualmin sagataves apraksts</title>
<description><![CDATA[<ul>
<li><a href="#tech">Tehniskie parametri</a></li>
<li><a href="#add_plan">Hostinga plānu izveide</a></li>
<li><a href="#add_vhost">Jauna konta pievienošana</a></li>
<li><a href="#add_subdomain">Jauna apakšdomēna pievienošana</a></li>
<li><a href="#add_alias">Alias pievienošana domēnam</a></li>
<li><a href="#switch_php">PHP režīma nomaiņa</a></li>
<li><a href="#change_vhost">Virtuāla hosta iestatijumu mainīšana</a></li>
<li><a href="#add_ftp_email">Epasta un ftp lietotāju pievienošana</a></li>
<li><a href="#add_email_alias">Epasta adreses alias izveidošana</a></li>
<li><a href="#add_responder">Epasta automātiskā atbildētāja uzstādīšana</a></li>
<li><a href="#add_redirect">Epastu pāradresācija</a></li>
<li><a href="#change_password">Epasta vai FTP paroles mainīšana</a></li>
<li><a href="#add_ftp">FTP lietotāju pievienošana</a></li>
<li><a href="#suspend_vhost">Virtuālā hosta dzēšana vai pauzēšana</a></li>
<li><a href="#create_backup">Rezerves kopiju veidošana</a></li>
<li><a href="#restore_backup">Datu atjaunošana no rezerves kopijām</a></li>
<li><a href="#create_fs_backup">Rezerves kopiju veidošana noteiktai direktorijai</a></li>
<li><a href="#restore_fs_backup">Datu atjaunošana no noteiktas direktorijas rezerves kopijas</a></li>
<li><a href="#add_crontab">Crontab uzdevumu pievienošana</a></li>
<li><a href="#installscripts">Installscripts izmantošana</a></li>
<li><a href="#update_packages">Sistēmas pakotņu atjaunošana</a></li>
<li><a href="#change_password_usermin">Epasta paroles nomaiņa lietojot Usermin</a></li>
<li><a href="#add_redirect_usermin">Epasta pāradresācijas uzstādīšana lietojot Usermin</a></li>
<li><a href="#create_responder_usermin">Epasta automātiskā atbildētāja uzstādīšana lietojot Usermin</a></li>
<li><a href="#remove_responder_usermin">Automātiska epasta atbildētāja/pāradresācijas dzēšana lietojot Usermin</a></li>
<li><a href="#spamfilter_usermin">Spamfiltru pārvaldīšana izmantojot Usermin</a></li>
</ul>

<p><br /><br /><br /><br /></p>

<p>Lai atvieglotu klientu VPS administrēšanu, esam izveidojuši serveru sagataves ar Virtualmin bezmaksas kontroles paneli. Lietojot šo paneli, severa administrators ar pāris peles klikšķiem var pievienot jaunus domēnus, epasta lietotājus, web lapas un kontrolēt servera servisu darbību. Virtualmin kontroles panelis sastāv no trīs moduļiem. Webmin atbild par sistēmas kontroli, Virtualmin par virtuālo hostu un lietotāju kontroli, savukārt Usermin dod iespēju katram virtuālajam lietotājam mainīt savu pieejas paroli, uzstādīt individuālus spamfiltrus, lasīt epastu caur webmail.
Virtualmin un Webmin noklusēti klausās uz 10000 portu, savukārt Usermin uz 20000.</p>

<p>Lai izveidotu VPS ar Virtualmin, lietotājam jāielogojas savā NodeRack kontroles panelī, jāspiež <strong>Izveidot jaunu VPS</strong>, jāizvēlas Linux distribūcija (šobrīd Virtualmin sagataves ir pieejamas CentOS un Ubuntu
distribūcijām), jāizvēlas servera jauda un sagatave ar Virtualmin.</p>

<p><img src="https://noderack.lv/f/vps_izveide_virtualmin.png" alt="alt text" /></p>

<h2 id="tech">Tehniskie parametri</h2>

<ul>
<li>Virtuālā domēna adminstratoriem pieeja tikai caur ftp/ftps.</li>
<li>Epasta/FTP lietotājvārds ir lietotajs@domens.tld.</li>
<li>Noklusēti ieslēgts Postgrey ar 1 minūtes aizturi.</li>
<li>Tiek atbalstīti pop3/pop3s/imap/imaps protokoli.</li>
<li>Tīmekļa lapām noklusēti ir pieslēgts Webalizer statistikas rīks. Statistika pieejama adresē http://lapas_adrese/stats/, un ir aizsargāta ar lapas administratora lietotājvārdu un paroli.</li>
<li>Noklusēti Apache webserveris PHP skriptus laiž FCGid režīmā.
<br />
<br /></li>
</ul>

<p>Lai pabeigtu Virtualmin konfigurēšanu, pēc veiksmīgas VPS izveidošanas, interneta pārlūkā dodamies uz adresi https://94.100.x.x:10000.
Sava VPS ip adresi, kā arī pieejas datus katrs lietotājs var redzēt <a href="http://noderack.lv/blogs/darbs-ar-noderack-kontroles-paneli/">NodeRack kontroles panelī</a>.
Noklusēti tiek izmatots pašparakstīts SSL sertifikāts, tādejādi pārlūkprogramma attēlos brīdinājumu par pašparakstītu SSL sertifikātu.
Piekrītam izņēmumam, un ielogojamies Webmin kontroles panelī ar VPS lietotāja datiem.</p>

<p><img src="https://noderack.lv/f/virtualmin_login.png" alt="Virtualmin login" /></p>

<p>Pirmo reizi ielogojoties panelī tiek piedāvāts pabeigt atsevišķu servisu konfigurāciju. Spamfiltru darbību, uzstādīt datubāzes administratora paroli un atsevišķu Virtualmin komponenšu ielādi atkarībā no izvēlētā VPS jaudas. Konfigurācijas beigās tie piedāvāts norādīt spamfiltra un antivīrusa darbības režīmu. Spiežam <strong>Spam and Virus Scanning</strong>.</p>

<p>Ja <strong>Virus scanning</strong> sadaļā izvēlaties lietot ClamAV servera režīmu (izmanto vairāk RAM) vīrus pārbaudēm epastos, tad iesakam <strong>Virus scanning program</strong> norādīt <strong>Server scanner (clamdscan)</strong>, lai samazinātu servera noslodzi.
Ja <strong>Spam filtering</strong> sadaļā izvēlaties SpamAssassin servera režīmu (izmanto vairāk RAM) lai pārbaudītu epastus, tad šīs konfigurācijas dēļ lietotāji nevarēs definēt savus individuālos spamfiltrus lietojot Usermin.</p>

<p>Pēc konfigurācijas beigām tiek piedāvās pārbaudīt, vai visi Virtualmin darbībai nepieciešamie servisi ir veiksmīgi konfigurēti. Spiežam uz <strong>Re-check and refresh configuration</strong> lai veiktu šo pārbaudi.</p>

<p><img src="https://noderack.lv/f/recheck.png" alt="Recheck" /></p>

<p>Ja visi servisi ir veiksmīgi uzstādīti un nokonfigurēti, tad beigās tiek parādits uzraksts <strong>your system is ready for use by Virtualmin.</strong></p>

<p>Lapas kreisajā pusē atrodas izvēlne. Servera administrācijas panelis ir sadalīts divās daļā. Virtualmin daļa atbild par virtuālajiem serveriem un to lietotāju izveidi, savukārt Webmin daļa atbild par sistēmas kontroli un tās servisiem.</p>

<h2 id="add_plan">Hostinga plānu izveide</h2>

<p>Ja nepieciešams izveidot vairākus hostinga plānus un uzstādīt atbilstošus ierobežojumus, Virtualmin kreisās puses izvēlnē spiežam <strong>System Settings</strong>, tad <strong>Account Plans</strong></p>

<p><img src="https://noderack.lv/f/create_plan.png" alt="Create plan" /></p>

<p>Vēlāk šos plānus iespējams izvēlēties <strong>Account plan</strong> sadaļā, veidojot jaunus virtuālos hostus.</p>

<h2 id="add_vhost">Jauna konta pievienošana</h2>

<p>Virtualmin izvēlnē spiežam <strong>Create Virtual Server</strong>. Ievadam domēna vārdu, iespējamo aprakstu, izvēlamies administratora paroli un iespējamo hostingu plānu, ja tāds ir izveidots.</p>

<p>Pie <strong>Enabled features</strong> pēc izvēles var pieslēgt papildus funkcionalitāti kontam. Noklusēti kontam tiek pieslēgta web lapa, Webalizer statistika, epasti, spamfiltri, MySQL datubāze un pieejas tai, kā arī konta administratora pieejas un noklusēta kvota 1gb. Ja izvēlaties lietot NodeRack DNS kontroles paneli, tad izņemiet ķeksi no <strong>Setup DNS zone?</strong>. Noklusēti virtuālo hostu administratora lietotājam ir tikai ftp pieejas.</p>

<p><img src="https://noderack.lv/f/create_virtual_server.png" alt="Create virtual server" /></p>

<h2 id="add_subdomain">Jauna apakšdomēna pievienošana</h2>

<p>Lai izveidotu jaunu apakšdomēnu, izvēlamies domēnu Virtualmin izvēlnē. Spiežam <strong>Create Virtual Server</strong> un <strong>Sub-server</strong>. Laukā <strong>Domain name</strong> ievadam apakšdomēna vārdu un spiežam <strong>Create Server</strong>.</p>

<p><img src="https://noderack.lv/f/create_subserver.png" alt="Create subserver" /></p>

<h2 id="add_alias">Alias pievienošana domēnam</h2>

<p>Izvēlamies domēnu Virtualmin izvēlnē. Spiežam <strong>Create Virtual Server</strong> un <strong>Alias of domens.tld</strong>. Laukā <strong>Domain name</strong> ievadam vēlamo alias un spiežam <strong>Create Server</strong>.</p>

<p><img src="https://noderack.lv/f/create_web_alias.png" alt="Create website alias" /></p>

<h2 id="switch_php">PHP režīma nomaiņa</h2>

<p>Virtualmin kreisās puses izvēlnē izvēlamies vajadzīgo domēnu, tad spiežam <strong>Server Configuration</strong>, tad <strong>Website Options</strong>. <strong>PHP script execution mode</strong> laukā izvēlamies vajadzīgo režīmu.
Spiežam <strong>Save</strong></p>

<p><img src="https://noderack.lv/f/change_php_mode.png" alt="Change PHP mode" /></p>

<h2 id="change_vhost">Virtuāla hosta iestatijumu mainīšana</h2>

<p>Virtualmin kreisās puses izvēlnē izvēlamies vajadzīgo domēnu, tad spiežam <strong>Edit Virtual Server</strong>.</p>

<p><img src="https://noderack.lv/f/edit_virtual_server.png" alt="Edit virtual server" /></p>

<h2 id="add_ftp_email">Epasta un ftp lietotāju pievienošana</h2>

<p>Virtualmin kreisās puses izvēlnē izvēlamies vajadzīgo domēnu, tad spiežam <strong>Edit Mail and FTP Users</strong> un visbeidzot <strong>Add a user to this server</strong>. Noklusēti epasta lietotājvards ir lietotajs@domens.tld. Tiek atbalstīti POP3/POP3S/IMAP/IMAPS protokoli.</p>

<p><img src="https://noderack.lv/f/create_mailbox.png" alt="Create mailbox" /></p>

<p>Apakšsadaļā <strong>Quota and home directory settings</strong> iespējams norādīt cietā diska kvotu jaunajam lietotājam.</p>

<p><img src="https://noderack.lv/f/create_mailbox_quota.png" alt="Create mailbox quota" /></p>

<p>Apakšsadaļā <strong>Email settings</strong> iespējams pievienot papildus alias epastam, kā arī atslēgt spamfiltrus un automātisku vīrusu skanēšanu ienākošajiem.
epastiem</p>

<p><img src="https://noderack.lv/f/create_mailbox_emailsettings.png" alt="Create mailbox settings" /></p>

<p>Apakšsadaļā <strong>Other user permissions</strong> iespējams norādīt, vai šis lietotājs varēs piekļūt tikai epastiem, vai papldus tam arī ftp, web lapas statistikai un MySQL datubāzei. Noklusēti šim lietotājam ir pieeja tikai epastam.</p>

<h2 id="add_email_alias">Epasta adreses alias izveidošana</h2>

<p>Virtualmin izvēlnē izvēlamies domēnu, spiežam <strong>Edit Mail and FTP Users</strong> un izvēlamies adresi kurai nepieciešams uzstādīt alias, uzspiežot uz tās. Apakšsadaļā <strong>Email settings</strong>, laukā pie <strong>Additional email addresses</strong> ierakstam nepieciešamo alias.</p>

<p><img src="https://noderack.lv/f/create_alias.png" alt="Create email alias" /></p>

<h2 id="add_responder">Epasta automātiskā atbildētāja uzstādīšana</h2>

<p>Virtualmin izvēlnē izvēlamies domēnu, spiežam <strong>Edit Mail and FTP Users</strong> un izvēlamies adresi kurai nepieciešams uzstādīt automātisko atbildētāju, uzspiežot uz tās. Atbildētāja teksts jāieraksta apakšizvēlnes <strong>Mail forwarding settings</strong>, <strong>Send automatic reply</strong> laukā, kā arī jāieklikšķina <strong>Yes, respond with message ..</strong> Nedaudz zemāk noslēpta papildus izvēlne <strong>Automatic reply options</strong>, kurā var norādīt darbības sākuma un beigu laiku automātiskajam atbildētājam, kā arī uzstādīt atbilžu biežumu, ja tiek saņemtas vairākas vēstules no vienas epasta adreses.</p>

<p><img src="https://noderack.lv/f/create_responder.png" alt="Create email responder" /></p>

<h2 id="add_redirect">Epastu pāradresācija</h2>

<p>Virtualmin izvēlnē izvēlamies domēnu, spiežam <strong>Edit Mail and FTP Users</strong> un izvēlamies adresi kuras saņemtos ziņojumus pārsūtīt, uzspiežot uz tās. Apakšsadaļā <strong>Mail forwarding settings</strong>, laukā <strong>Forward to other addresses</strong> ieklikšķinam <strong>Yes, forward to addresses</strong> un apakša ierakstam adresi, uz kuru pārsūtīt saņemots epastus. Ķeksis pie <strong>Deliver to this user normally</strong> norāda, vai papildus pārsūtīšanai uz citu adresi saņemtos epastus saglabāt arī šajā adresē.</p>

<p><img src="https://noderack.lv/f/create_forward.png" alt="Create email forwarder" /></p>

<h2 id="change_password">Epasta vai FTP paroles mainīšana</h2>

<p>Virtualmin izvēlnē izvēlamies domēnu, spiežam <strong>Edit Mail and FTP Users</strong> un izvēlamies lietotāju uzspiežot uz tā. Pie <strong>Password</strong> ieklikšķinam <strong>Set to ..</strong> un ievadam jauno paroli. Spiežam <strong>Save</strong>.</p>

<p><img src="https://noderack.lv/f/change_password.png" alt="Change email password" /></p>

<h2 id="add_ftp">FTP lietotāju pievienošana</h2>

<p>Virtualmin kreisās puses izvēlnē izvēlamies vajadzīgo domēnu, tad spiežam <strong>Edit Mail and FTP Users</strong> un visbeidzot <strong>Add a user to this server</strong>. Apakšsadaļā <strong>Other user permissions</strong>, <strong>Login permissions</strong> nomainam uz <strong>Email and FTP</strong>. FTP lietotājvārda formāts ir lietotajs@domens.tld. Noklusēti pieejams parastais FTP pieslēgums un FTPS.</p>

<p><img src="https://noderack.lv/f/create_ftpuser.png" alt="Create FTP user" /></p>

<h2 id="suspend_vhost">Virtuālā hosta dzēšana vai pauzēšana</h2>

<p>Virtualmin izvēlnē izvēlamies domēnu, tad spiežam <strong>Disable and Delete</strong> un izvēlamies vajadzīgo operāciju.</p>

<h2 id="create_backup">Rezerves kopiju veidošana</h2>

<p>Virtualmin kreisās puses izvēlnē ameklējam vajadzīgo domēnu, atveram <strong>Backup and Restore</strong>.
Sadaļa <strong>Scheduled Backups</strong> nodrošina regulāru rezerves kopiju veidošanu. Spiežam <strong>Add a new backup schedule</strong>. Izvēlamies kurus datus kopēt. Apakšsadaļā <strong>Features and settings</strong> iespējams izvēlēties, kādus datus un servisus izvēlētajiem kontiem kopēt. Noklusēti tiek kopēti visi dati.
Izvēlnē <strong>Destination and format</strong>, iespējams norādīt, kur rezerves kopijas tiks glabātas, uzstādīt rezerves kopiju nosauku.
Sadaļā <strong>Schedule and reporting</strong> iespējams uzstādīt rezerves kopiju atskaišu sūtīšanu uz administratora epastu, uzstādīt kopiju veidošanu intervālu, veco kopiju dzēšanu. 
Kad visi nepieciešamie uzstādijumi ir salikti, spiežam <strong>Create Schedule</strong>.</p>

<p><img src="https://noderack.lv/f/create_scheduled.png" alt="Create scheduled backup" /></p>

<p>Sadaļā <strong>Backup Virtual Servers</strong> iespējams veikt vienreizējas rezerves kopijas. Konfigurācijas formāts ir tāds pats kā regulāro rezerves kopiju veidošanas gadijumā.</p>

<h2 id="restore_backup">Datu atjaunošana no rezerves kopijām</h2>

<p>Virtualmin kreisās puses izvēlnē izvēlamies vajadzīgo domēnu, atveram <strong>Backup and Restore</strong>. Sadaļā <strong>Source and format</strong> norādam, kur glabājas rezerves kopija.
Sadaļā <strong>Features and settings</strong> iespējams precizēt tikai noteiktu servisu atjaunošanu no rezerves kopijas. Noklusēti tiek atjaunots viss.</p>

<p><img src="https://noderack.lv/f/restore_backup.png" alt="Restore backup" /></p>

<p>Spiežam <strong>Show What Will Be Restored</strong></p>

<p><img src="https://noderack.lv/f/restore_backup2.png" alt="Restore backup" /></p>

<p>Pēc pārbaudes spiežam <strong>Restore Now</strong></p>

<h2 id="create_fs_backup">Rezerves kopiju veidošana noteiktai direktorijai</h2>

<p>Webmin kreisās puses izvēlnē spiežam <strong>System</strong>, tad <strong>Filesystem Backup</strong>. Norādam vēlamo direktoriju izmantojot <strong>...</strong> pogu, tad spiežam <strong>Add a new backup of directory</strong>.</p>

<p><strong>TAR filesystem backup details</strong>, <strong>Backup to</strong> sadaļā norādam, kur saglabāsim rezerves kopiju.</p>

<p><strong>Backup options</strong>, <strong>Compress archive?</strong> nomainam uz <strong>Yes, with bzip</strong>
<strong>Backup schedule</strong>, <strong>Scheduled backup enabled?</strong> norādam, vai veikt regulāru, vai vienreizēju kopiju veidošanu.
<strong>Email scheduled output to</strong> norādam administrātora epastu uz kuru tiks sūtītas atskaites.
Ja tiek uzstādīta regulāra rezerves kopiju veidošana, tad izvēlamies laiku, kad tā tiks veikta.</p>

<p>Spiežam <strong>Create</strong> vai <strong>Create and Backup Now</strong>.</p>

<p><img src="https://noderack.lv/f/create_fs_backup.png" alt="Create fs backup" /></p>

<h2 id="restore_fs_backup">Datu atjaunošana no noteiktas direktorijas rezerves kopijas</h2>

<p>Webmin kreisās puses izvēlnē spiežam <strong>System</strong>, tad <strong>Filesystem Backup</strong>. Ja sistēmā jau ir veikts kāda rezerves kopija un piejas dati nav mainīti, tad spiežam uz uzdevuma, tad <strong>Restore ..</strong>, tad <strong>Restore Backup Now</strong>. Pretējā gadijumā spiežam <strong>Restore backup of filesystem</strong>, ievadam pieejas datus. <strong>Restore to directory</strong> norādam direktoriju, kur atjaunot datus no rezerves kopijas. Ja kopija tika saarhivēta, tad laukā <strong>Uncompress archive?</strong> norādam, ka kopija būs jāatarhivē.</p>

<p>Ja vēlamies apskatīt rezerves kopijas saturu to neatjaunojot, tad atstājam <strong>Only show files in backup?</strong> ieklikšķinātu <strong>Yes</strong>, pretējā gadijumā ieklikšķinam <strong>No</strong>.</p>

<p>Spiežam <strong>Restore Backup Now</strong>.</p>

<p><img src="https://noderack.lv/f/restore_fs_backup.png" alt="Restore fs backup" /></p>

<h2 id="add_crontab">Crontab uzdevumu pievienošana</h2>

<p>Webmin kreisās puses izvēlnē spiežam <strong>System</strong>, tad <strong>Scheduled Cron Jobs</strong>. Atvērtajā loga tiek parādīti jau eksistējošie Cron uzdevumi. Spiežam <strong>Create a new scheduled cron job.</strong>. 
<strong>Execute cron job as</strong> izvēlamies lietotāju, ar kura tiesībām tiks palaists Cron uzdevums, nospiežot <strong>...</strong>. 
Laukā <strong>Command</strong> ievadam komandu, kuru nepieciešams izmantot. 
<strong>When to execute</strong> sadaļā izvēlamies kādu no  definētajiem laikiem <strong>Simple Shedule</strong>, vai arī ievadam sev vēlamos laikus ieklikšķinot <strong>Times and dates selected below ..</strong> un norādot laikus zemāk pieejamajā tabulā.</p>

<p>Spiežam <strong>Create</strong>.</p>

<p><img src="https://noderack.lv/f/add_crontab.png" alt="Add crontab" /></p>

<h2 id="installscripts">Installscripts izmantošana</h2>

<p>Virtualmin izstrādātāji ir izveidojuši skriptus, ar kuru palīdzību administrators var ērti uzstādīt populārākos rīkus, ka piemēram phpMyAdmin, phpPgAdmin, RoundCube, SquirrelMail un citus. 
Virtualmin kreisās puses izvēlnē izvēlamies vajadzīgo domēnu, tad spiežam <strong>Install Scripts</strong>. No saraksta izvēlamies nepieciešamo rīku, tad spiežam <strong>Show Install Options</strong>. Ja rīkam nepieciešama papildus konfigurācija, tad ievadam to, tad spiežam <strong>Install Now</strong>.</p>

<p><img src="https://noderack.lv/f/using_installscripts.png" alt="Installscripts" /></p>

<h2 id="update_packages">Sistēmas pakotņu atjaunošana</h2>

<p>Ar Virtualmin paneļa palīdzību ir iespējams atjaunot sistēmas pakotnes nelogojoties servera konsolē. Lai atjaunotu pakotnes, Webmin kreisās puses izvēlnē spiežam <strong>System</strong>, tad <strong>Software Package Updates</strong>.</p>

<p>Tiks attēlots saraksts ar pakām, kurām ir pieejami atjauninājumi. Lai atjaunotu paku sarakstu, apakšā spiežam <strong>Refresh Available Packages</strong>.
Lai atjaunotu izvēlētās pakas, atzīmējam tās sarakstā un spiežam <strong>Update Selected Packages</strong>, tad spiežam <strong>Install Now</strong>.</p>

<p><img src="https://noderack.lv/f/update_packages.png" alt="Update packages" /></p>

<h2 id="change_password_usermin">Epasta paroles nomaiņa lietojot Usermin</h2>

<p>Ielogojamies Usermin panelī ejot uz adresi https://94.100.x.x:20000. Lai nomainītu epasta paroli, spiežam <strong>Change Password</strong>. Pēc jauno datu ievadīšanas spiežam <strong>Change Now</strong>.</p>

<p><img src="https://noderack.lv/f/usermin_change_password.png" alt="Usermin change password" /></p>

<h2 id="add_redirect_usermin">Epasta pāradresācijas uzstādīšana lietojot Usermin</h2>

<p>Spiežam <strong>Forward Email</strong>. Ieklikšķinam <strong>Email forwarding enabled?</strong> Yes. Laukā <strong>Forward to addresses</strong> ievadam epasta adresi, uz kuru veikt pāradresāciju. Ja papildus pāradresācija visus sūtijumus saglabāt arī šajā adresē, tad laukā <strong>Also deliver normally?</strong> izvēlamies <strong>Yes</strong>, pretējā gadijumā ieklikšķinam <strong>No</strong>.</p>

<p>Spiežam <strong>Save</strong>.</p>

<p><img src="https://noderack.lv/f/usermin_create_forward.png" alt="Usermin create forward" /></p>

<h2 id="create_responder_usermin">Epasta automātiskā atbildētāja uzstādīšana lietojot Usermin</h2>

<p>Spiežam <strong>Forward Email</strong>. Ieslēdzam automātisko atbildētāju <strong>Automatic response enabled?</strong> ieklikšķinot <strong>Yes</strong>. Ievadam vēlamo atbildes tekstu laukā <strong>Reply message</strong>. Norādam noklusēto epasta kodējumu laukā <strong>Message character set</strong>. Šim kodējumam ir jābūt utf-8, lai korekti attēlotu tekstu ar garumzīmēm un mīkstinājumiem. Norādam minimālo intervālu, kurā tiks sūtītas atkārotās atbildes uz sūtītāja epastu laukā <strong>Minimum interval between replies</strong>.</p>

<p>Spiežam <strong>Save</strong></p>

<p><img src="https://noderack.lv/f/usermin_create_responder.png" alt="Usermin create responder" /></p>

<h2 id="remove_responder_usermin">Automātiska epasta atbildētāja/pāradresācijas dzēšana lietojot Usermin</h2>

<p>Spiežam <strong>Email Filters</strong>. Izvēlamies uzstādijumu ko dzēst, to ieklikšķinot.
Spiežam <strong>Delete Selected Filters</strong>.</p>

<p><img src="https://noderack.lv/f/usermin_delete_filter.png" alt="Usermin delete filter" /></p>

<h2 id="spamfilter_usermin">Spamfiltru pārvaldīšana izmantojot Usermin</h2>

<p>N.B. Šie filtri nestrādās, ja spamfiltrs SpamAssassin strādā servera režīmā.</p>

<p>Kreisās puses izvēlnē spiežam <strong>Usermin</strong>, tad <strong>Mail</strong> un <strong>SpamAssassin Mail Filter</strong>.
Sadaļā <strong>Allowed addresses</strong>, laukā <strong>Senders to never classify as spam</strong> iespējams norādīt epasta adreses un domēnus, no kuriem saņemtie ziņojumi nekad netiks klasificēti kā Spams.</p>

<p><img src="https://noderack.lv/f/usermin_spamfilter.png" alt="Usermin spamfilter" /></p>

<p>Sadaļā <strong>Denied addresses</strong> iespējams norādīt epasta adreses un domēnus, no kuriem saņemtie sūtijumi vienmēr tiks klasificēti kā Spams.</p>

<p><img src="https://noderack.lv/f/usermin_spamfilter2.png" alt="Usermin spamfilter" /></p>

<p>Virtualmin spamfiltri pārbaudot katru epastu pēc daudziem kritērijiem to novērtē, un dod punktus. Ja šie punkti sasummējot pārsniedz noteiktu skaitli, tad epasts tiek marķēts kā spams un ievietots Spam direktorijā. Ja lietotāju neapmierina noklusētie sistēmas iestatijumi, tad viņam ir iespēja šos iestatijumus mainīt savam epastam. <strong>SpamAssassin Mail Filter</strong> izvēlnē izvēlamies <strong>Spam Classification</strong>. Laukā <strong>Hits above which a message is considered spam</strong> ievadam savu punktu skaitu. Noklusēti šis skaits ir 5.</p>

<p>Spiežam <strong>Save</strong></p>

<p><img src="https://noderack.lv/f/usermin_spamfilter3.png" alt="Usermin spamfilter" /></p>
]]></description>
<link>https://www.noderack.lv/blogs/noderack-virtualmin-sagataves-apraksts/</link>
<guid>https://www.noderack.lv/blogs/noderack-virtualmin-sagataves-apraksts/</guid>
<pubDate>Mon, 05 Mar 2012 11:13:00 +0200</pubDate>
</item>
<item>
<title>Nginx PHP-FPM uzstādīšana un daži triki</title>
<description><![CDATA[<p><img src="/f/nginx_logo.png" alt="Nginx logo" /></p>

<p>Pēdējo gadu laikā Krievijas programētāja Igor Sysoev radītais Nginx (Engine X), kas nodrošina web servera/atgriezeniskā starpniekservera (reverse proxy) un IMAP/POP3 starpniekservera funkcionalitāti, ir kļuvis ievērojami populārs. Tīmeklī lasāmas neskaitāmas sajūsminātu cilvēku atsauksmes par Nginx lielisko darbību izturot lielu slodzi un ērto konfigurāciju. Tāpat Nginx taupīgāk lieto sistēmas resursus salīdzinājumā ar Apache.<br />
Šinī rakstā apskatīsim, kā uzstādīt un nokonfigurēt Nginx (1.0.6) webserveri lietojot Ubuntu 10.04 LTS, kā arī dažas interesantas iespējas, ko Nginx mums piedāvā.
<br /><br /></p>

<ul>
<li><a href="#nginx">Nginx uzstādīšana</a></li>
<li><a href="#add_vhost">Kā pievienot jaunu virtuālo hostu</a></li>
<li><a href="#add_php">PHP-FPM atbalsta pievienošana</a></li>
<li><a href="#add_ssl">SSL atbalsta pievienošana</a></li>
<li><a href="#gzip">Trafika samazināšana izmantojot Gzip</a></li>
<li><a href="#cache">Trafika samazināšana un lapas ielādes ātruma palielināšana izmantojot pārlūku pagaidu atmiņu (cache)</a></li>
<li><a href="#add_password">Kā izveidot direktoriju ar paroles aizsardzību</a></li>
<li><a href="#add_protect_ip">Kā atļaut piekļuvi lapai tikai no noteiktām IP adresēm</a></li>
<li><a href="#protect_hidden">Kā aizliegt pieeju slēptajie failiem un direktorijām</a></li>
<li><a href="#favicon">Problēma ar neeksistējošu favicon.ico un/vai robots.txt</a></li>
<li><a href="#post_get">Atļaut tikai GET, POST un HEAD pieprasijumus</a></li>
<li><a href="#deny_browser">Kā aizliegt noteiktiem pārlūkiem apmeklēt lapu</a></li>
<li><a href="#hotlinking">Neļaut noteiktus failus no jūsu servera izmantot citās lapās (hotlinking)</a></li>
<li><a href="#deny_referer">Kā aizliegt apmeklēt lapu lietotājiem, kas sūta noteiktus referer paziņojumus</a></li>
<li><a href="#redirect_www">Kā pārsūtīt visus lapas apmeklētājus uz www.domēns.lv vai otrādāk</a></li>
<li><a href="#wordpress">Wordpress SEO draudzīgie linki priekš Nginx rewrite</a>
<br /><br />
<br /><br /></li>
</ul>

<h2 id="nginx">Nginx uzstādīšana</h2>

<p><br />
Pievienojam Nginx Launchpad paku repozitoriju, lai vienmēr būtu pieeja jaunākajām Nginx pakām. Failā <em>/etc/apt/sources.list</em> ierakstam šīs rindiņas.</p>

<pre><code>deb http://ppa.launchpad.net/nginx/stable/ubuntu lucid main 
deb-src http://ppa.launchpad.net/nginx/stable/ubuntu lucid main 
</code></pre>

<p>Uzstādam Nginx no Ubuntu pakām izmantojot šīs komandas</p>

<pre><code>sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C
sudo apt-get update
sudo apt-get install nginx
</code></pre>

<p>Noklusēti uzstādot šo paku automātiski tiek pievienots startēšanas skripts, lai servera pārstartēšanas gadījumā Nginx tiktu automātiski palaists. Lai būtu pavisam droši, palaižam šo komandu.</p>

<pre><code>sudo update-rc.d nginx defaults
</code></pre>

<p>Nginx konfigurācijas faili atrodas <em>/etc/nginx</em> direktorijā.
Fails <em>/etc/nginx/nginx.conf</em> atbild par servera konfigurāciju.
Direktorijā <em>/etc/nginx/sites-available</em> atrodas visu pieejamo lapu konfigurācijas faili, lai tos būtu ērtāk pārvaldīt. Lai kādu no šīm lapām aktivizētu priekš Nginx webservera, nepieciešamas izveidot linku (symlink) <em>/etc/nginx/sites-enabled</em> direktorija. To iespējams izdarīt palaižot šo komandu</p>

<pre><code>sudo ln -s /etc/nginx/sites-available/lapas_konfigurācija.lv /etc/nginx/sites-enabled/lapas_konfiguracija.lv
</code></pre>

<p>Atveram failu <em>/etc/nginx/nginx.conf</em>, un sadaļā <em>http</em> pievienojam šīs rindas</p>

<pre><code>http {
    server_tokens off;
    index     index.php index.html index.htm;
    client_max_body_size 50M;

...
}
</code></pre>

<p><strong>server_tokens off</strong> norādā, lai webserveris nerāda precīzu versijas numuru, bet tikai nosaukumu. Respektīvi tikai nginx.</p>

<p><strong>index</strong> norāda failus, kas noklusēti tiks servēti pieprasījumiem, kas nevaicās precīzus failus. Tradicionāli tie ir index.php/index.html/index.htm.</p>

<p><strong>client_max_body_size</strong> norādā izmēru, cik lielus failus serveris pieņems no lietotāja. Šinī gadijumā 50 megabaitu lielu failu.</p>

<p><br /><br />
Pirmais patīkamais sīkums ir iespēja uzstādīt, lai tas neatbildētu pieprasījumiem, kas netiek sūtīti kādai uz servera izvietotajai lapai, bet pa taisno uz IP adresi. Šis ir ērts veids, kā tikt vaļā no neskaitāmiem web robotiem, kuri meklē web ievainojamības skanējot IP adrešu apgabalus. Lai to izdarītu atveram failu <em>/etc/nginx/sites-available/default</em> un izlabojam noklusētā servera ierakstu šādi</p>

<pre><code>server {
    listen       80  default_server;
    server_name  _;
    return       444;
}
</code></pre>

<p>Šis ieraksts liks Nginx neatbildēt neatpazītiem pieprasijumiem atgriežot 444 kļūdas paziņojumu.
<br /><br /></p>

<h2 id="add_vhost">Kā pievienot jaunu virtuālo hostu</h2>

<p><br />
Izveidojam jaunu konfigurācijas failu adresei testalapa.lv iekš /<em>etc/nginx/sites-available/testalapa.lv</em></p>

<pre><code>server {
    listen        80; 
    server_name   testalapa.lv  www.testalapa.lv; 
    root          /srv/testalapa.lv;
    access_log    /var/log/nginx/testalapa_lv_access;
    error_log     /var/log/nginx/testalapa_lv_error;
}
</code></pre>

<p><strong>listen</strong> direktīva norāda, ka lapa tiks servēta pieprasījumiem uz visām webserverim pieejamajām IP adresēm.</p>

<p><strong>server_name</strong> direktīva norāda, uz kādiem domēniem sūtītiem pieprasījumiem atbildēt, šinī gadījumā testalapa.lv un www.testalapa.lv.</p>

<p><strong>root</strong> norāda, kur uz servera tiek glabāti attiecīgās lapas faili.</p>

<p><strong>access_log</strong> un <strong>error_log</strong> norāda, kur glabāt lapas apmeklējumu un kļūdu ierakstus.</p>

<p>Izveidojam linku uz <em>sites-enabled</em> direktoriju ar komandu</p>

<pre><code>sudo ln -s /etc/nginx/sites-available/testalapa.lv /etc/nginx/sites-enabled/testalapa.lv
</code></pre>

<p>Un pārlādējam Nginx konfigurāciju</p>

<pre><code>/etc/init.d/nginx reload
</code></pre>

<p><br /><br /></p>

<h2 id="add_php">PHP-FPM atbalsta pievienošana</h2>

<p><br />
Nākamais solis ir pievienot PHP atbalstu. Tam izmantosim PHP-FPM (<a href="http://php-fpm.org/">PHP FastCGI Process Manager</a>) metodi, kas tika radīta kā aizstājējs SpawnCGI. PHP-FPM piedāvā vairāk iespējas un darbojas stabilāk. Sākot no PHP 5.3.3 versijas, FPM atbalts ir iekļauts PHP kodā. Iepriekšējām versijām izejas kodu bija nepieciešams pačot. Lai dabūtu jaunākās PHP 5.3.x pakas, atveram failu <em>/etc/apt/sources.list</em>, un pievienojam šīs rindas ar Launchpad repozitorija adresi.</p>

<pre><code>deb http://ppa.launchpad.net/nginx/php5/ubuntu lucid main 
deb-src http://ppa.launchpad.net/nginx/php5/ubuntu lucid main 
</code></pre>

<p>Uzstādam PHP pakas ar šīm komandām</p>

<pre><code>sudo apt-get update
sudo apt-get install php5-fpm php5-mysql php5-gd php-apc
</code></pre>

<p>Tad atveram lapas konfigfigurācijas failu, šinī gadījumā <em>/etc/nginx/sites-available/testalapa.lv</em> un pievienojam šīs rindas</p>

<pre><code>location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_pass   localhost:9000;
    fastcgi_param  SCRIPT_FILENAME
                   $document_root$fastcgi_script_name;
    include        fastcgi_params;
    fastcgi_intercept_errors        on;
}

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;

location  /404.html {
      internal;
  }
location  /50x.html {
      internal;
  }
</code></pre>

<p>Pārlādējam Nginx</p>

<pre><code>/etc/init.d/nginx reload
</code></pre>

<p>Lai Nginx atbildētu lapas apmeklētājam ar kļūdas paziņojumu, fastcgi konfigurācijas gadījumā ir jānodefinē lapas atrašanās vietu, kas satur kļūdas paziņojumu. Pretējā gadījumā tiks atgriezta balta lapa. Ierakstam šīs rindas <em>server</em> sadaļā lapai, kurai uzstādīts fastcgi.</p>

<pre><code>error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
</code></pre>

<p>Šīs papildus rindas atļaus piekļūt kļūdu paziņojumu lapām tikai webserverim.</p>

<pre><code>location  /404.html {
      internal;
  }

location  /50x.html {
      internal;
  }
</code></pre>

<p><br /><br /></p>

<h2 id="add_ssl">SSL atbalsta pievienošana</h2>

<p><br />
Pirmkārt veidojam ierakstu noklusētajam serverim. Norādot, ka visi pieprasījumi uz IP adresi tiks ignorēti. Šī metode ar vairākiem SSL sertifikātiem uz vienas IP adreses strādā ar jaunākajiem pārlūkiem, kas atbalsta SNI (<a href="https://secure.wikimedia.org/wikipedia/en/wiki/Server_Name_Indication">Server Name Indication</a>).</p>

<p>Atveram <em>/etc/nginx/sites-available/default</em> un pašā apakšā ierakstām šīs rindas</p>

<pre><code>server {
    listen 443;
    server_name _;
    ssl on;
    ssl_certificate     /etc/nginx/tmp.crt;
    ssl_certificate_key /etc/nginx/tmp.key;
    return 444;
}
</code></pre>

<p>Uzģenerējam atslēgu un sertifikātu šim noklusētajam serverim ar komandām</p>

<pre><code>openssl genrsa -out /etc/nginx/tmp.key 1024
openssl req -new -key /etc/nginx/tmp.key -out /tmp/tmp.csr
openssl x509 -req -days 1825 -in /tmp/tmp.csr -signkey /etc/nginx/tmp.key -out /etc/nginx/tmp.crt
</code></pre>

<p>Tālāk atveram konfigurācijas failu lapai, kurai vēlamies pievienot SSL atbalstu. Šinī gadījumā <em>/etc/nginx/sites-available/testalapa.lv</em> un veicam šādus ierakstus.</p>

<pre><code>server {
    listen 443;
    server_name testalapa.lv;
    ssl on;
    ssl_certificate     /etc/nginx/testalapa.crt;
    ssl_certificate_key /etc/nginx/testalapa.key;
    root /srv/testalapa.lv;
    ssl_protocols SSLv3 TLSv1;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    access_log  /var/log/nginx/testalapa_lv_ssl_access;
    error_log /var/log/nginx/testalapa_lv_ssl_error;
}
</code></pre>

<p>Ja izmantosim pašparakstītu SSL sertifikātu, tad uzģenerējam to ar šīm komandām.</p>

<pre><code>openssl genrsa -out /etc/nginx/testalapa.key 2048
openssl req -new -key /etc/nginx/testalapa.key -out /tmp/tmp.csr
openssl x509 -req -days 1825 -in /tmp/tmp.csr -signkey /etc/nginx/testalapa.key -out /etc/nginx/testalapa.crt
</code></pre>

<p><br /><br /></p>

<h2 id="gzip">Trafika samazināšana izmantojot Gzip</h2>

<p><br />
Liela daļa no katras weblapas satur HTML, Javascript, XML, vai vienkāršu tekstu. Lai ietaupītu informācijas apjomu, ko lejupielādē lapas apmeklētājs, šo saturu iespējams saspiest izmantojot Gzip. Tādejādi tiek samazināts lejupielādējamās informācijas apjoms. Satura saspiešana daudz nepalīdzēs dažādu attēlu vai mūzikas formātu failiem, jo tie noklusēti tiek veidoti paturot prātā kompresiju. Jāņem vērā, ka weblapas satura saspiešana patērēs nedaudz vairāk servera procesora resursus. Satura saspiešanu iespējams uzstādīt visam serverim, noteiktai lapai vai konkrētam direktorijam. Šinī gadījumā uzstādīsim visam serverim.</p>

<p>Atveram Nginx konfigurācijas failu <em>/etc/nginx/nginx.conf</em>, un atkomentējam vai ierakstam šādas direktīvas.</p>

<pre><code>gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_min_length 1024;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
</code></pre>

<p><strong>gzip on</strong> ieslēdz saspiešanas iespēju.</p>

<p><strong>gzip_disable "msie6"</strong> iespējams norādīt <em>useragent</em>, kuru gadījumā nelietot saspiešanu (Šinī gadijumā vecie IE pārlūki).</p>

<p><strong>gzip_vary on</strong> pievieno servera atbildei <em>Vary: Accept-Encoding</em> tādejādi norādot apmeklētāja pārlūkam, ka ir iespēja datus lejupielādēt saspiestā veidā.</p>

<p><strong>gzip_proxied any</strong> norāda kādus pieprasījumus saspiest, ja klients pie lapas slēdzās izmantojot starpniekserveri. Šinī gadījumā visus.</p>

<p><strong>gzip_min_length</strong> norāda izmēru baitos, par kuru mazāki faili netiks saspiesti. Šinī gadijumā faili mazāki par 1kb netiks saspiesti.</p>

<p><strong>gzip_comp_level 6</strong> norāda saspiešanas līmeni. Tas iespējams no 1 (visvājākais) līdz 9 (vislielākais).</p>

<p><strong>gzip_buffers 16 8k</strong> norāda cik daudz un kāda izmēra buferus nodot Nginx lietošanā, priekš pagaidu saspiesto datu glabāšanas. Šinī gadijumā 16 8kb lielus buferus.</p>

<p><strong>gzip_http_version 1.1</strong> norādā kādām HTTP pieprasījumu versijām piegādāt datus saspiestā veidā. Lielākais vairums web pārlūku lieto HTTP 1.1 kā noklusēto standartu.</p>

<p><strong>gzip_types</strong> iespējams norādīt kādiem failu tipiem tiks piemērota saspiešana, pirms tie tieks padoti lapas apmeklētājām. Noklusēti tiek saspiests tikai html.
<br /><br /></p>

<h2 id="cache">Trafika samazināšana un lapas ielādes ātruma palielināšana izmantojot pārlūku pagaidu atmiņu (cache)</h2>

<p><br />
Mūsdienu pārlūki visi kā viens uztur savu pagaidu atmiņu uz lietotāja cietā diska, kurā glabā bildes, html failus un daudz ko citu. Nākamreiz apmeklējot lapu, klienta pārlūks pārbauda, vai kāds no failiem, kas atrodas pagaidu atmiņā, ir mainījies uz servera. Izmantojot šo metodi, mēs varam norādīt serverim, lai izvēlētajiem failu tipiem papildus tiek sūtīta atbilde, cik ilgi tos var ielādēt no pārlūka pagaidu atmiņas. Šādas norādes var uzstādīt visam serverim, noteiktai lapai vai direktorijam. Šinī piemērā uzstādīsim norādes noteiktai lapai.</p>

<p>Atveram lapas konfigurācijas failu <em>/etc/nginx/sites-available/testalapa.lv</em> un pievienojam <em>location</em> direktīvu <em>server</em> sadaļā.</p>

<pre><code>server {
    ....    

    location ~* \.(gif|jpg|jpeg|png)$ {
    expires     30d;
    access_log    off;
}
}
</code></pre>

<p><strong>location ~* &nbsp;</strong> norāda ka failu paplašinājumi var būt gan ar lielajiem, gan mazajiem burtiem. Ja nepieciešams norādīt precīzi (case sensitive), tad lietojam ~</p>

<p><strong>expires 30d</strong> liek webserverim atbildēt uz norāditajiem pieprasijumiem ar papildus lauku, kurā norādīt, ka šis fails netiks mainīts 30 dienas.</p>

<p><strong>access_log off</strong> norāda šo failu pieprasijumus nerakstīt logfailā.
<br /><br /></p>

<h2 id="add_password">Kā izveidot direktoriju ar paroles aizsardzību</h2>

<p><br />
Lapas konfigurācijas faila <em>server</em> sadaļā pievienojam šīs rindas.</p>

<pre><code>  location ^~ /slepens/ {
        auth_basic "Slepens";
        auth_basic_user_file /etc/nginx/testalapa_passwd;
    }
</code></pre>

<p>Paroli var uzģenerēt ar <em>htpasswd</em> rīku (<strong>htpasswd -b htpass lietotājs parole</strong>), kas nāk līdzi Apache, vai kādu no daudzajiem tiešsaistes ģeneratoriem. Kad parole veiksmīgi uzģenerēta, ierakstam to failā, kas norādīts <strong>auth_basic_user_file</strong> direktīvā. Šinī gadījumā <em>/etc/nginx/testalapa_passwd</em>.
<br /><br /></p>

<h2 id="add_protect_ip">Kā atļaut piekļuvi lapai tikai no noteiktām IP adresēm</h2>

<p><br />
Lapas konfigurācijas faila <em>server</em> sadaļā pievienojam šīs rindas. x.x.x.x aizstājam ar IP adresi, kurai atļausim piekļuvi. Visiem pārējiem piekļuve būs liegta</p>

<pre><code>  location ^~ / {
        allow x.x.x.x;
        deny all;
    }
</code></pre>

<p><br /><br /></p>

<h2 id="protect_hidden">Kā aizliegt pieeju slēptajiem failiem un direktorijām</h2>

<p><br />
Slēptie faili un direktoriji skaitās viss, kura nosaukums sākas ar ".". Tādi kā <em>.htaccess</em>, <em>.svn</em> un tamlīdzīgi. Lai aizliegtu tos aplūkot izmantojot weblapu pārlūku, atveram lapas konfigurācijas failu un <em>server</em> sadaļā pievienojam šīs rindas.</p>

<pre><code>location ~ /\. {
    deny all;
}
</code></pre>

<p><br /><br /></p>

<h2 id="favicon">Problēma ar neeksistējošu favicon.ico un/vai robots.txt</h2>

<p><br />
Mūsdienās visi pārlūki noklusēti pieprasa favicon.ico, kas ir mazā lapas ikona weblapu pārlūka adrešu laukā. Savukārt robots.txt satur norādijumus meklētāju robotiem, kas regulāri pārlūko lapas un atjauno informāciju par to saturu dažādos meklētājos, kā, piemēram, Google. Ja lapai kāds no šiem failiem nav, tad servera logfaili tiek lieki piesārņoti ar ierakstiem, ka šie faili nav tikuši atrasti. Pastāv elegants risinājums šai miniproblēmai. Atveram lapas konfigurācijas failu un <em>server</em> sadaļā pievienojam šos ierakstus. Tie liks webserverim nerakstīt neveiksmīgos robots.txt un favicon.ico pieprasijums error logfailā.</p>

<pre><code>location = /favicon.ico {
    log_not_found off;
}

location = /robots.txt {
    log_not_found off;
}
</code></pre>

<p><br /><br /></p>

<h2 id="post_get">Atļaut tikai GET, POST un HEAD pieprasijumus</h2>

<p><br />
Atveram lapas konfigurācijas failu, un <em>server</em> sadaļā pievienojam šīs rindiņas.</p>

<pre><code>if ($request_method !~ ^(GET|POST|HEAD)$ ) {
     return 444;
  }
</code></pre>

<p><br /><br /></p>

<h2 id="deny_browser">Kā aizliegt noteiktiem pārlūkiem apmeklēt lapu</h2>

<p><br />
Pievienojam šo direktīvu lapas konfigurācijas faila server sadaļā.</p>

<pre><code> if ($http_user_agent ~* (python|php|libcurl|zmeu) ) {
    return 444;
 }
</code></pre>

<p>Visiem lapas apmeklētājiem, kuru pārlūkprogramas user-agent saturēs kādu no norādītajiem vārdiem, tiks aizvērta konekcija bez paskaidrojumiem.
<br /><br /></p>

<h2 id="hotlinking">Neļaut noteiktus failus no jūsu servera izmantot citās lapās (hotlinking)</h2>

<p><br />
Dažreiz gadās, ka citās lapās ieliek failus, kas glabājas uz jūsu servera. Ja vien neesam to atļāvuši, tad tas var kļūt diezgan kaitinoši. Visbiežāk tas gadās ar attēliem. Tādejādi tiek tērēts jūsu trafiks un noslogots serveris pašu lapu neapmeklējot. Visvieglākais risinājums ir filtrēt pieprasijumus pēc <em>referer</em> rindiņas. Visi pieprasijumi kas nākuši no jūsu lapas saturēs rindiņu ar iepriekšējās lapas adresi (<em>referer</em>). Ja pieprasītais fails tika pieprasīts no citas lapas, tad arī <em>referer</em> būs no svešās lapas un atļaus efektīvi atfiltrēt šādus pieprasījumus. Atveram lapas konfigurācijas failu un <em>server</em> sadaļā ierakstam šīs rindas.</p>

<pre><code>location ~ \.(jpg|png|gif|jpeg)$ {
    valid_referers server_names none;
    if ($invalid_referer) {
    return 403;
}
}
</code></pre>

<p><strong>valid_referers</strong> rindiņa šajā variantā atļauj bildēm pieklūt apmeklētājiem, kuru <em>referer</em> saturēs adresi, kas norādītas kā virtualā servera adreses. Šinī gadījumā <em>testalapa.lv</em> un <em>www.testalapa.lv</em> (server_names), kā arī tukšu referer lauku (none).
<br /><br /></p>

<h2 id="deny_referer">Kā aizliegt apmeklēt lapu lietotājiem, kas sūta noteiktus referer paziņojumus</h2>

<p><br />
Viens no spameru trikiem ir veidot pieprasijumus web lapai, norādot ka viņi nākuši no kādas lapas. Kad lapas īpašnieks skatoties apmeklētāju statistiku pamana, ka daudzi apmeklētāji nākuši no kādas nezināmas lapas, tad ziņkāres vadīts iet to aplūkot. Un spameris iegūst papildus apmeklējumu savai lapai. To var labot lapas konfigurācijas faila <em>server</em> sadaļā pievienojot šīs rindas.</p>

<pre><code>if ($http_referer ~* (dating|poker) ) {
    return 444;
}
</code></pre>

<p>Tādejādi visiem apmeklētājiem, kuru sūtītais <em>referer</em> saturēs <em>dating</em> vai <em>poker</em>, webserveris atbildēs ar neko.
<br /><br /></p>

<h2 id="redirect_www">Kā pārsūtīt visus lapas apmeklētājus uz www.domēns.lv vai otrādāk</h2>

<p><br />
Atveram vajadzīgās lapas konfigurācijas failu un <em>server</em> sadaļā ierakstam šīs rindas. Ja domēnam pastāv arī subdomēni, tad <strong>(www)</strong> pārveidojam šādi <strong>(www|subdomens)</strong>.</p>

<pre><code>if ($host !~* ^(www)) {
    rewrite ^/(.*)$ $scheme://www.$host/$1 permanent;
}
</code></pre>

<p>Ja vēlamies visus apmeklētājus pārsūtīt uz domens.lv adresi, tad veicam šādu ierakstu.</p>

<pre><code>if ($host ~* ^www\.(.*)) {
    set $host_without_www $1;
    rewrite ^/(.*)$ $scheme://$host_without_www/$1 permanent;
}
</code></pre>

<p><br /><br /></p>

<h2 id="wordpress">Wordpress SEO draudzīgie linki priekš Nginx rewrite</h2>

<p><br />
Par cik šis ir ļoti izplatīts emuāru dzinējs, tad iekļāvām šo problēmu rakstā. Par cik Nginx neatbalsta .htaccess failus, un rewrite noteikumi ir nedaudz savādāki. Lai ieslēgtu SEO draudzīgos linkus, atveram lapas konfigurācijas failu un <em>server</em> sadaļā pievienojam šīs rindiņas.</p>

<pre><code>location / {
    try_files $uri $uri/ /index.php?$args;
}
</code></pre>

<p>Tās norādīs Nginx sākumā meklēt failu vai failu/ un neatrašanas gadījumā pārsūtīt pieprasījumu uz index.php.
<br /><br /></p>

<h2>Resursi internetā</h2>

<ul>
<li><a href="http://wiki.nginx.org/">Nginx wiki</a></li>
<li><a href="http://sysoev.ru/nginx/docs/">Nginx dokumentācija krieviski</a></li>
<li><a href="http://php-fpm.org/wiki/Main_Page">PHP-FPM wiki</a></li>
</ul>
]]></description>
<link>https://www.noderack.lv/blogs/nginx-php-fpm-uzstadisana-un-dazi-triki/</link>
<guid>https://www.noderack.lv/blogs/nginx-php-fpm-uzstadisana-un-dazi-triki/</guid>
<pubDate>Wed, 05 Oct 2011 13:05:00 +0300</pubDate>
</item>
<item>
<title>Servera pieskatīšanas skripts</title>
<description><![CDATA[<p>Ja var ticēt Mērfija likumiem, tad problēmas vienmēr uzrodas brīdī, kad esi ļoti aizņemts. Šis BASH skripts palīdzēs pieskatīt servera noslodzi un brīvo diska vietu, kas dos iespēju novērst problēmas laicīgi. Lai skripts strādātu korekti, uz servera nepieciešams korekti konfigurēts SMTP serveris un <a href="http://mailutils.org/">GNU Mailutils</a>.
<br />
<br />
Skripta regulāru palaišanu nodrošinās Cron. Ar komandu "<strong>crontab -e</strong>" atveram cron pievienojam ierakstu</p>

<pre><code>*/2 * * * * /vieta-kur-stav/skripts.sh &gt;/dev/null 2&gt;&amp;1
</code></pre>

<p>Lai skripts tiktu izsaukts reizi divās minūtēs. Ar komandu "<strong>chmod +x skripts.sh</strong>" iedodam šim skriptam execute tiesības. Norādam epastu, uz kuru sūtīt brīdinājumus, izmainot <em>MAIL</em> rindiņu. <em>PROCENTI="80"</em> norādā, ka paziņojumi par aizņemto diska vietu tiks sūtīti, kad kādā no partīcijām būs aizņemti 80% diska vietas, savukārt rinda <em>LOADAVG="1"</em> norāda, ka paziņojumi par servera noslodzi tiks sūtīti, ja vidējā noslodze pārsniegs 1. Ja serverim ir vairāki procesori vai kodoli, tad <em>LOADAVG</em> būtu uz kodolu/procesoru skaitu. Piemēram, ja ir viens 4 kodolu procesors, tad <em>LOADAVG</em> jamaina uz 4.</p>

<p><br /></p>

<pre><code>#!/bin/bash

MAIL="admin@domain.tld"
PROCENTI="80"
LOADAVG="1"

LOAD=$(cat /proc/loadavg | cut -d " " -f1 | cut -d "." -f1)

df -P | grep -vE '^Filesystem|none|udev|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
  PERC=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
  PARTITION=$(echo $output | awk '{ print $2 }' )
  if [ $PERC -ge $PROCENTI ]; then
  TEMPFILE=$(mktemp)
  df -hP &gt; $TEMPFILE
  mail -s "Running out of space \"$PARTITION ($PERC%)\" on $(hostname) $(date)" $MAIL &lt; $TEMPFILE
  rm -rf $TEMPFILE
fi
done


if [ $LOAD -ge $LOADAVG ]; then
  TEMPFILE=$(mktemp)
  TOP=$(top -b -n1)
  NETSTAT=$(netstat -anutp)
  PS=$(ps auxfww)
  WHO=$(w)
  echo -e "$TOP\n\n\n\n$PS\n\n\n\n$NETSTAT\n\n\n\n$WHO" &gt; $TEMPFILE
  mail -s "Load average $LOAD on $(hostname) $(date)" $MAIL &lt; $TEMPFILE
  rm -rf $TEMPFILE
fi
</code></pre>
]]></description>
<link>https://www.noderack.lv/blogs/servera-pieskatisanas-skripts/</link>
<guid>https://www.noderack.lv/blogs/servera-pieskatisanas-skripts/</guid>
<pubDate>Wed, 08 Jun 2011 16:12:00 +0300</pubDate>
</item>
<item>
<title>node.js</title>
<description><![CDATA[<p><img src="https://noderack.lv/f/nodejs_logo.png" alt="node.js logo" /></p>

<p><br /></p>

<h2>Kas ir node.js</h2>

<p><a href="http://nodejs.org">Node.js</a> ir platforma, kas galvenokārt paredzēta tīkla aplikāciju veidošanai, kā, piemēram, webserveris. Aplikācijas tiek rakstītas, izmantojot visiem labi zināmo JavaScript programmēšanas valodu. Node.js gadījumā JavaScript kods tiek izpildīts uz servera, nevis, kā pierasts, lietotāja interneta pārlūkprogrammā. Node.js izmanto <a href="http://code.google.com/p/v8/">V8 JavaScript Engine</a>, ko ir izstrādājuši Google programmētāji un to izmanto Google Chrome interneta pārlūkprogrammā. Tradicionālais webservisu komplekts (Apache + PHP) veido pavedienus katram lapas apmeklētājam un izpilda kodu secīgi, gaidot kamēr izpildīsies I/O operācijas, tādējādi tērējot servera operatīvās atmiņas un procesora resursus. Savukārt node.js izmanto notikumu bāzētu I/O. Tas nozīmē, ka, piemēram, ja mēs izveidojam webserveri, tad node.js pasaka operētājsistēmai, lai tā informē mūs, kad tiek izveidota jauna konekcija, un kods tiek izpildīts tikai tad, kad kāds mēģina pieslēgties mūsu webserverim. Izmantojot šādu pieeju mūsu kods nekad nebloķējas. Kods tiek izpildīts tikai tad, kad ir notikusi mums interesējošā darbība.</p>

<p>Šādi var izveidot primitīvu "Hello World" webserveri:</p>

<pre><code>var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(8080);
console.log('Server running at http://127.0.0.1:8080/');
</code></pre>

<p><br /></p>

<h2 id="install">Kā uzstādīt node.js</h2>

<p>Šīs instrukcijas ir paredzētas Ubuntu, bet uz citiem Linux distributīviem tās ir ļoti līdzīgas.</p>

<p>Atjaunojam paku sarakstu:</p>

<blockquote>
  <p>sudo apt-get update</p>
</blockquote>

<p>Uzstādam nepieciešamās pakas pirms node.js uzstādīšanas:</p>

<blockquote>
  <p>sudo apt-get install git-core libssl-dev g++ pkg-config curl</p>
</blockquote>

<p>Lejupielādējam jaunāko node.js no git repozitorija:</p>

<blockquote>
  <p>git clone https://github.com/joyent/node.git</p>
</blockquote>

<p>Ejam uz node.js direktoriju:</p>

<blockquote>
  <p>cd node</p>
</blockquote>

<p>Pārbaudam vai mums ir viss nepieciešamais, lai sāktu kompilēt:</p>

<blockquote>
  <p>./configure</p>
</blockquote>

<p>Sākam kompilēt:</p>

<blockquote>
  <p>make</p>
</blockquote>

<p>Pēc veiksmīgas kompilēšanas ieinstalējam node.js:</p>

<blockquote>
  <p>sudo make install</p>
</blockquote>

<p><br /></p>

<h2 id="npm">Node Package Manager</h2>

<p>Node Package Manager (npm) ir kļuvis par galveno rīku papildus node.js bibliotēku uzstādīšanai. Node Package Manager uzstādīt ir ļoti vienkārši:</p>

<blockquote>
  <p>sudo curl http://npmjs.org/install.sh | sudo sh</p>
</blockquote>

<p><br /></p>

<h2 id="example">Praktisks piemērs - čats interneta pārlūkā</h2>

<p>Tagad, kad mums ir uzstādīts node.js un npm, izmēģināsim node.js spēku, izveidojot reālā laika čata aplikāciju interneta pārlūkā. Čata aplikācijai izmantosim <a href="http://socket.io">socket.io</a> bibliotēku. Lai nodrošinātu reālā laika savienojumu ar serveri uz dažādiem interneta pārlūkiem, socket.io izvēlas atbilstošāko no pārlūka atbalstītajiem transporta protokoliem.</p>

<p>Socket.io atbalsta šādus transporta protokolus:</p>

<ul>
<li>WebSocket</li>
<li>Adobe Flash Socket</li>
<li>AJAX long polling</li>
<li>AJAX multipart streaming</li>
<li>Forever Iframe</li>
<li>JSONP Polling</li>
</ul>

<p><br /></p>

<p>Uzstādam socket.io bibliotēku ar npm:</p>

<blockquote>
  <p>sudo npm install socket.io</p>
</blockquote>

<p>Mūsu čata aplikācijai ir nepieciešami 3 faili:</p>

<ul>
<li><strong>server.js</strong> - kods, kas izpildīsies serverī</li>
<li><strong>chat.html</strong> - kods, kas izpildīsies klienta interneta pārlūkā</li>
<li><strong>json.js</strong> - JSON bibliotēka, kas paredzēta vecākām IE versijām</li>
</ul>

<p><br /></p>

<p>Faila <strong>server.js</strong> saturs:</p>

<pre><code>var http = require('http')
  , url = require('url')
  , fs = require('fs')
  , io = require('socket.io')
  , sys = require(process.binding('natives').util ? 'util' : 'sys')
  , server;

server = http.createServer(function(req, res){
  // your normal server code
  var path = url.parse(req.url).pathname;
  switch (path){
    case '/':
      res.writeHead(200, {'Content-Type': 'text/html'});
      res.write('&lt;h1&gt;Welcome. Try the &lt;a href="/chat.html"&gt;chat&lt;/a&gt; example.&lt;/h1&gt;');
      res.end();
      break;

    case '/json.js':
    case '/chat.html':
      fs.readFile(__dirname + path, function(err, data){
        if (err) return send404(res);
        res.writeHead(200, {'Content-Type': path == '/json.js' ? 'text/javascript' : 'text/html'})
        res.write(data, 'utf8');
        res.end();
      });
      break;

    default: send404(res);
  }
}),

send404 = function(res){
  res.writeHead(404);
  res.write('404');
  res.end();
};

server.listen(8080);

// socket.io, I choose you
// simplest chat application evar
var io = io.listen(server)
  , buffer = [];

io.on('connection', function(client){
  client.send({ buffer: buffer });
  client.broadcast({ announcement: client.sessionId + ' connected' });

  client.on('message', function(message){
    var msg = { message: [client.sessionId, message] };
    buffer.push(msg);
    if (buffer.length &gt; 15) buffer.shift();
    client.broadcast(msg);
  });

  client.on('disconnect', function(){
    client.broadcast({ announcement: client.sessionId + ' disconnected' });
  });
});
</code></pre>

<p>Faila <strong>chat.html</strong> saturs:</p>

<pre><code>&lt;!doctype html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;socket.io client test&lt;/title&gt;

    &lt;script src="/json.js"&gt;&lt;/script&gt; &lt;!-- for ie --&gt;
    &lt;script src="/socket.io/socket.io.js"&gt;&lt;/script&gt;
  &lt;/head&gt;
  &lt;body&gt;

    &lt;script&gt;
      function message(obj){
        var el = document.createElement('p');
        if ('announcement' in obj) el.innerHTML = '&lt;em&gt;' + esc(obj.announcement) + '&lt;/em&gt;';
        else if ('message' in obj) el.innerHTML = '&lt;b&gt;' + esc(obj.message[0]) + ':&lt;/b&gt; ' + esc(obj.message[1]);

        if( obj.message &amp;&amp; window.console &amp;&amp; console.log ) console.log(obj.message[0], obj.message[1]);
        document.getElementById('chat').appendChild(el);
        document.getElementById('chat').scrollTop = 1000000;
      }

      function send(){
        var val = document.getElementById('text').value;
        socket.send(val);
        message({ message: ['you', val] });
        document.getElementById('text').value = '';
      }

      function esc(msg){
        return msg.replace(/&lt;/g, '&amp;lt;').replace(/&gt;/g, '&amp;gt;');
      };

      var socket = new io.Socket(null, {port: 8080, rememberTransport: false});
      socket.connect();
      socket.on('message', function(obj){
        if ('buffer' in obj){
          document.getElementById('form').style.display='block';
          document.getElementById('chat').innerHTML = '';

          for (var i in obj.buffer) message(obj.buffer[i]);
        } else message(obj);
      });

      socket.on('connect', function(){ message({ message: ['System', 'Connected']})});
      socket.on('disconnect', function(){ message({ message: ['System', 'Disconnected']})});
      socket.on('reconnect', function(){ message({ message: ['System', 'Reconnected to server']})});
      socket.on('reconnecting', function( nextRetry ){ message({ message: ['System', 'Attempting to re-connect to the server, next attempt in ' + nextRetry + 'ms']})});
      socket.on('reconnect_failed', function(){ message({ message: ['System', 'Reconnected to server FAILED.']})});
    &lt;/script&gt;

    &lt;h1&gt;Sample chat client&lt;/h1&gt;
    &lt;div id="chat"&gt;&lt;p&gt;Connecting...&lt;/p&gt;&lt;/div&gt;
    &lt;form id="form" onSubmit="send(); return false"&gt;
      &lt;input type="text" autocomplete="off" id="text"&gt;&lt;input type="submit" value="Send"&gt;
    &lt;/form&gt;

    &lt;style&gt;
      #chat { height: 300px; overflow: auto; width: 800px; border: 1px solid #eee; font: 13px Helvetica, Arial; }
      #chat p { padding: 8px; margin: 0; }
      #chat p:nth-child(odd) { background: #F6F6F6; }
      #form { width: 782px; background: #333; padding: 5px 10px; display: none; }
      #form input[type=text] { width: 700px; padding: 5px; background: #fff; border: 1px solid #fff; }
      #form input[type=submit] { cursor: pointer; background: #999; border: none; padding: 6px 8px; -moz-border-radius: 8px; -webkit-border-radius: 8px; margin-left: 5px; text-shadow: 0 1px 0 #fff; }
      #form input[type=submit]:hover { background: #A2A2A2; }
      #form input[type=submit]:active { position: relative; top: 2px; }
    &lt;/style&gt;

  &lt;/body&gt;
&lt;/html&gt;
</code></pre>

<p>Faila <strong>json.js</strong> saturs:</p>

<pre><code>if(!this.JSON){JSON=function(){function f(n){return n&lt;10?'0'+n:n;}
Date.prototype.toJSON=function(){return this.getUTCFullYear()+'-'+
f(this.getUTCMonth()+1)+'-'+
f(this.getUTCDate())+'T'+
f(this.getUTCHours())+':'+
f(this.getUTCMinutes())+':'+
f(this.getUTCSeconds())+'Z';};var m={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};function stringify(value,whitelist){var a,i,k,l,r=/["\\\x00-\x1f\x7f-\x9f]/g,v;switch(typeof value){case'string':return r.test(value)?'"'+value.replace(r,function(a){var c=m[a];if(c){return c;}
c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+
(c%16).toString(16);})+'"':'"'+value+'"';case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
if(typeof value.toJSON==='function'){return stringify(value.toJSON());}
a=[];if(typeof value.length==='number'&amp;&amp;!(value.propertyIsEnumerable('length'))){l=value.length;for(i=0;i&lt;l;i+=1){a.push(stringify(value[i],whitelist)||'null');}
return'['+a.join(',')+']';}
if(whitelist){l=whitelist.length;for(i=0;i&lt;l;i+=1){k=whitelist[i];if(typeof k==='string'){v=stringify(value[k],whitelist);if(v){a.push(stringify(k)+':'+v);}}}}else{for(k in value){if(typeof k==='string'){v=stringify(value[k],whitelist);if(v){a.push(stringify(k)+':'+v);}}}}
return'{'+a.join(',')+'}';}}
return{stringify:stringify,parse:function(text,filter){var j;function walk(k,v){var i,n;if(v&amp;&amp;typeof v==='object'){for(i in v){if(Object.prototype.hasOwnProperty.apply(v,[i])){n=walk(i,v[i]);if(n!==undefined){v[i]=n;}}}}
return filter(k,v);}
if(/^[\],:{}\s]*$/.test(text.replace(/\\./g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof filter==='function'?walk('',j):j;}
throw new SyntaxError('parseJSON');}};}();}
</code></pre>

<p>Kad šie 3 faili ir izveidoti uz servera, atliek tikai palaist node.js ar mūsu čata aplikāciju. Lai palaistu node.js:</p>

<blockquote>
  <p>sudo node server.js</p>
</blockquote>

<p>Mūsu čata aplikācija ir veiksmīgi palaista uz porta <strong>8080</strong>. Atveram interneta pārlūku un notestējam node.js spēku.</p>

<p><img src="https://noderack.lv/f/nodejs-socket-io-chat.jpg" alt="Socket.io čats" /></p>

<p><br /></p>

<h2>Resursi internetā</h2>

<ul>
<li><a href="http://nodejs.org">Node.js oficiālā weblapa</a></li>
<li><a href="http://npmjs.org">Node Package Manager oficiālā weblapa</a></li>
<li><a href="http://socket.io">Socket.IO oficiālā weblapa</a></li>
<li><a href="http://expressjs.com">Express - node web framework</a></li>
</ul>
]]></description>
<link>https://www.noderack.lv/blogs/nodejs/</link>
<guid>https://www.noderack.lv/blogs/nodejs/</guid>
<pubDate>Mon, 16 May 2011 12:16:00 +0300</pubDate>
</item>
<item>
<title>MongoDB</title>
<description><![CDATA[<p><img src="https://noderack.lv/f/logo-mongodb.png" alt="MongoDB logo" /></p>

<h2>Kas ir MongoDB</h2>

<p>MongoDB ir atvērtā koda dokumentu orientēta datubāze. Atšķirībā no tradicionālajām relāciju datubāžu pārvaldības sistēmām (MySQL, PostgeSQL, Oracle u.c.), kurās nepieciešams definēt katra lauka tipu un rūpīgi pieturēties pie definētās shēmas, MongoDB ļauj ievietot datubāzē nestrukturizētus JSON objektus bez jebkādiem ierobežojumiem. Šādi aplikācijām tiek dota iespēja glabāt sarežģītus datus daudz saprotamākā veidā, paturot iespēju tos atlasīt pēc nepieciešamajiem kritērijiem. Ja tradicionālajās datubāzēs dati tiek glabāti tabulās, tad MongoDB dokumenti tiek glabāti kolekcijās. MongoDB lielākie trumpji ir ātrums, iebūvētā datu skaldīšana (sharding) un tas cik viegli ir palielināt datubāzes veiktspēju, pievienojot jaunus serverus.</p>

<p>Šādi izskatās tipisks MongoDB dokuments:</p>

<pre><code>{
    "name": {
      "first": "Jānis",
      "last": "Bērziņš"
    },
    "sex": "male",
    "age": 30,
    "address": {
      "street": "Skolas iela 1",
      "city": "Rīga"
    },
    "skills": ["mongodb", "node.js", "javascript", "nginx"]
}
</code></pre>

<p>Piemēram, ja mēs gribētu atlasīt no kolekcijas <code>users</code> visus Jāņus, kas dzīvo Rīgā, tad mēs darītu šādi:</p>

<pre><code>&gt; db.users.find({"name.first": "Jānis", "address.city": "Rīga"})
</code></pre>

<p>Ir iespējams veikt arī sarežģītākus vaicājumus. Šādi izskatīsies vaicājums, kas atlasīs 10 lietotāju vārdus un uzvārdus, kas vecāki par 25 gadiem, prot JavaScript un node.js, sakārtoti augošā secībā pēc vecuma.</p>

<pre><code>&gt; db.users.find({"age": {"$gt": 25}, "skills": {"$all": ["javascript", "node.js"]}}, {"name": 1}).sort({"age": 1}).limit(10)
</code></pre>

<p>Ja nepieciešami vēl sarežģītāki vaicājumi, tad iespējams izpildīt JavaScript kodu datubāzē.</p>

<pre><code>&gt; db.users.find({"$where": function() { return this.age &gt; 25}})
</code></pre>

<p>Lai nodrošinātu labu ātrdarbību ar lielām kolekcijām, nepieciešams izveidot indeksus uz biežāk izmantotajiem laukiem. Šādi izveidosim indeksu <code>age</code> laukam.</p>

<pre><code>&gt; db.users.ensureIndex({"age": 1})
</code></pre>

<p><br /></p>

<h2 id="install">Kā uzstādīt MongoDB</h2>

<p>MongoDB ir pieejams arī pirmkoda veidā, bet šoreiz mēs uzstādīsim to no pakām uz Ubuntu, jo tas ir daudz ērtāk un ātrāk. Lai arī oficiālajās Ubuntu pakās ir pieejams MongoDB, tas ir vecs un nav ieteicams to izmantot, tāpēc mēs pievienosim MongoDB izstrādātāju piedāvāto repozitoriju.</p>

<p>Pievienojam MongoDB izstrādātāju GPG atslēgu:</p>

<blockquote>
  <p>sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10</p>
</blockquote>

<p>Pievienojam MongoDB izstrādātāju repozitoriju:</p>

<blockquote>
  <p>echo "deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen" >> /etc/apt/sources.list</p>
</blockquote>

<p>Atjaunojam repozitoriju sarakstu:</p>

<blockquote>
  <p>sudo apt-get update</p>
</blockquote>

<p>Un visbeidzot uzstādam MongoDB serveri:</p>

<blockquote>
  <p>sudo apt-get install mongodb-10gen</p>
</blockquote>

<p><br /></p>

<h2 id="php">Kā izmantot MongoDB no PHP</h2>

<p>Lai uzstādītu MongoDB PHP draiveri, pārliecinamies, ka ir uzstādīts PEAR:</p>

<blockquote>
  <p>sudo apt-get install php5-dev php5-cli php-pear</p>
</blockquote>

<p>Uzstādam MongoDB PHP draiveri:</p>

<blockquote>
  <p>sudo pecl install mongo</p>
</blockquote>

<p>Faila <code>php.ini</code> beigās pierakstam šādu rindiņu:</p>

<pre><code>extension=mongo.so
</code></pre>

<p>Restartējam webserveri un mums ir lietošanai gatavs PHP, kas prot sarunāties ar MongoDB.</p>

<p>Šeit neliels PHP koda piemērs, kā izmantot MongoDB no PHP:</p>

<pre><code>&lt;?php

// Izveido konekciju uz MongoDB
$mongo = new Mongo();

// Datubāzes izvēle. Šajā gadījumā test
$db = $mongo-&gt;test;

// Izvēlamies kolekciju users
$users_col = $db-&gt;users;

// Pievienojam jaunu dokumentu
$doc = array(
    "name" =&gt; array("first" =&gt; "Jānis", "last" =&gt; "Bērziņš"),
    "sex" =&gt; "male",
    "age" =&gt; 25,
    "address" =&gt; array("street" =&gt; "Skolas iela 1", "city" =&gt; "Rīga"),
    "skills" =&gt; array("mongodb", "node.js", "javascript", "nginx")
);
$users_col-&gt;insert($doc);

// Pievienojam vēl vienu, bet ar mazliet savādāku struktūru
$doc = array(
    "name" =&gt; array("first" =&gt; "Juris", "last" =&gt; "Kļaviņš"),
    "sex" =&gt; "male",
    "age" =&gt; 32,
    "skills" =&gt; array("xhtml", "css"),
    "software" =&gt; array("photoshop", "illustrator"),
    "img" =&gt; "http://noderack.lv/img/logo.jpg"
);
$users_col-&gt;insert($doc);

// Atrodam visus vīriešus
$cursor = $users_col-&gt;find(array("sex" =&gt; "male"));

// Parādam atrasto lietotāju vārdus un uzvārdus
foreach ($cursor as $doc) {
    echo $doc["name"]["first"]." ".$doc["name"]["last"]."\n";
}

?&gt;
</code></pre>

<p><br /></p>

<h2>Resursi internetā</h2>

<ul>
<li><a href="http://www.mongodb.org/">MongoDB oficiālā weblapa</a></li>
<li><a href="http://www.php.net/manual/en/book.mongo.php">MongoDB PHP draivera dokumentācija</a></li>
</ul>
]]></description>
<link>https://www.noderack.lv/blogs/mongodb/</link>
<guid>https://www.noderack.lv/blogs/mongodb/</guid>
<pubDate>Fri, 13 May 2011 15:12:00 +0300</pubDate>
</item>
<item>
<title>Darbs ar NodeRack kontroles paneli</title>
<description><![CDATA[<ul>
<li><a href="http://noderack.lv/blogs/darbs-ar-noderack-kontroles-paneli/#registreties">Kā reģistrēties un pirkt jaunu serveri?</a></li>
<li><a href="http://noderack.lv/blogs/darbs-ar-noderack-kontroles-paneli/#apmaksat">Kā apskatīt tekošos rēķinus un apmaksāt jaunos?</a></li>
<li><a href="http://noderack.lv/blogs/darbs-ar-noderack-kontroles-paneli/#reg_info">Kur es varu uzzināt sava servera pieejas datus un pārējo nepieciešamo informāciju?</a></li>
<li><a href="http://noderack.lv/blogs/darbs-ar-noderack-kontroles-paneli/#parole">Esmu aizmirsis sava servera paroli, vai ir iespējams to nomainīt?</a></li>
<li><a href="http://noderack.lv/blogs/darbs-ar-noderack-kontroles-paneli/#restart">Mans serveris ir "uzkāries"! Kā lai to pārstartē?</a></li>
<li><a href="http://noderack.lv/blogs/darbs-ar-noderack-kontroles-paneli/#dzest">Kā dzēst izveidotu VPS?</a></li>
<li><a href="http://noderack.lv/blogs/darbs-ar-noderack-kontroles-paneli/#resize">Kā palielināt vai samazināt servera jaudu un diska vietu?</a></li>
<li><a href="http://noderack.lv/blogs/darbs-ar-noderack-kontroles-paneli/#ssh_atslegas">Kā uzzināt jaunizveidotā servera SSH atslēgu kontrolsummas?</a></li>
<li><a href="http://noderack.lv/blogs/darbs-ar-noderack-kontroles-paneli/#atbalsts">Kā sazināties ar tehnisko atbalstu?</a></li>
<li><a href="http://noderack.lv/blogs/darbs-ar-noderack-kontroles-paneli/#parole">Esmu aizmirsis NodeRack kontroles paneļa paroli. Kā to nomainīt?</a></li>
<li><a href="http://noderack.lv/blogs/darbs-ar-noderack-kontroles-paneli/#info">Kā nomainīt savu kontaktinformāciju?</a></li>
<li><a href="http://noderack.lv/blogs/darbs-ar-noderack-kontroles-paneli/#dzest_profilu">Esmu nolēmis turpmāk nelietot NodeRack pakalpojumus. Kā atteikties no pakalpojuma?</a>
<br /><br /></li>
</ul>

<h2 id="registreties">Kā reģistrēties un pirkt jaunu serveri?</h2>

<p>Pirmais solis ir izvēlēties nepieciešamo servera resursu apjomu un spiest "<strong>Pirkt</strong>".</p>

<p><img src="https://noderack.lv/f/pirkt.png" alt="pirkt" /></p>

<p>Tālāk ievadam savu kontaktinformāciju, izlasām un piekrītam <a href="https://noderack.lv/lietosanas-noteikumi/">lietošanas noteikumiem</a>, spiežam "<strong>Reģistrēties</strong>".</p>

<p><img src="https://noderack.lv/f/registreties.png" alt="reģistrēties" /></p>

<p>Uzspiežam uz pirmā, neapmaksātā rēķina. Izvēlamies maksāšanas veidu. 
Ja izvēlaties maksāt ar <a href="https://www.paypal.com/">PayPal</a>, tad tālāk visas darbības notiks viņu lapā.
Ja maksājuma veids ir kredītkarte vai debetkarte, tad jāievada kartes dati. Visus karšu maksājumus nodrošina <a href="http://www.firstdata.lv/lat/about/">FirstData</a>.</p>

<p><img src="https://noderack.lv/f/maksat_karte.png" alt="maksāt ar karti" /></p>

<p>Pēc veiksmīgas rēķina apmaksas, spiežam "<strong>Izveidot jaunu VPS</strong>", izvēlamies Linux distributīvu un distributīva versiju. Ievadām sava VPS nosaukumu un hostname, un spiežam "<strong>Izveidot</strong>".</p>

<p><img src="https://noderack.lv/f/vps_info.png" alt="vps" /></p>

<p>Pēc veiksmīgas VPS izveides, jūs automātiski nonākat lapā ar informāciju par jaunizveidoto serveri.</p>

<p><br /></p>

<h2 id="apmaksat">Kā apskatīt tekošos rēķinus un apmaksāt jaunos?</h2>

<p>Ielogojamies <a href="https://noderack.lv/autorizacija/">NodeRack administrācijas panelī</a>. Spiežam uz pogas "<strong>RĒĶINI</strong>". Tālāk redzams saraksts ar apmaksātajiem un neapmaksātajiem rēķiniem. Spiežam uz neapmaksātā rēķina. Izvēlamies maksājumu veidu un apmaksājam rēķinu.</p>

<p><img src="https://noderack.lv/f/rekini.png" alt="rēķini" /></p>

<p><br /></p>

<h2 id="reg_info">Kur es varu uzzināt sava servera pieejas datus un pārējo nepieciešamo informāciju?</h2>

<p>Ielogojieties <a href="https://noderack.lv/autorizacija/">NodeRack administrācijas panelī</a>. Pēc veiksmīgas autorizācijas spiežam uz interesējošā VPS. Šeit pieejama informācija par servera IP adresi, lietotājvārdu un paroli, kā arī statistika par tīkla un procesora jaudas noslodzi.</p>

<p><img src="https://noderack.lv/f/vps_info2.png" alt="vps_info" /></p>

<p><br /></p>

<h2 id="parole">Esmu aizmirsis sava servera paroli, vai ir iespējams to nomainīt?</h2>

<p>Protams! NodeRack kontroles panelī izvēlamies serveri, kuram mainīt paroli un nospiežam uz tā. Tad labajā puse spiežam uz pogas "<strong>Mainīt paroli</strong>". Serveris tiks automātiski izslēgts, tam tiks nomainīta parole, un iestartēts no jauna.</p>

<p><br /></p>

<h2 id="restart">Mans serveris ir "uzkāries"! Kā lai to pārstartē?</h2>

<p>Ja serveris ir uzkāries, un tam nav iespējams piekļūt ar SSH, tad šo serveri iespējams pārstartēt vai izslēgt lietojot NodeRack kontroles paneli. Kontroles panelī izvēlamies attiecīgo serveri un nospiežam uz tā. Tālāk labajā pusē iespējams serveri izslēgt, pārstartēt, vai "<em>izraut vadu</em>", kas atbildīs tā saucamajam "<em>hard reset</em>".</p>

<p><br /></p>

<h2 id="dzest">Kā dzēst izveidotu VPS?</h2>

<p>NodeRack kontroles panelī izvēlamies attiecīgo serveri un nospiežam uz tā. Tad labajā pusē spiežam uz pogas "Dzēst".</p>

<p><br /></p>

<h2 id="resize">Kā palielināt vai samazināt servera jaudu un diska vietu?</h2>

<p>NodeRack kontroles panelī izvēlamies attiecīgo serveri un nospiežam uz tā. Tad labajā pusē spiežam uz pogas "<strong>Labot</strong>". Izvēlamies sev nepieciešamo jaudu un spiežam vēlreiz "<strong>Labot</strong>". Serveris tiks automātiski izslēgts un attiecīgi pievienota vai noņemta jauda un diska vieta. Sistēma neļaus samazināt servera plānu, ja būs aizņemts vairāk diska vietas nekā jaunajam plānam pienākas.</p>

<p><img src="https://noderack.lv/f/labot.png" alt="labot" /></p>

<p><br /></p>

<h2 id="ssh_atslegas">Kā uzzināt jaunizveidotā servera SSH atslēgu kontrolsummas?</h2>

<p>NodeRack kontroles panelī izvēlamies attiecīgo serveri un nospiežam uz tā. Galvenās servera informācijas loga apakšā redzamas RSA un DSA atslēgu kontrolsummas, ja lietotājs pēc servera izveidošanas pats nav tās nomainījis. Kad pirmo reizi tiks veikta pieslēgšanās serverim ar SSH, tiks prasīts apstiprināt servera atslēgu. Šīs kontrolsummas salīdzināšana pirms pirmās pieslēgšanās apliecinās, ka esat pieslēdzies īstajam serverim, un nevienam nebūs iespējas pārtvert jūsu nosūtītos un saņemtos datus. Noklusēti SSH tiek lietota RSA atslēga.</p>

<p><img src="https://noderack.lv/f/ssh_kontrolsummas.png" alt="ssh" /></p>

<p><br /></p>

<h2 id="atbalsts">Kā sazināties ar tehnisko atbalstu?</h2>

<p>Ir vairāki veidi kā to paveikt. Reģistrētie lietotāji to var izdarīt ielogojoties NodeRack kontroles panelī, nospiežot augšpusē uz pogas "<a href="https://noderack.lv/serviss/iesniegt/">SERVISS</a>". Aprakstot radušos jautājumu vai problēmu un spiežot "<strong>Iesniegt</strong>".</p>

<p><img src="https://noderack.lv/f/iesniegt.png" alt="serviss" /></p>

<p>Nereģistrētie lietotāji var izmantot Skype (noderack), <a href="https://noderack.lv/sazinaties-ar-mums/">kontaktformu</a>, vai epastu - support@noderack.com</p>

<p><br /></p>

<h2 id="parole">Esmu aizmirsis NodeRack kontroles paneļa paroli. Kā to nomainīt?</h2>

<p>Ejam uz paneļa autorizācijas formu. Apakša spiežam uz "<strong>Aizmirsi paroli?</strong>". Ievadam epasta adresi, ar kuru reģistrējāmies panelī un tad spiežam "<strong>Atjaunot</strong>". Ja epasts ir reģistrēts NodeRack sistēma, tad uz to tiks nosūtīta hipersaite, uz kuru aizejot varēs nomainīt paroli.</p>

<p><img src="https://noderack.lv/f/parole.png" alt="parole" /></p>

<p><br /></p>

<h2 id="info">Kā nomainīt savu kontaktinformāciju?</h2>

<p>Ielogojamies NodeRack kontroles panelī. Spiežam uz sava profila labajā augšējā stūrī. Ievadam jauno informāciju un spiežam "<strong>Labot</strong>".</p>

<p><img src="https://noderack.lv/f/mainit_info.png" alt="mainit info" /></p>

<p><br /></p>

<h2 id="dzest_profilu">Esmu nolēmis turpmāk nelietot NodeRack pakalpojumus. Kā to paveikt?</h2>

<p>Ielogojamies NodeRack kontroles panelī. Spiežam uz sava profila labajā, augšējā stūrī. Tad spiežam uz "<strong>Dzēst kontu</strong>". Apstiprinām šo darbību vēlreiz ievadot savu paneļa paroli. Kad profils tiek dzēsts, automātiski dzēšas visi šajā kontā izveidotie serveri.</p>
]]></description>
<link>https://www.noderack.lv/blogs/darbs-ar-noderack-kontroles-paneli/</link>
<guid>https://www.noderack.lv/blogs/darbs-ar-noderack-kontroles-paneli/</guid>
<pubDate>Mon, 02 May 2011 15:25:00 +0300</pubDate>
</item>
<item>
<title>Kā augšupielādēt failus uz VPS no Linux</title>
<description><![CDATA[<p>Visiem NodeRack virtuālajiem serveriem noklusēti ir ieslēgts SSH, ar kura palīdzību ir iespējams lietot SSH File Transfer Protocol, kas nodrošina drošu pieslēgšanos serverim un failu augšup/lejupielādēšanu, direktoriju veidošanu un citas darbības.</p>

<p>FileZilla ir bezmaksas atvērtā koda multiplatformu SFTP/FTP klients, kas darbojas arī Linux. Šajā rakstā apskatīsim, kā šo klientu uzstādīt, darbojoties Ubuntu distributīvā. FileZilla uzstādīšanu iespējams veikt no komandrindas palaižot komandu:</p>

<blockquote>
  <p>sudo apt-get install filezilla -y</p>
</blockquote>

<p>Vai izmantojot Ubuntu grafisko lietotāja saskarni pakotņu uzstādīšanai - Synaptic. Lai to palaistu, spiežam <strong>System</strong> > <strong>Administration</strong> > <strong>Synaptic Package Manager</strong>.</p>

<p><img src="https://noderack.lv/f/synaptic_1.png" alt="Synaptic" /></p>

<p>Ja tiek prasīta parole, lai atļautu darboties ar sistēmas administratora tiesībām, ievadam paroli un spiežam <strong>OK</strong>.</p>

<p><img src="https://noderack.lv/f/synaptic_sudo.png" alt="Synaptic sudo" /></p>

<p>Atjaunojam informāciju par pieejamajām pakām, spiežot <strong>Reload</strong>. Kad informācija ir veiksmīgi atjaunota, <strong>Quick search</strong> ierakstam <em>filezilla</em>, ar kreiso peles taustiņu spiežam uz atrastās filezilla pakas un izvēlamies <strong>Mark for installation</strong>.</p>

<p><img src="https://noderack.lv/f/synaptic_mark.png" alt="Synaptic mark" /></p>

<p>Tiks atvērts papildus logs, kas prasīs apstiprinājumu un parādīs sarakstu ar pakām, kuras nepieciešamas uzstādīt, lai nodrošinātu FileZilla darbību. Spiežam <strong>Mark</strong>.</p>

<p><img src="https://noderack.lv/f/synaptic_mark2.png" alt="Synaptic mark" /></p>

<p>Spiežam pogu <strong>Apply</strong> augšējā izvēlnē.</p>

<p><img src="https://noderack.lv/f/filezilla_apply1.png" alt="Apply" /></p>

<p>Vēlreiz apstiprinām, ka vēlamies uzlikt izvēlētās pakas spiežot <strong>Apply</strong>.</p>

<p><img src="https://noderack.lv/f/filezilla_apply2.png" alt="Apply" /></p>

<p><br /></p>

<h2>Pieslēgšanās pie servera izmantojot FileZilla</h2>

<p>Lai palaistu FileZilla, spiežam <strong>Applications</strong> > <strong>Internet</strong> > <strong>FileZilla</strong></p>

<p><img src="https://noderack.lv/f/filezilla1.png" alt="FileZilla" /></p>

<p>Host laukā ierakstam domēna vārdu vai VPS IP adresi, Username - lietotājvārdu, Password - paroli. Port laukā ierakstam 22 un spiežam <strong>Quickconnect</strong>.
Ja servera pieejas dati nav zināmi, tos iespējams aplūkot VPS kontroles panelī.</p>

<p><img src="https://noderack.lv/f/filezilla_quickconnect.png" alt="Quickconnect" /></p>

<p>Ja šī ir pirmā pieslēgšanās reize, tad tiks atvērts logs, kurā jums būs jāapstiprina, ka servera atslēga ir pareiza. Šī atslēga ir nepieciešama, lai nodrošinātu drošu pieslēgšanās kanālu pie servera, kā arī, lai neviens nevarētu pārtvert datus ko jūs sūtāt vai saņemat no servera. Lai pārbaudītu šo atslēgu ir jāpieslēdzas pie sava VPS un jāpalaiž komanda:</p>

<blockquote>
  <p>ssh-keygen -l -f /etc/ssh/ssh&#95;host&#95;rsa&#95;key.pub</p>
</blockquote>

<p>Ja servera atslēgas kontrolsumma sakrīt ar FileZilla attēloto, tad ieklikšķinam <strong>Allways trust this host, add this key to the cache</strong> un spiežam <strong>OK</strong>.</p>

<p><img src="https://noderack.lv/f/filezilla_key.png" alt="ssh key" /></p>

<p>Pēc veiksmīgas pieslēgšanās serverim tiek atvērts logs, kura kreisajā daļā ir pieejami lokālie faili, savukārt labajā pusē ir pieejami VPS faili, kas ļauj jums staigāt pa attalinātā servera direktorijām, darboties ar failiem, veidot direktorijas, u.tml.</p>

<p><img src="https://noderack.lv/f/filezilla_connected.png" alt="connected" /></p>

<p><br /></p>

<h2>Resursi internetā</h2>

<ul>
<li><a href="http://wiki.filezilla-project.org/Documentation">FileZilla Wiki</a></li>
</ul>
]]></description>
<link>https://www.noderack.lv/blogs/ka-augsupieladet-failus-uz-vps-no-linux/</link>
<guid>https://www.noderack.lv/blogs/ka-augsupieladet-failus-uz-vps-no-linux/</guid>
<pubDate>Mon, 18 Apr 2011 13:06:00 +0300</pubDate>
</item>
</channel>
</rss>
