Hlavní navigace

PC-BSD jails: serverové aplikace a služby potřetí

19. 8. 2013
Doba čtení: 6 minut

Sdílet

V minulém díle našeho seriálu o věznění aplikací v systému PC-BSD byly popsány instalace a zprovoznění databázového serveru PostgreSQL a PHP databázové administrační nástroje phpMyAdmin a Adminer. V dnešním díle dokončíme PHP jaily – jeden k provozu a testování aplikací, druhý pak pro jejich vývoj.

D. Webové PHP aplikace

V tomto jailu budou podle potřeby instalovány různé PHP aplikace jak na zkoušku, tak do provozu. Aby měl jail kromě jiného také nějaký přínos pro další poznávání a případné praktické využití v jiném kontextu, bude webovým aplikacím předřazena cache proxy.

D2) instalace programů a aplikací

Instalace se bude provádět pomocí PKGNG. K dispozici jsou různé verze všech potřebných aplikací a je tedy dobré vyzkoušet funkční kombinaci. Aktuálně se budou instalovat následující:

  • apache22–2.2.24
  • php5–5.4.15
  • varnish-3.0.03

Kromě samotného PHP je nutné instalovat ještě jeho rozšíření. Konkrétně se jednalo o tento výběr:

  • php5-extensions-1.7
  • php5-pdo_pgsql
  • php5-pdo_odbc
  • php5-pdo_mysql
  • php5-pgsql
  • php5-mysql
  • php5-mysqli
  • php5-gd
  • php5-zlib
  • php5-zip
  • php5-mcrypt
  • php5-gettext
  • php5-mbstring

D3) zprovoznění a zpřístupnění služby

  • podle dříve uvedených návodů se instalují a nastaví potřebné pomocné aplikace: webový server Apache včetně modulu mod_rpafPHP5
  • vzdáleně se vyzkouší funkčnost Apache a jeho kombinace s PHP
  • upraví se soubor /etc/rc.conf a vloží se tyto řádky:
    varnishd_enable="YES"
    varnishd_listen=":80"
    varnishd_config="/usr/local/etc/varnish/default.vcl"
    varnishd_storage="malloc,512M"
  • upraví se soubor /usr/local/etc/varnich/default.vcl a udělají 3 změny:

    a) odkomentovat a změnit položku

    backend default {
    .host = "127.0.0.1";
    .port = "8080";  }

    b) přidat položku

    sub vcl_recv {
    set req.backend = default;
    remove req.http.X-Forwarded-For;
    set    req.http.X-Forwarded-For = client.ip;  }

    nebo odkomentovat defaultní nastavení dané sekce

    c) přidat položku

    sub vcl_fetch {
    set obj.ttl = 0s; }

    nebo odkomentovat defaultní nastavení dané sekce

  • celý obsah tohoto souboru je v příloze Varnish-default-vcl.txt
  • restartuje se Apache: # service apache22 restart
  • je možné vyzkoušet <a>http://x.y.z.IPv4-jailu – nic se nezobrazí nebo <a>http://x.y.z.IPv4-jailu:8080 – zobrazí se výstup z Apache
  • vyzkouší se správnost nastavení konfigurace cache Varnish příkazem:  # varnishd -C -f /usr/local/etc/varnish/default.vcl
  • pokud se v konfiguraci neobjeví žádné chyby, restartuje se jail
  • nastaví se FW dle pokynů Krok 4, jediný přístupný port je 80
  • po novém startu je možné znovu vyzkoušet vzdálené připojení: <a>http://x.y.z.IPv4-jailu a <a>http://x.y.z.IPv4-jailu/phpinfo.php
  • pokud není vzdálené připojení možné, je třeba znovu projít nastavení serveru a FW a případné nedostatky doladit

Velikost jailu a exportovaného souboru jsou následující:

# zfs list
NAME                                                 USED  AVAIL  REFER  MOUNTPOINT
tank1/usr/jails/webapps                       1,22G   435G     1,61G    /usr/jails/webapps

Velikost exportovaného WDN souboru: 246 MB

Jak je z popisu zřejmé, jail neobsahuje žádnou lokální databázi. Je možné samozřejmě využít některé z databází ve vytvořených jailech nebo v budoucnu do jailu doplnit lokální databázové servery podle potřeby.

E. PHP prostředí pro vývoj aplikací

V tomto jailu bude instalováno několik aplikací, potřebných pro běh vybraných vývojových frameworků, konkrétně PradoYii. Nutné je samozřejmě prostředí PHP + webový server Apache. K tomu budou ještě přidány dva lokálně přístupné databázové stroje – PerconaPostgreSQL. Pokud by se to v budoucnu ukázalo jako nutné nebo vhodné, mohl by se jail doplnit nějakou proxy aplikací.

E2) instalace programů a aplikací

Instalace se bude provádět pomocí PKGNG. K dispozici jsou různé verze všech potřebných aplikací a je tedy dobré vyzkoušet funkční kombinaci. Aktuálně se budou instalovat následující:

  • apache–2.2.24
  • php–5.4.15
  • percona-5.5.31
  • postgresql-9.3.b1

K tomu ještě potřebná rozšíření PHP:

  • php5-extensions-1.7
  • php5-pdo_pgsql
  • php5-pdo_odbc
  • php5-pdo_mysql
  • php5-pgsql
  • php5-mysql
  • php5-mysqli
  • php5-gd
  • php5-zlib
  • php5-zip
  • php5-mcrypt
  • php5-gettext
  • php5-mbstring
  • php5-fileinfo
  • php5-soap
  • php5-xsl
  • php5-sqlite3

