Panduan Pasukan Lucee MY

Lucee 7.1 dan extension modular: SMTP, FTP dan Compress dipisahkan

Lucee 7.1 memindahkan SMTP, FTP dan Compress ke extension berasingan. Kenali gejala selepas naik taraf seperti cfmail senyap gagal dan cara memasang semula.

Lucee 7.1 dan extension modular: SMTP, FTP dan Compress dipisahkan
0
Kandungan

Lucee 7.1 dan extension modular: SMTP, FTP dan Compress dipisahkan

Lucee 7.1 memindahkan tiga keupayaan yang sebelum ini terbina terus dalam teras enjin keluar ke extension berasingan: SMTP (mel), FTP dan Compress. Perubahan ini senyap bagi kebanyakan pelayan yang menggunakan edaran penuh (fat JAR), kerana extension itu masih dibundel bersama, tetapi ia menjadi punca kegagalan mengejut bagi sesiapa yang menjalankan edaran ringan (light atau zero), atau yang extensionnya gagal dipasang dengan lengkap selepas naik taraf. Artikel ini menerangkan apa yang berubah, bagaimana gejala itu kelihatan, dan bagaimana memulihkan keupayaan yang hilang.

Apa yang berubah dalam Lucee 7.1

Menurut panduan rasmi Lucee 7.1, sebahagian fungsi yang sebelum ini dibakar ke dalam teras telah dipindahkan ke extension berasingan. Tiga yang paling kerap digunakan dalam aplikasi web harian ialah:

  • SMTP: fungsi mel, iaitu tag cfmail, cfmailpart, cfmailparam dan cfimap, kini berada dalam extension mail.
  • FTP: fungsi FTP dan SFTP, iaitu tag cfftp, kini berada dalam extension FTP.
  • Compress: fungsi mampat dan ekstrak, iaitu BIF compress() dan extract() serta tag cfzip, kini berada dalam extension Compress.

Dua perkara lain turut dikeluarkan daripada teras pada masa yang sama: pangkalan data HSQLDB dan pemacu lama JTDS untuk Microsoft SQL Server. Kedua-duanya bukan topik artikel ini, tetapi ia muncul dalam nota keluaran yang sama, jadi jangan terkejut apabila melihatnya disebut bersama.

Perkara paling penting untuk difahami ialah bagaimana ia diedarkan. Extension ini masih dibundel dalam edaran penuh (fat JAR), jadi pelayan yang naik taraf menggunakan fail JAR penuh tidak akan kehilangan apa-apa. Edaran ringan (light) dan kosong (zero) tidak menyertakan extension ini, dan di situlah masalah bermula.

Jadual perbandingan sebelum dan selepas

CiriDahulu (sebelum 7.1)Sekarang (7.1 dan selepas)Tindakan
SMTP (cfmail, cfmailpart, cfmailparam, cfimap)Terbina dalam terasExtension org.lucee:mail-extensionSahkan extension dipasang, uji dengan log SMTP pelayan
FTP dan SFTP (cfftp)Terbina dalam terasExtension org.lucee:ftp-extensionPasang semula jika cfftp tidak dikenali
Compress (compress, extract, cfzip)Terbina dalam terasExtension org.lucee:compress-extension, zip dan gzip asas kekal dalam terasPasang untuk format tar, bzip2 dan tgz
HSQLDBTerbina dalam terasDikeluarkan daripada terasGuna pangkalan data sebenar untuk ujian QoQ

Kenapa keupayaan ini dipisahkan

Sebabnya ialah modulariti dan kebolehselenggaraan. Apabila fungsi mel atau FTP berada dalam teras, setiap pembetulan pepijat kecil pada pustaka mel memerlukan keluaran keseluruhan enjin. Selepas dipisahkan, extension boleh dikemas kini secara bebas tanpa menunggu keluaran Lucee baharu. Lucee 7.1 juga memperkenalkan sokongan Maven untuk extension, jadi setiap extension kini mempunyai koordinat Maven sendiri seperti org.lucee:mail-extension dan boleh dipasang serta diuruskan seperti kebergantungan Java biasa.

