Tredun ohjelmistokehittäjien kurssimateriaaleja
Luo Azureen uusi virtuaalikone (ohjeet):
Ota yhteys ubuntu-serveriin Bash:illä (my_user on ubuntu, ellet valinnut eri käyttäjää):
$ cd .ssh
$ ssh -i "my_indentity.pem" my_user@my_server_ip
Asenna ja configuroi HTTPS, docker sekä docker-compose:
$ sudo apt-get update
$ sudo apt-get install ca-certificates curl gnupg lsb-release
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
$ sudo apt install docker-compose
$ sudo docker run hello-world
Tarkemmat ohjeet täällä
Lisää docker - group ja liitä käyttäjä siihen (niin ei tarvitse kirjoittaa aina sudo kun käytää dockeria).
$ sudo groupadd docker
$ sudo usermod -aG docker my_user
Huom Kirjaudu nyt uudelleen ubuntu-koneeseen, että edellä tehty muutos tulee voimaan (kirjoita exit ja tee uusi SSH-yhteys).
Lataa kokeeksi yksi container dockerhub:ista ja käynnistä se:
$ docker login
$ docker pull my_docker_user/my_app:my_tag
Luo uusi nano:lla tiedosto docker-compose.yml ja tallenna siihen tarvittavat ympäristömuuttujat (ENV), että saat ohjelmasi käyntiin. Liitä teksti hiiren oikealla ja tallenna Ctrl-x ja yes.
$ nano docker-compose.yml
Katso docker-compose.yml rakenne täältä.
Käynnistä kontti docker-compose:lla:
docker-compose up -d
Nyt selaimessa pitäisi näkyä kontin sisältämä appi serverin public IP-osoiteessa (HTTP portissa 80).
Huom: Jos ei näy, käy konffaamassa serverin portti 80 auki internettiin (security group).
Jotta saadaan useampaan porttiin eri applikaatioita omissa konteissaan, asennetaan nginx reverse proxy:ksi. Ohjeet nginx:in asennukseen
Asenna nginx
$ sudo apt-get update
$ sudo apt-get install nginx
Konffaa se reverse-proxy:ksi
$ sudo unlink /etc/nginx/sites-enabled/default
$ cd /etc/nginx/sites-available
$ sudo nano reverse-proxy.conf
Lisää tiedostoon haluamasi proxy-asetukset, tässä käytetty polkua: (tallenna Ctrl-x, yes):
server {
listen 80;
location /team1/ {
proxy_pass http://localhost:81/;
}
}
Ota käyttöön samat proxy-asetukset myös sites-enabled-kansiossa ja käynnistä uudelleen nginx:
$ sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf
$ sudo systemctl restart nginx
Huomataan, että kontti ei mahdollisesti täysin toimikaan tässä polussa (frontti pitäisi buildata uudelleen käyttäen “homepage” - asetusta). Ei tehdä sitä kuitenkaan nyt vaan siirrytään käyttämään omaa domainia (vaihe 3.) ja tehdään reverse-proxy:n konffaus sen avulla.
Pyydä opettajalta oma alidomain Teams:illa serverisi public IP-osoitteelle. Hän konffaa sellaisen AWS:n Route 53:een.
AWS:n Route53:ssa on hosted zone (domain: treok.eu), johon lisätään uusi record, joka reitittää kaikki *.my_new_domain.treok.eu - osoiteet Azure serverisi public IP-osoiteeseen. Huom. DNS:n päivitys voi kestää 24h.
Jos käytössäsi on domain name, voit tehdä proxyn alidomaineille:
server {
listen 80;
server_name my_subdomain.my_domain.xy;
location / {
proxy_pass http://localhost:200;
}
}
Ota käyttöön samat proxy-asetukset myös sites-enabled-kansiossa ja käynnistä uudelleen nginx:
$ sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf
$ sudo systemctl restart nginx
Asenna certbot, joka luo Let’s encrypt - sertifikaatit kaikille domaineillesi ohjeet
$ sudo snap install core; sudo snap refresh core
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
$ sudo certbot --nginx
Nyt sinulla pitäisi olla HTTPS:n kautta toiminnassa kaksi sovellusta joilla on molemmilla oma alidomain:
https://myapp1.my_subdomain.treok.eu
https://myapp2.my_subdomain.treok.eu