Při instalaci rozšíření PHP se jako závislost požaduje klient postgresql-9.0.13. Tento balíček ale koliduje s původně instalovanou verzí klienta 9.3. K úspěšnému provedení instalace rozšíření je nutné odinstalovat původního klienta příkazem:  # pkg delete -f postgresql-client-9.3.b1</p>

E3) zprovoznění a zpřístupnění služby

  • podle dříve uvedených návodů se instalují a nastaví potřebné pomocné aplikace: webový server Apache (není nutné instalovat modul mod_rpaf), PHP a databázové servery PerconaPostgreSQL.
  • pro server Percona se vytvoří nový uživatel, který má práva ke všem databázím a přístup z lokální sítě. Přístup z localhost tento uživatel nemá
  • pro server PostgreSQL se vytvoří pouze nový uživatel. Jeho vzdálený přístup z lokální sítě (z localhostu mít přístup nebude) se bude nastavovat až následně podle toho, k jakým databázím bude potřebovat přístup
  • vyzkouší se lokální připojení k serverům a vzdáleně funkčnost Apache a jeho kombinace s PHP
  • nastaví se FW dle pokynů Krok 4, přístupné jsou pouze porty 80, 3306 a 5432
  • vyzkouší se vzdálené připojení k databázovým serverům přes terminál a k webovému serveru z prohlížeče
  • pokud není vzdálené připojení možné, je třeba znovu projít nastavení serveru a FW a případné nedostatky doladit
  • vzhledem k tomu, že se jedná o vývojové prostředí, bylo by vhodné kromě možnosti přístupu k databázím přes terminál mít k dispozici i nějaké další možnosti. Jednou z nich je využití administračních aplikací v jailu Administrace databází
  • druhou možností je využít některé GUI nástroje, instalované na hostitelském stroji. Konkrétně se bude jednat o MySQL Workbench, DbVisualiserpgAdmin.
  • instaluje se balíček mysql-workbench-oss51–5.1.16_8
  • v menu Database → Manage Connections se vytvoří nové spojení pod názvem phpdevel. Podrobnosti viz obrázek
  • z webu http://www.dbvis.com/download/ nebo <a>http://www.dbvis.com/e­ap/install.jsp se stáhne příslušná verzi aplikace. Pro PC-BSD je nutné stahovat verzi Unix ( já jsem konkrétně vyzkoušel instalační skript ve verzích 9.0.7 a 91.2030. Skript stačí spustit (klidně jako běžný uživatel) a otevře se instalační průvodce
  • jako první jsem instaloval verzi 9. Při instalaci verze 91 se defaultně nabízí aktualizace stávající verze. Druhou možností je instalace nové verze do jiného adresáře. Aktualizace zachová veškerá původní nastavení.
  • pro nastavení konfigurace se spustí menu Tools –> Connection Wizard a vytvoří se napojení na MySQL server – viz obrázek.
  • podobným způsobem se vytvoří napojení na PostgreSQL – viz obrázek
  • instaluje se balíček pgadmin3–1.16.1, aplikace se spustí a vytvoří se nové spojení na server – viz obrázek
  • z webu http://www.pradosoft.com/download/ se stáhne příslušný balíček (já mám verzi 3.2.1, aktuálně je 3.2.2), rozbalí se a přejmenuje
  • to samé se provede na webu http://www.yiiframework.com/download/ se stabilní verzí 1.1.13. Je také možné stáhnout vývojovou verze 2 z <a>https://github.com/yiisoft/yii2. K té se dostanu někdy později a vyzkouším její možnosti
  • oba adresáře se nakopírují do jailu a adresáře /usr/local/www/apache22/data
  • zkopíruje se inicializační PHP soubor: # cp /usr/local/etc/php.ini-development /usr/local/etc/php.ini a vloží se do něj řádek
    date.timezone = „Europe/Prague“
  • restartuje se Apache
  • změní se spouštěcí příznak příslušného souboru: # chmod +x /usr/local/www/apache22/data/yii/framework/yiic
  • pro snadnější přístup k vývojovým souborům i souborům frameworků je vhodné přidat uživatele root do skupiny www v /etc/group
  • zkušebně se spustí: <a>http://x.y.z.IPv4-jailu/yii/requirements
  • zkušebně se spustí: <a>http://x.y.z.IPv4-jailu /prado/requirements
  • pokud nejsou ve frameworku žádné fatální chyby a jsou splněny všechny požadavky, je možné jej považovat za funkční
  • po novém startu je možné znovu vyzkoušet vzdálené připojení k frameworkům
  • pokud není vzdálené připojení možné, je třeba znovu projít nastavení serveru a FW a případné nedostatky doladit

Velikost jailu a exportovaného souboru jsou následující:

# zfs list
NAME                                 USED  AVAIL  REFER  MOUNTPOINT
tank1/usr/jails/phpdevel             761M   702G  1,13G  /usr/jails/phpdevel

Velikost exportovaného WDN souboru: 219 MB

CS24_early

Tímto by byly završeny snahy o pokrytí databázových a PHP aplikací. Kromě jiného je již možné srovnávat výkonnost čisté instalace Apache se dvěma různými typy proxy. To je ale již mimo rozsah tohoto dílu.

V příštím dílu se zaměříme na základnu k provozu javových webových aplikací – webový a aplikační server.

Byl pro vás článek přínosný?