GNU/Linux >> Belajar Linux >  >> Panels >> Docker

7 Tips Berguna untuk Menghosting Sendiri Instance Hantu Dengan Docker

Ghost adalah platform CMS open source yang ringan, cepat, dan berfokus pada pembuatan situs web keanggotaan.

Anda selalu dapat memilih hosting terkelola dari Ghost itu sendiri. Tetapi karena ini adalah perangkat lunak open source, Anda juga bebas untuk meng-host-nya di server Anda sendiri dan mengelolanya sendiri.

Berkat layanan cloud seperti Linode dan DigitalOcean, penggelaran server Linux baru dengan Ghost diinstal menjadi masalah beberapa klik.

Linode | Awan Terbuka Independen untuk PengembangMisi kami adalah mempercepat inovasi dengan membuat komputasi awan menjadi sederhana, terjangkau, dan dapat diakses oleh semua orang. Linode

Meskipun menerapkan Ghost di server cloud adalah tugas yang relatif lebih mudah, mengelola Ghost mungkin tidak selalu semudah itu.

Kami telah mengelola instance Ghost kami untuk meng-host Buku Pegangan Linux selama beberapa bulan sekarang. Dan pengalaman ini telah mengajari kami beberapa hal yang mungkin tidak akan Anda temukan dalam dokumentasi resmi Ghost.

Pada artikel ini, saya akan berbicara tentang beberapa faktor penting yang perlu dipertimbangkan sebelum menggunakan blog bertenaga Ghost Anda di server produksi.

Perlu diingat bahwa artikel ini mengenai image Docker dari Ghost, dibuat dan dikelola oleh komunitas pengembang.

Di Komunitas DevOps, apa yang selalu kami perjuangkan, adalah sedekat mungkin dengan keadaan yang disebut NoOps. Namun dalam arti praktis, itu akan selalu menjadi paradoks.

Di sini kami mencoba untuk mencapai tujuan yang sama seperti NoOps tetapi dengan pandangan hibrida dengan campur tangan manusia bila diperlukan.

Jadi tanpa penundaan lebih lanjut, izinkan saya meminta dan menjelaskan hal-hal penting untuk memastikan instance Ghost pemeliharaan yang stabil dan minimum.

1. Atur konfigurasi email Anda dengan benar

Anda akan mengikuti jenis email ke anggota dan pelanggan Anda melalui instance Ghost Anda:

  • Email transaksional:untuk login anggota, konfirmasi pendaftaran, dll.
  • Email massal:untuk mengirim buletin email melalui Ghost

Jika Anda tidak ingin mengirimkan buletin melalui Ghost, Anda dapat menggunakan layanan SMTP apa pun. Jika tidak, Anda harus menggunakan Mailgun.

Setelan SMTP untuk email transaksional

Secara teori, instance Ghost Anda seharusnya dapat menggunakan layanan direct mail berkat Nodemailer.

Namun, ini dapat menyebabkan beberapa pendaftaran gagal dengan pesan kesalahan "Silakan Masukkan Alamat Email yang Valid".

Inilah mengapa Anda harus mengatur pengaturan SMTP dengan Mailgun atau Amazon SES. Anda juga dapat mencoba layanan relai Email lainnya seperti SendGrid atau Mailchimp.

Pengaturan SMTP tipikal, yang dikonfigurasi melalui Mailgun terlihat sebagai berikut (diatur melalui file yang dipasang di bind config.production.json ):

  "mail": {
    "transport": "SMTP",
    "options": {
        "service": "Mailgun",
        "host": "smtp.eu.mailgun.org",
        "port": 465,
        "secureConnection": true,
        "auth": {
            "user": "replace-me-with-a-mailgun-configured-email-address",
            "pass": "replace-me-with-the-relevant-mailgun-apikey"
        }
    }
  },

Awasi nomor port SMTP . Beberapa kali email gagal karena nomor port. Dalam kasus kami, beberapa email gagal dengan port 587 dan mulai bekerja dengan port 465.

Silakan periksa dokumentasi ini dari Mailgun di sini untuk informasi lengkap tentang memverifikasi domain Anda dan memperbarui catatan DNS yang diperlukan yang juga diperlukan untuk mengirim email.

