Django

Django lietotnes izveide Ubuntu serverī

Django lietotnes izveide Ubuntu serverī
Django ir izplatīta platforma vietņu, tīmekļa lietojumprogrammu un tīmekļa API izstrādei. Ir daudz priekšrocību, izmantojot Django ietvaru savam projektam kā savu rīku, un, ja neesat pārliecināts, ka tas ir piemērots, jums ir jāpieskata tikai daudzi lielie zīmoli, kas savā kaudzē izmanto Django.

Pirmo reizi Django izvietošana ražošanas vidē var būt biedējošs uzdevums. Bieži vien izstrādātāji mākonī palaiž Linux instanci savai ražošanas videi.

Šajā apmācībā mēs parādīsim, kā palaist Django ražošanā, izmantojot svaigu Ubuntu instanci.

Mēs pieņemsim, ka visas jūsu rediģēšanas darbības ir veiktas serverī un komandas jūs izmantojat kā root.

Šajā apmācībā mēs izmantojam Ubuntu 18.04.2 LTS

Lietotāja izveide projektam

Mēs izveidosim jaunu lietotāju django, lai palaistu mūsu lietojumprogrammu. Tas nodrošina nelielu drošības labumu.

Lai izveidotu jauno lietotāju:

useradd -m django

The -m karogu izveido jaunu mājas direktoriju: / home / django.

Python vides iestatīšana

Pirmās lietas vispirms: atjauniniet pakotņu sarakstus ar apt-get atjauninājums

Ubuntu 18.04 kuģi ar Python 3.6, bet tas netiek piegādāts ar pip, kas jums būs nepieciešams, lai instalētu savas atkarības.

apt-get instalēt python3-pip

Tagad, kad mums ir pip, izveidosim virtuālu vidi. Virtuālās vides palīdz izvairīties no konfliktiem ar Python pakotnēm, kuras izmanto Linux.

pip3 instalēt virtualenv
cd / home / django
virtualenv env

Tagad esat izveidojis virtuālo Python 3.6 vide / home / django / env mape, kuru var aktivizēt ar šādu komandu: Tagad, kad mums ir pip, izveidosim virtuālo vidi. Virtuālās vides palīdz izvairīties no konfliktiem ar Python pakotnēm, kuras izmanto Linux.

avots / mājas / django / env / bin / aktivizēt

Django projekta izveidošana

Šai apmācībai mēs izveidosim pagaidu Django projektu. Ja izvietojat pats savu kodu, tā vietā jums tas būs jāaugšupielādē serverī. Mēs darbosimies mājas direktorijā / home / django.Django projekta izveidošana

Izveidosim Django projektu:

cd / home / django
avots env / bin / aktivizēt
pip instalēt django
django-admin startproject apmācība

Pārbaudiet, vai darbojas, palaižot:

kompaktdiska apmācība
python pārvaldīt.py runervers 0.0.0.0:80

Mūsu Ubuntu instance darbojas 178.128.229.34, tāpēc mēs izveidosim savienojumu ar vietni http: // 178.128.229.34.Pārbaudiet, vai darbojas, palaižot:

Jūs, visticamāk, redzēsiet kaut ko līdzīgu šim:

Lai to novērstu, mēs rediģēsim / home / django / tutorial / tutorial / settings.py. Atrodiet ALLOWED_HOSTS = [] un iestatiet to uz:

ALLOWED_HOSTS = [
"178.128.229.34 '# aizstājiet to ar sava servera IP adresi
vai domēna nosaukumu, kuru izmantojat, lai izveidotu savienojumu
]

Tagad atgriezīsimies pie http: // 178.128.229.34:

Lieliski! Mēs esam tiešsaistē!

PostgreSQL, datu bāzes iestatīšana

