Kjøre en Python-applikasjon på hostingpakken din

Med hvert abonnement hos my.host har du muligheten til å kjøre en Python-applikasjon. Før du kan distribuere en applikasjon, må du gjennom noen få steg. Vi forklarer hvilke steg det er i denne kunnskapsbaseartikkelen.

Hva er viktig å vite?

  • Utfør kun disse stegene hvis det ikke kjører viktige nettsteder på hostingen din. Ved å følge denne kunnskapsbaseartikkelen vil du umiddelbart distribuere en Python-applikasjon til produksjon, noe som betyr at det er en sjanse for at du kan skade det nåværende nettstedet.
  • Det anbefales å først opprette et staging- eller dev-miljø og ikke gå rett til produksjon.
  • Vent med å legge inn sensitive data i testapplikasjonen til du vet hvordan sikkerheten i Django fungerer.

 

Opprette applikasjonen

Gå til DirectAdmin. Hvordan du kommer dit kan du lese i denne artikkelen: https://my.host/kb/hoe-log-ik-in-op-directadmin/

Når du er logget inn i DirectAdmin, finner du Extra Features i menyen til venstre og deretter Setup Python App.

opprett applikasjon via DirectAdmin


Deretter klikker du på Create Application for å opprette applikasjonen.

opprett applikasjon

 

Du kommer nå til følgende skjermbilde:

applikasjonsinnstillinger

Her er noen viktige felt du må fylle ut:

Python version: Versjonen av Python du jobber med. Det anbefales å bruke versjon 3.9 eller 3.10.

Application root: Dette er mappen der du oppretter applikasjonen. Du kan se på den som public_html-mappen i webutvikling. Merk at du ikke bør installere en undermappe for å unngå problemer med pip-installasjonsprogrammet.

Application URL: Standard-URL-en til applikasjonen din. Du kan for eksempel skrive inn je-domein.nl/applicatie eller la feltet stå tomt for kun je-domein.nl.

Application startup file: Dette er mappen der applikasjonen hentes av serveren. Du kan la det stå tomt første gang du starter opp.

Application entry point: Dette er stedet der du kobler til wsgi.py-filen din. Du kan også la dette stå tomt slik at standardverdien fylles inn.

 

Kom i gang med den nye Python-applikasjonen din.

Når du har opprettet Python-applikasjonen, vil du se følgende skjermbilde:

applikasjon opprettet

I motsetning til webutvikling skal innholdet i prosjektet ditt ikke ligge i public_html-mappen, men i kennisbank-demo-mappen som vi nettopp angav. 

Hva er virtualenv?

Hos my.host jobber du med en virtualenv (virtuelt miljø). Et virtuelt "root"-miljø på din egen hostingpakke. Dette gjør at du kan holde alle pip-pakkene og Python-versjonene dine adskilt dersom du ønsker å kjøre flere applikasjoner. Kort sagt sørger det for at programvaren og modulene ikke kommer i konflikt med hverandre, men holder seg ryddig sammen med applikasjonen de tilhører.

Du kan aktivere Virtualenv ved å skrive inn følgende kommandoer via SSH:

Merk at følgende er et eksempel. Du finner din egen source path i appen, og du kan enkelt kopiere den for bruk i SSH-økten din.

Se bildet for hvor du finner source-lenken i appen din:

Vi bruker for øyeblikket:

source /home/jegebruikersnaam/virtualenv/kennisbankdemo/3.7/bin/activate && cd /home/jegebruikersnaam/kennisbankdemo 
Merk at denne kommandoen varierer per installasjon. Koden over er kun til illustrasjon.

Vet du ikke hvordan du logger inn via SSH? Da kan du bruke følgende kunnskapsbaseartikkel: https://my.host/kb/verbinden-met-ssh/

Hva er Django, og hvordan installerer du det?

For å holde oss litt innenfor webutvikling, handler denne kunnskapsbaseartikkelen om å opprette en webapplikasjon. Et av de populære valgene du kan ta, er Django-biblioteket. Du kan installere Django på applikasjonen din via SSH:

pip install --upgrade pip
pip install django "mysqlclient<2.0.2"


Etterpå kan du opprette Django-prosjektet med følgende kommando. Sørg for at du også inkluderer . på slutten:

 django-admin startproject begin .