Secara umum, Anda harus memperbarui data MX, CNAME, dan TXT yang diperoleh dari Mailgun di dalam pengaturan data DNS di panel nama domain Anda. Di Linode, mereka terlihat seperti:

Email massal untuk mengirim buletin

Untuk mengirim buletin secara massal ke anggota Anda, Mailgun adalah satu-satunya layanan yang tersedia untuk mengimplementasikannya dalam konfigurasi Ghost Anda. Layanan email massal sangat berbeda dari layanan SMTP konvensional.

Untuk mengonfigurasi email massal di Ghost dengan benar untuk anggota Anda, pertama-tama Anda harus memastikan bahwa keanggotaan diaktifkan. Itu adalah persyaratan yang jelas.

Sekarang gulir ke bawah ke bagian email dan luaskan "Pengaturan buletin email".

Masukkan nama domain dan kunci API yang dikonfigurasi Mailgun. Wilayah Mailgun akan berupa "EU" atau "AS". Silakan pilih yang sesuai.

Jika Anda mengingat dari atas dalam contoh pengaturan SMTP, nama wilayah, "EU" dapat dianggap dengan nama host, yaitu smtp.eu.mailgun.org .

Baca di sini untuk informasi lebih lanjut tentang nama domain dan kunci API yang dikonfigurasi Mailgun. Untuk memilih nama domain, periksa di sini.

2. Pilih MySQL atau MariaDB untuk database, bukan SQLite

Jika blog Ghost Anda direncanakan untuk penggunaan produksi, saya sarankan untuk tidak menggunakan Database SQLite yang disediakan secara default di dalam Ghost Container.

Alasan untuk menggunakan Database yang direkomendasikan sebagai MySQL atau MariaDB sangat penting ketika Anda memiliki banyak anggota dan Anda ingin mengirimi mereka buletin email dari Ghost sendiri.

Kami mempelajarinya dengan cara yang sulit. Awalnya, kami menggunakan MailerLite untuk membuat dan mengirim buletin. Kemudian kami memutuskan untuk memanfaatkan fitur buletin bawaan Ghost.

Saat ini kami memiliki sekitar 1.100 anggota. Dan ini menimbulkan masalah karena SQLite tidak dapat menangani banyak kueri ini sekaligus. Pos yang baru dibuat gagal dikirim. Log menunjukkan kesalahan ini:

Processed job threw an unhandled error
"The email service was unable to send an email batch."

Error ID:
    24bf8000-4f50-11eb-adf5-73dcc562a630

Error Code: 
    SQLITE_ERROR

Bukan itu. Bahkan menolak mengekspor 1.100 anggota. Pengunduhan tidak akan dimulai. Kami mengunduh seluruh cadangan dalam format JSON dan mengekstrak informasi anggota dari sana.

Untuk memperbaikinya, migrasikan dari SQLite ke MySQL atau MariaDB yang akan menjadi overhead yang tidak perlu dan mengakibatkan waktu henti yang mungkin tidak diinginkan selama migrasi yang bahkan dapat berlangsung untuk waktu yang tidak terbatas. Jadi, selalu lebih baik untuk awalnya menggunakan Ghost dengan MySQL atau MariaDB sebagai praktik pencegahan.

Berikut adalah contoh konfigurasi layanan database MariaDB untuk Ghost on Docker Compose:

    db:
        image: mariadb:10.5.3
        volumes:
            - ghostdb:/var/lib/mysql
        restart: on-failure
        environment:
            MYSQL_RANDOM_ROOT_PASSWORD: 1
            MYSQL_USER: rename-me
            MYSQL_PASSWORD: replace-me
            MYSQL_DATABASE: rename-me

3. Aktifkan rotasi log

