Gỡ bỏ module của Drupal đúng cách sẽ tránh được khóc ròng

Submitted by superthin on 03/03/2018 - 11:30:01
Biểu tượng Drupal module

Trên trang drupal.org chắc chắn rằng có những bài viết rất tốt về việc cài đặt một module như thế nào, gỡ bỏ nó ra sao, kèm theo đó là cộng đồng trao đổi rất nhiều về những vấn đề này. Bài này có vẻ là thừa thãi, là chuyện tầm bậy, vớ vẩn nhưng nó là một mẹo giúp bạn bớt điên đầu về sau nếu đọc qua nó.

Vì sao có bài này?

Hôm trước, trước khi làm được trang bán hàng online sunnydepot.com để bán một số sản phẩm, Thin đã biến cái blog này thành một trang có chức năng giỏ hàng bằng cách cài thêm các module, việc đó có đề cập đến ở bài viết này.

Sau quá trình cài cắm "toát mồ hôi", giỏ hàng hoạt động nhưng trông chẳng bắt mắt tí nào. Việc bổ sung, sửa đổi, phát triển thêm các chức năng khác để trở thành một trang bán hàng online thực sự đòi hỏi phải một đội ngũ phát triển, một mình Thin xem như chịu thua, cá nhân sức có hạn.

Vậy là lại phải gỡ bỏ các module đã cài vào. Trong quá trình gỡ bỏ, do không ngồi viết lại các bước cũng như các lưu ý mà làm theo kiểu tới đâu hay tới đó. Mọi việc tưởng như đã xong, cho đến gần đây khi login vào Administrator mới phát hiện ra có những thông báo rất điên đầu.

Thin đã mất một buổi sáng hôm nay để giải quyết cái thông báo lỗi đó.

Thông báo lỗi ra sao?

Khi vào admin/reports/dblog nhìn thấy có đề cập đến chạy cron thất bại. Sau khi chạy cron thủ công, xuất hiện thêm những dòng thông báo lỗi y chang như vậy. Chứng tỏ, cron đã không được chạy hoàn chỉnh  như mong đợi do lỗi đó. Khi click vào xem chi tiết. Thin thấy nguyên nhân:

The “field_item:address” plugin does not exist.

Tìm trên mạng sẽ được có tên chung The “X” plugin does not exist

Thay X bằng tên module đã được gỡ bỏ không đúng cách hoặc ngỡ là đúng cách nhưng có trục trặc sao đó.

Các từ ngữ trong Drupal bắt đầu gây bối rối cho người dùng. Nếu bạn không phải là người có kinh nghiệm về Drupal, hẳn là trong trường hợp trên, chữ plugin khiến bạn chẳng biết nó là cái quái gì. Tên của nó trong phần Admistrator là Extend, khi cài đặt nó người ta lại đề cập nó như là Module trên cộng đồng Drupal.

Thông báo này tối nghĩa vô cùng, nó khiến cho người ta bối rối. Thin phải query thủ công vào cơ sở dữ liệu xem thử có cái module nào mang tên như vậy không, hoàn toàn không. Tìm các file YAML xem có chứa thông tin nào gần gần như vậy không, không luôn. Rồi gõ hàng tá câu lệnh find, grep, awk, sed các kiểu để truy tìm xem có manh mối gì không.

Cuối cùng, bí quá, vào xóa sạch module cài thêm của Drupal, lúc này chỉ còn core thôi. Sau đó xóa cache nhiều lần cả bằng công cụ tự động được trang bị và cách làm thủ công, kể cả restart lại web server, database server cho đến lúc đăng nhập vào Administrator không còn thấy thông báo kia nữa. Lúc đó, lại phải ngồi cài lại các module cần thiết đã bị xóa bỏ trong quá trình "diệt sạch" module để dẹp thông báo lỗi kia.

Cách gỡ bỏ module đúng cách là như thế nào?

- Xem trong danh sách module của Drupal đã cài để xem modulle cần gỡ bỏ (uninstall) được cài để phục vụ cho module nào (Required by), ta lần lượt phải gỡ bỏ những module mà dùng module cần gỡ bỏ, và có khi lâm vào tình trạng là cứ phải lần lượt truy tìm như vậy, tìm đến các module mà module hiệu tại đòi phải có để có thể chạy (Requires) để giải phóng được module cần gỡ bỏ về trạng thái có thể gỡ bỏ.

- Khi một module cần gỡ bỏ đã hoàn toàn được các phụ thuộc và phụ thuộc vào nó xong, nó đã ở trạng thái có thể gỡ bỏ. Lúc này ta mới vào admin/modules/uninstall chọn nó để gỡ bỏ.

- Nhớ xóa cache sau khi gỡ bỏ module xong, lại vào admin/reports/dblog xem có báo lỗi gì không.

- Ghi nhớ lại các module để xóa bỏ, sau 72 giờ nếu mọi thứ đều ổn, không xuất hiện báo lỗi hoặc lỗi nào gây cho sự vận hành website thì mới truy cập vào thư mục module để xóa bỏ hẳn bằng lệnh rm -rf tên-module

Sẽ lại phải dời blog sang nền tảng khác ngoài Drupal?

Nếu phát biểu cảm tưởng lúc này, Thin chỉ biết nói "tui bắt đầu cảm thấy sợ PHP và muốn nhảy khỏi nó".

Sau bài này, Thin cho rằng đã đến lúc tìm một thứ gì khác để chuyển sang, suốt ngày đi gỡ rối cái phần mềm web Drupal CMS này mệt quá, mặc dù nó rất hay. Xem ra PHP là một ngôn ngữ lập trình có kiến trúc dở tệ. Mặc dù hiện nay trên thế giới có nhiều ứng dụng web rất hay viết bằng PHP, nhưng phải nói là đội ngũ viết đã nỗ lực rất nhiều, lỗi phát sinh lại nhiều vô kể không phải do họ viết mã kém mà gốc rễ là PHP quá lộn xộn. Drupal CMS là trường hợp như vậy.

Việc một lần nữa di chuyển blog này sang một nền tảng mới xem ra là việc làm rỗi hơi, điên rồ vì Drupal đã quá tốt, mọi thứ xem ra vẫn đang vận hành suôn sẻ. Nhưng, biết đâu được, Thin cảm thấy nản chí với việc ngồi debug lỗi của PHP quá rồi. Mặc dù Drupal tốt, được viết trên nền PHP framework được xem là tốt nhất hiện nay, mà nó còn gây ra những khó khăn như vậy, việc nhảy khỏi PHP để tránh đau thương có khi cũng phải tính đến./.