FOK!forum / Digital Corner / Handleiding deployen van Laravel (7.*) project naar VPS (Ubuntu 18.04)
#ANONIEMdonderdag 2 juli 2020 @ 13:33
Beste mensen,

Voor mijzelf heb ik een handleiding geschreven hoe ik een (ontzettend simpel) Laravel project kan opzetten en op een Linux (Ubuntu) VPS kan plaatsen. Het gaat hierbij alleen om 2 pagina’s en een werkende databaseconnectie. De rest is goed bij te leren met de bestaande Laravel documentatie. Ik ervaarde dat er weinig volledige (en up-to-date) tutorials zijn m.b.t. het plaatsen/deployen van een Laravel project op een VPS vandaar o.a. ook dat ik deze zelf heb gemaakt.

Het grootste deel m.b.t. het plaatsen van de Laravel applicatie op een VPS heb ik in deze 4 delige serie geleerd:
Voor de rest veel in Google zoeken naar informatie en antwoorden natuurlijk.

Deze bovenstaande tutorial is wat verouderd (3 jaar oud), soms niet volledig, ik maak o.a. daarom voor mijzelf een tutorial die ik graag met de rest wil delen (ook mensen buiten FOK!) ook om wat terug te geven. Ik gebruik geen spoilers, als mensen spoilers willen lezen moeten ze zich registreren, dat gun ik FOK! best wel maar alle informatie die ik heb gekregen was ook zonder te registreren dus op die manier geef ik graag ook wat terug.

Deze tutorial is logischerwijs niet compleet. In het rood onderaan heb ik vragen neergezet die ik zelf nog heb en waarbij ik jullie hulp vraag om deze aan te vullen zodat de handleiding beter wordt. Als er verder aanvullingen/verbeteringen zijn dan hoor ik ze graag.

Dit gedeelte gaat over het deployen van een Laravel project naar een VPS. Als je graag wil weten hoe je een Laravel project opzet dan kan je hier kijken: DIG / Een laravel project maken (de basis)

Dit topic gaat over het overzetten van een Laravel (7+) applicatie naar een Ubuntu VPS.

2. de VPS server

Ik heb bij Strato een Ubuntu (18.04) VPS gehuurd.
Als je server gereed is krijg je een e-mail met je hostnaam (iets als h123456.stratoserver.net) en een wachtwoord via sms waarmee je in kan loggen op: https://config.stratoserver.net

Bij mij stond het menu in het Duits in eerste instantie, ik heb de URL aangepast naar https://config.stratoserver.net/?locale=nl en dat lost dat op.

Bij ‘Mijn server’ -> ‘Servergegevens’ zie je je initiele rootwachtwoord. Deze heb je nodig om in te kunnen loggen op je VPS. Het IP adres van je server is daar ook zichtbaar en heb je ook vaker nodig.

Inloggen op de server en een gebruiker aanmaken
We gaan nu voor het eerst inloggen op onze server via Putty. Je vult je hostnaam in en klikt op open. De eerste keer krijg je een pop-up, daar gewoon ‘yes’ selecteren. Je vult na ‘Login as:’ gewoon ‘root’ in. Het initiele rootwachtwoord moet je nu daar invullen. Terwijl je typt zie je niks, een beetje vertrouwen in je eigen typvaardigheid en je drukt op enter. (kopieren werkt niet trouwens dus je moet het echt zelf typen).

Nu gaan we eerst een user aanmaken met alle benodigde rechten.

Voor de duidelijkheid het volgende typen we in Putty, niet meer lokaal maar rechtstreeks op onze server.

quote:
adduser jouwusernaam
(geen hoofdletters, cijfers, speciale tekens etc. gebruiken)

Geef een sterk wachtwoord op en bevestig die daarna. De rest daarna (Full name etc.) kan je leeg laten, gewoon enter klikken een paar keer.

quote:
usermod -aG sudo jouwusernaam
Hiermee hebben we de nieuwe user sudo (superuser) rechten gegeven. Nu gaan we testen of dat gelukt is:

quote:
su - jouwusernaam
Nu zie je dat je typt onder je gekozen username (jouwusernaam@h123456 bijvoorbeeld).

quote:
sudo ls -la /root
De eerste keer moet je je wachtwoord invoeren

Vanaf nu gaan we niet meer als root inloggen (uit veiligheidsoverwegingen is dat verstandig).

