GNU/Linux >> Belajar Linux >  >> Linux

Cara memindahkan MediaWiki ke dalam wadah Linux

Saya tahu bahwa saya ingin menyimpan beberapa layanan Linux pribadi saya untuk waktu yang lama. Meskipun saya memiliki banyak pengalaman containerisasi, sepertinya saya tidak pernah bisa mengerjakan aplikasi saya sendiri. Saya akhirnya melakukannya, dan saya senang!

Artikel pertama dalam seri ini memperkenalkan layanan yang saya kemas. Itu juga membahas beberapa jebakan. Saya mempertimbangkan opsi angkat-dan-geser, pemfaktoran ulang, dan penulisan ulang. Saya juga memberi aplikasi peringkat mudah/sedang/sulit. Saya kemudian mencakup bagian kedua pengalaman saya dengan WordPress containerizing.

Di sini, kami menangani MediaWiki, yang serupa karena juga merupakan layanan berbasis Apache, PHP FPM, PHP.

Catatan Editor:Untuk tujuan artikel ini, kami berasumsi Anda akan membuat container di Red Hat Enterprise Linux 8 menggunakan podman build. Anda mungkin dapat menggunakan petunjuk pada distribusi lain atau dengan rantai alat lain, namun, beberapa modifikasi mungkin diperlukan.

Memindahkan MediaWiki

Bangun

MediaWiki berjalan dalam image container yang dibuat dari Containerfile yang sama persis. Perhatikan satu hal kecil yang tidak disebutkan di bagian WordPress—kami memasang crontabs dan Cronie . Tidak seperti WordPress, yang memiliki utilitas pencadangan tingkat lanjut, dengan MediaWiki, kita harus membuang database MariaDB untuk mendapatkan cadangan, jadi kita memerlukan 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"]

Selain penggunaan cron , Mediawiki tidak bergantung pada sesuatu yang khusus dalam httpd-php gambar kontainer.

[ Pembaca juga menyukai: Wadah tanpa root menggunakan Podman ]

Jalankan

Sekarang, mari kita lihat bagaimana kami menjalankan MediaWiki yang sedikit berbeda dari 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

Kami menjalankan wadah dengan –read-only dan –rm , sama seperti WordPress, menjadikannya fana. Perhatikan bahwa kami juga mengikat kode mount/mediawiki read-only. Kami dapat membuat gambar berlapis lain dan menyematkan kode MediaWiki ke dalam lapisan itu, tetapi kami memutuskan untuk mengikat mount sebagai gantinya. Banyak aplikasi PHP menggunakan pola seperti WordPress, di mana direktori kode diharapkan dapat ditulis saat runtime. Keputusan desain ini dengan sengaja memberi kita pilihan untuk membuat direktori kode hanya-baca atau dapat ditulis tergantung pada aplikasi web PHP yang kita masukkan ke dalam wadah. httpd-php . yang sama image dapat digunakan untuk semuanya, sehingga mengurangi ukuran rantai pasokan perangkat lunak kami. Jika kami memperbarui Glibc, OpenSSL, Apache, PHP FPM, atau PHP untuk memperbaiki masalah keamanan, semua aplikasi PHP kami mewarisi konfigurasi baru saat dimulai ulang. Di dunia yang sempurna, kami akan terus membangun kembali httpd-php . ini image dalam sistem CI/CD dengan test harness yang baik untuk pembaruan berkelanjutan.

File konfigurasi, seperti WordPress, di-bind-mount ke container read-only saat runtime. Sekali lagi, ini adalah peningkatan keamanan yang hebat dari server LAMP standar.

Ada lebih banyak direktori data yang di-bind-mount ke MediaWiki. Inilah alasannya:

  • data/mariadb – Ini sangat mudah. Alasannya identik dengan WordPress.
  • data/gambar – Menyimpan gambar, PDF, dan file lain yang diunggah ke wiki.
  • data/skin – Seperti WordPress, MediaWiki dirancang sebelum container. Mereka tidak akan pernah tahu kebutuhan teknologi masa depan seperti kontainer. Tidak seperti WordPress, MediaWiki hadir dengan skin yang sudah terisi sebelumnya di direktori ini, yang ada di direktori code/mediawiki/skins. Ini adalah salinan dari data yang digabungkan dengan skin kustom kami. Ini mengikat baca/tulis yang terpasang sehingga kita dapat menambahkan kulit baru jika kita mau. Di masa mendatang, ini kemungkinan akan diselesaikan dengan opsi overlay "-v skins:skins:o" ke Podman. Ini akan memungkinkan kami untuk "melapisi" data khusus kami di atas data kode/mediawiki/skins yang ada yang disertakan dengan unduhan kode awal.
  • data/log – Seperti WordPress, kami menginginkan akses ke log kami di luar wadah.
  • data/cadangan – Tidak seperti WordPress, kita harus menggunakan cron pekerjaan untuk membuang database MariaDB sesuai jadwal. Cadangan tersebut disimpan di direktori ini, lalu disalin di luar situs oleh host penampung.

[ Panduan Gratis:Cara menjelaskan DevOps dalam bahasa Inggris yang sederhana ] 

​Selesaikan

Jadi, itulah layanan kedua - MediaWiki! Mungkin sedikit lebih menantang daripada WordPress, tetapi tidak ada yang tidak bisa Anda tangani. Dalam hal ini, saya menambahkan cronie konfigurasi. Terlihat juga betapa pentingnya systemd pengaturannya adalah.

Jangan lupa untuk melihat kembali penampungan WordPress jika Anda belum melakukannya. Selanjutnya, kita akan membahas penampung Pelacak Permintaan.

Seri ini didasarkan pada "Panduan Peretas untuk Memindahkan Layanan Linux ke Wadah" di CrunchTools.com dan diterbitkan ulang dengan izin.


Linux
  1. Bagaimana saya membuang OS lama saya dan beralih ke Linux

  2. Cara memindahkan Pelacak Permintaan ke dalam wadah Linux

  3. Bagaimana Cara Masuk Ke Wadah Lxc?

  1. Cara memindahkan WordPress ke wadah Linux

  2. Bagaimana mengelola pendaftar penampung Linux

  3. Bagaimana saya bisa memindahkan file dengan xargs di Linux?

  1. Cara memindahkan file di Linux

  2. Cara SSH Ke Wadah Docker

  3. Bagaimana cara memindahkan partisi di GNU/Linux?