Το άρθρο αυτό καλύπτει δύο μεθόδους ενημέρωσης Drupal: τη μέθοδο μέσω Composer (προτεινόμενη για Drupal 9, 10 και 11) μέσω SSH, και τη διαδρομή ενημέρωσης μέσω admin UI για παλαιότερες εγκαταστάσεις. Και οι δύο μέθοδοι ολοκληρώνονται με εκτέλεση ενημερώσεων βάσης μέσω Drush και εκκαθάριση cache.
Πριν ενημερώσετε
Να δημιουργείτε πάντα πλήρες backup πριν ενημερώσετε το Drupal core ή οποιοδήποτε module. Αυτό σάς δίνει σημείο επαναφοράς αν κάτι πάει στραβά. Δείτε πώς να δημιουργήσετε και να επαναφέρετε backup Drupal.
- Πλήρες backup ιστότοπου (βάση δεδομένων + αρχεία) δημιουργημένο και επαληθευμένο
- Πρόσβαση SSH στο hosting σας (για ενημερώσεις μέσω Composer)
- Composer 2 διαθέσιμο στον server — η HOSTDOG παρέχει Composer 2 σε όλα τα πακέτα
Μέθοδος 1: Ενημέρωση μέσω Composer (προτεινόμενη)
Το Drupal 9, 10 και 11 διαχειρίζονται με Composer. Όλες οι ενημερώσεις core και modules πρέπει να γίνονται μέσω Composer για σωστή διαχείριση εξαρτήσεων. Αυτή η μέθοδος απαιτεί πρόσβαση SSH.
Συνδεθείτε στον λογαριασμό φιλοξενίας σας στη HOSTDOG μέσω SSH. Δείτε πώς να συνδεθείτε μέσω SSH αν χρειάζεστε βοήθεια. Μόλις συνδεθείτε, μεταβείτε στον ριζικό κατάλογο Drupal (τον κατάλογο που περιέχει το composer.json):
cd ~/public_html
Εκτελέστε την παρακάτω εντολή για να δείτε ποιες ενημερώσεις είναι διαθέσιμες χωρίς να τις εφαρμόσετε:
composer outdated --direct
Μπορείτε επίσης να ελέγξετε μέσω Drush:
drush pm:list --status=enabled --fields=name,version
Για ενημέρωση του Drupal core στην τελευταία patch ή minor έκδοση εντός της τρέχουσας κύριας έκδοσης:
composer update drupal/core-recommended drupal/core-composer-scaffold --with-all-dependencies
Αν το project σας χρησιμοποιεί απευθείας το drupal/core (παλαιότερη ρύθμιση):
composer update drupal/core --with-all-dependencies
composer.json. Αυτή είναι πιο σύνθετη διαδικασία — η ομάδα υποστήριξης της HOSTDOG μπορεί να βοηθήσει μέσω αιτήματος.
Για ενημέρωση όλων των contributed modules ταυτόχρονα:
composer update drupal/* --with-all-dependencies
Για ενημέρωση συγκεκριμένου module μόνο:
composer update drupal/module_name --with-all-dependencies
Μετά την ενημέρωση του Drupal core ή modules, να εκτελείτε πάντα το script ενημέρωσης βάσης για να εφαρμοστούν τυχόν αλλαγές στο σχήμα:
drush updb -y
Αυτό ισοδυναμεί με επίσκεψη στο yourdomain.com/update.php στο πρόγραμμα περιήγησης, αλλά είναι γρηγορότερο και αυτοματοποιήσιμο.
Εκκαθαρίστε όλα τα cache του Drupal μετά την εκτέλεση ενημερώσεων:
drush cr
Στη συνέχεια επισκεφθείτε τον ιστότοπό σας για να επιβεβαιώσετε ότι όλα λειτουργούν σωστά.
Μέθοδος 2: Ενημέρωση μέσω admin UI
Για εγκαταστάσεις Drupal που δεν διαχειρίζονται μέσω Composer (συνήθως παλαιότερες εγκαταστάσεις Drupal 7 ή 8), μπορείτε να χρησιμοποιήσετε τη διεπαφή διαχειριστή για ενημέρωση contributed modules. Σημειώστε ότι αυτή η μέθοδος δεν ενημερώνει το Drupal core — οι ενημερώσεις core σε μη-Composer εγκαταστάσεις απαιτούν χειροκίνητη αντικατάσταση αρχείων.
Στο Drupal admin, μεταβείτε στο Reports → Available updates. Το Drupal θα ελέγξει στο drupal.org για νεότερες εκδόσεις των εγκατεστημένων modules και του core. Οι διαθέσιμες ενημερώσεις παρατίθενται με την κατάσταση ασφαλείας τους.
Στην αναφορά διαθέσιμων ενημερώσεων, επιλέξτε τα modules που θέλετε να ενημερώσετε και κάντε κλικ στο Download these updates. Το Drupal θα κατεβάσει τις νέες εκδόσεις και θα σας ζητήσει να εκτελέσετε το script ενημέρωσης. Ακολουθήστε τις οδηγίες στην οθόνη για να ολοκληρώσετε τη διαδικασία.
Αφού ενημερωθούν τα αρχεία, επισκεφθείτε το yourdomain.com/update.php στο πρόγραμμα περιήγησης (ή εκτελέστε drush updb -y μέσω SSH). Αυτό εφαρμόζει τυχόν αλλαγές στο σχήμα βάσης που περιλαμβάνονται στα ενημερωμένα modules. Αφού ολοκληρωθεί, εκκαθαρίστε το cache στο Administration → Performance → Clear all caches.
Αντιμετώπιση προβλημάτων
Μια σύγκρουση εξαρτήσεων σημαίνει ότι κάποιο module ή οι εξαρτήσεις του απαιτούν έκδοση ασύμβατη με την έκδοση Drupal στόχο. Ελέγξτε την έξοδο σφάλματος για το πακέτο που προκαλεί τη σύγκρουση. Ίσως χρειαστεί πρώτα να ενημερώσετε ή να αφαιρέσετε το προβληματικό module, ή να ελέγξετε τη λίστα issues του στο drupal.org για συμβατή έκδοση.
Αυτό συνήθως σημαίνει ότι δεν εκτελέστηκαν οι ενημερώσεις βάσης ή ότι κάποιο module δεν είναι συμβατό με τη νέα έκδοση Drupal. Συνδεθείτε μέσω SSH και εκτελέστε drush updb -y και έπειτα drush cr. Αν το πρόβλημα παραμένει, ελέγξτε τα πρόσφατα μηνύματα καταγραφής Drupal μέσω drush watchdog:show για το συγκεκριμένο σφάλμα.
Επαναφέρετε το backup που δημιουργήσατε πριν την ενημέρωση. Δείτε πώς να επαναφέρετε backup Drupal. Αυτός είναι ο λόγος που το backup πριν από κάθε ενημέρωση είναι απαραίτητο — είναι το δίχτυ ασφαλείας σας.