Django

„Django“ programos kūrimas „Ubuntu Server“

„Django“ programos kūrimas „Ubuntu Server“
„Django“ yra bendra svetainių, žiniatinklio programų ir žiniatinklio API kūrimo platforma. Yra daug privalumų naudojant „Django“ sistemą savo projektui kaip įrankį, o jei nesate tikri, kad tai tinkama, jums reikia tik atkreipti dėmesį į daugybę didelių vardų prekės ženklų, naudojančių „Django“ savo kamino.

Pirmą kartą įdiegti „Django“ į gamybos aplinką gali būti nelengva užduotis. Dažnai kūrėjai debesyje paleidžia „Linux“ egzempliorių savo gamybos aplinkai.

Šioje pamokoje parodysime, kaip paleisti „Django“ gamyboje, naudojant naują „Ubuntu“ egzempliorių.

Darysime prielaidą, kad visas redagavimas atliktas serveryje ir komandas vykdote kaip root.

Šiai pamokai mes naudojame „Ubuntu 18“.04.2 LTS

Projekto vartotojo sukūrimas

Mes sukursime naują vartotoją „django“, kad galėtume paleisti mūsų programą. Tai suteikia nedidelę saugumo naudą.

Norėdami sukurti naują vartotoją:

useradd -m django

The -m vėliava sukuria naują namų katalogą: / namai / django.

„Python“ aplinkos nustatymas

Pirmiausia pirmiausia: atnaujinkite paketų sąrašus naudodami apt-get atnaujinimas

„Ubuntu 18“.04 laivai su „Python 3“.6, bet jis nepateikiamas kartu su „pip“, kurį turėsite įdiegti savo priklausomybėms.

apt-get install python3-pip

Dabar, kai turime „pip“, sukurkime virtualią aplinką. Virtuali aplinka padeda išvengti konfliktų su „Linux“ naudojamais „Python“ paketais.

pip3 įdiekite virtualenv
cd / home / django
virtualenv env

Dabar sukūrėte virtualų „Python 3“.6 aplinka / home / django / env aplankas, kurį galima suaktyvinti naudojant šią komandą: Dabar, kai turime pip, sukursime virtualią aplinką. Virtuali aplinka padeda išvengti konfliktų su „Linux“ naudojamais „Python“ paketais.

source / home / django / env / bin / aktyvuoti

Django projekto rengimas

Šioje pamokoje sukursime laikiną „Django“ projektą. Jei diegiate savo kodą, turėsite jį įkelti į serverį. Dirbsime namų kataloge / home / django.Django projekto rengimas

Sukurkime „Django“ projektą:

cd / home / django
šaltinis env / bin / aktyvuoti
pip įdiegti django
„django-admin“ pradžios projekto pamoka

Patikrinkite, ar viskas veikia paleisdami:

kompaktinio disko pamoka
pitonas valdyti.py paleidimo serveris 0.0.0.0:80

Mūsų „Ubuntu“ egzempliorius veikia 178.128.229.34, todėl prisijungsime prie http: // 178.128.229.34.Patikrinkite, ar viskas veikia paleisdami:

Tikriausiai pamatysite kažką tokio:

Norėdami tai išspręsti, mes redaguosime / home / django / tutorial / tutorial / settings.py. Rasti ALLOWED_HOSTS = [] ir nustatykite jį į:

ALLOWED_HOSTS = [
"178.128.229.34 '# pakeiskite tai savo serverio IP adresu
arba domeno vardą, kurį naudojate prisijungdami
]

Dabar grįžkime į http: // 178.128.229.34:

Puiku! Mes prisijungėme!

„PostgreSQL“, duomenų bazės, nustatymas

Pagal numatytuosius nustatymus Django naudoja duomenų bazę SQLite3. Deja, „SQLite3“ neleidžia rašyti vienu metu. Jei jūsų svetainėje kada nors yra tik vienas vartotojas, redaguojantis duomenis, o kiti lankytojai tik skaito puslapius, tai gali būti tikslinga. Bet jei vienu metu duomenis redaguoja keli žmonės, tikriausiai norite naudoti kitą vidinę programą.

