GNU/Linux >> Znalost Linux >  >> Linux

Jak přesunout MediaWiki do linuxového kontejneru

Už dlouho jsem věděl, že chci kontejnerizovat některé své osobní linuxové služby. I když mám velké zkušenosti s kontejnerizací, nezdálo se mi, že bych se dostal k práci na svých vlastních aplikacích. Konečně jsem to udělal a jsem rád!

První článek této série představil služby, které jsem kontejnerizoval. Diskutovalo se také o některých úskalích. Zvažoval jsem možnosti zvedání a posunu, refaktorování a přepisování. Aplikacím jsem také dal hodnocení snadné/střední/obtížné. Poté jsem ve druhé části popsal své zkušenosti s kontejnerizací WordPress.

Zde se zabýváme MediaWiki, která bude podobná, protože je to také Apache, PHP FPM, služba založená na PHP.

Poznámka editora:Pro účely tohoto článku předpokládáme, že své kontejnery budete stavět na Red Hat Enterprise Linux 8 pomocí sestavení podman. Pokyny můžete použít v jiných distribucích nebo s jinými nástroji, mohou však být nutné určité úpravy.

Přesun MediaWiki

Sestavit

MediaWiki běží v obrazu kontejneru vytvořeném z přesně stejného souboru Containerfile. Všimněte si jedné maličkosti, která není zmíněna v sekci WordPress – instalujeme crontabs a Cronie . Na rozdíl od WordPressu, který má pokročilý nástroj pro zálohování, s MediaWiki musíme vypsat databázi MariaDB, abychom získali zálohy, takže potřebujeme cron .

FROM registry.access.redhat.com/ubi8/ubi-init
MAINTAINER fatherlinux <[email protected]>
RUN yum install -y mariadb-server mariadb php php-apcu php-intl php-mbstring php-xml php-json php-mysqlnd crontabs cronie iputils net-tools;yum clean all
RUN systemctl enable mariadb
RUN systemctl enable httpd
RUN systemctl disable systemd-update-utmp.service
ENTRYPOINT ["/sbin/init"]
CMD ["/sbin/init"]

Kromě použití cron , Mediawiki se nespoléhá na nic zvláštního v httpd-php obrázek kontejneru.

[ Čtenářům se také líbilo: Kontejnery bez kořenů využívající Podman ]

Spustit

Nyní se pojďme podívat na to, jak provozujeme MediaWiki trochu jinak než WordPress:

[Unit]
Description=Podman container - learn.fatherlinux.com

[Service]
Type=simple
ExecStart=/usr/bin/podman run -i --read-only --rm -p 8080:80 --name learn.fatherlinux.com \
-v /srv/learn.fatherlinux.com/code/mediawiki:/var/www/html/learn.fatherlinux.com:ro \
-v /srv/learn.fatherlinux.com/config/LocalSettings.php:/var/www/html/learn.fatherlinux.com/LocalSettings.php:ro \
-v /srv/learn.fatherlinux.com/config/learn.fatherlinux.com.conf:/etc/httpd/conf.d/learn.fatherlinux.com.conf:ro \
-v /srv/learn.fatherlinux.com/config/htpasswd:/etc/httpd/conf.d/htpasswd:ro \
-v /srv/learn.fatherlinux.com/config/root-crontab:/var/spool/cron/root:ro \
-v /srv/learn.fatherlinux.com/data/mariadb/:/var/lib/mysql:Z \
-v /srv/learn.fatherlinux.com/data/images/:/var/www/html/learn.fatherlinux.com/images:Z \
-v /srv/learn.fatherlinux.com/data/skins/:/var/www/html/learn.fatherlinux.com/skins:Z \
-v /srv/learn.fatherlinux.com/data/logs/httpd:/var/log/httpd:Z \
-v /srv/learn.fatherlinux.com/data/backups/:/root/.backups:Z \
--tmpfs /etc \
--tmpfs /var/log/ \
--tmpfs /var/tmp \
localhost/httpd-php
ExecStop=/usr/bin/podman stop -t 3 learn.fatherlinux.com
ExecStopPost=/usr/bin/podman rm -f learn.fatherlinux.com
Restart=always