Gejala selepas naik taraf

Gejala berbeza mengikut extension yang hilang, dan memahami perbezaan ini menjimatkan masa diagnosis.

Apabila extension mail hilang, tag cfmail tidak dikenali oleh pengkompil. Halaman yang memanggilnya gagal dengan ralat kompilasi undefined tag [cfmail]. Perkara yang sama berlaku kepada cfftp dengan ralat undefined tag [cfftp]. Ralat ini muncul dalam log aplikasi dan pada halaman ralat, bukan sebagai pengecualian yang boleh ditangkap oleh cfcatch, kerana ia berlaku semasa kompilasi templat, bukan semasa runtime.

Apabila extension Compress hilang, keadaannya lebih halus. Format zip dan gzip asas masih berfungsi kerana ia disediakan oleh keupayaan terbina dalam JRE, tetapi format lain seperti bzip2, tar dan tgz gagal, dan BIF compress() serta extract() tidak tersedia. Inilah sebabnya cfzip boleh kelihatan berfungsi untuk zip mudah tetapi gagal untuk format lain.

cfmail boleh melaporkan berjaya tanpa menghantar

Ini ialah perangkap paling berbahaya, dan ia berasingan daripada masalah extension yang hilang. cfmail secara lalai meletakkan mesej ke dalam spool dan menghantarnya melalui bebenang latar belakang. Panggilan itu kembali serta-merta dan kelihatan berjaya, walaupun pelayan SMTP tidak dapat dihubungi langsung. Kegagalan sambungan dicatat ke log spooler, bukan dibuang kepada kod anda.

Ujian berikut dijalankan pada Lucee 7.1 dengan pelayan SMTP yang tidak wujud. Dengan spoolEnable="true", panggilan kembali tanpa sebarang ralat:

<cftry>
    <cfmail from="kirim@contoh.my" to="terima@contoh.my" subject="Ujian" spoolEnable="true">
    Badan e-mel ujian.
    </cfmail>
    <cfoutput>cfmail kembali tanpa ralat.</cfoutput>
    <cfcatch><cfoutput>Ralat: #cfcatch.message#</cfoutput></cfcatch>
</cftry>

Apabila spoolEnable ditukar kepada false, panggilan yang sama membuang ralat sambungan Couldn't connect to host. Maksudnya jelas: nilai pulangan cfmail bukan bukti mesej dihantar. Satu-satunya bukti yang boleh dipercayai ialah log pelayan SMTP, bukan nilai pulangan tag. Apabila extension terlibat tidak lengkap, keadaan ini menjadi lebih teruk, kerana mesej boleh dispool dan kemudian gagal tanpa sesiapa menyedari. Sentiasa sahkan dengan log SMTP pelayan, dan baca panduan e-mel CFML tidak sampai untuk urutan diagnosis penuh.

Cara mengesan extension yang hilang

Terdapat tiga cara mengesan, daripada paling cepat kepada paling lengkap.

Pertama, semak log aplikasi untuk ralat kompilasi tag:

# Cari tag yang tidak dikenali selepas naik taraf
grep -i "undefined tag" /opt/lucee/server/lucee-server/context/logs/application.log | tail -n 20

Kedua, uji kehadiran fungsi dan tag secara langsung. Untuk BIF compress() dan extract(), semak senarai fungsi yang dimuatkan:

<cfset senarai = getFunctionList()>
<cfoutput>
compress tersedia: #structKeyExists(senarai, "compress")#
extract tersedia: #structKeyExists(senarai, "extract")#
</cfoutput>

Ketiga, buka pentadbir Lucee dan semak senarai extension yang dipasang: Server Admin, kemudian Extensions, kemudian Applications. Senarai itu menunjukkan extension mail, FTP dan Compress jika ia dipasang, dan membolehkan anda memasang atau membuangnya secara interaktif.

Cara memasang semula extension yang hilang