Tilpasse konfigurasjonsfilen etter behov

I konfigurasjonsfilen din kan du angi ting som databaseopplysningene dine. Du kan tilpasse dette i settings.py-filen. Denne filen blir først aktiv når du starter Python-applikasjonen på nytt. Du kan starte applikasjonen på nytt i administrasjonspanelet for Python-applikasjonen din:

start applikasjonen på nytt

Etter at du har startet Python-applikasjonen på nytt, kan du legge til ditt eget domene i ALLOWED_HOSTS slik at django også gjenkjenner det. Deretter legger du til STATIC_ROOT. Slik forteller du django hvor de statiske filene fra applikasjonen din skal lagres. Du må gjøre disse endringene i settings.py:

ALLOWED_HOSTS = ['jouw-domein.nl']
DEBUG = False
STATIC_ROOT = '/home/jegebruikersnaam/domains/jouw-domein.nl/public_html/static'

I samme fil angir 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,
},
},
}

Merk at du først må opprette django.log-filen. Du kan gjøre dette på kommandolinjen med følgende kommando:

touch django.log

Deretter angir du hvilken database som brukes:

 DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'database_naam ',
'USER': 'database_gebruiker ',
'PASSWORD': 'database_wachtwoord',
'HOST': 'localhost',
'PORT': '3306',
}
}


Starte med den første testsiden

Nå som innstillingene er gjennomgått, er det på tide å teste om applikasjonen fungerer. Dette gjør vi med en hello-world-side. Start appen slik:

python manage.py startapp start

Dette oppretter katalogen 'start'. I denne katalogen kan du endre visningen for testsiden din. Erstatt innholdet i start/views.py med følgende kodebit:

from django.http import HttpResponse

def index(request):
return HttpResponse("Hallo my.host kennisbank, de testpagina werkt!")

Med følgende kodebit kan du sørge for at 'start' kan lastes inn i hovedapplikasjonen (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 siste trinn legger du endringene til i listen over INSTALLED_APPS i settings.py; her setter du inn strengen* 'start'.

*En streng er en datatype som bare inneholder bokstaver.

De siste stegene før du går live

Koden for testsiden er nå fullført, og du kan nesten gå live med testapplikasjonen din. Det er noen flere ting som er lurt å utføre. En av disse tingene er virtualenv som ble omtalt tidligere i denne kunnskapsbaseartikkelen. Bruk kommandoen for å aktivere virtualenv-et ditt (se også overskriften hva er virtualenv?).

Deretter kan du bruke manage.py-filen til å klargjøre applikasjonen din for bruk:

python manage.py collectstatic
python manage.py migrate
python manage.py createsuperuser

På samme måte som for eksempel WordPress har Django også en administrasjonsdel: 

  • Collectstatic: Dette plasserer CSS- og JavaScript-filene i public_html-mappen.
  • Migrate: Dette er den innledende databasestrukturen som Django-administrasjonen trenger.
  • Createsuperuser: Dette er kontoen med flest tillatelser, også kjent som administratorkontoen.

Aktivere applikasjonen

Deretter er det endelig på tide å aktivere applikasjonen; du trenger bare å fortelle python hvor den kan laste applikasjonen. Gå til administrasjonspanelet i python og endre passenger_wsgi.py til demo.py. Lagre endringene og klikk på restart for å bruke endringene.

Som du kan se, har vi vist testsiden vår på en vellykket måte:

testside på nett

 

En fungerende adminseksjon:

adminside

Kjente feilkoder


403 Forbidden: Sjekk om applikasjonen er aktiv og om riktig wsgi.py er konfigurert.

404 Not found: Dette betyr at en fil eller flere filer ikke kan finnes, noe som hindrer applikasjonen i å laste inn. Sjekk innstillingene du la inn i Python-adminseksjonen på nytt. 

500 Internal Server Error: Se i Django-loggen for mer informasjon.

Can’t acquire lock for app:

Ingen styling: Det kan hende at Django-adminseksjonen ikke ser ut slik den skal. Sjekk om static-mappen i public_html-mappen inneholder filer. Hvis dette ikke er tilfelle, sjekk STATIC_ROOT-innstillingen og om STATIC_URL peker til riktig static-mappe, og bruk følgende kommando:

python manage.py collectstatic


Har du fortsatt spørsmål? Ta kontakt.