VPS

Virtuell privat server - ett utrymme som är uppkopplat mot internet där du kan ha dina kodprojekt igång och göra de tillgängliga över internet!
Jag kör själv och rekommenderar digitalocean1.
Här följer min vanliga setup. Kostnaden för denna setup är ca 100kr i månaden.

Steg för att få allt på plats

  1. Skapa konto hos digitalocean.
  2. Lägg till SSH-nyckel
  3. Aktivera VPS (Lägg till en “droplet”)
  4. Generera api-nyckel med READ/write access för att komma åt VPS:en via terminal

Bonus:

  1. digitalocean cli

Lägg till SSH-nyckel

Har du en publik ssh-nyckel?
Om inte kan du följa denna guide för att skapa upp SSH-nycklar.

Kopiera din nyckel såhär:
cat ~/.ssh/id_rsa.pub | pbcopy

Logga in på digitalocean.

Välj settings i menyn längst upp till höger. Du får fram menyn genom att klicka på pilen till höger om din avatar(kontobild).

digitalocean-usermenu-settings

Välj menyvalet “Security”

digitalocean-settings-security

Klistra in din SSH-nyckel i den stora rutan och ge den ett namn, som gör det lätt för dig att komma ihåg vilken dator den kommer ifrån.

digitalocean-add-ssh-key

När du valt ett namn och klistrat in din nyckel kanske det ser ut ungefär såhär

digitalocean-add-ssh-key-with-dummy-content

Tryck på “Create SSH Key” (Den stora gröna knappen )

Kan se ut såhär när du är klar:

digitalocean-ssh-keys

Skapa upp en “droplet”

  1. $10-$20 (tickar / timme, du kan avaktivera och radera när du vill, och då dras bara kostnaden för de timmar du använt resurserna, perfekt för att experimentera och utforska!).
  2. Debian (jag känner mig övertygad om att det är mer stabilt än ubuntu. Många av de guider som lirar för ubuntu kan du också ha glädje av när du använder debian)
  3. Frankfurt (Närmast Sverige)
  4. Ändra /etc/hosts på din egen dator så att den pekar till IP-adressen till din VPS.

Generera api-nyckel för åtkomst via terminalen

digitalocean-api-in-menu

Bonus! Det finns också appar till mobilen som du kan använda för att kika på och hantera dina droplets med, direkt i mobilen! Hur smidigt som helst. Vet inte hur pålitliga utecklarna är, apparna är gratis, du kan ju välja att skapa upp en api-nyckel som endast har “READ”acess - att du alltså endast får se information om dina droplets, och då kan ingen som kanske tar/hittar den nyckel du fyller i mobilappen göra något med dina droplets. Det jag försöker säga är att så länge du utforskar och leker så är det lugnt att du fyller i en API-nyckel med både READ & WRITE access i någon av de två bra mobilapparna som finns, men om du bygger något där det är viktigt att begränsa åtkomsten till “endast behöriga” - ja då skulle jag undvika att lägga in en nyckel med READ-access i en mobilapp som är gratis, saknar omdömen om du inte har stor tillit till utvecklaren eller har tillgång till och kan granska koden för appen.

Lägg till användare (deployer)

4. git

  1. Om git är nytt för dig hoppa till git - en introduktion och kom sedan tillbaka hit.
  2. Installera git
  3. Skapa upp ett “bare git repo”
  4. Pusha upp ditt projekt

nginx

Backup/Spara till senare…

  1. Spara din VPS som en snapshot (tickar 0.05$/mån/gig), så slipper du göra om allt detta när du är redo att faktiskt gå live med att testa något igen.

Publicera app behålla IP digitalocean https://www.digitalocean.com/community/questions/how-can-i-keep-ip-address-of-destroyed-droplet-after-i-recreate-it-using-a-snapshot-from-another-droplet

Istället för destroy -> Ny clean snapshot… -> spara snapshot inför förändringar… kan jag ladda ner snapshots ifrån digitalocean?!! Och ladda om dropleten med denna snapshot!

cli för digitalocean

Installera doctl - cli för digitalocean - Scrolla ner till rubriken “Installing doctl”.

OSX: brew install doctl

Autentisera appen doctl auth init - Ha en digitalocean API-accesstoken med READ och WRITE rättigheter redo.

Jag vill snabbt och enkelt kunna spinna upp en ny VPS (“droplet”). Testar denna ifrån ett exempel i guiden. doctl compute droplet create test --size 1gb --image debian-8-x64 --region nyc1 Cool’t! Det fungerade! :D

bild som visar hur det såg ut!

Undrar om det är lika enkelt att radera?!!

doctl compute droplet delete 70950203 Den frågar: Warning: Are you sure you want to delete droplet(s) (y/N) ? skrev y

Bild på detta

Sedan blev det bara tomt (ny rad kom fram i terminalen). Letar efter att lista droplets för att se att den är bortplockad.

doctl compute droplet list - japp, borta!

Klurar redan på vad som kan vara ett bra alias för doctl compute droplet - dcd kanske? Lägger till alias dcd='doctl compute droplet' i min ~/.bash_profile

Nästa blir att kika i webbgränssnittet, eller kanske via kommandon i doctl efter vilka inställningar jag vill använda mig av när jag spinner upp en droplet. Plats, vilken debianinstallation, 1Gig o.s.v. :)

( https://www.digitalocean.com/community/tutorials/how-to-use-doctl-the-official-digitalocean-command-line-client )

Cronjob

När du vill schemalägga att en fil du har skrivit ska köras med ett visst intervall, eller vid ett visst tillfälle.

sudo vim /etc/crontabb cronjob https://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/

Cron allows Linux and Unix users to run commands or scripts at a given date and time. You can schedule scripts to be executed periodically. Cron is one of the most useful tool in a Linux or UNIX like operating systems. It is usually used for sysadmin jobs such as backups or cleaning /tmp/ directories and more. The cron service (daemon) runs in the background and constantly checks the /etc/crontab file, and /etc/cron.*/ directories. It also checks the /var/spool/cron/ directory.

För att läsa manualen kan du skriva man cronjob

Release!

  1. Separat setup för staging och prod.
  2. Fixa domäninställningar “på riktigt” (ändra namnservrar)
  3. Vänta på att dns-ändringarna ska slå igenom.
  4. TADA!




1 Du får $10 som du kan använda för att testa dig fram. kodkurs.se får två månaders hosting om du i framtiden spenderar $25 hos digitalocean.

Vem ligger bakom denna kurs?

Victoria Wagman som har arbetat som lärare i webbutveckling, och idag arbetar som programmerare hos 46elks.

Detta material byggs upp lite i taget.