Aplikace využívá PHP framework Laravel, Bootstrap 4, Webpack 5.
- Systém a jeho komponenty jsou popsány ve Wiki
- 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 18+ - pro build assetů (JS/CSS)
- npm 9+
- Naklonování repozitáře
- 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
- V produkčním prostředí spouštět
- Vytvoření souboru
.env
a vložení obsahu z.env.example
- Vyplnit přístupové údaje do DB
- APP_KEY je možné přegenerovat spuštění
php artisan key:generate
- spouštět pouze při první instalaci
- Vytvoření DB schématu pomocí
php artisan migrate
- Vložení 2 uživatelských účtu (role
master
aadmin
) do DB pomocíphp artisan db:seed
- Vložení 2 uživatelských účtu (role
- Instalace NodeJS závislostí a build assetů -
npm install
anpm run build
Pro lokální použití je nejjednodušší zkopírovat .env.example
a nastavit jen potřebné.
Do Heroku je nutné zadávat vše, co se bude měnit.
Povinné:
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
- Lze přegenerovat pomocí
DB_*
- přístupové údaje k DB
Nejspíše povinné:
FILESYSTEM_DRIVER
- Pro Heroku je potřeba nastavit externí úložiště, viz níže. Jinak je lokální úložiště jako defaultní.APIARY_URL
- touto proměnnou je možné nastavit URL na dokumentaci k API. Pokud je nastavená, na URL/api
bude přesměrování na tuto URL.OVERRIDE_APP_NAME
,DISABLE_PREFIXES
aDISABLE_SUBFOLDERS
- viz níže Více aplikací se stejnou DB nebo úložištěm
Volitelné:
APP_DEBUG
- nastavení natrue
zapne Debugbar, výpis chyb místo generické 500 atd.APP_ENV
- defaultněproduction
, může mít efekt na funkcionalitu, lokálně lze nastavitlocal
APP_URL
- URL adresa, na které systém běží. Používá se při generování obsahu emailůAPP_FORCE_URL
- Pokud jetrue
je nutné zadat iAPP_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 nahttp://czechitas.cz
-> je přesměrován na adresu swww
- Neřeší HTTP/HTTPS
- Příklad:
HTTPS_ENABLE
- pokud je HTTPS povoleno, je automaticky každý request na HTTP přesměrován na HTTPS s kódem 301- Volitelně lze zapnout také HSTS, více na kutac.cz/pocitace-a-internety/https-nestaci-jak-na-hsts-a-hpkp
LOG_CHANNEL
- defaultně ukládá logy do storage/logs (tyto lze sledovat po přihlášení adminem/master adminem na url/logs
). Lze změnit podle souboruconfig/logging.php
. Na Heroku může být výhodnéstderr
.MAIL_MAILER
- viz Mail configuration, defaultně array, tedy zahazuje emaily.SESSION_DRIVER
- defaultněfile
, tedy pouze lokálně. Heroku při restartu Dyna ztratí soubory. Lze nastavit nadatabase
, případně Redis atd, když je nastaven.
Pokud více aplikací sdílí stejnou DB (ne DB server, ale opravdu DB) nebo úložiště (S3 apod), mohou si šahat na data.
To je možné vyřešit pomocí proměnné OVERRIDE_APP_NAME
a nastavit ji podle názvu týmu například.
Na základě této hodnoty se pak vytvoří prefix pro název DB tabulky a složka pro ukládání souborů (obrázků a emailů).
Prvně je ale odebráno slovo czechitas
a app
.
Vše lze ještě upravit těmito ENV proměnnými:
DISABLE_PREFIXES
nastavením natrue
se zakáže přidávání prefixu do názvů tabulekDISABLE_SUBFOLDERS
nastavením natrue
se soubory budou ukládat do rootu úložiště, ne do podsložky s názvem týmu
Deploy do služby Heroku a pak už jen profitovat z výsledku 🎉🎉
- Vytvořit fork pro Váš běh digitální akademie
- Vytvořit účet na herokuapp.com
- 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:
- Vytvořit si účet na AWS - je potřeba S3 Bucket nastavit
- Připravit si FTP, nutný přístup přes URL k uloženým datům - pomalejší než AWS
- Založit si Dropbox - nejpomalejší řešení, spíše nouzovka. Je potřeba také nainstalovat
composer require spatie/flysystem-dropbox
- Vytvořit novou aplikaci na heroku
- Deployment method - Nastavit GitHub, Váš nový fork
- Enable Automatic deploys, pokud chcete, aby se Vám aplikace automaticky updatovala s novými commity
- Nainstalovat ClearDB MySQL addon - https://dashboard.heroku.com/apps//resources
- Ignite, free verze stačí.
- Go to Settings
- env
CLEARDB_DATABASE_URL
by měla být nastavená. - Nastav Buildpacks. Musí být v tomto pořadí
- heroku/nodejs
- heroku/php
- Naconfiguruj VARS (Tyto jsou povinné, podívej se výše jaké lze ještě nastavit)
APP_KEY
^^ viz .envDB_DATABASE
- použij db name zCLEARDB_DATABASE_URL
DB_HOST
- použij host zCLEARDB_DATABASE_URL
DB_PASSWORD
- použij pass zCLEARDB_DATABASE_URL
DB_PORT
- 3306DB_USERNAME
- použij username zCLEARDB_DATABASE_URL
- Vars pro AWS S3 úložiště
FILESYSTEM_DRIVER
-s3
AWS_ACCESS_KEY_ID
- access key k S3AWS_BUCKET
- jmeno AWS bucketuAWS_DEFAULT_REGION
- region, kde je umisten S3 bucketAWS_SECRET_ACCESS_KEY
- secret keyAWS_URL
- url s3 bucketu
- Vars pro FTP úložiště
FILESYSTEM_DRIVER
-ftp
FTP_HOST
- host pro připojeníFTP_USERNAME
- přístupové jméno k FTPFTP_PASSWORD
- přístupové heslo k FTPFTP_URL
- URL pro přístup k datům na FTPFTP_PORT
- nepovinné, defaultně 21FTP_ROOT
- nepovinné, pokud po připojení je potřeba změnit složku k ukládání
- Vars pro Dropbox úložiště, Pomalé, nouzovka!
FILESYSTEM_DRIVER
-dropbox
DROPBOX_AUTH_TOKEN
- token pro připojení, lze získat při vytvoření aplikace přes https://www.dropbox.com/developers/apps
- env
V tomto bodu jste ready-to-deploy. V záložce Deploy stačí v sekci Manual deploy stisknout tlačítko a tradá.
Pokud máte více týmů a chcete více aplikací pro každý tým, tak je potřeba aplikace 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.
Pro zjednodušení je možné spustit
cd .heroku_builder
aphp build.php
. Ten vytvoří skripty pro spuštění, které vytvoří Heroku aplikace. Konfigurace je pomocí souboru config.php a vygenerovaných skriptů využívají Heroku CLI. Soubory.env.example
aswagger.yaml.example
slouží jako template.
- V záložce Deploy je - Connect to Pipeline
- Vytvoř novou pipeline - vyber třeba Staging.
- Poté je Tvá applikace vidět ve sloupečku STAGING.
- Tvá aplikace je aktivní a ve sloupci STAGING lze přidat novou aplikaci.
- Pro ni opět nastav stejné VARS a addons (Cleardb) jak v krocích pro deploy jedné aplikace.
- Pokud appky sdílí DB a/nebo úložiště, podívej se na sekci Více aplikací se stejnou DB nebo souborovým úložištěm
- Vyber si, z jaké branche by se měla deployvat.
- Opakuj tyto kroky pro každý tým co máš.
Optional
- můžeš nastavit Review apps- Review app se automaticky vytvoří pro Pull request do jakékoliv branche.
- Pokud chceš tuto funkcionalitu využít, je potřeba ji zapnout a nastavit v Settings pipeline VARS.
- Hodí se, pokud chcete učit nějaké flow, kdy QA může otestovat aplikaci ještě před mergem do hlavní branche.