Banyak aplikasi web PHP mengikuti model ini untuk instalasi dan peningkatan:
- Batalkan tar bola sumber.
- Arahkan Apache ke sumbernya.
- Arahkan peramban web ke beranda.
- Pergi melalui beberapa halaman web pengaturan (misalnya, memeriksa keberadaan perpustakaan, meminta informasi koneksi database, membuat atau memperbarui skema database, dll.).
- Pengguna mengganti nama
install/
direktori ke sesuatu yang lain sehingga aplikasi tahu telah diinstal.
Saya tidak melihat cara (sederhana) untuk membuat paket Debian dari ini tanpa membuat pengguna menginstal paket melalui banyak langkah manual di atas. Perhatikan bahwa saya bukan pengembang pada aplikasi jadi saya tidak dalam posisi untuk membuat perubahan langsung pada cara kerja instalasi aplikasi.
Apa pendekatan khas untuk mengemas aplikasi semacam itu?
web-applications
packages
rlandster
sumber
sumber
Jawaban:
Saya telah membuat beberapa aplikasi web PHP yang saya distribusikan (secara internal) melalui paket Debian. Melakukannya dengan mudah berkat skrip (disederhanakan di sini) untuk mengotomatiskan proses:
create_package.sh :
finish_package.sh :
kontrol :
Semua ini cukup mudah dilakukan, dan berfungsi dengan baik untuk distribusi paket internal yang saya lakukan. Saya tidak yakin itu cukup untuk distribusi global, tetapi mungkin mirip dengan apa yang dilakukan orang-orang Ubuntu dan Debian ketika mereka mengambil paket source (mungkin didistribusikan sebagai tarball dengan skrip instal) dan membuat paket deb .deb untuk mereka.
Saya pikir ini dapat mengatasi lima poin Anda dengan lancar:
Paket Debian secara otomatis mendekompres ke tempat yang tepat pada sistem target ketika diinstal.
Anda dapat memiliki paket Debian mengkonfigurasi Apache secara otomatis. Beberapa paket seperti MySQL dan Apache memiliki direktori "conf.d" di / etc di mana Anda dapat meletakkan file konfigurasi. Ini yang ideal. Skrip pengemasan Anda dapat membuat direktori debian / etc / apache2 / conf.d dan menyalin file konfigurasi di sana. Ini akan diinstal pada sistem target, dan Anda dapat me-restart Apache dalam skrip bernama postinst yang Anda tempatkan di debian / DEBIAN.
Ini mungkin tidak dapat dihindari jika informasi khusus harus dimasukkan, meskipun banyak yang lebih suka sistem yang dapat "out of the box" tanpa konfigurasi yang diperlukan.
Keberadaan perpustakaan dapat dijamin dengan menyertakan dependensi paket yang sesuai dalam file kontrol. Informasi koneksi database dapat diinstal sebagai default, atau diminta dari administrator pada halaman konfigurasi. Setelah dimasukkan, halaman konfigurasi harus mengaktifkan skrip migrasi basis data idempoten untuk memperbarui skema basis data. Beberapa kerangka kerja web (seperti Django) membuatnya mudah.
Kode di belakang halaman konfigurasi harus menandai sistem sebagai terkonfigurasi, bukan administrator.
Suatu pendekatan yang kadang-kadang saya gunakan adalah untuk memisahkan pemasangan konfigurasi dari pemasangan aplikasi dengan membuatnya paket-paket terpisah. Saya kemudian dapat memiliki beberapa paket konfigurasi yang berbeda (rilis, pengembangan, dll.) Yang dapat saya instal sesuka hati. Decoupling ini juga menguntungkan karena konfigurasi dan aplikasi dapat berkembang secara terpisah, tanpa saling berkelahi ketika diinstal ulang.
sumber