De installaties uitvoeren en config aanpassingen maken
We gaan nu packages updaten. Vanaf nu moeten we bij veel commando’s sudo ervoor zetten zodat we de rechten hebben om deze uit te voeren.

quote:
sudo apt-get update
Nu gaan we nginx installeren, een webserver net zoals Apache maar geprefereerd binnen de Laravel gemeenschap.
quote:
Sudo apt-get install nginx
Je moet daarna altijd ‘J’ kiezen, de server vraagt voor de zekerheid of je het wil installeren en geeft aan hoeveel ruimte het programma in beslag gaat nemen.

Als je nu naar je IP adres gaat zie je ook dat nginx succesvol is geïnstalleerd.

En5Zaum.png

Nu gaan we mysql installeren.
quote:
sudo apt-get install mysql-server
We gaan mysql veiliger maken (mysql is veilig maar sommige standaard gekozen instellingen zijn dat niet, dat gaan we nu rechtzetten).
quote:
sudo mysql_secure_installation
Bij ‘Validate password plugin’ kiezen voor ‘no’.

Nu moet je een wachtwoord geven en bevestigen waarmee je verbinding wil gaan maken met de database (dus niet zoals lokaal op je computer een rootuser zonder wachtwoord, hier moet echt een veilig wachtwoord op).

Op de rest daarna kan je alles ‘y’ typen.

Nu gaan we PHP installeren (van de LEMP stack hebben we nu de Linux, Enginx en Mysql geinstalleerd dus wat dat betreft alleen nog de P van PHP).
quote:
sudo apt-get install php-fpm php-mysql php-mbstring
Ik moet nano (een simpel tekstbewerkingsprogramma) nog installeren dus dat doe ik nu:
quote:
sudo apt-get install nano
Nu moeten we de php.ini aanpassen.
quote:
sudo nano /etc/php/7.2/fpm/php.ini
Ik had hier wat problemen mee in eerste instantie omdat ik de eerste / vergat. Ik kon daardoor niet bij de etc map komen. Dit is vrij logisch en los je op door de ‘/’ zoals hierboven voor ‘etc’ of door ‘cd /’ te typen zoals aangegeven in onderstaande afbeelding als leiddraad. Ook moet je denken om de PHP versie (in dit geval 7.2.24 maar de map heet 7.2), die kan je achterhalen door ‘dir’ in te typen als je in de juiste directory zit.

4QEWhPz.png

Het is een groot bestand en we hoeven maar 1 regel aan te passen dus we gaan zoeken naar deze regel. Gebruik: Control w (om te zoeken)
Zoek naar: ‘cgi.fix_pathinfo=1’

Verander de 1 in een 0 en vergeet niet om de ; weg te halen aan het begin van de zin (anders wordt het gezien als een comment en wordt er niks mee gedaan).

6KVUId8.png

Control x (om af te sluiten) – ‘j’ kiezen om op te slaan - niks aanpassen daarna (gewoon enter)
Hierna moeten we PHP herstarten, denk hierbij ook om de juiste PHP versie in het commando te gebruiken.
quote:
sudo systemctl restart php7.2-fpm
Nginx configureren zodat deze naar de juiste map verwijst
Nginx, Mysql en PHP zijn geinstalleerd en de laatste 2 deels geconfigureerd. We gaan nu Nginx configureren.

quote:
sudo nano /etc/nginx/sites-available/default
Hier vervolgens index.php toevoegen onder root /var/www/html; (vlak na index maar voor index.html)
Dan in server_name _; Je IP adres invullen (gebruik niet de numpad van je toetsenbord, dat werkt niet).
Dan moet je nog wat punten aanpassen, zorg ervoor dat het eruit komt te zien zoals het volgende (denk om de PHP versie ook hier weer)

3yYUeZg.png

Control x (om af te sluiten) – ‘j’ kiezen om op te slaan - niks aanpassen daarna (gewoon enter)

quote:
sudo nginx -t
Om te testen of het bestand nog correct werkt.
Nu gaan we nginx herstarten.
quote:
sudo systemctl reload nginx
Nu staat op je IP adres 403 Forbidden, dat is prima.

De Laravel map aanmaken
We gaan nu de Laravel map aanmaken waar we ons project willen hebben:
quote:
sudo mkdir - p /var/www/laravel
mTAz17C.png

