Webapp-config
A webapp-config a Gentoo webalapú alkalmazások telepítője. Virtuális hosting-környezetekben használható webalkalmazások automatikus beállítására szolgál. Eredetileg bash szkriptként készült, ám jelenleg Python-alapú, és elérhető a Gentoo ebuild szoftvercsomag-tárolóban.
Fogalmak
A webapp-config célja, hogy biztosítsa a szoftvercsomagkezelési funkciókat, amelyekre a webszerver-rendszergazdáknak szükségük van több webhely futtatásakor ugyanazon IP-címen (virtuális hosting).
Kétlépcsős telepítés
Az olyan szoftvercsomag-kezelők, mint az RPM és a Portage, egyetlen példányban telepítik a szoftvercsomagot, és azt egy fix helyre helyezik. Ez ellentétben áll a virtuális hosting környezet igényeivel, ahol a rendszergazdáknak lehetőségük kell legyen arra, hogy egy szoftvercsomagot több helyre is telepítsenek annak érdekében, hogy az több webhely része lehessen. Ugyanakkor a szoftvercsomag-kezelők létfontosságúak az operációs rendszer hosszútávú fenntartásához. Hogyan lehet tehát ötvözni a kettő megközelítés előnyeit?
A megoldás a kétlépcsős telepítés. A hagyományos szoftvercsomag-kezelő egy fő példányt telepít a /usr/share/webapps/ könyvtárba. Ez a fő példány önmagában nem futtatható, de készen áll arra, hogy a webapp-config segédprogram segítségével egyetlen szoftvercsomagot többször, több helyre telepítsenek.
Ugyanazon szoftvercsomag többszöri telepítése
A webapp-config lehetővé teszi a rendszergazdák számára, hogy ugyanazon szoftvercsomagot többször lehessen telepíteni ugyanarra az operációs rendszerre egy időben. A rendszergazda határozza meg, hogy mely könyvtárakba telepítse az egyes példányokat.
A webalkalmazások világában ezeket a többszörös telepítéseket "virtuális másolatoknak" nevezik.
Ugyanazon szoftvercsomag különböző verziói egyszerre telepíthetők ugyanarra az operációs rendszerre. Ez lehetővé teszi a webes rendszergazdák számára, hogy fokozatosan vezessenek be egy új verziót a webhelyeken, anélkül, hogy az összes webhelyet egyszerre kellene frissíteniük.
A webapp-config a duplikált fájlok számát az abszolút minimumra csökkenti, így alacsonyan tartja az adathordozó-felhasználást. A fájlok többsége "hard linkelve" kapcsolódik a fő példányhoz, ezáltal kizárólag a beállításfájlokat és azokat a fájlokat másolja a virtuális másolatba, amelyeket a szoftvercsomagnak írnia kell.
Fájltulajdon és jogosultságok
Azok a rendszergazdák, akik kézzel telepítenek webalapú alkalmazásokat, tudják, hogy problémás lehet minden fájlt a megfelelő felhasználó tulajdonába helyezni és a megfelelő jogosultságokkal felruházni. Néhány fájlt annak a felhasználónak kell birtokolnia, amely alatt a webszerver fut. Más fájlokat bizonyos shell-fiókoknak kell birtokolniuk annak érdekében, hogy az adott felhasználók bejelentkezhessenek és szerkeszthessék a beállításfájlokat. Ha a Linux-disztribúció többféle webszerver választási lehetőséget kínál – amelyek mindegyike különböző felhasználó alatt fut –, akkor még a telepítők is nehézségekbe ütközhetnek a megfelelő beállítások elérésében.
A webapp-config segítségével a rendszergazda megadja a telepítőnek, hogy melyik webszervert használja, és melyik shell-fióknak kell tudnia szerkeszteni a beállításfájlokat. Ezután a webapp-config a fájlokat a megfelelő tulajdonosi és jogosultsági beállításokkal telepíti.
Védett beállításfájlok
A webapp-config automatikusan biztosítja, hogy a beállításfájlok soha ne legyenek felülírva egy frissítés során – még akkor sem, ha a fájlokat az eredeti telepítés óta nem módosították. Ezenkívül a webapp-config soha nem írja felül azokat a fájlokat, amelyeket nem ő telepített, vagy amelyeket a telepítés óta módosítottak. A webapp-config MD5 ellenőrzőösszegeket használ annak megállapítására, hogy egy fájl módosult-e vagy sem. Szimbolikus hivatkozások esetén a webapp-config nem cseréli le azokat a symlinkeket, amelyek más fájlra mutatnak.
Amikor egy frissítés megpróbál felülírni egy védett fájlt, akkor a webapp-config létrehoz egy ._cfg fájlt, amely az új fájlt tartalmazza. A telepítés befejezéséhez használható az etc-update, hasonlóan egy normál emerge folyamathoz.
Fájlmásolási lehetőségek
A virtuális másolat nagyrészt "hard linkek" létrehozásával épül fel a /usr/share/webapps könyvtárban található fájlokra. Ha egy hard link nem hozható létre, akkor a fájl a /usr/share/webapps könyvtárból másolódik át.
A hard linkek kizárólag ugyanazon fájlrendszeren belül hozhatók létre. Ha a /usr/share/webapps és a /var/www külön fájlrendszereken található, akkor a webapp-config nem tud hard linkeket használni, és kénytelen lesz a fájlokat másolni.
Háromféle módon lehet megkerülni a "hard linkek" problémáját.
A legegyszerűbb mód az, ha a /usr/share/webapps egy szimbolikus hivatkozásként (symlink-ként) egy /var/www alatti könyvtárra mutat. A legtöbb rendszergazda számára ez biztosítja, hogy minden ugyanazon a fájlrendszeren legyen rajta.
Ha a hosztolt webhelyek külön fájlrendszereken vannak eltárolva, akkor a webapp-config soha nem lesz képes hard hivatkozások létrehozására.
Alternatívaként a --soft
parancssori opció használható. Ez arra utasítja a webapp-config szoftvert, hogy hard hivatkozások helyett szimbolikus hivatkozásokat (symbolic links) hozzon létre. A szimbolikus hivatkozások fájlrendszerek között is működnek.
A szimbolikus hivatkozások használatának problémája az, hogy az egyes szoftvercsomagok nem működnek megfelelően, amennyiben a virtuális másolat szimbolikus hivatkozásokból készül. Sok felhasználó és rendszergazda panaszkodott arra is, hogy a szimbolikus hivatkozásokkal teli könyvtárak zavaróak számukra. Ezek miatt a szimbolikus hivatkozások már nem szerepelnek alapértelmezett beállításként a webapp-config szoftverben.
A --copy
parancssori opció is választható. Ez a kapcsoló arra utasítja a webapp-config szoftvert, hogy közvetlenül másolja a fájlokat a /usr/share/webapps/ könyvtárból, ahelyett, hogy hard hivatkozásokat használna. A közvetlen másolás fájlrendszerek között is működik, bár értelemszerűen az a hátránya, hogy több tárhelyet igényel az adathordozón. Ez a módszer előnyös lehet a szimbolikus hivatkozásokkal szemben, annak érdekében, hogy a virtuális tárhely fájljai külön legyenek választva, amelyeket aztán a rendszergazdák szabadon módosíthatnak. Így a /usr/share/webapps/ könyvtárban lévő fájlokat is szabadon módosíthatják majd.
Virtuális fájlvarázslat
Alapértelmezés szerint a fő példány tartalmazza azt a metaadatot, amely meghatározza, hogy melyik fájlok kerülnek áthivatkozásra egy virtuális másolatba, és melyik fájlok nem kerülnek áthivatkozásra. A fájlok vagy a webszerver tulajdonában vannak (server-owned), beállításfájlok (config-owned), vagy áthivatkozott fájlok (virtual). A könyvtárak lehetnek szerver tulajdonban vagy beállítás tulajdonban, de legtöbbször egyszerű könyvtárként kell létezniük (default-owned), amelyeket a telepítési könyvtárban hoznak létre (a -d
opcióval beállítható). A webapp-config számos kapcsolót biztosít, amelyek lehetővé teszik a fő példány metaadatainak felülbírálását, amennyiben erre szükség lenne.
A --default-dirs
és --virtual-files
kapcsolók lehetővé teszik a rendszergazda számára, hogy meghatározza, mit tegyen a webapp-config, amikor egy könyvtár vagy fájl alapértelmezettként vagy virtuálisként van megjelölve. A webapp-config beállítható úgy, hogy a könyvtárat vagy fájlt bármely másik opcióvá – szerver-tulajdonúvá vagy beállítás-tulajdonúvá – alakítsa át.
${ROOT}
A webapp-config célja, hogy teljes mértékben támogassa a ${ROOT}
változót. Azoknak a rendszergazdáknak, akik nem biztosak abban, hogy ez mit jelent, ajánlott elolvasni az emerge súgóoldalát (man emerge).
Funkciók
A vhost
USE jelölőzászló használatával a webapp-config képes kezelni a következő alkalmazásokat:
Alkalmazás | Szoftvercsomag | Honlap | Leírás |
---|---|---|---|
ampache | www-apps/ampache | http://www.ampache.org/ | Az Ampache egy PHP-alapú szoftver, amely lehetővé teszi a hangfájlok kezelését, frissítését és lejátszását egy webes felületen keresztül. |
b2evolution | www-apps/b2evolution | http://www.b2evolution.net | Többnyelvű, többfelhasználós, több blogot kezelő motor. |
Bugzilla | www-apps/bugzilla | http://www.bugzilla.org | A Bugzilla a Mozilla projekt hibakövető rendszere. |
cgit | www-apps/cgit | http://git.zx2c4.com/cgit/about | A fast web-interface for git repositories. |
coppermine | www-apps/coppermine | http://coppermine.sourceforge.net/ | Webalapú képgaléria, amely PHP nyelven készült és MySQL adatbázist használ háttérként. |
cvsweb | www-apps/cvsweb | http://www.freebsd.org/projects/cvsweb.html | WWW felület egy CVS fában való böngészéshez. |
dokuwiki | www-apps/dokuwiki | http://wiki.splitbrain.org/wiki:dokuwiki | A DokuWiki egy könnyen használható Wiki, amelyet kisvállalatok dokumentációs igényeire terveztek. |
dragonflycms | www-apps/dragonflycms | http://dragonflycms.org | Egy funkciókban gazdag, nyílt forráskódú tartalomkezelő rendszer, amely a PHP-Nuke 6.5 alapjaira épül. |
Drupal | www-apps/drupal | http://drupal.org/ | PHP-alapú, nyílt forráskódú platform és tartalomkezelő rendszer. |
egroupware | www-apps/egroupware | http://www.egroupware.org/ | Webalapú csoportmunka szoftvercsomag. |
eyeos | www-apps/eyeos | http://www.eyeos.org | AJAX-alapú, webes asztali környezet. |
groupoffice | www-apps/groupoffice | http://group-office.sourceforge.net/ | A Group-Office egy erőteljes, moduláris intranet alkalmazáskeret. |
Joomla | www-apps/joomla | http://www.joomla.org/ | A Joomla egy erőteljes, nyílt forráskódú tartalomkezelő rendszer. |
mantisbt | www-apps/mantisbt | http://www.mantisbt.org/ | PHP/MySQL/Web-alapú hibakövető rendszer. |
MediaWiki | www-apps/mediawiki | http://www.mediawiki.org | A MediaWiki egy wiki webalkalmazás, amelyet például a wikipedia.org is használ. |
mirmon | www-apps/mirmon | http://people.cs.uu.nl/henkp/mirmon/ | Egyszerű webalkalmazás a tükörszerverek állapotának figyelésére. |
Moodle | www-apps/moodle | http://moodle.org | A Moodle egy kurzuskezelő rendszer. |
mythweb | www-apps/mythweb | http://www.mythtv.org | PHP-szkriptek, amelyek lehetővé teszik a MythTV kezelését egy webböngészőből. |
Nextcloud | www-apps/nextcloud | https://nextcloud.com/ | Webalapú személyes felhő, amely a saját szerveren fut. |
otrs | www-apps/otrs | http://otrs.org/ | Az OTRS egy nyílt forráskódú jegykezelő rendszer. |
Owncloud | www-apps/owncloud | http://owncloud.org | Webalapú tárhelyalkalmazás, ahol az összes adat teljes mértékben az Ön ellenőrzése alatt áll. |
phpBB | www-apps/phpBB | http://www.phpbb.com/ | A phpBB egy nyílt forráskódú üzenőfal szoftvercsomag. |
phpmp | www-apps/phpmp | http://www.musicpd.org/ | A phpMp egy kliensprogram a Music Player Daemon (mpd) számára. |
phpsysinfo | www-apps/phpsysinfo | http://rk4an.github.com/phpsysinfo/ | A phpSysInfo egy hasznos szoftvercsomag, amely PHP segítségével megjeleníti az operációs rendszer statisztikáit. |
postfixadmin | www-apps/postfixadmin | http://postfixadmin.sourceforge.net | Webalapú kezelőeszköz Postfix-stílusú virtuális domének és felhasználók kezelésére. |
rutorrent | www-apps/rutorrent | https://github.com/Novik/ruTorrent | A ruTorrent egy felhasználói felület a népszerű Bittorrent kliens, az rTorrent számára. |
trac | www-apps/trac | http://trac.edgewall.com/ | A Trac egy minimalista, webalapú projektmenedzsment, wiki és hibakövető rendszer. |
tt-rss | www-apps/tt-rss | http://tt-rss.org/ | A Tiny Tiny RSS egy webalapú hírcsatorna-gyűjtő (RSS/Atom), amely AJAX technológiát használ. |
venus | www-apps/venus | http://intertwingly.net/code/venus/ | Egy hírcsatorna-gyűjtő alkalmazás. |
viewvc | www-apps/viewvc | http://viewvc.org/ | A ViewVC egy webes felület a CVS és Subversion verziókezelő rendszerekhez. |
wiliki | www-apps/wiliki | http://practical-scheme.net/wiliki/ | A WiLiKi egy könnyűsúlyú wiki motor, amelyet Gauche Scheme nyelven írtak és azon fut. |
WordPress | www-apps/wordpress | http://wordpress.org/ | A WordPress egy PHP és MySQL alapú tartalomkezelő rendszer (CMS), amelyet széles körben használnak weboldalak és blogok létrehozására és kezelésére. |
Telepítés
USE jelölőzászlók
USE flags for app-admin/webapp-config Gentoo's installer for web-based applications
+portage
|
Propagate python_targets dependencies to sys-apps/portage |
Emerge
Telepítse a webapp-config szoftvercsomagot:
root #
emerge --ask app-admin/webapp-config
Beállítás
Webszerver beállítása
A webapp-config szoftvercsomagnak tudnia kell, hogy melyik webszervert használja a telepített alkalmazások üzemeltetéséhez. Népszerű választások közé tartozik:
Ha a webszerver még nem lett beállítva a webapp-config folyamat ezen lépése előtt, akkor tegye meg mielőtt továbblépne ebben a cikkben. Látogassa meg a fent hivatkozott linkeket a webszerver telepítéséhez és beállításához. Miután a webszerver be lett állítva, térjen vissza ehhez a cikkhez.
Szerkessze a következő sort a /etc/vhosts/webapp-config fájlban a webszerver beállításának az érdekében. Ez a példa a helyes módosítás lenne, amennyiben a lighttpd (www-servers/lighttpd) lenne a választott webszerver:
/etc/vhosts/webapp-config
A webapp-config webszerver preferenciájának beállításavhost_server="lighttpd"
Használat
Műveletek
- -I, --install
- Telepítse a telepítési módot.
- -U, --upgrade
- Aktiválja a frissítési módot.
- -C, --clean
- Aktiválja az eltávolítási módot.
Példák
A következő példákban az Owncloud lesz használva webalkalmazásként. Az Owncloud helyettesíthető bármelyik, a fenti táblázatban felsorolt alkalmazással.
Cserélje le a
<verzió>
jelölést a webalkalmazás verziójára, amelyen műveletet kíván végrehajtani.Webalkalmazás telepítéséhez:
root #
webapp-config -I owncloud <verzió>
A telepített webalkalmazások listázásához:
root #
webapp-config --list-installs
A telepített webalkalmazások megjelenítéséhez:
root #
webapp-config --show-installed
Egy korábban telepített webalkalmazás frissítéséhez:
root #
webapp-config -U owncloud <verzió>
Egy telepített webalkalmazás eltávolításához:
root #
webapp-config -C owncloud <verzió>
Hibaelhárítás
Szellemtelepítések
A bejegyzések továbbra is léteznek a webapp-config --list-installs parancs futtatásakor, még akkor is, ha a fájlok törölve lettek a /var/www/ könyvtárból.
A probléma valószínűleg egy nem megfelelően végrehajtott webalkalmazás törléséből ered. Ha a fájlok manuálisan törlésre kerülnek a /var/www/ könyvtárban, akkor a webapp-config program zavart állapotba kerülhet. Az eltávolításokat a következő parancs futtatásával kell kezelni: webapp-config -C <alkalmazás_neve> <alkalmazás_verziója>.
A webapp-config eltávolításához:
root #
emerge --depclean --verbose app-admin/webapp-config
Miután eltávolította, törölje az esetlegesen megmaradt telepítési fájlokat a /var/db/webapps/ könyvtárban.
root #
rm -rf /var/db/webapps/
Telepítse újra a webapp-config szoftvercsomagot, majd futtassa a --list-installs
parancsot. Minden "szellemtelepítésnek" el kell tűnnie.