Instalace dotazníkového serveru LimeSurvey

V dnešním zápisku se zaměřím na zprovoznění LimeSurvey serveru na systému CentOS 5. LimeSurvey je jednou z nejznámnějších open source dotazníkových aplikací. Aplikace je napsána kompletně v PHP. Samotná aplikace vyžaduje pro svůj správný chod několik komponent: SQL databázi (já jsem zvolil MySQL), web server (Apache HTTP server) s podporou PHP a poštovní server (Postfix). Podrobný popis požadavků můžeme najít v dokumentaci na stránkách projektu.

Instalace a konfigurace komponent

Nejdříve naistalujeme jednotlivé komponenty pro LimeSurvey

[root@vserver6:~]$ yum install httpd postfix mysql-server mysql mbstring php php-mbstring php-mysql

Význam jednotlivých komponent pro aplikaci LimeSurvey je zřejmý. Poštovní server Postfix bude sloužit pro odesílaní dotanzíků a pozvánek. Konfiguraci samotného poštovního serveru nemusíme pro naše potřeby ani upravovat, v předvolené konfiguraci Postfix zvládá odesílání zpráv. Na MySQL serveru si vytvoříme nového uživatele (například lime) a novou databázi (například LS_DB) pro naši dotazníkouvou aplikaci

[root@vserver6:~]$ mysql -u root -p <heslo_spravce>
mysql> CREATE USER lime IDENTIFIED BY PASSWORD '<nejake_heslo>';
mysql> CREATE DATABASE IF NOT EXISTS LS_DB;

Takto vytvořený uživatel lime nemá na našem MySQL serveru žádná privilegia a má přístup jenom z localhostu. Omezení pro přístum nám vyhovuje, protože aplikace LimeSurvey bude do databáze přistupovat jenom lokálně a žádné jiné přístupy nejsou požadovány a proto nemusíme ani povolovat port pro MySQL server ve firewallu. Uživateli lime však musíme přidělit privilegia, ale jenom pro databázi, kterou bude obsluhovat, tj. LS_DB

mysql> GRANT ALL ON LS_DB.* TO 'lime'@'localhost' IDENTIFIED BY '<heslo_uzivatele_lime>';

Pro apache server vytvoříme kořenový adresář například v /home/apache kam nakonec naistalujeme aplikaci LimeSurvey

[root@vserver6:~]$ mkdir -p /home/apache

Vzhledem k tomu, že v našem případě se bude na dotazníkový server přistupovat jenom přes HTTPS, musíme si vygenerovat pár klíčů a certfikát pro server, k čemu použijeme utilitku openssl. V našem případě si vystačíme i se self-signed cetifikátem

[root@vserver6:~]$ openssl req -new -x509 -nodes -out cert.pem -keyout key.pem -days 365

Uvedený příkazem jsme si na základě žádosti (req) o vydání certifikátu vygenerovali certifikát podepsaný sám sebou (-out <soubor_s_certifikatem>) a soukromý klíč (-keyout <soubor_se_soukromym_klicem>) s platností jeden rok (-days 365) pro náš dotazníkový server. Při generování certifikátu budeme požádaní o zadání některých identifikačních údajů. Soubor s certifikátem a soukromým klíčem vhodně umístníme a upravíme vlastníka a přístupová práva

