Skip to content
Guðni Natan Gunnarsson edited this page Sep 13, 2017 · 17 revisions

Velkominn á wikisíðu VEF3A3U!

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.

Mitt auka-tutorial

Þ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.

Hvað er gunicorn?

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.

Hvað er 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

Eitt rosalega mikilvægt í viðbót

Þú á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.

Hvernig á ég að nota static skrár?

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

Hvernig set ég upp mitt eigið lén?

Þ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: 502 villa

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.

Hvernig á ég að setja upp https?

asdasdasd

Hvernig á ég að nota gagnagrunn?

asdasdasd

Clone this wiki locally