Amazon EB - I-sektionen/i-portalen GitHub Wiki
Hemsidorna för både i-portalen och isektionen är hostade hos Amazon AWS Elasticbeanstalk. Hostingen har en lastbalanserare som fördelar trafiken till ett antal olika EC2 instanser som alla kör en docker-image med respektive hemsidas djangoapplikation på. Vardera hemsida har en MySQL databas kopplad till sig som då alla olika dockerinstanser kan ansluta till. Dessa databaser är så kallade RDS instanser. Eftersom SSL är en viktig del i säkerheten så används SSL fram till lastbalanseraren som agerar SSL terminerande av en huvudanledning , för att kunna dirigera paketen i lastbalanseraren på ett tillfredsställande sätt. SSL certifikat hanteras av Certificate Manager hos Amazon.
I detta avsnitt förklaras de olika delarna i närmare detalj samt information om hur man gör ändringar i konfigurationen, uppdaterar SSL samt, deployar nya ändringar. Samma instruktioner gäller för både iportalen och isektionen och det ska bara vara att byta iportalen
i guiden mot isektionen
för att genomföra det på isektionen.
Docker är typ en virtuell maskin. Förutsatt att du kör Ubuntu 16.04 så kan du följa följande steg för att installera docker:
sudo apt-get remove docker docker-engine docker.io
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce
Om ändringar görs i django_nginx.conf
, docker-entrypoint.sh
eller Dockerfile
så måste docker imagen byggas om.
Detta görs enklast genom att i repomappen köra följande kommandon:
docker build -t webmasterisektionen/iportalen . --no-cache
docker login --username=webmasterisektionen
docker push webmasterisektionen/iportalen:latest
För att testa docker imagen lokalt gör följande. För att nginx inte ska krocka med apache2 så stoppar vi den först
sudo systemctl stop apache2.service
Sen gör du följande ändring i Dockerfile
Byt:
RUN ["cp", "./django_nginx.conf", "/etc/nginx/sites-available/"]
#COPY ./django_nginx_local.conf /etc/nginx/sites-available/django_nginx.conf
Mot:
#RUN ["cp", "./django_nginx.conf", "/etc/nginx/sites-available/"]
COPY ./django_nginx_local.conf /etc/nginx/sites-available/django_nginx.conf
Glöm inte bort att ändra tillbaka när du testat klart!
Se till att du har skapat en fil i repomappen som heter env-variables.conf
I den bör följande finnas, (ändra för att passa dina inställningar med användarnamn och lösenord.)
AWS_DB_HOSTNAME=127.0.0.1
AWS_DB_PASSWORD=<lösenord>
AWS_DB_USERNAME=<användarnamn>
AWS_DB_PORT=3306
AWS_DB_NAME=django_iportalen
ON_LOCAL_DOCKER=TRUE
Kör sedan följande kommandon:
docker build -t webmasterisektionen/iportalen . --no-cache
docker run --publish=8000:80 --net host --env-file=env-variables.conf webmasterisektionen/iportalen
Du ska nu kunna komma åt sidan via 127.0.0.1
OBS!! Glöm inte bort att ändra tillbaka i Dockerfile
!!
Databaserna är åtkomliga via terminalen med informationen från AWS och inloggningsuppgifterna i driven.
För att deploya ändringarna från github och docker hub navigera till applikationen du vill deploya på AWS elasticbeanstalk klicka sedan på Upload and Deploy i mitten av sidan, notera vilket versionsnummer som körs nu och incrementera det med ett så att det blir ett unikt nytt versionsnummer.
Välj sedan Deploy/Dockerrun.aws.json
från repot skriv in det nya versionsnumret och tryck Deploy.
Följ anvisningarna för SSL certifikats genereringen i Wikin, uppdatera sedan certifikaten i Amazon acm.
Klicka på applikationen i Elastic Beanstalk, klicka sedan på Configuration i vänsterkanten, klicka därefter på kugghjulet på scaling rutan. Där klickar du på Auto scaling för att få upp inställningar om min och max antal instanser.