-
Notifications
You must be signed in to change notification settings - Fork 2
Home
Hér er hægt að finna flestar þær upplýsingar sem ég nýtti mér við django vefþjóninn í þessum áfanga.
Ég notaði í grunninn "Django 1.8.7 on 16.04" one-click-app frá DigitalOcean. Mikilvægustu hlutirnir sem það kom með er Django, gunicorn og nginx.
Ég notaði þetta fullt frá DigitalOcean community:
https://www.digitalocean.com/community/tutorials/how-to-use-the-django-one-click-install-image-for-ubuntu-16-04
Frábært django video tutorial:
https://www.youtube.com/playlist?list=PL6gx4Cwl9DGBlmzzFcLgDhKTTfNLfX1IK
ATH að þetta er gert á local vél án þess að hafa nginx on gunicorn.
Það er fullt af aukahlutum sem er ekki hægt að finna í þessu sem ég hef fundið hér og þar um netið. Það er tildæmis ekkert um static skrár, hvernig á að setja upp nginx, og https. Ég ætla að útskýra hvernig ég gerði þetta allt.
Gunicorn er í raun það sem keyrir Django. Ef þú horfir á vídeóin þá sérðu að venjulega þegar kóði breytist þá breytist vefsíðan líka dynamically. Þegar gunicorn er notað þarftu að keyra þessa skipun í hvert skipti sem þú vilt breyta einhverju:
service gunicorn restart
Gunicorn er öruggara og betra en innbyggði vefþjónnninn í django. Gunicorn virkar sem milliliðurinn hjá Django og Nginx.
Nginx er vefþjónnin sem Django keyrir á. Undir
/etc/nginx/sites-available
er hægt að finna skrá sem heitir einungis django. Þessi skrá er aðlal-nginx stillingaskráin og hún er rosalega mikilvæg. Mína útgáfu er hægt að finna hér: django
Í efstu línunum er hægt að sjá tenginguna við gunicorn.
Inni í server blokkinni er hægt að sjá eina mikilvægustu línuna.
# your Django project's static files - amend as required
location /static {
alias /home/django/django_project/django_project/static;
}
Þetta er fyrir static skrár eins og til dæmis allt css, javascript og jafnvel myndir og myndbönd. Það gæti þó verið betra að nota /media fyrir eitthvað af þessu. Ég fer meira í þessar static skrár eftir smá.
ATH að seinasti hlutinn á skránni sem byrjar á ssl_certificate er aðeins nauðsynlegur ef þú ætlar að nota https
Þú átt að vita ef þú horfðir á myndböndin (ég mæli mjög mikið með því) að það er ein skrá í django sem er ótrúlega mikilvæg: settings.py Ég mæli með því að skoða þessa skrá vandlega áður en þú byrjar að setja allt þetta upp.
Static skrár eru allar skrár sem serverinn mun ekki breyta eins og til dæmis css og javascript skrár. Með þessari uppsetningu sér Nginx um að færa þér static skrár en fyrst þarftu að benda á hvar static skrárnar eiga að vera fyrir nginx. ATH að þetta er ekki staðurinn sem þú lætur skrárnar, heldur aðeins hvar nginx getur fundið þær. Þetta lýtur svona út hjá mér en þú getur valið hvaða skrá sem er (algengt er að gera það undir /www/ skránni). Svona er þetta í /etc/nginx/sites-available/django:
# your Django project's static files - amend as required
location /static {
alias /home/django/django_project/django_project/static;
}
Næst þarftu að setja þessar línur allar inn í settings.py skránna. Láttu þær þar sem að það eru núþegar línur um static skrár.
PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
#Herna geturu latid static skrar fyrir oll app.
STATIC_PATH = os.path.join(BASE_DIR,'static')
# Thessi lina bendir a thad sama og ngingx skrain
STATIC_URL = '/static/' # You may find this is already defined as such.
STATICFILES_DIRS = (
STATIC_PATH,
# Herna laeturu static foldera fyrir hvert app. I thessa foldera seturu skrarnar.
os.path.join(BASE_DIR, 'routing/static'),
os.path.join(BASE_DIR, 'MVC/static'),
)
Síðan læturu static-skrárnar þínar inn og keyrir þessar skipanir (þarft að vera skráður inn sem root):
$ cd /home/django/django_project
$ python manage.py collectstatic
Það getur verið mjög þægilegt að nota lén í staðinn fyrir hreina IP tölu. Það er líka nauðsynlegt að hafa lén fyrir HTTPS. Fyrsta skrefið er að benda léninu á ip töluna. Það er til nóg af upplýsingum á netinu til að gera þetta. DigitalOcean bíður líka upp á DNS þjónustu ókeypis með vefþjóninum. Aðalvandinn kemur þegar þú reynir að tengjast við síðuna.
Þá færðu örugglega upp eitthvað svona:
Til þess að laga þetta þarftu að stilla lénið þitt sem allowed_host. Þetta er gert inni í settings.py skránni. Til að gera þetta þarftu fyrst að kommenta út neðstu línuna:
#ALLOWED_HOSTS = ip_addresses()
Í staðin seturu inn þessa línu: ALLOWED_HOSTS = [".þittlén.is", ".annaðlén.is"]
Taktu eftir því punktinum fyrir framana nafnið á léninu. Þetta gerir það að verkum að þú getur notað hvaða prefix sem er á undan léninu eins og til dæmis www.þittlén.is Þetta er allt inni í array svo þú getur látið eins mikið af lénum inn og þú villt. Ef þú villt geta tengst vefsíðunni með ip tölunni þá seturu bara ALLOWED_HOSTS += ip_addresses() í staðinn fyrir að kommenta út línuna.
asdasdasd
asdasdasd
Guðni Natan Gunnarsson, 2017