[Install]
WantedBy=multi-user.target

Kontejner spouštíme pomocí –read-only a –rm , stejně jako WordPress, takže je pomíjivý. Všimněte si, že vážeme také připojovací kód/mediawiki pouze pro čtení. Mohli jsme vytvořit další vrstvený obraz a vložit kód MediaWiki do této vrstvy, ale rozhodli jsme se jej místo toho svázat a připojit. Mnoho aplikací PHP používá vzor jako WordPress, kde se očekává, že adresář s kódem bude zapisovatelný za běhu. Toto rozhodnutí o návrhu nám záměrně dává možnost učinit adresář s kódem pouze pro čtení nebo zapisovat v závislosti na webové aplikaci PHP, kterou vkládáme do kontejneru. To samé httpd-php image lze použít pro všechny z nich, čímž se sníží velikost našeho dodavatelského řetězce softwaru. Pokud aktualizujeme Glibc, OpenSSL, Apache, PHP FPM nebo PHP, abychom opravili bezpečnostní problémy, všechny naše aplikace PHP zdědí po restartu novou konfiguraci. V dokonalém světě bychom tento httpd-php neustále přestavovali obraz v systému CI/CD s dobrým testovacím svazkem pro neustálé aktualizace.

Konfigurační soubory, jako je WordPress, jsou za běhu připojeny do kontejneru pouze pro čtení. Opět se jedná o skvělý upgrade zabezpečení ze standardního serveru LAMP.

Do MediaWiki je připojeno více datových adresářů. Zde je důvod:

  • data/mariadb – To je jednoduché. Důvody jsou totožné s WordPress.
  • data/images – Ukládá obrázky, soubory PDF a další soubory nahrané do wiki.
  • data/vzhledy – Stejně jako WordPress byla i MediaWiki navržena před kontejnery. Nikdy nemohli znát potřeby budoucích technologií, jako jsou kontejnery. Na rozdíl od WordPressu přichází MediaWiki s předvyplněnými vzhledy v tomto adresáři, který se nachází v adresáři code/mediawiki/skins. Toto je kopie těchto dat v kombinaci s našimi vlastními vzhledy. Je to vázání připojené ke čtení/zápisu, takže pokud chceme, můžeme přidat nové vzhledy. V budoucnu to bude pravděpodobně vyřešeno překryvnou možností "-v skins:skins:o" pro Podman. To nám umožní „překrýt“ naše vlastní data nad stávající data kódu/mediawiki/vzhledů, která přicházejí s počátečním stažením kódu.
  • data/logy – Stejně jako WordPress chceme přístup k našim protokolům mimo kontejner.
  • data/zálohy – Na rozdíl od WordPressu musíme použít cron úkol vypsat databázi MariaDB podle plánu. Tyto zálohy jsou umístěny do tohoto adresáře a poté zkopírovány mimo web hostitelem kontejneru.

[ Bezplatný průvodce:Jak vysvětlit DevOps v jednoduché angličtině ] 

​Zabalit

Takže, to je druhá služba - MediaWiki! Možná trochu náročnější než WordPress, ale nic, co byste nezvládli. V tomto případě jsem přidal cronie konfigurace. Je také zřejmé, jak důležité je systemd nastavení jsou.

Nezapomeňte se podívat zpět na kontejnerování WordPress, pokud jste to ještě neudělali. Dále se budeme zabývat kontejnerizací Sledování požadavků.

Tato série je založena na „Hacker's Guide to Moveing ​​Linux Services into Containers“ na CrunchTools.com a je znovu publikována se svolením.


Linux
  1. Jak jsem zahodil svůj starý OS a skočil do Linuxu

  2. Jak přesunout Sledování požadavků do kontejneru Linux

  3. Jak spravovat registry kontejnerů Linux

  1. Jak přesunout WordPress do linuxového kontejneru

  2. Jak se přihlásit do kontejneru Lxc?

  3. Jak SSH do kontejneru Docker

  1. Jak přesunout soubor v Linuxu

  2. Jak mohu přesouvat soubory pomocí xargs v Linuxu?

  3. Jak přesunout oddíl v GNU/Linuxu?