Kør en Python-applikation på din hostingpakke
Med hvert pakke hos my.host har du mulighed for at køre en Python-applikation. Før du kan udrulle en applikation, skal du gennemgå nogle få trin. Vi forklarer, hvilke trin det er, i denne vidensbaseartikel.
Hvad er vigtigt at vide?
- Udfør kun disse trin, hvis der ikke kører vigtige websites på dit hosting. Ved at følge denne vidensbaseartikel vil du straks udrulle en Python-applikation til produktion, hvilket betyder, at der er risiko for, at du kan beskadige det nuværende website.
- Det anbefales først at oprette et staging- eller dev-miljø og ikke gå direkte i produktion.
- Vent med at indtaste følsomme data i testapplikationen, indtil du ved, hvordan sikkerheden i Django fungerer.
Oprettelse af applikationen
Gå til DirectAdmin. Du kan læse, hvordan du kommer dertil, i denne artikel: https://my.host/kb/hoe-log-ik-in-op-directadmin/
Når du er logget ind i DirectAdmin, skal du finde Extra Features i menuen til venstre og derefter Setup Python App.
Klik derefter på Create Application for at oprette din applikation.
Du kommer nu til følgende skærmbillede:
Her er nogle vigtige felter, du skal udfylde:
Python version: Den version af Python, du arbejder med. Det anbefales at bruge version 3.9 eller 3.10.
Application root: Dette er mappen, hvor du opretter applikationen. Du kan se den som public_html-mappen i webudviklingssammenhæng. Bemærk, at du ikke bør installere en undermappe for at undgå problemer med pip-installationsprogrammet.
Application URL: Standard-URL'en for din applikation. Du kan for eksempel indtaste je-domein.nl/applicatie eller lade den være tom for kun je-domein.nl.
Application startup file: Dette er mappen, hvorfra serveren henter din applikation. Du kan lade den være tom ved første opstart.
Application entry point: Dette er stedet, hvor du linker til din wsgi.py-fil. Du kan også lade dette stå tomt, så standardværdien udfyldes.
Kom godt i gang med din nye Python-applikation.
Når du har oprettet Python-applikationen, ser du følgende skærmbillede:
I modsætning til webudvikling placeres indholdet af dit projekt ikke i public_html-mappen, men i kennisbank-demo-mappen, som vi netop angav.
Hvad er virtualenv?
Hos my.host arbejder du med et virtualenv (virtuelt miljø). Et virtuelt "root"-miljø på din egen hostingpakke. Det gør det muligt at holde alle dine pip-pakker og Python-versioner adskilt, hvis du vil køre flere applikationer. Kort sagt sikrer det, at softwaren og modulerne ikke er i konflikt med hinanden, men forbliver sammen med den applikation, de hører til.
Du kan aktivere Virtualenv ved at indtaste følgende kommandoer via SSH:
Se billedet for, hvor du kan finde dit source-link i din app:
Vi bruger i øjeblikket:
source /home/jegebruikersnaam/virtualenv/kennisbankdemo/3.7/bin/activate && cd /home/jegebruikersnaam/kennisbankdemo
Ved du ikke, hvordan du logger ind via SSH? Så kan du bruge følgende vidensbaseartikel: https://my.host/kb/verbinden-met-ssh/
Hvad er Django, og hvordan installerer du det?
For at blive lidt inden for webudvikling handler denne vidensbaseartikel om at oprette en webapplikation. Et af de populære valg, du kan træffe, er Django-biblioteket. Du kan installere Django på din applikation via SSH:
pip install --upgrade pip
pip install django "mysqlclient<2.0.2"
Bagefter kan du oprette Django-projektet med følgende kommando. Sørg for også at inkludere . til sidst:
django-admin startproject begin .
Tilpasning af konfigurationsfilen efter behov
I din konfigurationsfil kan du angive ting som dine databaseoplysninger. Du kan tilpasse dette i filen settings.py. Denne fil bliver først aktiv, når du genstarter Python-applikationen. Du kan genstarte applikationen i adminpanelet for din Python-applikation:
Når du har genstartet Python-applikationen, kan du tilføje dit eget domæne til ALLOWED_HOSTS, så django også genkender det. Derefter tilføjer du STATIC_ROOT. På den måde fortæller du django, hvor de statiske filer fra din applikation skal gemmes. Du skal foretage disse ændringer i settings.py:
ALLOWED_HOSTS = ['jouw-domein.nl']
DEBUG = False
STATIC_ROOT = '/home/jegebruikersnaam/domains/jouw-domein.nl/public_html/static'
I samme fil angiver du også, hvor Django kan logge til:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'INFO',
'class': 'logging.FileHandler',
'filename': '/home/jouw-gebruikersnaam/project-naam/django.log',
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'INFO',
'propagate': True,
},
},
}Bemærk, at du først skal oprette django.log-filen. Det kan du gøre på kommandolinjen med følgende kommando:
touch django.log
Derefter angiver du, hvilken database der bruges:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'database_naam ',
'USER': 'database_gebruiker ',
'PASSWORD': 'database_wachtwoord',
'HOST': 'localhost',
'PORT': '3306',
}
}Kom godt i gang med den første testside
Nu hvor indstillingerne er gennemgået, er det tid til at teste, om applikationen virker. Det gør vi ved hjælp af en hello-world-side. Start appen som følger:
python manage.py startapp start
Dette opretter mappen 'start'. I denne mappe kan du ændre visningen for din testside. Erstat indholdet i start/views.py med følgende kodestykke:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hallo my.host kennisbank, de testpagina werkt!")
Med følgende kodestykke kan du sikre, at 'start' kan indlæses i hovedapplikationen (demo/urls.py):
from django.contrib import admin
from django.urls import path
from start.views import index
urlpatterns = [
path('', index),
path('admin/', admin.site.urls),
]
Som sidste trin skal du tilføje ændringerne til listen over INSTALLED_APPS i settings.py; her indsætter du strengen* 'start'.
*En streng er en datatype, der kun indeholder bogstaver.
De sidste trin før du går live
Koden til testsiden er nu færdig, og du kan næsten gå live med din testapplikation. Der er et par ting mere, som er gode at udføre. En af dem er virtualenv, som blev gennemgået tidligere i denne vidensbaseartikel. Brug kommandoen til at aktivere din virtualenv (se også overskriften hvad er virtualenv?).
Derefter kan du bruge filen manage.py til at forberede din applikation til brug:
python manage.py collectstatic
python manage.py migrate
python manage.py createsuperuser
Ligesom for eksempel WordPress har Django også en adminsektion:
- Collectstatic: Dette placerer CSS- og JavaScript-filerne i mappen public_html.
- Migrate: Dette er den indledende databasestruktur, som Django-admin har brug for.
- Createsuperuser: Dette er kontoen med flest rettigheder, også kendt som administratorkontoen.
Aktivering af applikationen
Derefter er det endelig tid til at aktivere applikationen; du skal blot fortælle python, hvor den kan indlæse applikationen. Gå til adminpanelet i python, og ændr passenger_wsgi.py til demo.py. Gem ændringerne, og klik på genstart for at anvende ændringerne.
Som du kan se, har vi vist vores testside:
En fungerende adminsektion:
Kendte fejlkoder
403 Forbidden: Kontrollér, om applikationen er aktiv, og om den korrekte wsgi.py er konfigureret.
404 Not found: Dette betyder, at en fil eller flere filer ikke kan findes, hvilket forhindrer applikationen i at indlæse. Kontrollér igen indstillingerne, du indtastede i Python-adminsektionen.
500 Internal Server Error: Se Django-loggen for yderligere oplysninger.
Can’t acquire lock for app:
Ingen styling: Det kan ske, at Django-adminsektionen ikke ser ud, som den skal. Kontrollér, om den statiske mappe i public_html-mappen er fyldt med filer. Hvis dette ikke er tilfældet, skal du kontrollere STATIC_ROOT-indstillingen, og om STATIC_URL peger på den korrekte statiske mappe, og bruge følgende kommando:
python manage.py collectstatic
Har du stadig spørgsmål? Kontakt os.