[root@vserver6:~]$ mkdir -p /etc/httpd/ssl
[root@vserver6:~]$ mv cert.pem key.pem /etc/httpd/ssl
[root@vserver6:~]$ chown root:apache /etc/httpd/ssl/*.pem
[root@vserver6:~]$ chmod 640 /etc/httpd/ssl/*.pem

Dále si upravíme konfiguraci apache web serveru následovně

[root@vserver6:~]$ vim /etc/httpd/conf/httpd.conf
...
DocumentRoot /home/apache
...
NameVirtualHost *:80
<VirtualHost *:80>
     ServerAdmin admin@domena.com
     DocumentRoot /home/apache/
     RedirectPermanent / https://moje.domena.com
     ServerName moje.domena.com
</VirtualHost>
...
NameVirtualHost *:443
<VirtualHost *:443>
     SSLEngine on
     SSLCertificateFile /etc/httpd/ssl/cert.pem
     SSLCertificateKeyFile /etc/httpd/ssl/key.pem
     DocumentRoot /home/apache/
      ServerName moje.domena.com
</VirtualHost>
...

Z bezpečnostních důvodů aktivujeme direktivu open_basedir, která nám omezí spouštění PHP skriptů jenom na daný adresář a její hodnotu nastavíme na kořenový adresář apache serveru (tj. instalačního adresáře aplikace LimeSurvey)

[root@vserver6:~]$ vim /etc/php.ini
...
open_basedir = /home/apache
...

Rovněž tak si pro PHP upravíme memory limit, který představuje maximální množství paměti, které si může skript alokovat (určíme z dokumentace LimeSurvey, předvolená hodnota je 16M)

[root@vserver6:~]$ vim /etc/php.ini
...
memory_limit = 32M
...

Instalace LimeSurvey

Instalace a základní konfigurace dotazníkového serveru LimeSurvey je poměrně jednoduchá. Nejdřív si stáhneme balíček ze stránek projektu (aktuální verze byla 1.87+, build 8518). Obsah získaného balíčku (po rozbalení se nachází ještě v adresáři limesurvey) umístníme do kořenového adresáře apache web serveru, tj. do /home/apache

[root@vserver6:~]$ tar xvfz limesurvey187plus-build8518-20100323.tar.gz
[root@vserver6:~]$ cp -r limesurvey/* /home/apache/

V našem případě můžeme kopírovat i bez kořenového adrešáře limesurvey, protože nám na serveru bude běžet jenom aplikace LimeSurvey. Teď si musíme upravit několik základních nastavní pro LimeSurvey

[root@vserver6:~]$ vim /home/apache/config.php
...
//typ databáze
$databasetype		=	'mysql';

//umístnění databázového serveru
$databaselocation	=	'localhost';

//název databáze
$databasename		=	'LS_DB';

//název uživatele a heslo pod kterým se budeme přihlašovat na databázový server
$databaseuser		=	'lime';
$databasepass		=	'<heslo_uzivatele_$databaseuser>';

//prefix pro názvy tabulek - můžeme nechat prázdný v případě, že používáme samostatnou databázi pro LimeSurvey
$dbprefix		=	'lime_';

//kořenový URL pro web LimeSurvey - určíme podle umístnění souborů aplikace na serveru
$rooturl		=	"https://{$_SERVER['HTTP_HOST']}";

//umístnění instalace LimeSurvey na serveru
$rootdir		=	dirname(__FILE__);

//název administrátorského účtu a heslo
//je potřeba zadat při instalaci tabulek do databáze (viz níže) a zároveň se
//vytvoří identický administrátorský účet v databázi
$defaultuser		=	'admin';
$defaultpass		=	'<heslo_pro_$defaultuser>';
...

Do webového prohlížeče zadáme URL https://moje.domena.com/admin/install a klikneme na tlačítko „Populate Database“, přičemž se pro autentizaci použijí údaje z konfiguračního souboru ($defaultuser a $defaultpass). Následně si aplikace vytvoří tabulky v databázi, kretou jsme definovali v konfiguračním souboru config.php. Administrátorský účet, který jsme zapisovali do konfiguačního souboru config.php, se používá jenom při instalaci tabulek a na vytvoření identického administrátorského účtu v databázi, který si můžeme kdykoliv změnit a pod kterým se budeme přihlašovat do administrátorského rozhraní aplikace LimeSurvey. Nakonec ještě musíme upravit práva pro adresáře tmp/, upload/ a templates/ v instalačním adresáři aplikace tak, aby do nich web server mohl i zapisovat (nebo můžeme upravit vlastnictví souborů, připadně ACL záznamy)

[root@vserver6:~]$ chown -R root:apache /home/apache/tmp /home/apache/upload /home/apache/templates
[root@vserver6:~]$ chmod -R 775 /home/apache/tmp /home/apache/upload /home/apache/templates

Nakonec zrestartujeme apache web server

[root@vserver6:~]$ service httpd restart

a ověříme dostupnost na URL https://moje.domena.com/. Administrátorské rozhraní se nachází na adrese https://moje.domena.com/admin. V této chvílí již máme připravený dotazníkový server k použití, stačí když se přes administrátorské rozhraní přihlásime na server a můžeme vytvářet dotanzíky a uživatele.

Aplikace disponuje množstvím voleb pro tvorbu dotazníků a jejich správu, obsahuje také několik vestavěných šablon a také mnohojazyčnou podporu včetně češtiny. Potřebujete-li zpracovat nějaký dotazník nebo uďelat půzkum prostřednictvím internetu je LimeSurvey určitě to pravou volbou. Samorejmostí je také tvorba různých výtupních materiálů, například grafů, tabulek a různych dalších statistik. Aplikace je vhodná jak pro osobní použití tak pro použití ve firemním prostředí.