czechitas / da-test-webapp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Czechitas DA Testing App

Aplikace využívá PHP framework Laravel, Bootstrap 4, Webpack 5.

Dokumentace:

  • Systém a jeho komponenty jsou popsány ve Wiki

Prerekvizity:

  • PHP 8.1+, rozšíření PDO, a GD nebo Imagick
  • Composer 2 https://getcomposer.org/download/
  • MySQL - netestováno s jinou DB, ale možná bude fungovat
  • NodeJS 16+ - pro build assetů (JS/CSS)
  • npm 8.2+

Instalace

  1. Naklonování repozitáře
  2. Instalace PHP závislostí - composer install
    • V produkčním prostředí spouštět composer install --optimize-autoloader --prefer-dist --no-dev --no-ansi --no-interaction
  3. Vytvoření souboru .env a vložení obsahu z .env.example
    1. Vyplnit přístupové údaje do DB
    2. APP_KEY je možné přegenerovat spuštění php artisan key:generate - spouštět pouze při první instalaci
  4. Vytvoření DB schématu pomocí php artisan migrate
    1. Vložení 2 uživatelských účtu (role master a admin) do DB pomocí php artisan db:seed
  5. Instalace NodeJS závislostí a build assetů - npm install a npm run build

Konfigurace pomocí .env

  • APP_KEY - Secret key - slouží k šifrování cookies a session - při změně budou všichni uživatelé odhlášení
    • Lze přegenerovat pomocí php artisan key:generate
  • APP_URL - URL adresa, na které systém běží. Používá se při generování obsahu emailů
  • APP_FORCE_URL - Pokud je true je nutné zadat i APP_URL. Pokud návštěvník přijde na jinou URL, je přesměrován.
    • Příklad: APP_URL=http://www.czechitas.cz uživatel přijde na http://czechitas.cz -> je přesměrován na adresu s www
    • Neřeší HTTP/HTTPS
  • HTTPS_ENABLE - pokud je HTTPS povoleno, je automaticky každý request na HTTP přesměrován na HTTPS s kódem 301
  • DB_* - přístupové údaje k DB

Deployment

Deploy do služby Heroku a pak už jen profitovat z výsledku 🎉🎉

Jedna aplikace

  1. Vytvořit fork pro Váš běh digitální akademie
  2. Vytvořit účet na herokuapp.com
  3. Vyřešit úložiště, Heroku při restartu smaže všechna data viz https://devcenter.heroku.com/articles/active-storage-on-heroku. Možnosti jsou:
    1. Vytvořit si účet na AWS - je potřeba S3 Bucket nastavit
    2. Připravit si FTP, nutný přístup přes URL k uloženým datům - pomalejší než AWS
    3. Založit si Dropbox - nejpomalejší řešení, spíše nouzovka. Je potřeba také nainstalovat composer require spatie/flysystem-dropbox
  4. Vytvořit novou aplikaci na heroku
  5. Deployment method - Nastavit GitHub, Váš nový fork
  6. Enable Automatic deploys, pokud chcete, aby se Vám aplikace automaticky updatovala s novými commity
  7. Nainstalovat ClearDB MySQL addon - https://dashboard.heroku.com/apps//resources
    1. Ignite, free verze stačí.
  8. Go to Settings
    1. env CLEARDB_DATABASE_URL by měla být nastavená.
    2. Nastav Buildpacks. Musí být v tomto pořadí
      1. heroku/nodejs
      2. heroku/php
    3. Naconfiguruj VARS
      • APP_KEY ^^ viz .env
      • DB_DATABASE - použij db name z CLEARDB_DATABASE_URL
      • DB_HOST - použij host z CLEARDB_DATABASE_URL
      • DB_PASSWORD - použij pass z CLEARDB_DATABASE_URL
      • DB_PORT - 3306
      • DB_USERNAME - použij username z CLEARDB_DATABASE_URL
    4. Vars pro AWS S3 úložiště
      • FILESYSTEM_DRIVER - s3
      • AWS_ACCESS_KEY_ID - access key k S3
      • AWS_BUCKET - jmeno AWS bucketu
      • AWS_DEFAULT_REGION - region, kde je umisten S3 bucket
      • AWS_SECRET_ACCESS_KEY - secret key
      • AWS_URL - url s3 bucketu
    5. Vars pro FTP úložiště
      • FILESYSTEM_DRIVER - ftp
      • FTP_HOST - host pro připojení
      • FTP_USERNAME - přístupové jméno k FTP
      • FTP_PASSWORD - přístupové heslo k FTP
      • FTP_URL - URL pro přístup k datům na FTP
      • FTP_PORT - nepovinné, defaultně 21
      • FTP_ROOT - nepovinné, pokud po připojení je potřeba změnit složku k ukládání
    6. Vars pro Dropbox úložiště, Pomalé, nouzovka!

V tomto bodu jste ready-to-deploy. V záložce Deploy stačí v sekci Manual deploy stisknout tlačítko a tradá.

Více aplikací

Pokud máte více týmů a chcete více aplikací pro každý tým, tak je potřeba applikace dát do tzn. pipeliny. Pokud chceš deployvat různé verze, tak pro každý tým musíš vytvořit samostatnou branch. Pokud Ti to je jedno, stačí Ti master branch.

  1. V záložce Deploy je - Connect to Pipeline
  2. Vytvoř novou pipeline - vyber třeba Staging.
  3. Poté je Tvá applikace vidět ve sloupečku STAGING.
  4. Tvá aplikace je aktivní a ve sloupci STAGING lze přidat novou aplikaci.
  5. Pro ni opět nastav stejné VARS a addons (Cleardb) jak v krocích pro deploy jedné aplikace.
    • Přidej další VAR - OVERRIDE_APP_NAME a pojmenuj ji např. po názvu týmu. Jde o prefix do DB, pokud sdílí všechny aplikace stejnou DB, ať si appky "nešahají na vzájemně na data"
  6. Vyber si, z jaké branche by se měla deployvat.
  7. Opakuj tyto kroky pro každý tým co máš.
  8. Optional - můžeš nastavit Review apps
    1. Review app se automaticky vytvoří pro Pull request do jakékoliv branche.
    2. Pokud chceš tuto funkcionalitu využít, je potřeba ji zapnout a nastavit v Settings pipeline VARS.
    3. Hodí se, pokud chcete učit nějaké flow, kdy QA může otestovat aplikaci ještě před mergem do hlavní branche.

About

License:MIT License


Languages

Language:PHP 61.2%Language:Blade 38.5%Language:Makefile 0.2%Language:JavaScript 0.0%Language:Procfile 0.0%