Actualizarea Weblate#

Actualizări ale imaginilor Docker#

Imaginea oficială Docker (vezi Instalarea folosind Docker) are integrate toate etapele de actualizare Weblate. De obicei, nu sunt necesari pași manuali în afară de extragerea celei mai recente versiuni.

Instrucțiuni generice de actualizare#

Înainte de actualizare, vă rugăm să verificați cerințele actuale Cerințe software, deoarece acestea s-ar putea să se fi schimbat. După ce toate cerințele sunt instalate sau actualizate, vă rugăm să ajustați fișierul settings.py pentru a corespunde modificărilor din configurație (consultați settings_example.py pentru valorile corecte).

Verificați întotdeauna Instrucțiuni specifice versiunii înainte de actualizare. În cazul în care săriți peste unele versiuni, vă rugăm să urmați instrucțiunile pentru toate versiunile pe care le săriți în actualizare. Uneori este mai bine să faceți upgrade la o versiune intermediară pentru a asigura o migrare fără probleme. Actualizarea pe mai multe versiuni ar trebui să funcționeze, dar nu este la fel de bine testată ca actualizările pe o singură versiune.

Notă

Este recomandat să efectuați o copie de rezervă completă a bazei de date înainte de actualizare, astfel încât să puteți reface baza de date în cazul în care actualizarea eșuează; consultați Copierea de rezervă și mutarea Weblate.

  1. Opriți procesele wsgi și Celery. Actualizarea poate efectua modificări incompatibile în baza de date, așa că este întotdeauna mai sigur să evitați procesele vechi care rulează în timpul actualizării.

  2. Actualizați codul Weblate.

    În cazul instalațiilor pip, acest lucru poate fi realizat prin:

    pip install -U "Weblate[all]==version"
    

    Sau, dacă doriți doar să obțineți cea mai recentă versiune lansată:

    pip install -U "Weblate[all]"
    

    Dacă nu doriți să instalați toate dependențele opționale, instalați-le:

    pip install -U Weblate
    

    Cu Git checkout, trebuie să preluați noul cod sursă și să vă actualizați instalarea:

    cd weblate-src
    git pull
    # Update Weblate inside your virtualenv
    . ~/weblate-env/bin/pip install -e '.[all]'
    # Install dependencies directly when not using virtualenv
    pip install --upgrade -r requirements.txt
    # Install optional dependencies directly when not using virtualenv
    pip install --upgrade -r requirements-optional.txt
    
  3. Noua versiune Weblate ar putea avea noi Dependențe opționale, vă rugăm să verificați dacă acestea acoperă caracteristicile pe care le doriți.

  4. Actualizați fișierul de configurare, consultați settings_example.py sau Instrucțiuni specifice versiunii pentru pașii necesari.

  5. Actualizarea structurii bazei de date:

    weblate migrate --noinput
    
  6. Colectează fișierele statice actualizate (a se vedea Rularea serverului și Servirea fișierelor statice):

    weblate collectstatic --noinput --clear
    
  7. Comprimarea fișierelor JavaScript și CSS (opțional, consultați Comprimarea activelor clienților):

    weblate compress
    
  8. Dacă executați versiunea din Git, ar trebui, de asemenea, să regenerați fișierele locale de fiecare dată când faceți actualizări. Puteți face acest lucru prin invocarea:

    weblate compilemessages
    
  9. Verificați dacă configurația dumneavoastră este sănătoasă (consultați și Configurarea producției):

    weblate check --deploy
    
  10. Reporniți Celery worker (vezi Sarcini de fundal folosind Celery).

Instrucțiuni specifice versiunii#

Schimbat în versiunea 5.0: Version specific instructions are now included in the release notes, see Weblate 5.0.2.

Upgrade from an older major version#

Upgrades across major versions are not supported. Always upgrade to the latest patch level for the initial major release. Upgrades skipping this step are not supported and will break.

If you are upgrading from the 2.x release, always first upgrade to 3.0.1 and then continue upgrading within the 3.x series.

If you are upgrading from the 3.x release, always first upgrade to 4.0.4 and then continue upgrading within the 4.x series.

Migrarea de la alte baze de date la PostgreSQL#