Pēc noklusējuma Django izmanto SQLite3 datu bāzi. Diemžēl SQLite3 neļauj vienlaikus rakstīt. Ja jūsu vietnē kādreiz ir tikai viens lietotājs, kurš rediģē datus, un pārējie apmeklētāji tikai lasa lapas, tas varētu būt piemērots. Bet, ja vienlaikus rediģē datus vairāki cilvēki, iespējams, vēlaties izmantot citu aizmuguri.

Biežas izvēles iespējas ir PostgreSQL un MySQL. Šajā apmācībā mēs izmantosim PostgreSQL.

Sāciet ar PostgreSQL instalēšanu:

apt-get install postgresql

Pēc tam palaidiet psql, datu bāzes apvalku. Pēc noklusējuma tikai postgres lietotājs var izveidot savienojumu ar datu bāzi, tāpēc mums vispirms būs jāveic autentifikācija kā šim lietotājam:

su - postgres
psql

Pēc tam mums ir nepieciešama datu bāze un lietotājs, lai piekļūtu šai datu bāzei:

izveidot datu bāzes apmācību;
izveidot lietotāja tutorial_user ar šifrētu paroli 'tutorial_password';
piešķirt visas privilēģijas datu bāzes apmācībā tutorial_user;

Tagad ierakstiet exit vai divreiz nospiediet Ctrl-D: vienu reizi, lai izietu no psql, un vienu reizi, lai atteiktos no postgresuser apvalka.

Lieliski! Tagad mums ir izveidota mūsu datu bāze un lietotājs. Pārbaudīsim, vai varam pieteikties mūsu datu bāzē.

Mēs mēģināsim atvērt datu bāzes apvalku, šoreiz piesakoties datu bāzē, kuru izveidojām kopā ar izveidoto lietotāju:

psql -Ututorial_user -dtutorial -h127.0.0.1 -W

Uzvednē ievadiet izveidoto paroli: apmācības_ parole.

Ja redzat datu bāzes čaumalu, esat guvis panākumus. Ja redzat kļūdas, jums būs jāatgriežas un jānoskaidro, kas ir nepareizs.

Django savienošana ar datu bāzi

Lai Django izveidotu savienojumu ar datu bāzi, mums vispirms jāinstalē Python PostgreSQL adapteris:

pip instalējiet psycopg2-bināro

Tad atvērsimies / home / django / tutorial / tutorial / settings.pyun konfigurējiet savienojumu.

Atrodiet savu pašreizējo datu bāzes savienojumu; ja jūs to nemainījāt, tas var izskatīties apmēram šādi:

DATU BĀZES =
'noklusējums':
'Dzinējs': 'django.db.aizmugures.sqlite3 ',
'NAME': os.ceļš.pievienoties (BASE_DIR, 'db.sqlite3 '),

Lai izveidotu savienojumu ar PostgreSQL, mēs to aizstāsim ar šādu:

DATU BĀZES =
'noklusējums':
'Dzinējs': 'django.db.aizmugures.postgresql_psycopg2 ',
'NAME': 'apmācība',
'USER': 'tutorial_user',
'PASSWORD': 'tutorial_password',
'HOST': '127.0.0.1 ',
“PORT”: “5432”,

Pārbaudīsim savienojumu:

cd / home / django / apmācība
python pārvaldīt.py runervers 0.0.0.0:80