Nu gaan we weer een aanpassing maken aan de config file van nginx (dat kon natuurlijk ook direct maar zo is de workflow duidelijker hoop ik).
quote:
sudo nano /etc/nginx/sites-available/default
We hebben nu een Laravel map aangemaakt en we weten dat Laravel in de public folder zoekt naar het index bestand dus we passen var/www/html aan naar het volgende:
quote:
var/www/laravel/public
Daarna moet je dit nog aanpassen:
quote:
location / { # First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ /index.php?$query_string; }
AGMazmn.png

Control x (om af te sluiten) – ‘j’ kiezen om op te slaan - niks aanpassen daarna (gewoon enter)

quote:
sudo service nginx restart
Nu zie je op je IP adres 404 Not Found (we hebben nog geen index.php immers, dus dit is ook prima).

Composer en Git
quote:
sudo apt-get install curl
quote:
cd ~
sudo curl -sS https://getcomposer.org/installer | php
Hiervoor moet je echt vanuit root om te installeren vandaar cd ~ voor de zekerheid.

Om te testen:
quote:
php composer.phar
quote:
sudo mv composer.phar /usr/local/bin/composer
Om het te verplaatsen zodat je composer kan gebruiken als command en niet composer.phar.

Composer als commando zou nu moeten werken:
quote:
composer
Nu willen we weer uit de rootdirectory gaan
quote:
cd /var
We gaan een map genaamd ‘repo’ aanmaken om onze repository in te plaatsen (dus niet direct vanuit github naar onze laravel map maar eerst als tussenstation in een andere map, in dit geval een map genaamd ‘repo’ waar we ook Git gaan installeren.
quote:
sudo mkdir repo && cd repo
sudo mkdir site.git && cd site.git
sudo apt install git
sudo git init --bare (2 streepjes)
Nu gaan we een hook aanmaken. Deze plaatst in de Laravel map wat we ontvangen in de net aangemaakte repository. Even ter informatie, de flow is: lokaal -> commit/push naar git(hub) -> naar site.git op onze server -> automatisch daarna naar onze Laravel map.

We moeten daarvoor in de ‘hooks’ map zitten

Dus als je nog in de site.git directory zit kan je gewoon het volgende doen:
quote:
cd hooks
We gaan nu een (leeg) bestand aanmaken:
quote:
sudo nano post-receive
Vul dit bestand met het volgende (dit vertelt waar hij de bestanden moet plaatsen als hij deze heeft ontvangen):
quote:
#!/bin/bash
git --work-tree=/var/www/laravel --git-dir=/var/repo/site.git checkout -f
Control x (om af te sluiten) – ‘j’ kiezen om op te slaan - niks aanpassen daarna (gewoon enter)

We gaan op een later tijdstip vanuit github de bestanden doorsturen naar de /var/repo, deze heeft nu een ‘hook’ die aangeeft dat als hij bestanden ontvangt in deze repo hij deze moet verplaatsen naar de Laravel map. Op deze manier heb je bijna geen downtime.

We moeten nu nog de juiste rechten geven zodat deze repo de bestanden kan kopieren naar de Laravel map.
quote:
sudo chmod +x post-receive
We zijn nu eerst klaar met Putty en de server, je kan sluiten met
quote:
Exit
Github account en master repository aanmaken
Nu is het tijd om een github account aan te maken. Als je dat nog niet hebt gedaan, ga naar https://github.com/ registreer je, maak een master repository aan en je kan aan de slag.

In VSC gaan we naar View -> Command palette...
We typen: Git clone (enter)
Dan gaan we de repository URL kopieren (https://github.com/jouwnaam/master bijvoorbeeld)
Kies daarna voor ‘Open’ en je ziet je (lege) lokale repository.
Nu kopieren we alles naar die map vanuit onze www/jouwprojectnaam map en dan zien we dat we een git repository hebben met alle gemaakte code (binnen de master map).
Deze moet je commiten en pushen naar Github.

Zelf doe ik dat op de volgende manier:
1. ‘Stage all changes’
2. ‘Commit staged’ (en dan een naam geven voor de commit)
3. ‘Publish branch..’

cQee63t.png

Nu gaan we in VSC in GitBash het volgende commando uitvoeren (zorg ervoor dat je in de net aangemaakte depository map zit, dus niet in www/jouwproject maar zoals bij mij bijvoorbeeld /c/wamp64/repo/master).

Met onderstaande commando kan je controleren of je in de git map zit.
quote:
git status
4eMTRqA.png

quote:
git remote add production ssh://root@111.222.333.444/var/repo/site.git
Om te controleren of het verwerkt is (je hoort er 4 te zien)
quote:
git remote -v
Nu gaan we de bestanden vanuit github (master) naar production (onze server) brengen, waar de hook de code automatisch naar de Laravel map gaat verplaatsen.
quote:
git push production master
Ik kreeg hierbij het volgende bericht:

Rqck5DP.png

Dit is op te lossen met het volgende:
quote:
ssh-keygen -R "111.222.333.444"
Hierna kan je het push commando weer uitvoeren, ‘yes’ typen en het rootwachtwoord invullen. Nu is de code als het goed is geplaatst in je Laravel map op je server.
Op je IP adres krijg je nu de melding te zien ‘Deze pagina werkt niet’. Dat is ook prima, we moeten nog wat punten bijlangs gaan.

De laatste handelingen
We gaan weer naar Putty:
quote:
sudo apt-get install php-xml
Daarna binnen de Laravel map
quote:
sudo composer install --no-dev
(2 streepjes)
quote:
sudo chown -R :www-data /var/www/laravel
sudo chmod -R 775 /var/www/laravel/storage
sudo chmod -R 775 /var/www/laravel/bootstrap/cache
sudo cp .env.example .env
sudo nano .env
Zoals ook lokaal op de computer bevat het .env bestand belangrijke gegevens zoals bijvoorbeeld het databasewachtwoord. Deze wil je niet in Github hebben staan (daarom worden ze uitgesloten in het .gitignore bestand). Je moet daarom op je server zelf deze aanmaken en .env.example heeft daarvoor alvast een handige opzet dus die gebruik je als .env bestand.

Het .env bestand moeten we nu aanpassen zodat Laravel connectie kan maken met de database o.a.
We passen de volgende waardes aan:
APP_ENV=production
APP_DEBUG=false
DB_DATABASE=jedatabasenaam
DB_USERNAME=root
DB_PASSWORD=Jegekozenwachtwoord
Control x (om af te sluiten) – ‘j’ kiezen om op te slaan - niks aanpassen daarna (gewoon enter)

Nu moeten we nog een key genereren met het volgende commando:
quote:
sudo php artisan key:generate
Als je nu teruggaat naar je .env bestand zie je dat de APP_KEY nu gevuld is.
Nu gaan we nog de database aanmaken. Eerst inloggen op mysql.
quote:
sudo mysql -u root –p
Als je even wil controleren of de standaard databases bestaan:
quote:
show databases;
Nu gaan we de database maken:
quote:
create database jedatabasenaam
Nu moeten we eerst nog een andere config aanpassen:
quote:
sudo nano config/app.php
En pas de volgende 2 regels aan zodat ze overeenkomen met je IP adres en je tijdzone (in het algemeen zal je alleen je IP adres hier aan hoeven te passen).
quote:
'url' => env('APP_URL', 'http://111.222.333.444'),
'timezone' => 'Europe/Amsterdam',
Control x (om af te sluiten) – ‘j’ kiezen om op te slaan - niks aanpassen daarna (gewoon enter)

We zitten nu nog steeds in de Laravel map en moeten het volgende nog uitvoeren:
quote:
sudo php artisan config:cache
Nu gaan we de tabellen aanmaken met de migratie:
quote:
sudo php artisan migrate
Hierbij kreeg ik nog onderstaande melding:

llwqrbY.png

Dit heb ik opgelost door de volgende stappen uit te voeren:

quote:
sudo mysql -u root -p
use mysql;
alter user 'root'@'localhost' identified with mysql_native_password by 'jenieuwewachtwoord';
exit;
Bij het gedeelte ‘jenieuwewachtwoord’ moet je dan het wachtwoord invullen dat je in het .env bestand hebt ingevuld.

Nu kan je de migratie weer uitvoeren en als het goed is worden ze nu wel uitgevoerd. Je ziet nu de Laravel applicatie op je IP adres, bij de about pagina staat alleen dat iets nog niet helemaal goed gaat.

izg7SJB.png

Dit is prima, we hebben immers de database nog niet gevuld. Dit gaan we op dezelfde manier doen als dat we dat lokaal eerder deden bij het maken van onze Laravel Applicatie op de computer:

quote:
php artisan tinker
$page = new App\Page();
$page->tekst = 'Dit is de tekst voor de about pagina rechtstreeks uit de database';
$page->save();
Als je nu naar je IP adres gaat hoor je de website correct te zien, inclusief de tekst die uit de database gehaald moet worden.

Vragen die ik nog heb
1. Bij Git moet ik nu de map kopieren van mijn www/mijnproject map naar mijn repo map voordat ik deze kan committen. Dit kan vast wel beter. Iemand die mij kan vertellen wat ik daar verkeerd doe?

2. Is het verstandig om een gebruiker aan te maken voor de database login in plaats van de rootuser te gebruiken (ook al heeft die wel een wachtwoord nu)? Lijkt mij wel maar kwam hier niet zozeer iets over tegen (wel m.b.t. het inloggen als root op de server zelf).

3. Wat zijn nog beveiligingspunten die ik mis? Een firewall is bijvoorbeeld sowieso ook echt nodig? Is de server zelf en de database zo goed beveiligd of zijn er nog standaard commando’s/instellingen die ik niet uitgevoerd heb?

4. Hoe kan ik de database gemakkelijk inzichtelijk maken? Welke programma’s zijn daar geschikt voor, hoe stel ik dat in?

5. Ik kan ook ‘Plesk online’ installeren bij het besturingssysteem. Helpt dit veel om belangrijke instellingen goed te zetten? Iemand die daar wat vanaf weet en over wil vertellen?

6. SSH keys moet ik nog opzetten. Ik weet niet of dat moeilijk is of niet, iemand die daar iets over weet?

7. Alle andere opmerkingen zijn welkom. Vooral m.b.t. het opzetten van de server zelf.

[ Bericht 2% gewijzigd door #ANONIEM op 02-07-2020 18:19:19 ]
FlippingCoindonderdag 2 juli 2020 @ 13:42
Cool @phoenyx

Als ik je een tip mag geven is om het op te splitsen, zelf kijk ik vooral specifieke video's over een techniek die ik nog niet ken en ik erger mij dan altijd groen en geel als ze je ook hele andere dingen uit gaan leggen die ik al lang weet.
#ANONIEMdonderdag 2 juli 2020 @ 16:07
quote:
16s.gif Op donderdag 2 juli 2020 13:42 schreef FlippingCoin het volgende:
Cool @:phoenyx

Als ik je een tip mag geven is om het op te splitsen, zelf kijk ik vooral specifieke video's over een techniek die ik nog niet ken en ik erger mij dan altijd groen en geel als ze je ook hele andere dingen uit gaan leggen die ik al lang weet.
Tjah, ik geef duidelijk aan dat ik ook een Laravel project op ga zetten en je dat kan skippen als je die al gemaakt hebt. Dit is gericht aan mensen die wellicht ook nog een Laravel applicatie op moeten zetten. Dat is gewoon een extraatje. Als je je daar aan ergert, tjah. Is een handleiding van begin tot eind voor het maken van een Laravel project en die op op een VPS te krijgen (TT kon niet langer).

[ Bericht 1% gewijzigd door #ANONIEM op 02-07-2020 16:14:18 ]
FlippingCoindonderdag 2 juli 2020 @ 16:09
quote:
0s.gif Op donderdag 2 juli 2020 16:07 schreef phoenyx het volgende:

[..]

Tjah, ik geef duidelijk aan dat ik ook een Laravel project op ga zetten en je dat kan skippen als je die al gemaakt hebt. Dit is gericht aan mensen die wellicht ook nog een Laravel applicatie op moeten zetten. Dat is gewoon een extraatje. Als je je daar aan ergert, tjah. Is een handleiding van begin tot eind voor het maken van een Laravel project en die op op een VPS te krijgen (TT kon niet langer).
Ja en als je het opknipt heb je meer mensen die er wat aan hebben. ;)
#ANONIEMdonderdag 2 juli 2020 @ 16:10
quote:
16s.gif Op donderdag 2 juli 2020 16:09 schreef FlippingCoin het volgende:

[..]

Ja en als je het opknipt heb je meer mensen die er wat aan hebben. ;)
Oke.

done.jpg

Zal na werktijd nog wel even kijken of ik de intro nog wat aan moet passen etc. Wel bedankt voor je feedback, is wel beter zo denk ik inderdaad.

[ Bericht 6% gewijzigd door #ANONIEM op 02-07-2020 16:22:37 ]
FlippingCoindonderdag 2 juli 2020 @ 16:56
quote:
0s.gif Op donderdag 2 juli 2020 16:10 schreef phoenyx het volgende:

[..]

Oke.

[ afbeelding ]

Zal na werktijd nog wel even kijken of ik de intro nog wat aan moet passen etc. Wel bedankt voor je feedback, is wel beter zo denk ik inderdaad.
Cool np. ^O^
Chinlessdonderdag 2 juli 2020 @ 19:05
Denk je echt dat iemand hier iets mee gaat doen? Die aantal personen is op 1 hand te tellen.
#ANONIEMdonderdag 2 juli 2020 @ 19:38
quote:
0s.gif Op donderdag 2 juli 2020 19:05 schreef Chinless het volgende:
Denk je echt dat iemand hier iets mee gaat doen? Die aantal personen is op 1 hand te tellen.
Lijkt me wel, als ik zie dat youtube clips die uitleg geven over het deployen van een Laravel project naar een Ubuntu VPS duizenden views heeft zullen er vast wel aardig wat mensen blij zijn met een geupdate handleiding. En als het er slechts 3 zijn dan ook prima, dan heb ik 3 mensen geholpen.

[ Bericht 1% gewijzigd door #ANONIEM op 02-07-2020 19:38:35 ]
#ANONIEMzondag 12 juli 2020 @ 14:32
Ik had 7 vragen, daarvan nu bij een paar het antwoord gevonden.

Vraag 1 over Git. Nou ja dit is wel simpel en dat leek me ook al. Je verwijst apache gewoon naar je repo (in httpd-vhosts.conf) die je plaatst in je www map. Je kopieert je laravelproject daarheen en gaat dan vervolgens vanuit daar werken.

Vraag 4. Mysql-workbench is hiervoor de oplossing.
https://dev.mysql.com/downloads/file/?id=495322 Inloggen of registreren hoeft niet, gewoon het linkje 'no thanks, just start my download'. En hier https://wavemotiondigital(...)ith-mysql-workbench/ nog een linkje naar de instellingen.

Vraag 5. Heb zelf plesk wat bekeken (zat toch erbij inbegrepen), kan nuttig zijn maar heb het er weer afgehaald.

Vraag 6. SSH keys opgezet, is wel handig en veiliger.
Handleiding die ik gebruikte:
Fleischmeistermaandag 13 juli 2020 @ 01:41
Hoe ga je dit allemaal automatiseren als je een nieuwe versie van de site online wil hebben? Hiervoor zijn al CI systemen zoals GitHub Actions, TravisCI, CircleCI, etc, uitgevonden, hiermee kan je:

• een nieuwe versie van je website bouwen op een aparte plek
• tests draaien om te zien of alles goed is
• het eindproduct naar de server uploaden die het moet gaan hosten
• daar nog de benodigde commando's draaien (bedenk dat je bijvoorbeeld diverse "php artisan" commando's zoals cache clearing en database migraties iedere keer moet draaien na een deployment van nieuwe code!)

.. etc., allemaal n.a.v. een push naar GitHub. Dat is een veelgebruikte workflow omdat je anders helemaal gestoord wordt als je vaak iets moet releasen.
Je hoeft dan ook geen ontwikkeltools als git, composer, npm, etc. op productie te hebben, alleen op de buildlocatie. Over problemen zoals meerdere omgevingen waarbij je overal net een andere .env file moet installeren is ook nagedacht bij dat soort systemen.

2. De MySQL root user gebruiken (die SUPER rechten heeft op de database server) is natuurlijk nooit een goed idee voor gebruikers die de database server niet horen te beheren. Altijd het 'least privilege' principe aanhouden.

7. De installatie van de server zelf (users, softwarepakketten, configuratiefiles, etc.) kan je grotendeels automatiseren met tools als Ansible, dat is mijn favoriet, simpel concept zonder steile leercurve, werkt gewoon via SSH, je VPS heeft verder alleen Python nodig.

[ Bericht 4% gewijzigd door Fleischmeister op 13-07-2020 01:49:55 ]
Feolavrijdag 31 juli 2020 @ 18:58
Gooi alles in docker containers en maak een install script. Kan je deployen in 5 min.