> For the complete documentation index, see [llms.txt](https://docs.chamilo.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chamilo.org/3.x/el/odigos-diaxeirisis/admin-guide/installation/upgrading.md).

# Αναβάθμιση

Σημείωση: Σε αυτή τη σελίδα χρησιμοποιούμε το 3.0.0 ως αυστηρό αριθμό έκδοσης και το 3.x για να προσδιορίσουμε όλες τις εκδόσεις που ξεκινούν με τον αριθμό 3 (3.0.0, 3.0.1, 3.1.0 κ.λπ.). Η ίδια σύμβαση ισχύει και για το 2.x.

Η διαδικασία αναβάθμισης από την 1.11.x περιγράφεται επίσης στο αρχείο `public/documentation/installation_guide.html` μέσα στον κώδικα του Chamilo. Οι πληροφορίες εδώ είναι σε μεγάλο βαθμό πλεονάζουσες. Μπορείτε να τις δείτε διαδικτυακά στη διεύθυνση `https://campus.chamilo.net/documentation/installation_guide.html`.

**Αναβαθμίστε στην 3.0, όχι στην 2.x.** Η έκδοση 3.0 είναι η τρέχουσα κυκλοφορία και ορισμένες ρυθμίσεις της 1.11.x δεν είχαν ακόμη αντίστοιχο στην 2.0.0. Ένα σύστημα 1.11.x μεταβαίνει επομένως απευθείας στην 3.0. Έχουμε δοκιμάσει εκτενώς παρόμοιες μεταφορές, αλλά κάθε πλατφόρμα φέρει τη δική της ιστορία: δοκιμάστε την πρώτα σε περιβάλλον δοκιμών και εξετάστε το ενδεχόμενο επαγγελματικής συνοδείας από [επίσημους παρόχους Chamilo](https://chamilo.org/providers) σε αυτό το εγχείρημα.

## Αναβάθμιση από 1.11.x σε 3.0

Η αναβάθμιση από το Chamilo 1.11.x στην 3.0 είναι μια **μείζονα μετάβαση**, όχι μια απλή ενημέρωση. Το Chamilo 2.0 ξαναχτίστηκε πάνω στο πλαίσιο Symfony με αναδιαρθρωμένο σχήμα βάσης δεδομένων, νέο API και διαφορετική οργάνωση αρχείων, και η 3.0 συνεχίζει αυτή τη γραμμή. Σχεδιάστε προσεκτικά αυτή τη μετάβαση και δοκιμάστε την σε περιβάλλον δοκιμών πριν την εφαρμόσετε στην παραγωγή.

### Πριν ξεκινήσετε

1. **Διαβάστε τις σημειώσεις έκδοσης** για το Chamilo 3.x ώστε να κατανοήσετε τι έχει αλλάξει, τι είναι νέο και ποιες λειτουργίες της 1.11.x ενδέχεται να μην είναι ακόμη διαθέσιμες.
2. **Δημιουργήστε αντίγραφα ασφαλείας των πάντων**:
   * Πλήρες dump βάσης δεδομένων (`mysqldump` ή ισοδύναμο).
   * Όλα τα αρχεία στον κατάλογο εγκατάστασης του Chamilo 1.11.x, ιδίως τα `app/upload/`, `app/courses/` και `main/`.
   * Το αρχείο `configuration.php`.
3. **Δοκιμάστε πρώτα σε διακομιστή σταδιοποίησης.** Μην εκτελέσετε ποτέ τη μετάβαση απευθείας στον διακομιστή παραγωγής.
4. **Επαληθεύστε τις απαιτήσεις διακομιστή.** Το Chamilo 3.x έχει διαφορετικές απαιτήσεις από την 1.11.x (ιδίως PHP 8.3 ή νεότερη — το πρόγραμμα εγκατάστασης απορρίπτει οτιδήποτε παλαιότερο). Δείτε τις [Απαιτήσεις διακομιστή](/3.x/el/odigos-diaxeirisis/admin-guide/installation/server-requirements.md).
5. **Διαγράψτε τον πίνακα `version` από τη βάση δεδομένων της 1.11.x.** Αυτό το βήμα είναι υποχρεωτικό. Το Chamilo 2.x και νεότερο αποθηκεύει το ιστορικό μεταβάσεων Doctrine σε πίνακα με αυτό το όνομα, με άλλες στήλες. Αν αφήσετε στη θέση του τον πίνακα της 1.11.x, η αναβάθμιση σταματά αμέσως. Ο πίνακας δεν είναι απαραίτητος για τη λειτουργία του Chamilo 1.11.x.
6. **Αποσυμπιέστε τον νέο κώδικα σε νέο κατάλογο.** Τα αρχεία της 1.11.x παραμένουν εκεί που είναι. Το πρόγραμμα εγκατάστασης τα διαβάζει ως πηγή των μαθημάτων και των μεταφορτώσεών σας και γράφει το αποτέλεσμα στο νέο δέντρο.

### Εκτέλεση της αναβάθμισης

Μπορείτε να εκτελέσετε την αναβάθμιση μέσω του οδηγού ιστού ή μέσω της γραμμής εντολών.

#### Οδηγός ιστού

1. Ορίστε το `DocumentRoot` του εικονικού σας κεντρικού υπολογιστή στον υποκατάλογο `public/` του νέου δέντρου.
2. Ανοίξτε το URL σας. Ο οδηγός ξεκινά, επειδή το νέο δέντρο δεν έχει ακόμη αρχείο `.env`.
3. Στο βήμα 2, επιλέξτε την επιλογή αναβάθμισης και δώστε τη ριζική διαδρομή της εγκατάστασης 1.11.x.
4. Ακολουθήστε τον οδηγό μέχρι το τέλος.

#### Γραμμή εντολών

Ορίστε το `UPDATE_PATH` στη ρίζα της εγκατάστασης 1.11.x και στη συνέχεια εκτελέστε τις μεταβάσεις:

```bash
UPDATE_PATH=/path/to/chamilo-1.11 php bin/console doctrine:migrations:migrate --no-interaction
```

Αυξήστε πρώτα τα `memory_limit` και `max_execution_time`. Η μετάβαση διαβάζει κάθε αρχείο μαθήματος, επομένως χρειάζεται πολύ περισσότερα από τις προεπιλογές.

#### Πόσο χρόνο διαρκεί

Η διάρκεια ακολουθεί το μέγεθος της βάσης δεδομένων και των αρχείων μαθημάτων σας. Ως σημείο αναφοράς, μια πλατφόρμα 1.11.28 με 238 πίνακες, 11 μαθήματα, 63 χρήστες και 1489 αρχεία μαθημάτων χρειάστηκε **6 λεπτά** και 1,7 GB μνήμης και εκτέλεσε 393 μεταβάσεις. Μια μεγάλη πλατφόρμα παραγωγής χρειάζεται ώρες. Προγραμματίστε παράθυρο συντήρησης και διαβάστε το [φόρουμ Chamilo](https://chamilo.org) ή επικοινωνήστε με έναν [επίσημο πάροχο](https://chamilo.org/providers) πριν την εκτελέσετε στην παραγωγή.

### Τι ενδέχεται να απαιτεί χειροκίνητη προσοχή

| Περιοχή                                          | Σημειώσεις                                                                                                                                                                                                                                 |
| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Προσαρμοσμένα πρόσθετα**                       | Τα πρόσθετα της 1.11.x δεν λειτουργούν στην 2.x ή την 3.x. Πρέπει να ξαναγραφούν ή να αντικατασταθούν. Τα επίσημα έχουν μεταφερθεί προοδευτικά από την 2.0 — ελέγξτε τη λίστα προσθέτων της έκδοσής σας για να δείτε ποια είναι διαθέσιμα. |
| **Προσαρμοσμένα θέματα**                         | Τα θέματα της 1.11.x δεν λειτουργούν στην 2.x ή την 3.x. Αναδημιουργήστε την επωνυμία σας χρησιμοποιώντας το σύστημα θεμάτων της 3.x.                                                                                                      |
| **Προσαρμοσμένες τροποποιήσεις βάσης δεδομένων** | Οποιεσδήποτε άμεσες τροποποιήσεις βάσης δεδομένων εκτός του Chamilo ενδέχεται να μην μεταφερθούν.                                                                                                                                          |
| **Πακέτα SCORM**                                 | Το περιεχόμενο SCORM θα πρέπει να μεταφερθεί, αλλά δοκιμάστε τα πακέτα μεμονωμένα για να επαληθεύσετε την αναπαραγωγή.                                                                                                                     |
| **Εξωτερικές ενσωματώσεις**                      | Οποιεσδήποτε ενσωματώσεις που χρησιμοποιούν το API ή τις υπηρεσίες ιστού της 1.11.x πρέπει να ενημερωθούν ώστε να χρησιμοποιούν το αποκλειστικά REST API της 2.x με το [API Platform](https://github.com/api-platform/api-platform).       |

## Αναβάθμιση από 2.x σε 3.0

Αυτή η αναβάθμιση διατηρεί τον υπάρχοντα κατάλογο και την υπάρχουσα βάση δεδομένων. Αντιγράφετε τον νέο κώδικα πάνω στο παλιό δέντρο και στη συνέχεια εκτελείτε τις μεταβάσεις, είτε μέσω του οδηγού ιστού είτε μέσω της γραμμής εντολών.

### Αρχικοποίηση του ιστορικού μεταναστεύσεων πρώτα

Το Chamilo εγκαθιστά το σχήμα της βάσης δεδομένων απευθείας από τους ορισμούς των οντοτήτων, επομένως μια εγκατάσταση που δημιουργήθηκε από τον εγκαταστάτη διαθέτει το τελικό σχήμα αλλά ένα **κενό ιστορικό μεταναστεύσεων**. Οι εγκαταστάσεις που δημιουργήθηκαν πριν από το Chamilo 3.0 δεν έλαβαν ποτέ αυτό το ιστορικό. Δύο πράγματα εξαρτώνται από αυτό:

* Η εντολή `doctrine:migrations:migrate` αποφασίζει τι θα εκτελέσει βάσει αυτού. Με κενό ιστορικό προσπαθεί να επαναλάβει κάθε μετανάστευση από την αρχή πάνω σε ένα σχήμα που είναι ήδη ενημερωμένο.
* Ο διαδικτυακός εγκαταστάτης αποφασίζει βάσει αυτού αν εκκρεμεί αναβάθμιση. Με κενό ιστορικό απορρίπτει το αίτημα, επειδή τίποτα δεν αποδεικνύει ότι οφείλεται αναβάθμιση.

Επομένως αρχικοποιήστε το μία φορά και τηρήστε τη σειρά που ακολουθεί.

> **Προειδοποίηση: αρχικοποιήστε το ιστορικό πριν αντιγράψετε τον νέο κώδικα.** Οι εντολές επισημαίνουν κάθε μετανάστευση που φέρει ο **αναπτυγμένος** κώδικας ως ήδη εκτελεσμένη. Αν τις εκτελέσετε αφού αντιγράψετε τον κώδικα 3.0, επισημαίνουν και τις μεταναστεύσεις του 3.0, και η αναβάθμισή σας δεν εκτελείται ποτέ.

Με την τρέχουσα έκδοσή σας ακόμα στη θέση της, εκτελέστε:

```bash
php bin/console doctrine:migrations:sync-metadata-storage --no-interaction
php bin/console doctrine:migrations:version --add --all --no-interaction
```

Η πρώτη εντολή δημιουργεί τον πίνακα ιστορικού. Η δεύτερη επισημαίνει τις μεταναστεύσεις της τρέχουσας έκδοσής σας. Η `doctrine:migrations:version` αποτυγχάνει από μόνη της αν ο πίνακας δεν υπάρχει ακόμη, επομένως μην παραλείψετε την πρώτη.

Ελέγξτε το αποτέλεσμα:

```bash
php bin/console doctrine:migrations:status
```

Το `Executed` πρέπει να ισούται με το `Available`, και το `New` πρέπει να είναι 0. Τώρα αντιγράψτε τον κώδικα 3.0.

### Εκτέλεση της αναβάθμισης

Αντιγράψτε τον νέο κώδικα και στη συνέχεια είτε ανοίξτε το URL σας και ακολουθήστε τον οδηγό, είτε εκτελέστε τις μεταναστεύσεις από τη γραμμή εντολών:

```bash
php bin/console doctrine:migrations:migrate --no-interaction
php bin/console cache:clear --env=prod
php bin/console cache:warmup --env=prod
```

Ο διαδικτυακός οδηγός ανοίγει μόνο όσο εκκρεμούν μεταναστεύσεις. Μόλις ολοκληρωθεί η αναβάθμιση, απαντά ξανά με `409 Conflict`, κάτι που τον προστατεύει: ο οδηγός δεν διαθέτει δική του σύνδεση.

## Ενημέρωση του Chamilo 3.0.x

Οι δευτερεύουσες ενημερώσεις εντός του κλάδου 3.0 είναι πιο απλές.

### Διαδικασία ενημέρωσης

#### Χρήση πακέτου

1. **Δημιουργήστε αντίγραφο ασφαλείας** της βάσης δεδομένων και των αρχείων.
2. **Κατεβάστε την τελευταία έκδοση 3.0.x** από το [chamilo.org](https://chamilo.org/download):
3. **Αποσυμπιέστε τοπικά**

Για παράδειγμα (προσαρμόστε στην έκδοση που κατεβάσατε)

```bash
unzip chamilo-3.0.1.zip
```

4. **Αντιγράψτε τα αρχεία πάνω στην υπάρχουσα εγκατάσταση Chamilo**

   ```bash
   cp -r chamilo/* [your-chamilo-installation-path]/
   cp -r chamilo/.* [your-chamilo-installation-path]/
   ```
5. **Εκτελέστε τις μεταναστεύσεις βάσης δεδομένων:**

   ```bash
   php bin/console doctrine:migrations:migrate --no-interaction
   ```
6. **Καθαρίστε την προσωρινή μνήμη:**

   ```bash
   php bin/console cache:clear --env=prod
   php bin/console cache:warmup --env=prod
   ```
7. **Αλλάξτε τα δικαιώματα**

Προσαρμόστε στον χρήστη του διακομιστή ιστού σας:

```bash
sudo chown -R www-data: [your-chamilo-installation-path]/var
```

8. **Επαληθεύστε** ότι η πλατφόρμα φορτώνεται σωστά και ελέγξτε δειγματικά βασικές λειτουργίες.

#### Χρήση Git

Αν εγκαταστήσατε το Chamilo με Git, μπορείτε να ακολουθήσετε αυτές τις οδηγίες αντί των παραπάνω.

1. **Δημιουργήστε αντίγραφο ασφαλείας** της βάσης δεδομένων και των αρχείων.
2. **Ανακτήστε τον τελευταίο κώδικα** (ή κατεβάστε τη νέα έκδοση):

   ```bash
   git pull origin 3.0
   ```
3. **Ενημερώστε τις εξαρτήσεις PHP:**

   ```bash
   composer install --no-dev --optimize-autoloader
   ```
4. **Ενημερώστε τις εξαρτήσεις JavaScript και αναδημιουργήστε τα assets:**

   ```bash
   yarn install && yarn build
   ```
5. **Εκτελέστε τις μεταναστεύσεις βάσης δεδομένων:**

   ```bash
   php bin/console doctrine:migrations:migrate --no-interaction
   ```
6. **Καθαρίστε την προσωρινή μνήμη:**

   ```bash
   php bin/console cache:clear --env=prod
   php bin/console cache:warmup --env=prod
   ```
7. **Αλλάξτε τα δικαιώματα**

Προσαρμόστε στον χρήστη του διακομιστή ιστού σας:

```bash
sudo chown -R www-data: [your-chamilo-installation-path]/var
```

8. **Επαληθεύστε** ότι η πλατφόρμα φορτώνεται σωστά και ελέγξτε δειγματικά βασικές λειτουργίες.

### Αυτοματοποίηση ενημερώσεων

Για οργανισμούς που διαχειρίζονται πολλαπλές εγκαταστάσεις Chamilo, εξετάστε το ενδεχόμενο να αυτοματοποιήσετε τη διαδικασία ενημέρωσης με σενάριο:

```bash
#!/bin/bash
set -e

# Pull code
git pull origin 3.0

# Dependencies
composer install --no-dev --optimize-autoloader
yarn install && yarn build

# Database
php bin/console doctrine:migrations:migrate --no-interaction

# Cache
php bin/console cache:clear --env=prod
php bin/console cache:warmup --env=prod

echo "Update complete."
```

## Συμβουλές

* **Πάντα να δημιουργείτε αντίγραφο ασφαλείας πριν από την αναβάθμιση.** Οι μεταναστεύσεις βάσης δεδομένων δεν είναι αναστρέψιμες μέσω του περιβάλλοντος του Chamilo.
* **Δοκιμάστε πρώτα σε περιβάλλον staging** -- ιδίως για τη μετάβαση από 1.11.x σε 3.0, η οποία περιλαμβάνει σημαντική μετατροπή δεδομένων.
* **Προγραμματίστε τις αναβαθμίσεις σε παράθυρα συντήρησης** όταν οι χρήστες δεν χρησιμοποιούν ενεργά την πλατφόρμα.
* **Εγγραφείτε στις εκδόσεις του GitHub** στο [Github](https://github.com/chamilo/chamilo-lms/releases) χρησιμοποιώντας το εικονίδιο καμπάνας για να ειδοποιείστε για νέες εκδόσεις και ενημερώσεις ασφαλείας.
* **Αν ο οδηγός απαντά `Chamilo is already installed`**, δεν βρήκε εκκρεμή μετανάστευση. Εκτελέστε `php bin/console doctrine:migrations:status` για έλεγχο. Αν το `Executed` είναι 0 σε μια πλατφόρμα που λειτουργεί, το ιστορικό μεταναστεύσεων δεν είχε ποτέ αρχικοποιηθεί — δείτε [Αρχικοποιήστε πρώτα το ιστορικό μεταναστεύσεων](#seed-the-migration-history-first).
* **Η αυτόματη λήψη νέων εκδόσεων** δεν παρέχεται ακόμη στο Chamilo 3.0, αλλά πρόκειται για έργο σε εξέλιξη που ελπίζουμε να κυκλοφορήσει σύντομα. Η ίδια η αναβάθμιση εκτελείται ήδη από τον οδηγό ιστού.