Jums atkal vajadzētu būt iespējai apmeklēt savu vietni (mums vietnē http: // 178.128.229.34 /, bet aizstājiet to ar savu IP vai resursdatora nosaukumu).

Ja viss ir kārtībā, mēs varam turpināt.

Nginx, tīmekļa servera, iestatīšana

Kad tu skrien python pārvaldīt.py runervers, jūs izmantojat Django izstrādes serveri. Tas ir lieliski piemērots vietējai attīstībai, taču tāpat kā SQLite3 gadījumā tas nav īsti piemērots ražošanai.

Izplatītās tīmekļa serveru izvēles iespējas ir nginx un Apache. Šajā apmācībā mēs izmantosim nginx.

Instalējiet nginx, izmantojot sekojošo:

apt-get install nginx

Ja viss ir darbojies labi, nginx jādarbojas 80. portā. Iet uz priekšu un pārbaudiet savu vietni; jums vajadzētu redzēt:

Lieliski, tāpēc nginx darbojas un darbojas! Tālāk mums tas būs jākonfigurē, lai sazinātos ar Django. Atveriet nginx konfigurācijas failu, kas atrodas vietnē / etc / nginx / sites-available / default. Aizstāsim failu ar šādu:

augštece django
serveris 127.0.0.1: 8000;

serveris
klausīties 80;
atrašanās vieta /
try_files $ uri @send_to_django;

atrašanās vieta @send_to_django
proxy_set_header resursdators $ http_host;
proxy_redirect off;
proxy_pass http: // django;

Pārbaudiet konfigurācijas failu, palaižot nginx -t. Ja viss ir kārtībā, mēs varam pārlādēt, palaižot nginx -s pārlādēšanu.

Tagad, apmeklējot savu vietni, redzēsiet:

Ikreiz, kad to redzat, tas nozīmē, ka nginx nevarēja nodot pieprasījumu augšpusē esošajam procesam. Pašlaik tas ir tāpēc, ka mēģina nodot pieprasījumu 127.0.0.1: 8000, bet šajā adresē nav procesu klausīšanās.

Sāksim Django izstrādes serveri un mēģiniet vēlreiz:

cd / home / django / apmācība
python pārvaldīt.123. palaist serveri.0.0.1: 8000

un vēlreiz apmeklējiet savu vietni. Jums vajadzētu redzēt savu Django lietojumprogrammu.

Django montāža uz Gunicorn

Atcerieties, ka mēs nevēlamies izmantot mūsu Django izstrādes serveri ražošanā. Tā vietā mēs izmantosim Web Server Gateway Interface (WSGI) serveri, lai palaistu Django. Nginx nosūtīs pieprasījumu WSGI serverim, kurā darbojas Django.

WSGI servera izplatītākās izvēles iespējas ir Gunicorn un uWSGI. Šajā apmācībā mēs izmantosim Gunicorn.

Instalēsim Gunicorn:

uzstādiet pistoli

Tālāk mēs varam sākt ieroci šādi:

cd / home / django / apmācība
lielgabala apmācība.wsgi

Tagad jums vajadzētu būt iespējai apmeklēt savu vietni un redzēt, kā jūsu lietojumprogramma darbojas pareizi.

Gunicorn vadīšana kā pakalpojums

Šādi ieroči darbojas šādi:

  1. Ja mēs slēgsim SSH sesiju, ieroča process apstāsies.
  2. Ja serveris tiek restartēts, lielgabala process netiks sākts.
  3. Process darbojas kā root. Ja hakeri mūsu lietotnes kodā atrod izmantojumu, viņi varēs izpildīt komandas kā root. Mēs to nevēlamies; bet tāpēc mēs izveidojām djangouser!

Lai atrisinātu šīs problēmas, mēs vadīsim Gunicorn kā sistēmas pakalpojumu.

cd / home / django
mkdir bin
cd / home / django / bin
pieskarieties start-server.sh

Sākuma serverī.sh:

cd / home / django
avots env / bin / aktivizēt
kompaktdiska apmācība
lielgabala apmācība.wsgi

Tagad jūs varat pārbaudīt skriptu:

cd / home / django / bin
bash start-serveris.sh
# apmeklējiet savu vietni, tai vajadzētu darboties

Tagad mēs izveidojam Gunicorn pakalpojumu systemd. Izveidojiet / etc / systemd / system / gunicorn.serviceas seko:

[Vienība]
Apraksts = Gunicorn
Pēc = tīkls.mērķis
[Apkalpošana]
Tips = vienkāršs
Lietotājs = django
ExecStart = / home / django / bin / start-server.sh
Restartēt = neizdoties
[Uzstādīt]
WantedBy = daudzlietotāju.mērķis

Tagad iespējosim pakalpojumu un palaidīsim to

systemctl iespējot lielgabalu
systemctl sākt lielgabals

Pašlaik jums vajadzētu redzēt savu vietni.

Mēs varam izslēgt pistoli šādi:

systemctl stop lielgabals

Un jums vajadzētu redzēt 502 Bad Gateway.

Visbeidzot, pārbaudīsim sāknēšanas ciklu:

systemctl sākt lielgabals
restartēt tagad

Kad jūsu mašīna atkal būs tiešsaistē, jums vajadzētu redzēt, ka jūsu vietne ir atvērta.

Statiskie faili

Ja apmeklējat Django administratora paneli savā vietnē vietnē / admin / (mums tas ir http: // 178.128.229.34 / admin /), pamanīsit, ka statiskie faili netiek pareizi ielādēti.

Mums būs jāizveido jauna statisko failu mape:

cd / home / django
mkdir statisks

Tad mēs sakām Django, ka tai vajadzētu ievietot statiskos failus, rediģējot / home / django / tutorial / tutorial / settings.py un pievienojot:

STATIC_ROOT = '/ home / django / static /'

Tagad mēs varam apkopot statiskos failus:

cd / home / django
avots env / bin / aktivizēt
kompaktdiska apmācība
python pārvaldīt.py kolekcionārs

Visbeidzot, mums jāpasaka nginx apkalpot šos statiskos failus.

Atvērsim / etc / nginx / sites-available / default un tieši virs savas atrašanās vietas / bloka pievienosim:

location / static /
sakne / mājas / django;
try_files $ uri = 404;

Tagad visam failam vajadzētu izskatīties šādi:

augštece django
serveris 127.0.0.1: 8000;

serveris
klausīties 80;
location / static /
sakne / mājas / django;
try_files $ uri = 404;

atrašanās vieta /
try_files $ uri @send_to_django;

atrašanās vieta @send_to_django
proxy_set_header resursdators $ http_host;
proxy_redirect off;
proxy_pass http: // django;

Mēs varam pārlādēt failu, izmantojot nginx -s pārlādēšanu

Un voila! Jūsu statiskie faili tagad darbosies pilnībā.

Secinājums

Šajā brīdī jūsu Django lietotne darbojas pareizi. Ja jums ir dažas īpašas prasības, jums, iespējams, būs jāiestata kešatmiņa, piemēram, Redis, vai ziņojumu rinda, piemēram, Rabbit MQ. Varat arī iestatīt nepārtrauktu izvietošanu, jo izvietošanas procedūra var aizņemt kādu laiku.

Vēl viens svarīgs solis ir veikt atbilstošas ​​darbības, lai aizsargātu jūsu Ubuntu mašīnu. Pretējā gadījumā jūs, iespējams, pamanīsit, ka jūsu serveris rīkojas nepareizi!

Veiksmi!

Peles kreisā klikšķa poga nedarbojas operētājsistēmā Windows 10
Ja ar klēpjdatoru vai galddatoru izmantojat īpašu peli, bet nedarbojas peles kreisās klikšķa poga kādu iemeslu dēļ operētājsistēmā Windows 10/8/7 šeit...
Rakstot Windows 10, kursors lec vai pārvietojas nejauši
Ja atklājat, ka peles kursors automātiski, nejauši lec vai pārvietojas pats, rakstot Windows klēpjdatorā vai datorā, daži no šiem ieteikumiem var palī...
Kā mainīt peles un skārienpaliktņu ritināšanas virzienu operētājsistēmā Windows 10
Pele un SkārienpaliktnisTas ne tikai padara skaitļošanu vienkāršu, bet arī efektīvāku un mazāk laikietilpīgu. Mēs nevaram iedomāties dzīvi bez šīm ier...