Rotasi log adalah proses mengatur ulang file log Anda secara otomatis setelah jangka waktu yang diinginkan. Ini membantu dalam menghindari pembuatan file log besar yang menumpuk dan tidak perlu menyerang ruang disk server Anda. Dalam praktik umum, jika Anda tidak menyertakan cuplikan berikut dalam konfigurasi Ghost Anda, itu akan menghasilkan file log yang terakumulasi ke ukuran besar antara 15-20 GB!:

  "logging": {
    "path": "content/logs/",
    "level": "info",
    "rotation": {
      "enabled": true,
      "count": 15,
      "period": "1d"
  },

Untuk ikhtisar terperinci tentang masuk ke Ghost, Anda dapat mengunjungi halaman dokumentasi yang relevan.

3. Gunakan proxy terbalik

Itu selalu merupakan keuntungan tambahan untuk menggunakan proxy terbalik dari awal, sebelum menggunakan Ghost. Itu membuat lebih mudah untuk mengelola aplikasi web Anda baik dalam jangka pendek maupun jangka panjang.

Cara Menggunakan Nginx Reverse Proxy Dengan Beberapa Aplikasi DockerPelajari bagaimana Anda dapat menerapkan beberapa layanan web di server yang sama menggunakan proxy terbalik Nginx dan wadah buruh pelabuhan. Linux HandbookDebdut Chakraborty

4. Perbarui Ghost tanpa waktu henti

Jika Anda menggunakan proxy pembalikan, memperbarui instance Ghost Anda tanpa waktu henti akan menjadi pekerjaan yang mudah.

Inilah yang saya sarankan. Siapkan Docker Notify agar Anda mendapatkan pemberitahuan tentang image Docker baru dari instance Ghost (dengan Ghost versi terbaru).

Kemudian Anda dapat mengikuti tutorial ini untuk memperbarui wadah Docker Anda.

Memperbarui Kontainer Docker Dengan Tanpa Waktu HentiMetodologi langkah demi langkah yang dapat sangat membantu dalam aktivitas DevOps Anda sehari-hari tanpa mengorbankan waktu aktif yang tak ternilai. Buku Pegangan LinuxAvimanyu Bandyopadhyay

Untungnya, sama sekali tidak ada waktu henti saat Anda melakukan pembaruan. Jika Anda sudah masuk ke panel admin (misalnya saat menulis artikel), Anda tidak akan melihat adanya anomali.

Namun, jika Anda tidak masuk, hingga Anda menghapus penampung lama setelah pembaruan, panel admin akan terus mencoba memuat sendiri jika Anda mencoba masuk baru.

Namun dalam arti produksi, blog Ghost itu sendiri akan terus tersedia di front-end bahkan saat Anda melakukan upgrade.

6. Selalu tetapkan kebijakan mulai ulang

Karena Anda menggunakan wadah Ghost Docker, kebijakan restart selalu sangat penting dan perlu untuk ditentukan dalam konfigurasi Anda. Ini memastikan wadah Ghost Anda selalu memulai ulang sendiri setiap kali server fisik Anda telah di-boot ulang karena acara pemeliharaan apa pun.

Jika konfigurasi Docker generik Anda mengaktifkan pemulihan langsung, disarankan untuk menggunakan on-failure memulai kembali kebijakan. Untuk memiliki pemahaman yang lebih baik tentang kebijakan restart, silakan periksa dokumentasi resmi untuk referensi lengkap tentang kebijakan tersebut.

Biasanya, Anda menetapkan kebijakan mulai ulang dalam layanan file Docker Compose Anda sebagai:

restart: on-failure
Kebijakan Mulai Ulang Docker [Dijelaskan Dengan Contoh] Menggunakan kebijakan mulai ulang dapat sangat membantu dalam memulai ulang wadah secara otomatis dalam peristiwa atau kegagalan tertentu. Buku Pegangan LinuxAbhishek Prakash

7. Gunakan Volume Docker Eksternal

Jika Anda menggunakan volume yang telah dibuat secara manual sebelum menggunakan Ghost, akan lebih mudah untuk memigrasikan konten Anda (dalam server yang sama atau yang lain) jika diperlukan di masa mendatang. Ini memberi Anda lebih banyak kontrol atas data Anda karena Andalah yang membuat dan menentukan volume untuk digunakan oleh wadah Ghost. Jika tidak, Anda harus menyerahkannya ke Docker Compose untuk membuatnya secara lokal.

Untuk membuat volume Docker eksternal untuk wadah Ghost, gunakan perintah berikut:

docker volume create ghost

Dimana ghost adalah nama volume Docker Ghost eksternal Anda.

Karena saya telah menyebutkan memilih database MySQL atau MariaDB untuk memastikan kinerja yang lebih baik dengan ribuan pengguna, volumenya juga harus dibuat dengan cara yang sama:

docker volume create ghostdb

Dimana ghostdb adalah nama volume Docker Ghost Database eksternal Anda.

Untuk menginstruksikan Docker Compose untuk menggunakan volume spesifik yang baru saja Anda buat di atas, bagian volume kami di file Docker Compose harus terlihat seperti:

volumes:
  ghost:
    external: true
  ghostdb:
    external: true

Perhatikan bagaimana saya telah menetapkan bahwa volume Docker ini bersifat eksternal.

Kiat Bonus:Jadwalkan pencadangan rutin

Jika Anda menggunakan Linode, Digital Ocean, atau penyedia server cloud serupa lainnya, sangat disarankan untuk selalu mengaktifkan pencadangan saat Anda membuat server untuk menyebarkan Ghost.

Misalnya, saat Anda membuat server dengan RAM 1 GB (disebut nanode) di Linode, Anda akan menemukan kotak centang yang meminta untuk mengaktifkan pencadangan. Setiap kali Anda menerapkan server produksi, saya selalu menyarankan Anda untuk mengaktifkannya sebelum melanjutkan untuk benar-benar memulai server untuk boot pertama.

Selain itu, Anda dapat menerapkan skrip di server berdasarkan crontab untuk secara manual mengambil snapshot volume Docker eksternal Anda untuk Ghost.

Secara teknis, volume data seperti yang dibahas pada pointer 7 sebelumnya, khususnya ghost dan ghostdb , secara lokal berada di /var/lib/docker/volumes/ghost/_data dan /var/lib/docker/volumes/ghostdb/_data masing-masing. Untuk mengarsipkannya secara efektif, Anda dapat menggunakan tar untuk mencadangkan kedua direktori tersebut secara berkala.

Karena sekarang Anda akan tahu kapan tar ini arsip akan tersedia setelah pengarsipan, Anda juga dapat menggunakan skrip lain di sistem lokal Anda (diasumsikan berjalan langsung pada waktu tertentu setiap hari di rumah/kantor Anda) untuk ssh ke server Ghost dan mengambil arsip tersebut. Dengan cara ini, Anda akan selalu memiliki salinan blog Ghost yang diperbarui secara lokal, terlepas dari akses apa pun ke Internet.

Atau, Anda juga dapat menggunakan pendekatan pencadangan logis untuk mencadangkan database MySQL dengan perintah database mysqldump. Di MariaDB, perintahnya disebut mariadb-dump yang tidak lain adalah symlink ke mysqldump yang sama perintah.

Perbandingan yang sangat baik antara cadangan fisik dan logis dapat ditemukan di sini.

Menjinakkan Hantu

Itu adalah kompilasi dari beberapa pendekatan yang beragam untuk meminimalkan dan mencegah masalah pemeliharaan potensial terjadi setelah Anda menerapkan instance Ghost Anda. Semoga bermanfaat bagi Anda setiap kali Anda meluncurkan atau menggunakan blog Anda sendiri di Ghost.

Kami akan melanjutkan perjalanan kami dengan Ghost dan jika kami menemukan masalah lain yang dapat dihindari dengan konfigurasi yang berbeda saat penerapan, kami akan memperbarui artikel ini.

Jika Anda memiliki saran mengenai petunjuk yang dibahas di atas atau memiliki yang baru, silakan bagikan dengan kami di bagian percakapan di bawah ini. Kami akan senang membaca dan mengetahui lebih banyak dari Anda.


Docker
  1. Jadikan riwayat Bash lebih bermanfaat dengan kiat-kiat ini

  2. 3 Strategi untuk Penerapan Produksi Otomatis Dengan Docker

  3. 10 Tips Mudah Diikuti untuk Mengelola Instans Nextcloud yang Dihosting Sendiri dengan Docker

  1. 3 tips untuk mencetak dengan Linux

  2. 7 Tips Berguna untuk Menghosting Sendiri Instance Hantu Dengan Docker

  3. Cara Memperbarui Kontainer Docker dengan Zero Downtime

  1. 4 tips untuk mendapatkan kerabat yang lebih tua secara online dengan Linux

  2. 5 tips untuk memulai dengan keamanan server Linux

  3. Tips lainnya untuk mengemas perangkat lunak Linux Anda dengan RPM