Cara paling mudah ialah melalui pentadbir Lucee di bawah Extensions lalu Applications. Cari nama extension dan tekan pasang. Untuk pemasangan automatik dan boleh diulang, gunakan pemboleh ubah persekitaran LUCEE_EXTENSIONS, yang menyokong koordinat Maven sejak Lucee 7.0.1:

# Pasang semula ketiga-tiga extension melalui koordinat Maven (versi diselesaikan automatik)
export LUCEE_EXTENSIONS="org.lucee:mail-extension,org.lucee:ftp-extension,org.lucee:compress-extension"

Versi boleh ditinggalkan, dan Lucee menyelesaikan versi keluaran terkini daripada Maven. Untuk pelayan yang sedang berjalan, tetapkan pemboleh ubah ini dalam persekitaran servis atau fail Compose dan mula semula; dalam bekas, nilai baharu disemak setiap 10 saat. Kaedah ketiga ialah menyalin fail .lex ke dalam folder deploy di bawah direktori pelayan Lucee, dan ia dipasang pada mula semula atau dalam masa seminit. Untuk panduan pemasangan extension secara umum, baca panduan memasang extension Lucee.

Soalan Lazim

Adakah semua pelayan Lucee 7.1 kehilangan cfmail dan cfftp?

Tidak. Edaran penuh (fat JAR) masih membundel extension mail, FTP dan Compress, jadi tiada apa yang hilang. Hanya edaran light dan zero, atau pelayan yang extensionnya dibuang atau gagal dipasang, yang mengalami masalah.

Bagaimana saya tahu extension mana yang hilang?

Semak pentadbir Lucee di bawah Extensions lalu Applications, atau grep log aplikasi untuk undefined tag. Untuk BIF, semak kehadiran nama fungsi melalui getFunctionList().

Kenapa cfzip masih berfungsi untuk zip tetapi gagal untuk tar?

Zip dan gzip asas disediakan oleh keupayaan terbina dalam JRE dan kekal dalam teras. Format lain seperti tar, bzip2 dan tgz memerlukan extension Compress.

Bagaimana saya memastikan e-mel benar-benar dihantar?

Jangan bergantung pada nilai pulangan cfmail. Tetapkan spoolEnable="false" semasa menguji dan sahkan penghantaran dalam log pelayan SMTP, bukan pada hasil tag.

Bolehkah saya memasang extension secara automatik dalam Docker?

Boleh. Tetapkan pemboleh ubah persekitaran LUCEE_EXTENSIONS dengan koordinat Maven, atau salin fail .lex ke folder deploy semasa membina imej.

Sumber

Senarai semak naik taraf

Sebelum naik taraf pelayan produksi ke Lucee 7.1, lalui senarai ini. Ia menghalang panggilan mel dan FTP daripada senyap gagal selepas naik taraf.

  1. Kenal pasti edaran yang anda jalankan: penuh, light atau zero. Extension hanya dibundel dalam edaran penuh.
  2. Senaraikan extension yang dipasang sebelum naik taraf dan bandingkan selepasnya.
  3. Uji cfmail dengan spoolEnable="false" supaya ralat sambungan kelihatan serta-merta, dan sahkan dengan log SMTP pelayan, bukan nilai pulangan tag.
  4. Uji cfftp dengan tindakan mudah seperti action="listDir" terhadap pelayan FTP sebenar.
  5. Uji compress() dan extract() dengan format selain zip, contohnya tar, kerana zip asas kekal dalam teras.
  6. Pasang semula extension yang hilang melalui pentadbir, LUCEE_EXTENSIONS, atau folder deploy.
  7. Selepas naik taraf, semak log aplikasi untuk undefined tag dan log spooler untuk mesej yang gagal dihantar.
  8. Rujuk panduan naik taraf Lucee 7.1 ke 8.0 dan cfmail dan konfigurasi SMTP untuk butiran lanjut, serta cfzip mampat dan ekstrak untuk contoh format mampatan.
Bab 3 daripada 9

Pentadbiran Lucee 7.1

Log masuk untuk menyimpan kemajuan bacaan anda.

0 komen

0 komen

Log masuk untuk menjawab atau memberi komen.

Log masuk