Dažniausiai galima pasirinkti „PostgreSQL“ ir „MySQL“. Šiai pamokai eisime su „PostgreSQL“.

Pradėkite diegdami „PostgreSQL“:

apt-get install postgresql

Tada paleiskite duomenų bazės apvalkalą psql. Pagal numatytuosius nustatymus tik postgres vartotojas gali prisijungti prie duomenų bazės, todėl pirmiausia turėsime autentifikuoti kaip tas vartotojas:

su - postgres
psql

Tada mums reikia duomenų bazės ir vartotojo, kad galėtumėte pasiekti tą duomenų bazę:

sukurti duomenų bazės pamoką;
sukurti vartotojo tutorial_user su užšifruotu slaptažodžiu 'tutorial_password';
suteikti visas privilegijas duomenų bazės mokymo programoje tutorial_user;

Dabar įveskite exit arba dukart paspauskite „Ctrl-D“: vieną kartą, jei norite išeiti iš psql, ir vieną kartą, norėdami išeiti iš postgresuser apvalkalo.

Puiku! Dabar mes turime sukūrę savo duomenų bazę ir vartotoją. Patikrinkime, ar galime prisijungti prie savo duomenų bazės.

Pabandysime atidaryti duomenų bazės apvalkalą, šį kartą prisijungdami prie duomenų bazės, kurią sukūrėme su savo sukurtu vartotoju:

psql -Ututorial_user -dtutorial -h127.0.0.1 -W

Parodoje įveskite mūsų sukurtą slaptažodį: tutorial_password.

Jei matote duomenų bazės apvalkalą, jums pavyko. Jei pamatysite klaidų, turėsite grįžti atgal ir išsiaiškinti, kas negerai.

„Django“ prijungimas prie duomenų bazės

Kad „Django“ būtų prijungtas prie duomenų bazės, pirmiausia turime įdiegti „Python PostgreSQL“ adapterį:

„pip install psycopg2-binary“

Tada atsiverskime / home / django / tutorial / tutorial / settings.pyir sukonfigūruoti ryšį.

Raskite savo dabartinį duomenų bazės ryšį; jei jo nekeisite, tai gali atrodyti maždaug taip:

DUOMENŲ BAZĖS =
'numatytas':
„VARIKLIS“: „django.db.užpakalinės pusės.sqlite3 ',
„PAVADINIMAS“: os.kelias.prisijungti (BASE_DIR, 'db.sqlite3 '),

Norėdami prisijungti prie „PostgreSQL“, pakeisime jį taip:

DUOMENŲ BAZĖS =
'numatytas':
„VARIKLIS“: „django.db.užpakalinės pusės.postgresql_psycopg2 ',
„NAME“: „pamoka“,
„USER“: „tutorial_user“,
„PASSWORD“: „tutorial_password“,
„HOST“: „127.0.0.1 ',
„Uostas“: „5432“,

Išbandykime ryšį:

cd / home / django / pamoka
pitonas valdyti.py paleidimo serveris 0.0.0.0:80

