Melayani Banyak Domain dengan Satu Enjin Lucee (mod_cfml)
mod_cfml menyelaraskan hos Tomcat dengan vhost Apache atau nginx secara automatik, jadi satu enjin Lucee melayani banyak domain tanpa konfigurasi berulang.

Kandungan
- Melayani Banyak Domain dengan Satu Enjin Lucee (mod_cfml)
- Masalah Sebenar: Satu JVM, Banyak Laman
- Cara mod_cfml Berfungsi
- Komponen mod_cfml
- Konfigurasi Asas di Apache
- WEB-INF Per Akaun yang Tercipta Sendiri
- Konfigurasi di nginx
- mod_cfml dan Pemasang Lucee
- Had Model Satu JVM
- Bila Patut Guna Kontena Sebagai Ganti
- Jadual Perbandingan Model
- Soalan Lazim (FAQ)
- Sumber
Melayani Banyak Domain dengan Satu Enjin Lucee (mod_cfml)
mod_cfml ialah suite program komuniti yang menyelaraskan hos Tomcat dengan hos yang dicipta dalam Apache, nginx atau IIS secara automatik. Ia menghapuskan keperluan mengkonfigurasi laman dua kali, iaitu sekali pada pelayan web dan sekali lagi dalam Tomcat, dan tugas itu dilakukan untuk anda secara automatik. Dengan mod_cfml, setiap vhost baharu yang anda cipta mendapat konteks Lucee dan folder WEB-INF sendiri tanpa perubahan lanjut pada konfigurasi Tomcat.
Masalah Sebenar: Satu JVM, Banyak Laman
Lucee berjalan di atas Tomcat, dan satu contoh Tomcat ialah satu JVM. Untuk melayani dua domain, Tomcat perlu tahu dua perkara: hos mana yang dipetakan ke folder mana, dan konteks Lucee mana yang menyimpan tetapan setiap laman. Tanpa alat bantu, anda perlu menambah blok Host untuk setiap domain dalam fail server.xml Tomcat setiap kali anda menambah laman, satu kerja manual yang mudah tersilap dan mudah dilupa.
Masalah kedua ialah tetapan setiap laman. Setiap laman Lucee menyimpan konfigurasinya dalam folder WEB-INF sendiri, termasuk datasource dan tetapan khusus laman itu. Jika folder ini bercampur, satu laman boleh membaca tetapan laman lain. mod_cfml menyelesaikan kedua-dua masalah sekaligus dengan menjadikan pelayan web sebagai sumber kebenaran.
Cara mod_cfml Berfungsi
mod_cfml terdiri daripada dua bahagian yang berfungsi bersama. Pada pelayan web, satu modul membaca konfigurasi laman dan menghantarnya kepada Tomcat. Pada Tomcat, satu Valve menerima maklumat itu dan mencipta hos serta alias yang sepadan secara automatik. Bagi Apache, komponen itu ialah modul mod_cfml.so; bagi nginx dan IIS terdapat komponen setara masing-masing.
Hasilnya, aliran kerjanya begini: anda mencipta vhost pada pelayan web seperti biasa, dan mod_cfml memastikan Tomcat mengikutinya. Dokumentasi Lucee menyatakan dengan jelas bahawa dengan mod_cfml, tiada perubahan konfigurasi lanjut diperlukan pada hos maya Apache atau pada konfigurasi Tomcat untuk menambah laman.
Komponen mod_cfml
mod_cfml dibahagikan kepada komponen pelayan web dan komponen Tomcat. Pada pelayan web, modul mod_cfml.so untuk Apache membaca konfigurasi laman dan menghantarnya kepada Tomcat. Pada Tomcat, Valve mod_cfml mengambil maklumat itu dan mencipta hos serta alias yang sepadan. Terdapat komponen setara untuk nginx dan IIS, jadi model ini tidak terhad kepada satu pelayan web.
Pembahagian ini penting untuk difahami semasa menyelesaikan masalah. Jika laman baharu tidak muncul dalam Lucee, persoalannya ialah sama ada modul pelayan web menghantar maklumat dengan betul, atau sama ada Valve Tomcat menerimanya, dan memeriksa kedua-dua belah secara berasingan akan menunjukkan di mana rantai itu terputus.
Konfigurasi Asas di Apache
Pada pelayan web, anda hanya menambah VirtualHost biasa. Inilah contoh yang diberikan dokumentasi Lucee untuk satu laman:
<VirtualHost *:80>
ServerAdmin admin@contoh.my
DocumentRoot /home/contoh/public_html/
ServerName contoh.my
ServerAlias www.contoh.my
</VirtualHost>
Tanpa mod_cfml, anda perlu mengulangi maklumat ini secara manual dalam server.xml Tomcat dengan blok Host seperti ini, satu kerja yang mod_cfml hapuskan sepenuhnya:
<Host name="contoh.my" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/home/contoh/public_html/" />
<Alias>www.contoh.my</Alias>
</Host>
Pemasang Lucee mengkonfigurasi mod_cfml untuk menyambung melalui mod_proxy secara lalai, dan mod_cfml juga boleh dikonfigurasi untuk menggunakan mod_jk. Ini bermakna laluan proksi sebenar antara pelayan web dan Tomcat masih perlu ada, dan mod_cfml menguruskan bahagian konteks dan hos di atasnya.
WEB-INF Per Akaun yang Tercipta Sendiri
Setiap laman yang mod_cfml cipta mendapat folder WEB-INF sendiri di bawah webroot, contohnya /home/contoh/public_html/WEB-INF. Folder inilah tempat Lucee menyimpan fail dan tetapan untuk laman itu sahaja. Datasource, pemetaan dan tetapan khusus laman hidup di sini dan tidak berkongsi dengan laman lain.
Ini penting untuk pengasingan. Walaupun semua laman berkongsi satu JVM, tetapan mereka kekal berasingan kerana masing-masing membaca folder WEB-INF sendiri. Dokumentasi Lucee mengesyorkan struktur berasaskan pengguna, iaitu setiap laman mendapat pengguna sistem dan kumpulan sendiri, supaya kebenaran fail turut memisahkan satu akaun daripada akaun lain.
Ini juga bermakna datasource adalah per laman, bukan global. Dua laman boleh menggunakan nama datasource yang sama tetapi menunjuk kepada pangkalan data yang berbeza, kerana setiap satu membacanya daripada folder WEB-INF sendiri. Pengasingan pada peringkat tetapan ini ialah sebab mod_cfml boleh digunakan untuk banyak pelanggan walaupun mereka berkongsi satu JVM.
Konfigurasi di nginx
mod_cfml turut menyokong nginx, jadi pelayan hadapan nginx boleh mencipta vhost dan mod_cfml akan menyelaraskan konteks Lucee yang sepadan. Bahagian proksi HTTP antara nginx dan Tomcat masih perlu anda sediakan, seperti yang diterangkan dalam nginx atau Apache di hadapan Lucee. mod_cfml menjaga lapisan di atasnya, iaitu memastikan setiap nama hos yang nginx hantar ke Tomcat mendapat konteks Lucee yang betul secara automatik.
mod_cfml dan Pemasang Lucee
Pemasang Lucee membawa mod_cfml bersama, jadi pemasangan biasa pada Apache atau IIS sudah dikonfigurasi untuk menggunakannya tanpa anda memasangnya berasingan. Pemasang menyambungkan pelayan web ke Lucee melalui mod_cfml, dan selepas itu anda hanya menambah vhost seperti biasa. Ini bermakna kebanyakan pengguna bertemu mod_cfml tanpa menyedarinya, dan menyedari kewujudannya hanya apabila mereka cuba memahami mengapa laman baharu berfungsi tanpa sebarang konfigurasi Tomcat.
Bagi pemasangan manual atau imej kontena, mod_cfml perlu disediakan sendiri, dan dokumentasi projek menyenaraikan langkah untuk pelayan web dan untuk Valve Tomcat pada Linux dan Windows. Model ini juga berguna apabila anda memakai panel hosting yang mencipta vhost untuk anda, seperti yang dibincangkan dalam alternatif panel hosting untuk CFML.
Had Model Satu JVM
Model ini ada had yang perlu difahami sebelum anda memakainya. Pertama, semua laman berkongsi satu JVM, jadi satu laman yang bocor memori atau satu permintaan berat boleh menjejaskan semua laman lain. Tiada had sumber per akaun secara lalai, dan menambahnya memerlukan kerja tambahan di luar mod_cfml.
Kedua, dokumentasi Lucee menyebut bahawa jika satu laman boleh diakses melalui banyak alias, terutamanya alias liar, mod_cfml perlu mencipta fail dan konfigurasi tambahan secara serta-merta, yang menambah overhead. Untuk bilangan alias yang terhad ini bukan masalah, tetapi alias liar patut dielakkan. Ketiga, semua laman mesti menggunakan versi Lucee yang sama kerana ia satu enjin. Satu akibat yang sering dilupakan ialah semua laman bermula dan berhenti bersama: apabila anda memulakan semula enjin untuk menaik taraf Lucee atau menukar tetapan, setiap laman pada enjin itu turun serentak, dan tiada cara untuk memulakan semula satu laman sahaja tanpa menjejaskan yang lain.
Bila Patut Guna Kontena Sebagai Ganti
Jika anda mahu setiap laman mendapat JVM sendiri, memori sendiri dan versi Lucee sendiri, mod_cfml bukan jawapannya. Model kontena, iaitu satu bekas Lucee bagi setiap laman, memberi pengasingan proses yang sebenar, tetapi dengan kos memori dan penyelenggaraan yang lebih tinggi bagi setiap laman.
Pilihannya bergantung pada skala dan keperluan. Untuk banyak laman kecil yang berkongsi keperluan yang sama, satu enjin dengan mod_cfml adalah cekap. Untuk laman besar atau pelanggan yang memerlukan pengasingan kukuh, kontena lebih selamat. Perbandingan penuh ada dalam artikel deploy Lucee dengan Docker dan pertimbangan hosting ada dalam CFML pada shared hosting.
Jadual Perbandingan Model
| Model | Pengasingan | Kos memori | Pengurusan laman baharu |
|---|---|---|---|
| Satu JVM dengan mod_cfml | Kongsi JVM, tetapan berasingan | Rendah | Automatik |
| Konfigurasi manual server.xml | Kongsi JVM, tetapan berasingan | Rendah | Manual, mudah tersilap |
| Satu kontena per laman | Proses berasingan | Tinggi | Automatik dengan alat kontena |
Soalan Lazim (FAQ)
Apakah sebenarnya mod_cfml itu?
mod_cfml ialah suite program komuniti yang mengkonfigurasi hos Tomcat secara automatik supaya sepadan dengan hos yang dicipta dalam Apache, nginx atau IIS, menghapuskan keperluan mengkonfigurasi laman dua kali.
Adakah saya perlu mengubah server.xml Tomcat setiap kali menambah laman?
Tidak, jika mod_cfml dipasang. Valve mod_cfml mencipta hos dan konteks secara automatik apabila anda menambah vhost pada pelayan web, jadi server.xml tidak perlu disentuh.
Bagaimana setiap laman menyimpan tetapan sendiri?
Setiap laman mendapat folder WEB-INF sendiri di bawah webroot masing-masing, dan Lucee menyimpan datasource serta tetapan khusus laman itu di sana, bukan berkongsi antara laman.
Adakah mod_cfml menyokong nginx?
Ya, mod_cfml menyokong Apache, nginx dan IIS. Bahagian proksi HTTP antara pelayan web dan Tomcat masih perlu disediakan, manakala mod_cfml mengurus konteks Lucee secara automatik.
Apakah kelemahan utama satu JVM untuk banyak laman?
Semua laman berkongsi satu JVM, jadi tiada had sumber per akaun secara lalai dan satu laman yang bermasalah boleh menjejaskan yang lain. Alias liar juga menambah overhead konfigurasi serta-merta.