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_rpaf a PHP5
- 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ě Prado a Yii. 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 – Percona a PostgreSQL. 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 Percona a PostgreSQL.
- 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, DbVisualiser a pgAdmin.
- 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/eap/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 řádekdate.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
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.