Je applicatie is ontwikkeld en getest, tijd om deze online te zetten. Deze tutorial legt uit hoe je dat moet doen.
De site die we zullen implementeren is deze site zelf, pythoneatstail.com. We hebben het gemaakt en getest in eerdere tutorials. Voor de implementatie is het niet belangrijk dat het gebaseerd is op Wagtail, maar we zullen een aantal Django-gerelateerde functies gebruiken. We zullen implementeren op DigitalOcean, dat hiervoor een volledige tutorial heeft en een aantal andere goede tutorials biedt; we zijn ook dank verschuldigd aan de tutorial van SimpleIsBetterThanComplex. In deze tutorial hebben we de volgende stappen:
Dit stelt ons in staat om ons project lokaal op de DigitalOcean-server uit te voeren. In een vervolgtutorial zullen we Gunicorn en Nginx installeren om onze applicatie live te zetten op het internet, en installeren we Supervisor om beide processen te beheren.
Ik beperk me tot een snel overzicht, aangezien de provider het vrij eenvoudig maakt; bovendien legt de tutorial SimpleIsBetterThanComplex het goed uit. Ga naar digitalocean.com, Products, Droplets, maak een account aan. Je krijgt de gelegenheid om je project een naam te geven. Probeer een manier te kiezen om dingen te noemen die voor jou werken. In het begin raak je misschien verward met de namen van:
Nadat je je hebt aangemeld met je nieuwe account, ga je naar je project en klik je op Create om een droplet te maken. Je moet een plan kiezen, de hoeveelheid opslagruimte die je nodig hebt (en de prijs die daarbij hoort) en de datacenterregio. Kies voor authenticatie Password, tenzij je SSH hebt ingesteld; we zullen dat later doen. Kies een naam voor de droplet; we noemen de onze drp-pet. Klik op 'Create Droplet' om het proces te voltooien. Je ontvangt van DigitalOcean een e-mail met een IP-adres, de gebruikersnaam 'root' en een root-wachtwoord.
De droplet moet nu zichtbaar zijn in het dashboard. op DigitalOcean. Aan de rechterkant zijn er drie stippen die een menu openen; klik op "Add Domain". Voor alle duidelijkheid: DigitalOcean is geen domeinregistreerder, dus registreert je domein niet. Er zijn honderden, zo niet duizenden domeinregistreerders, zoals domein.com, Bluehost, HostGator, GoDaddy enz. In ons geval is het domein pythoneatstail.com geregistreerd bij een van hen. We moeten die registrar nu vertellen dat DigitalOcean het gaat beheren. DigitalOcean heeft instructies voor veel registrars om je instellingen bij de registrar bij te werken. Voor de meeste registrars komt dit neer op het hernoemen van de eerste drie nameservers naar ns1.digitalocean.com, ns2.digitalocean.com en ns3.digitalocean.com en deze op te slaan. Zoals vermeld door DigitalOcean, kan het enkele uren of zelfs langer duren voordat deze wijzigingen zijn doorgevoerd.
Klik nu in het DigitalOcean-configuratiescherm op de drie stippen naast je droplet, klik op 'Add Domain', vul je domein in en klik op 'Add Domain'. Dit verbindt het domein met je droplet. Het domein moet nu zichtbaar zijn in het configuratiescherm. Als je erop klikt, zou er een A-record moeten zijn met je IP-adres. Voeg ook een A-record toe met het www. subadres.
Ga naar je terminal en maak verbinding met het IP-adres dat je per mail hebt ontvangen met de ssh
-opdracht:
ssh root@165.22.199.4
Gebruik het wachtwoord dat je hebt ontvangen; je wordt gevraagd om het de eerste keer te wijzigen. Je bevindt je nu in de homedirectory van de rootgebruiker. Raak vertrouwd met de bestandsorganisatie: /root
, /home
voor homedirectory's van gewone gebruikers, /etc
voor configuratiebestanden, /bin
voor binaire bestanden enzovoort. We zullen een gebruiker aanmaken voor ons project, omdat we niet alle commando's als root-gebruiker willen uitvoeren. Typ bij de prompt:
adduser usr_pet
en maak een wachtwoord voor usr_pet
. Omdat de gebruiker een aantal pakketten moet installeren, heeft hij superuser-privileges nodig. Voeg daarom de gebruiker toe aan de sudo-groep met het commando usermod
usermod -aG sudo usr_pet
Als onderdeel van de eerste installatie wordt ook aanbevolen om authenticatie met een openbare sleutel en een firewall toe te voegen, maar dat zullen we later doen. Vanaf nu kunnen we direct inloggen als usr_pet
. Meld je af bij de serververbinding met logout
en log vervolgens opnieuw in met
ssh usr_pet@165.22.199.4
en we komen aan in de homedirectory van usr_pet
.
Het installeren en beheren van software gebeurt met het Linux-commando apt-get
. Log in op de server als usr_pet
. Om alle benodigde softwarecomponenten voor PostgreSQL te installeren, typ:
sudo apt-get update
sudo apt install postgresql postgresql-contrib
Start nu psql
als de standaard PostgreSQL-gebruiker postgres
:
sudo -u postgres psql
Maak een database en een databasegebruiker voor het project, net zoals we eerder lokaal op onze ontwikkelcomputer hebben gedaan:
CREATE USER usr_pet WITH PASSWORD '123';
CREATE DATABASE db_pet OWNER usr_pet;
Kies uiteraard een beter wachtwoord. Merk op dat we de databasegebruiker dezelfde naam hebben gegeven als de servergebruiker; dit is niet nodig maar wel handig. Django raadt aan om een paar instellingen toe te voegen:
ALTER ROLE usr_pet SET client_encoding TO 'utf8';
ALTER ROLE usr_pet SET default_transaction_isolation TO 'read committed';
ALTER ROLE usr_pet SET timezone TO 'UTC';
Sluit psql af met \q
.
Installeer eerst het pip
-pakket, python3-dev
(nodig om Python-extensies te bouwen) en python3-venv
(nodig om een virtuele omgeving te creëren):
sudo apt install python3-pip python3-dev python3-venv
We zetten een virtuele omgeving op in de homedirectory van usr_pet
met behulp van het standaard Python-commando hiervoor en deze activeren:
python3 -m venv env
source env/bin/activate
Merk op dat we de omgeving in onze homedirectory hebben gecreëerd; als je van plan bent meer omgevingen voor deze gebruiker te hebben, maak deze dan aan in een submap. Ga door met het klonen van je project met behulp van de 'clone or download'-link van Github:
git clone https://github.com/prijme/pet.git
Ga de directory van het project in (in ons geval pet
) en installeer alle requirements (onder andere Django, Wagtail en psycopg2):
pip3 install -r requirements.txt
We hebben al onze wachtwoordgerelateerde en andere gevoelige instellingen in een local.py
-bestand gezet dat niet wordt getrackt op Github, dus we moeten dat creëren in onze directory settings
. Ga daarheen, maak het bestand local.py
aan en kopieer de inhoud van het local.py
-bestand van je ontwikkelcomputer. Opmerking: de gebruikersnaam en het wachtwoord van je database-instellingen moeten uiteraard overeenkomen met degene die je hierboven op je server hebt gemaakt!
Nu kunnen we onze database migreren en een superuser maken. Ga in de projectdirectory en typ:
python3 manage.py makemigrations
python3 manage.py migrate
python3 manage.py createsuperuser
Geef een gebruikersnaam en wachtwoord op voor de superuser. Nu kunnen we controleren of de database werkt door de Django-ontwikkelserver op 0.0.0.0
uit te voeren:
python3 manage.py runserver 0.0.0.0:8000
Ga nu in je browser naar het IP-adres van je server, gevolgd door :8000
, in ons geval http://165.22.199.4:8000
. Je zou nu een welkomstpagina moeten zien, die misschien niet meer zegt dan 'Home'. Door /admin
toe te voegen aan het adres en de referenties van de superuser te gebruiken, kun je inloggen op admin.
Het project draait nu op de server. In een volgende tutorial gaan we onze site op het internet live brengen met Gunicorn, Nginx en Supervisor.
Reageer op dit artikel (log eerst in of bevestig hieronder met naam en email)