borazslo / miserend.hu

Magyarország katolikus templomainak miserendje:
http://miserend.hu
21 stars 8 forks source link

egy parancsos telepítés dev környezetben #230

Open borazslo opened 6 months ago

borazslo commented 6 months ago

A fejlesztésbe bekapcsolódás megkönnyítése érdekében fontos, hogy egyetlen jó paranccsal nulláról lehessen telepíteni development környezetben mindent és egyből elinduljon a mintaoldal. (Persze ehhez fontos, hogy ha volt korábbi telepítés akkor a docker-ből a mentett volume dolgokat is törölni kell!)

Ez még nem teljesen valósul meg.

connorhu commented 6 months ago

cp config/config.dist.php config/config.php :)

Egyébként nincs két egyforma környezet. Nekem fejlesztői szerveren fut, saját docker, mac-en fejlesztek, nfs-en kersztül kerül a kód a szerverre fájlváltoztatás után, te windows-t használsz és nálad fut a docker, van aki meg linuxot. De pl el kell indulnia a kódnak a php beépített webszerverével is.

Mintha a legelső indításkor (docker compose --env-file .env.local -p miserend up ) még a miserend-build nem tud lefutni, mert gyorsabban elkészül mint a mysql és így még nem fér hozzá erőforrásokhoz amire szüksége van. Ha szépen megvan a mysql, akkor utána már dolgozik a miserend-build

Ez hiba. Meg kell adni, hogy a build csak a mysql után indulhat el.

borazslo commented 6 months ago

Inkább cp -n config/config.dist.php config/config.php, nem?

connorhu commented 6 months ago

https://github.com/borazslo/miserend.hu/pull/231 Itt a javitas

connorhu commented 6 months ago

A .env-et inkább ne mert csak galibát okoz :) Lehet preferált sémát letöltetni és akkor az egy script ami kb beállít mindent ami egy alap futáshoz kell, de akkor milyen rendszerre írjam meg a scriptet? Windowsra és legyen powershell? vagy linuxra és legyen bash? (hogy a mac-ről és a zsh-ról ne is beszéljünk)

connorhu commented 6 months ago

Egyébként azt a merényletemet még nem is mondtam, hogy tilos a mysql usert és passt beégetni, azt is env változóból kellene incializálni, a portokat és a hostneveket szintén. A https-t azt hiszem már írtam valahol, amihez meg certet kell generálni. Egy telepítő script írása azért nem triviális mert ott elakad a dolog, hogy milyen script nyelvet használjon az ember. Unix shell adná magát de a posix kompatibilis script írása egyáltalán nem triviális. Ha te windowson vagy akkor minimum két nyelven kell megírni. Mit kell támogatni, mi a minimum aminek meg kell lennie (mind környezetben mind fejben)?

borazslo commented 6 months ago

Ó, tökre egyetértek hogy a mysql user és pass is env-ben legyen, meg az egyéb külső API-k adatai is. Pont ezt akartam mondani én is: hogy most az mysql user/pw az egyszer benne van a docker-compose.yml -ben, aztán benne kell legyen az .env (ill. .local.env ) -ben a DATABASE_URL változóban. És még a config/config.(dist.)php -ban is. És ehelyett kéne, hogy csak a .env ill. .local.env -ben legyen.

Másik része: A telepítő script most épp csak annyiért kell - ha jól értem magamat - hogy a config/config.php ne legyen hiányolva. Hanem az alapértelmezett config/config.dist.php is elég legyen. Ezt lehet azzal, ha beépítünk telepítő scriptet és akkor figyelni kell hogy win/osx/linux/akármi. De lehet másik oldalról is neki menni: ami betölti a config/config.php -t ő mondja azt, hogy "ha nincs nekem config.php-m, akkor jó lesz a szamár config.dist.php" és akkor már nem kell annyira környezetekre figyelni és mégis megy, hogy könnyen telepíthető a dolog. Nem jól értem?

connorhu commented 6 months ago

Tulajdonképpen a config.dist.php megszűnik. Tehetek oda egy if-et, de a dist-et is be kell állítani, mert nem tartalmazhat jelszavakat, szóval hiába másolom a vége az, hogy valami nem működik mert nem lett beállítva. Szerintem hibás hozzáállás, hogy úgy láttatja magát a rendszer, hogy OK én kész vagyok, pedig messze nem (ebből van a fejvakarás később, hogy miért nem működik x dolog? JA! Mert nem állítottam be). A .env tabu, a .env.local-t meg neked kell beállítani mert szintén vannak / lesznek benne olyan dolgok amiket csak te tudsz (api kulcsok, hozzáférések stb)

connorhu commented 6 months ago

És egyébként pont ezért nem értek egyet azzal, hogy a postgres-t kikapcsoltad és betetted a miserend-et a .env-ben. Ha a postgres marad és elhal az oldal betöltése akkor látszik, hogy valami nem működik jól (többnyire feledékenységből). Így viszont elfedtél egy lehetséges hibát.

Lehet telepítő scriptet csinálni, de akkor meg kell határozni a minimumot aminek meg kell lennie rendszer szinten és ahhoz meg lehet csinálni. Én meg majd megoldom a saját rendszerem sajátosságait. Viszont a telepítő script csak és kizárólag fejlesztői környezetet telepíthet. Az éles rendszert igenis tudni kell beállítani.

borazslo commented 6 months ago

No próbáltam egy pull_requestet. Hogy szerinted jó-e az irány. Mert ha jól értem, akkor így rendesen minden MYSQL beállítás kiszerveződik az .env.local-ba és beállított értékek nélkül el sem indul. De ha be van állítva, akkor nincs minden mindenhova beégetve.

connorhu commented 6 months ago

Igen. A cél az, hogy sehova ne legyen beégetve semmi, mert ha megengedjük ezt, akkor olyan anomáliák lesznek mint a te éles hozzáférésed a forráskódban, vagy személyes adatok az sql dumpban (mindkettővel találkoztam).

Láttam egyébként én is azt, hogy a mysql adatokat duplán kell megadni, de DSN-t át lehet majd forgatni külön változókba, vagy lehet keresni megoldást arra, hogy a docker kezelje a DSN formátumot. Részletkérdés, mivel a docker configba momentán be van égetve a telepítéskori felhasználónév és jelszó. DSN formátumot jobban szeretem, mert így nem szaporodnak el a változók. Egy változó és abban le van írva minden.

connorhu commented 6 months ago

Az a gond, hogy a weboldalnak tudnia kell futni:

A docker ebből az egészből csak 1 igény. Értem, hogy fontos az, hogy zero config legyen, de azzal, hogy docker-t használsz már elbuktad a zero configot, mert a docker-t sem egy saját telepítő telepíti, hanem neked kell külön telepíteni és configurálni (hogy mást ne mondjak biosban engedélyezni a virtualizációt). Azzal, hogy a saját beállításaidat próbálod univerzálissá tenni, csak visszatérünk a legacy rendszer röghöz kötött és nehezen tesztelhető felépítéséhez. Ha fontos a zero config, definiáld, hogy mi a rendszerminimum és megírom. De ez nem a weboldal kódjának a része. Ez egy fejlesztői tool amit meg kell csinálni és függetleníteni a weboldaltól.