Dacă executați Weblate pe o altă bază de date decât PostgreSQL, ar trebui să luați în considerare migrarea la PostgreSQL, deoarece Weblate funcționează cel mai bine cu acesta. Următorii pași vă vor ghida în migrarea datelor între bazele de date. Vă rugăm să nu uitați să opriți ambele servere Web și Celery înainte de migrare, altfel s-ar putea să vă treziți cu date incoerente.

Crearea unei baze de date în PostgreSQL#

De obicei, este o idee bună să executați Weblate într-o bază de date separată și într-un cont de utilizator separat:

# If PostgreSQL was not installed before, set the main password
sudo -u postgres psql postgres -c "\password postgres"

# Create a database user called "weblate"
sudo -u postgres createuser -D -P weblate

# Create the database "weblate" owned by "weblate"
sudo -u postgres createdb -E UTF8 -O weblate weblate

Migrarea cu ajutorul descărcărilor Django JSON#

Cea mai simplă abordare pentru migrare este utilizarea de descărcări JSON din Django. Acest lucru funcționează bine pentru instalațiile mai mici. Pe site-urile mai mari s-ar putea să doriți să folosiți în schimb pgloader, vedeți Migrarea la PostgreSQL folosind pgloader.

  1. Adăugați PostgreSQL ca conexiune suplimentară la baza de date în settings.py:

DATABASES = {
    "default": {
        # Database engine
        "ENGINE": "django.db.backends.mysql",
        # Database name
        "NAME": "weblate",
        # Database user
        "USER": "weblate",
        # Database password
        "PASSWORD": "password",
        # Set to empty string for localhost
        "HOST": "database.example.com",
        # Set to empty string for default
        "PORT": "",
        # Additional database options
        "OPTIONS": {
            # In case of using an older MySQL server, which has MyISAM as a default storage
            # 'init_command': 'SET storage_engine=INNODB',
            # Uncomment for MySQL older than 5.7:
            # 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
            # If your server supports it, see the Unicode issues above
            "charset": "utf8mb4",
            # Change connection timeout in case you get MySQL gone away error:
            "connect_timeout": 28800,
        },
    },
    "postgresql": {
        # Database engine
        "ENGINE": "django.db.backends.postgresql",
        # Database name
        "NAME": "weblate",
        # Database user
        "USER": "weblate",
        # Database password
        "PASSWORD": "password",
        # Set to empty string for localhost
        "HOST": "database.example.com",
        # Set to empty string for default
        "PORT": "",
    },
}
  1. Executați migrările și renunțați la toate datele inserate în tabele:

weblate migrate --database=postgresql
weblate sqlflush --database=postgresql | weblate dbshell --database=postgresql
  1. Aruncarea bazei de date tradiționale și importul în PostgreSQL

weblate dumpdata --all --output weblate.json
weblate loaddata weblate.json --database=postgresql
  1. Ajustați DATABASES pentru a utiliza doar baza de date PostgreSQL ca bază de date implicită, eliminați conexiunea veche.

Weblate ar trebui să fie acum gata să ruleze din baza de date PostgreSQL.

Migrarea la PostgreSQL folosind pgloader#

pgloader este un instrument generic de migrare a datelor către PostgreSQL. Îl puteți utiliza pentru a migra baza de date Weblate.

  1. Ajustați fișierul settings.py pentru a utiliza PostgreSQL ca bază de date.

  2. Migrați schema din baza de date PostgreSQL:

    weblate migrate
    weblate sqlflush | weblate dbshell
    
  3. Rulați pgloader pentru a transfera datele. Următorul script poate fi folosit pentru a migra baza de date, dar poate doriți să aflați mai multe despre pgloader pentru a înțelege ce face și pentru a-l adapta la configurația dumneavoastră:

    LOAD DATABASE
         FROM      mysql://weblate:password@localhost/weblate
         INTO postgresql://weblate:password@localhost/weblate
    
    WITH include no drop, truncate, create no tables, create no indexes, no foreign keys, disable triggers, reset sequences, data only
    
    ALTER SCHEMA 'weblate' RENAME TO 'public'
    ;
    

Migrarea de la Pootle#

As Weblate was originally written as replacement from Pootle, it is supported to migrate user accounts from Pootle. You can dump the users from Pootle and import them using importusers.