Vėl turėtumėte galėti apsilankyti savo svetainėje (mums šiuo adresu: http: // 178.128.229.34 /, bet pakeiskite tai savo IP ar pagrindinio kompiuterio vardu).

Jei viskas gerai, galime tęsti.

Nginx, žiniatinklio serverio, nustatymas

Kai bėgsi pitonas valdyti.py runerver, naudojate „Django“ kūrimo serverį. Tai puikiai tinka vietos plėtrai, tačiau, kaip ir naudojant „SQLite3“, tai netinka gamybai.

Gamybinių žiniatinklio serverių pasirinkimas yra „nginx“ ir „Apache“. Šioje pamokoje naudosime „nginx“.

Įdiekite „nginx“ naudodami šiuos veiksmus:

apt-get install nginx

Dabar, jei viskas gerai veikė, „nginx“ turėtų veikti 80 prievade. Eik į priekį ir patikrink savo svetainę; turėtumėte pamatyti:

Puiku, todėl „nginx“ veikia ir veikia! Tada turėsime jį sukonfigūruoti, kad galėtume bendrauti su Django. Atidarykite „nginx“ konfigūracijos failą, esantį / etc / nginx / sites-available / default. Pakeiskime failą taip:

prieš srovę django
serveris 127.0.0.1: 8000;

serveris
klausytis 80;
vieta /
try_files $ uri @send_to_django;

vieta @send_to_django
proxy_set_header Pagrindinis kompiuteris $ http_host;
proxy_redirect išjungtas;
proxy_pass http: // django;

Išbandykite konfigūracijos failą paleisdami „nginx -t“. Jei viskas gerai, galime perkrauti paleisdami „nginx -s reload“.

Dabar, apsilankę savo svetainėje, pamatysite:

Kai tik tai pamatysite, tai reiškia, kad „nginx“ negalėjo perduoti užklausos ankstesniame etape. Šiuo metu taip yra todėl, kad bandoma perduoti prašymą 127.0.0.1: 8000, bet tuo klausymu nėra jokio proceso klausymosi.

Paleiskite „Django“ kūrimo serverį ir bandykite dar kartą:

cd / home / django / pamoka
pitonas valdyti.127.0.0.1: 8000

ir dar kartą apsilankykite savo svetainėje. Turėtumėte pamatyti savo „Django“ programą.

Django montavimas ant Gunicorno

Atminkite, kad nenorime naudoti „Django“ kūrimo serverio gamyboje. Vietoj to, norėdami paleisti „Django“, naudosime tinklo serverio šliuzo sąsajos (WSGI) serverį. „Nginx“ perduos užklausą WSGI serveriui, kuriame veikia „Django“.

Dažniausiai WSGI serveryje galima pasirinkti „Gunicorn“ ir „uWSGI“. Šiai pamokai naudosime „Gunicorn“.

Įdiekime „Gunicorn“:

Įdiekite ginklaveiksnį

Tada mes galime pradėti ginklaveiksnį taip:

cd / home / django / pamoka
ginklo rago pamoka.wsgi

Dabar turėtumėte galėti apsilankyti savo svetainėje ir pamatyti, kaip tinkamai veikia jūsų programa.

„Gunicorn“ paleidimas kaip paslauga

Yra keletas problemų, susijusių su tokio ginkluotės paleidimu:

  1. Jei uždarysime SSH sesiją, ginkluotės procesas sustos.
  2. Jei serveris paleidžiamas iš naujo, pistoleto procesas neprasideda.
  3. Procesas veikia kaip šakninis. Jei įsilaužėliai randa išnaudojimą mūsų programos kode, jie galės vykdyti komandas kaip root. Mes to nenorime; bet todėl mes sukūrėme djangouser!

Norėdami išspręsti šias problemas, „Gunicorn“ vykdysime kaip sistemos paslaugą.

cd / home / django
mkdir bin
cd / home / django / bin
palieskite paleidimo serverį.sh

Pradiniame serveryje.sh:

cd / home / django
šaltinis env / bin / aktyvuoti
kompaktinio disko pamoka
ginklo rago pamoka.wsgi

Dabar galite išbandyti scenarijų:

cd / home / django / bin
bash paleidimo serveris.sh
# apsilankykite savo svetainėje, ji turėtų veikti

Dabar mes sukuriame „systemun“ paslaugą „Gunicorn“. Sukurkite / etc / systemd / system / gunicorn.serviceas taip:

[Vienetas]
Aprašymas = Gunicorn
Po = tinklas.taikinys
[Paslauga]
Tipas = paprastas
Vartotojas = django
ExecStart = / home / django / bin / start-server.sh
Paleisti iš naujo = nepavykus
[Diegti]
WantedBy = daugeliui vartotojų.taikinys

Dabar įgalinkime paslaugą ir paleisk ją

systemctl įjungti šautuvą
systemctl pradėti šaunuolį

Šiuo metu turėtumėte matyti savo svetainę.

Ginklą galime išjungti taip:

systemctl sustabdyti šaunuolį

Ir jūs turėtumėte pamatyti 502 blogus vartus.

Galiausiai patikrinkime įkrovos ciklą:

systemctl pradėti šaunuolį
perkrauti dabar

Kai jūsų mašina vėl prisijungs, turėtumėte pamatyti, kad jūsų svetainė veikia.

Statiniai failai

Jei apsilankysite „Django“ administratoriaus skydelyje savo svetainėje adresu / admin / (mums tai http: // 178.128.229.34 / admin /), pastebėsite, kad statiniai failai neįkeliami tinkamai.

Turėsime sukurti naują aplanką statiniams failams:

cd / home / django
mkdir statinis

Tada mes sakome „Django“, kur ji turėtų įdėti statinius failus redaguodama / home / django / tutorial / tutorial / settings.py ir pridėdamas:

STATIC_ROOT = '/ namai / django / statiniai /'

Dabar galime surinkti statinius failus:

cd / home / django
šaltinis env / bin / aktyvuoti
kompaktinio disko pamoka
pitonas valdyti.py kolekcinis

Galiausiai turime pasakyti „nginx“, kad ji teiktų tuos statinius failus.

Atidarykime / etc / nginx / sites-available / default ir pridėkime šiuos duomenis tiesiai virš savo vietos / bloko:

vieta / statinis /
šaknis / namai / django;
try_files $ uri = 404;

Visas failas dabar turėtų atrodyti taip:

prieš srovę django
serveris 127.0.0.1: 8000;

serveris
klausytis 80;
vieta / statinis /
šaknis / namai / django;
try_files $ uri = 404;

vieta /
try_files $ uri @send_to_django;

vieta @send_to_django
proxy_set_header Pagrindinis kompiuteris $ http_host;
proxy_redirect išjungtas;
proxy_pass http: // django;

Mes galime iš naujo įkelti failą naudodami „nginx -s“ iš naujo

Ir voila! Jūsų statiniai failai dabar veiks visiškai.

Išvada

Šiuo metu jūsų „Django“ programa veikia tinkamai. Jei turite tam tikrų specialių reikalavimų, gali tekti nustatyti talpyklą, pvz., „Redis“, arba pranešimų eilę, pvz., „Rabbit MQ“. Taip pat galite nustatyti nuolatinį diegimą, nes diegimo procedūra gali užtrukti.

Kitas svarbus žingsnis yra atlikti atitinkamus veiksmus, kad apsaugotumėte savo „Ubuntu“ mašiną. Kitu atveju galite pastebėti, kad jūsų serveris elgiasi netinkamai!

Sėkmės!

Geriausi „Linux“ žaidimų distristai 2021 m
„Linux“ operacinė sistema nuėjo ilgą kelią nuo originalios, paprastos, serverio išvaizdos. Ši OS pastaraisiais metais nepaprastai patobulėjo ir dabar ...
Kaip užfiksuoti ir perduoti savo žaidimų sesiją sistemoje „Linux“
Anksčiau žaidimai buvo laikomi tik pomėgiu, tačiau laikui bėgant lošimų pramonė labai augo technologijų ir žaidėjų skaičiaus atžvilgiu. Žaidimų audito...
Geriausi žaidimai, kuriuos reikia žaisti naudojant rankos stebėjimą
„Oculus Quest“ neseniai pristatė puikią rankos stebėjimo be valdiklių idėją. „Oculus Quest“ rankų sekimo žaidimai iki šiol buvo ribojami, kai žaidimų ...