Adott volt egy Windows 2003 Standard-on futó Infoglue CMS (Java alapú tartalomkezelő rendszer), amit szerettünk volna migrálni Linux-ra, így tehermentesítve a más feladatokra is szolgáló Windows-t. A választás az Ubuntu Server 8.04.1-re esett, többek között a hosszú támogatás és a csomagból való könnyű frissíthetőség miatt. Az Ubuntu-t LAMP szerverrel telepítettük, így az Apache, PHP és MySQL már alapból fent volt. Amire még szükségünk volt, az a sun-java6-jdk csomag, a Tomcat5.5, illetve a tomcat5.5-admin. A Windows-on Infoglue 2.3.5-ös futott, gondoltuk akkor egyúttal frissítünk is 2.8.1-re.
Első lépésként létrehoztuk az infoglue adatbázist mysql alatt:
mysql -u root -p
create database infoglue;
Majd beletöltöttük az előzőleg Windows-on kidump-olt éles adatbázist:
mysql -u root -p infoglue < infogluedump.sql
Ezután kéne lefuttatni az infoglue telepítőjét, gondosan ügyelve arra, hogy ne hozza létre újra táblákat és ne töltse be a minta weboldalakat.
Letöltöttük a legfrissebb infoglue-t innen, kitömörítettük, majd elindítottuk a parancssoros telepítőt:
unzip InfoglueInstaller2.8.1Final.zip
chmod 777 -R InfoglueInstaller
cd InfoglueInstaller
sudo ./installcmd.sh
Az adatbázis csatlakozáshoz használt felhasználónév és jelszó célszerű, hogy ugyan az legyen, mint ami korábban volt, esetünkben az infoglue alapértelmezettje (INFOGLUE_CMS/INFOGLUEPASS).
A gondok akkor kezdődtek, amikor a telepítő a JDBC kapcsolat létrehozása után exception-nel elszállt a következő üzenettel:
***********************
* The connect phaze starts *
***********************
Loading JDBC driver com.mysql.jdbc.Driver
Connecting to database on jdbc:mysql://localhost:3306/infoglue
Connected…
conn:com.mysql.jdbc.Connection@910040
An exception occurred:Base table or view not found message from server: “Table ‘infoglue.cmContent’ doesn’t exist”
A problémát az okozta, hogy a Windows-os és a Linux-os MySQL (bár mindkettő 5.0.x) eltérő alapértelmezett karakterkészletet és collation-t használ, így az áthozott adatbázisban a táblanevek végig kis betűvel szerepeltek (pl. infoglue.cmcontent) míg az Ubuntu-ban található MySQL pedig case sensitive, így a telepítő által keresett cmContent tábla nem található. Ahhoz, hogy ez ne így legyen, szerkesszük a /etc/mysql/my.conf -ot és adjuk hozzá az alábbi változót:
lower_case_table_names=1
Ha továbbjutottuk és a telepítő sikeresen felmásolta a war-okat a /var/lib/tomcat5.5/webapps-ba, elindíthatjuk a Tomcat-et. Itt jött az újabb kihívás, valamiért nem fordul le a hiper-szuper javás CMS-ünk, a catalina log-ban azt láthatjuk, hogy exceptionnel elszáll ez is.
A problémát az okozza, hogy az Ubuntu/Debian féle Tomcat-ben alapból be van billentve a security kapcsoló. Az Infoglue pedig ezt nem tolerálja. Kapcsoljuk ki. Szerkesszük át a /etc/init.d/tomcat5.5 initscript-et az alábbiak szerint, majd indítsuk újra a Tomcat-et:
# Use the Java security manager? (yes/no)
TOMCAT5_SECURITY=no
Csodák-csodájára, működni kezdett az alkalmazásunk!
Ha távolról ránézünk a gépre, megkapjuk a bejelentkező felületet: http://192.168.0.17:8080/infoglueCMS
És be is léphetünk a telepítéskor megadott felhasználóval és jelszóval, majd létrehozhatunk új felhasználókat. Ez erősen ajánlott, mert a 2.8.1-es Infoglue minden bejelentkezéskor figyelmeztet, hogy az administrator-t ne használjuk, csak ha szükséges.
Ezek után már csak az Apache-ot kell megfelelően beállítani, hogy a kéréseket a Tomcat-nek továbbítsa. Az ehhez szükséges mod_jk modult az apt felteszi a Tomcat5.5-el együtt. Tegyünk a mods-available könyvtárban található jk.*-okra symlinket a mods-enabled-be. Hozzuk létre a workers.properties fájlt a jk.conf-ban megadott útvonalon és szerkesszük eszerint:
workers.tomcat_home=/var/lib/tomcat5.5
workers.java_home=/usr/lib/jvm/java-sun-6
ps=/
# list the workers by name
worker.list=Infoglue
# ————————-
# Infoglue
# ————————-
worker.Infoglue.port=8009
worker.Infoglue.host=localhost
worker.Infoglue.type=ajp13
worker.Infoglue.lbfactor=1
worker.Infoglue.socket_keepalive=1
Hozzuk létre a weboldalunknak egy (vagy több) virtualhost-ot majd irányítsuk át a Tomcat felé:
ServerName www.weboldalunk.hu
DocumentRoot “/var/www/weboldalunk”
AllowEncodedSlashes On
JkMount /infoglueCMS Infoglue
JkMount /infoglueCMS/* Infoglue
JkMount /infoglueDeliverWorking Infoglue
JkMount /infoglueDeliverWorking/* Infoglue
JkMount /infoglueDeliverPreview Infoglue
JkMount /infoglueDeliverPreview/* Infoglue
JkMount /infoglueDeliverLive Infoglue
JkMount /infoglueDeliverLive/* Infoglue
JkMount /* Infoglue
ErrorLog “| /usr/sbin/rotatelogs /var/log/apache2/weboldalunk.hu.error.log.%Y.%m.%d 5M”
CustomLog “| /usr/sbin/rotatelogs /var/log/apache2/weboldalunk.hu.access.log.%Y.%m.%d 5M” common
Ahhoz, hogy az infoglue tudja, hogy melyik domain-re melyik weboldalt adja vissza, természetesen a CMS admin felületén is be kell állítanunk a repository-khoz a megfelelő DNS neveket.
Management Tool -> Repositories -> Dns Name
Az Infoglue-ról a tapasztalataim elég vegyesek. Úgy gondolom, hogy CMS rendszert és weboldalakat üzemeltetni Java alapokon kicsit olyan, mint ágyúval verébre lőni. Nagyon erőforrásigényes. Bár miután elindul és mindent lefordított (több perc), már gyorsan válaszol. Sajnos a rendszer korábbi verziói sok hibát tartalmaztak, így könnyedén szétroncsolhattuk adatbázisunkat. Nekünk pl. sikerült 2.1.8-al az éles rendszert odáig amortizálni (szimpla szerkesztő felületről történő használattal), hogy nem látja a structure tool, a content tool-ban létrehozott node-okat. Ezt azóta sem sikerült kijavítani, mivel az éles rendszert hoztuk át 2.8.1-be (nem volt kedvem újraépíteni a weboldalakat emiatt), így most is ilyen. Minden egyes változáskor bele kell nyúlni a node-properties-be és kézzel megadni azt a content id-t amit használni akarok, mert a listában nem jelenik meg. Hasonlóan szép menet volt kideríteni, hogy lehet új válaszható nyelvet (pl. magyar) hozzáadni a rendszerhez, mert alapból csak angol, német és svéd van felvéve.
Bár az Infoglue open-source, messze nem használják annyian, mint más, PHP alapú CMS rendszereket, így sajnos leírásokat és supportot találni sem olyan egyszerű hozzá (egy csekély forgalmú levlistája van). A fentiek többségét is nekünk kellett kisakkozni. Biztos vagyok benne, hogy egy Drupal-al jobban jártunk volna.