Installation eines Django Projekts auf Uberspace

Django, Flask, Bottle, WSGI, CGI…
Antworten
Bemme90
User
Beiträge: 6
Registriert: Freitag 9. August 2019, 06:42

Hallo liebes Forum,

ich habe eine kleine Application entwickelt, welche auf Uberspace gehostet werden soll.

Da die von mir entwickelte Application recht klein ist, wollte ich ganz frisch mit einem neuen Projekt starten.

Also, Uberspace Account angelegt, SSH + SFTP eingerichtet und nach der Anleitung 1:1 vorgegangen:

https://lab.uberspace.de/guide_django.html

Beim Schritt:

Code: Alles auswählen

python3.6 ~/MyDjangoProject/manage.py migrate
Gibt es dann aber Probleme.

Es kommt die klassische nichtsaussagende Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "/home/mcju/icast/manage.py", line 21, in <module>
    main()
  File "/home/mcju/icast/manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "/home/mcju/.local/lib/python3.6/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/home/mcju/.local/lib/python3.6/site-packages/django/core/management/__init__.py", line 357, in execute
    django.setup()
  File "/home/mcju/.local/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/mcju/.local/lib/python3.6/site-packages/django/apps/registry.py", line 114, in populate
    app_config.import_models()
  File "/home/mcju/.local/lib/python3.6/site-packages/django/apps/config.py", line 211, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/lib64/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/mcju/.local/lib/python3.6/site-packages/django/contrib/auth/models.py", line 2, in <module>
    from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
  File "/home/mcju/.local/lib/python3.6/site-packages/django/contrib/auth/base_user.py", line 47, in <module>
    class AbstractBaseUser(models.Model):
  File "/home/mcju/.local/lib/python3.6/site-packages/django/db/models/base.py", line 117, in __new__
    new_class.add_to_class('_meta', Options(meta, app_label))
  File "/home/mcju/.local/lib/python3.6/site-packages/django/db/models/base.py", line 321, in add_to_class
    value.contribute_to_class(cls, name)
  File "/home/mcju/.local/lib/python3.6/site-packages/django/db/models/options.py", line 204, in contribute_to_class
    self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
  File "/home/mcju/.local/lib/python3.6/site-packages/django/db/__init__.py", line 28, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "/home/mcju/.local/lib/python3.6/site-packages/django/db/utils.py", line 201, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/home/mcju/.local/lib/python3.6/site-packages/django/db/utils.py", line 110, in load_backend
    return import_module('%s.base' % backend_name)
  File "/usr/lib64/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/home/mcju/.local/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 66, in <module>
    check_sqlite_version()
  File "/home/mcju/.local/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 63, in check_sqlite_version
    raise ImproperlyConfigured('SQLite 3.8.3 or later is required (found %s).' % Database.sqlite_version)
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).
Ist die Anleitung unvollständig? Habe ich etwas grundlegendes vergessen?
Ich bin über jeden Tipp sehr dankbar.

Gruß
Bemme90
__deets__
User
Beiträge: 14528
Registriert: Mittwoch 14. Oktober 2015, 14:29

Also ich finde die Fehlermeldung recht klar. Die SQLite Version auf deinem System ist zu alt. Entweder Upgrades du die. Oder du arbeitest mit einer anderen DB, zum Beispiel Postgres. Dem Django ORM sollte das egal sein. Und der Performance zuträglich.
Benutzeravatar
noisefloor
User
Beiträge: 3854
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

hier bei SO wird das auch ausführlich beschrieben inkl. möglicher Lösungen: https://stackoverflow.com/questions/556 ... ired-found

Wie __deets__ schon sagt könntest du eine andere DB nehmen. Oder, Plan B, Django 1.11 statt 2.2. Was das Problem aber nur bis April 2020 aufschiebt...

Doof ist halt, wenn das aktuelle Django eine SQLite Version braucht, gegen die das Default Python der Distro nicht gebaut ist. Aber das ist ein eigenes Thema ;-)

Gruß, noisefloor
Bemme90
User
Beiträge: 6
Registriert: Freitag 9. August 2019, 06:42

__deets__ hat geschrieben: Freitag 9. August 2019, 09:05 Also ich finde die Fehlermeldung recht klar. Die SQLite Version auf deinem System ist zu alt. Entweder Upgrades du die. Oder du arbeitest mit einer anderen DB, zum Beispiel Postgres. Dem Django ORM sollte das egal sein. Und der Performance zuträglich.
Genau deswegen habe ich auch versucht die SQL Lite-Version zu aktualisieren.
Er aktualisiert aber immer nur auf Version 3.7 und nicht die angezeigte Version 3.8.

In der Anleitung von Uberspace steht auch, dass man MySQL nutzen soll und sich die DB-Daten notieren soll.
Die Einrichtung der Datenbank steht jedoch erst weiter unten in der Anleitung, was eben total dämlich ist, wenn man das schon an einer früheren Stelle braucht.

Ich gucke mir das noch mal an. Auch den geteilten Link. Danke!
Bemme90
User
Beiträge: 6
Registriert: Freitag 9. August 2019, 06:42

So, ich habe es hinbekommen.

Eure Tipps mit der SQL-DB haben geholfen.
An der Stelle ist die Anleitung leider etwas unpräzise, besonders in der Reihenfolge der Ereignisse.

Für die Nachwelt, die genauso "dumm" ist, wie ich..
Vor der Migration des Servers muss man:

1. SQL-Client installieren

Code: Alles auswählen

pip3.6 install mysqlclient --user
2. Settings.py bearbeiten (für die Platzhalter 'xxx' siehe im Datenblatt & über [uberspace web domain list] nach)

Code: Alles auswählen

ALLOWED_HOSTS = ['xxx.uber.space']


3. DB-Eintrag in der Settings.py bearbeiten (für die Platzhalter 'xxx' siehe im Datenblatt & über [my_print_defaults client] nach)

Code: Alles auswählen

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'xxx',
        'USER': 'xxx',
        'PASSWORD': 'xxx',
        'HOST': 'localhost',
        'DEFAULT-CHARACTER-SET': 'xxx',
    }
}
4. Migration starten (für die Platzhalter 'xxx' dein Projektname wählen)

Code: Alles auswählen

python3.6 ~/xxx/manage.py migrate
Antworten