Uppgiftsbanken
Uppgifter, övningar och laborationer i HTML, CSS, JavaScript, PHP, SQL för att du skall få öva dig i webbprogrammering och webbutveckling.
Uppgifter, övningar och laborationer i HTML, CSS, JavaScript, PHP, SQL för att du skall få öva dig i webbprogrammering och webbutveckling.
Du skall skapa ett antal klasser i PHP. Dessa klasser skall du sedan använda i ett par webbsidor och visa upp att de fungerar. Tanken är att du bygger grunden till någon form av enklare kortspel med objektorienterade tekniker i ramverket Symfony.
Du skall sätta samman en webbplats som du kan använda som me-sida i kursen. I din me-sida gör du en presentation av kursen, dig själv och du publicerar dina redovisningsstexter.
Du lägger allt i ett Git-repo och när du är klar så publicerar du och taggar ditt repo på GitHub (eller GitLab).
Vi avslutar vår Lager-app med en kundservice chatt.
Vi ska i denna uppgiften använda oss av Web-API:s för att komma åt native-funktionalitet i våra fysiska mobila enheter. Vi använder en mobil enhets styrka och läggar till funktionalitet för GPS, kartor och kamera.
I denna uppgiften ska ni fortsätta med Yahtzee spelet ni började på i kmom02.
I denna uppgiften ska ni binda ihop Yahtzee spelet så att ni får ett fungerade Yahtzee för en spelare.
I denna uppgiften ska ni binda ihop Yahtzee spelet så att ni får ett fungerade Yahtzee för en spelare.
Du har installerat och bekantat dig med Docker enligt Docker-guiden. Nu ska vi använda Docker som en lokal webbserver på vår egna dator, ungefär så som det fungerar i molnet.
Ni ska använda olika verktyg för att hitta säkerhetsproblem i Microbloggen och lägga till dem i er CI kedja.
När ni löser fel som hittas med nedanstående verktyg och commitar koden som löser felen, skriv tydliga commit meddelanden som förklarar vilket fel ni löser.
Använd SAST verktyget Bandit för att hitta möjliga säkerhetshål i Python koden och lös dem.
requirements/test.txt
.app
. Vi behöver inte köra det mot övrig kod i repot.Använd skanner verktyget Trivy för att hitta möjliga säkerhetshål.
target
:
image
för att söka igenom er Microblog produktions image.
scanners
, vuln,secret,config
.fs
för att söka igenom hela repo mappen. Ni kan exkludera .venv
mappen.
scanners
, vuln,secret,config
.target
.Använd Docker lint verktyget Dockle för att hitta möjliga säkerhetshål i er produktions image.
Skapa ett nytt workflow I Github Actions som kör Bandit, Trivy och Dockler på samma sätt som beskrivet ovanför.
dockle
Action man kan använda men ni ska inte göra det. Den söker även er “base image” men vi vill inte det och jag har inte hittat något sätt att stänga av det. Kör istället som vanligt via docker.Ni ska nu skapa playbooks för att sätta upp alla delar av microbloggen; databasen, applikationen på två servrar och en load balancer. När vi bara hade en server använde vi Nginx som en reverse proxy för att skicka vidare requests till Flask appen. Nu ska vi använda Nginx som en load balancer istället.
Efter kraven finns lite hjälp för att lösa er Playbooks.
I Ansible, i era playbooks använd host namnet database
för installationen av databasen, appserver
för era servrar med Microblog och loadbalancer
för Nginx.
Ni kan använda ansible-lint
för att få tips på hur ni bör skriva er Ansible kod. Ni kan använda -x <list of rules>
för att exkludera regler.
Tips Skapa en roll som bara installerar Docker. Den kan ni återanvända för appserver
och database
.
När ni startar MySQL containern kan ni inte använda hashade lösenord, MySQL klara inte av det. De måste vara i plain-text.
När ni startar containern skicka också med - MYSQL_ROOT_PASSWORD=<password>
som environment variabel, ni kommer använda det längre fram.
När ni ska koppla Flask appen till databasen behöver ni IP addressen för databas servern, ni kan inte längre använda er av Dockers länkning för att de körs på två olika maskiner. I ansible kan ni använda {{ groups.database[0] }}
för att få ut IP för databas hosten. Tips om ni inte lyckas koppla upp er mot database kan ni logga in på er VM och köra docker logs <microblog container namn>
för att se loggen för docker containern.
Nginx ska skicka vidare requests till applikations servrarna.
Ni kan hitta två config filer för Nginx som load balancer på Gist.
I upstream app-hosts
, där man bestämmer vilka vilka servrar requests ska skickas vidare till. Är nu bara en av appserver tillagd. Ändra så båda servrar är med. Ni får inte hårdkoda båda servrarna, gör en dynamisk lösning som hanterar om vi lägger till fler appservrar. T.ex. med en loop.
Använd template modulen i Ansible för att flytta conf filerna. Notera variablerna i load-balancer.conf.j2
som ni behöver ha värden till i Ansible.
nginx.conf.j2
till /etc/nginx/nginx.conf
load-balancer.conf.j2
till /etc/nginx/sites-available/load-balancer.conf
.
Ni kan använda file modulen för att länka load-balancer.conf
till sites-enabled
mappen.
Tips Ni hittar loggfilerna för Nginx i /var/log/nginx
. Om en konfig fil inte fungerar kan ni köra nginx -t
för att validera den.
Tänk på att ni kan använda sudo nginx -t
som validate
steg, på tasks i Ansible, för att validera er Nginx konfiguration.