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.
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í.