Üzemeltetési leírás
Követelmények
Szoftveres környezet
A rendszer Laravel keretrendszerben készült. A Laravel egy PHP framework, ennek megfelelően egy tradícionális LAMP környezetre van szükség a szoftver futtatásához.
- PHP 8.4 vagy újabb, a következő bővítményekkel
- Ctype PHP Extension
- cURL PHP Extension
- DOM PHP Extension
- Fileinfo PHP Extension
- Filter PHP Extension
- Hash PHP Extension
- Mbstring PHP Extension
- OpenSSL PHP Extension
- PCRE PHP Extension
- PDO PHP Extension
- Session PHP Extension
- Tokenizer PHP Extension
- XML PHP Extension
- Redis PHP Extension
- MySQL vagy MariaDB
- nginx és PHP-FPM
- Redis
- SMTP szerver (vagy más, támogatott megoldás: SMTP, Mailgun, Postmark, Resend, Amazon SES, sendmail)
Megjegyzés
A szoftver kizárólag Unix-szerű rendszereken fog megfelelően működni. Ajánlott Ubuntu Server LTS vagy Debian használata. A Windows nem támogatott.
Hardverkörnyezet
A szoftver bármilyen VPS-re, VDS-re vagy dedikált szerverre telepíthető, ami a szoftveres környezetet biztosítani tudja. Shared webes tárhelyre nem telepíthető, azokkal nem kompatibilis.
A rendszerkövetelmények Intel® Xeon® Gold 6126-on lettek mérve.
Minimális feltételek
Kb. 20-25 egyidejű szavazóig.
- 2 vCPU (Xeon Gold 6126, egyenértékű vagy jobb)
- 4 GB RAM
- 20 GB SSD
Ajánlott feltételek
- 4 vCPU (Xeon Gold 6126, egyenértékű vagy jobb)
- 8 GB RAM
- 40 GB SSD
Hálózati feltételek
Kizárólag belső hálózati használat esetén
Megjegyzés
Ebben az esetben kizárólag helyi hálózaton lesz elérhető az alkalmazás, az adott épületen vagy épületkomplexumon belül. VPN használata támogatott, de a sok felhasználó miatt valószínűleg annak az üzemeltetése nem lesz célszerű és extra késleltetést teszt a rendszerbe.
- tetszőleges belső DNS bejegyzés (pl. szavazas.ceg.hu)
- HTTPS (tcp/443) nyitott port a tűzfalon
- self-signed vagy hitelesített TLS SSL tanusítvány (ezek párjai minden eszközre telepítendőek)
Internetes használat esetén
Megjegyzés
Ezzel a megoldással a felhasználók szabadon, saját eszközükkel, saját internethozzáférésükkel és akár távolról is szavazhatnak.
- dedikált, stabil, bérelt vonali internethozzáférés
- legalább 50/50 Mbps
- fix, statikus IP cím
- külső DNS bejegyzés
- külső HTTPS (tcp/443) nyitott port
- Let's Encrypt vagy hitelesített TLS SSL tanusítvány
Egyéb követelmények
- jelszó helyreállítás funkcióhoz SMTP szerver beállítása
Telepítés
Kicsomagolás
Az alkalmazást ki kell csomagolni egy, a webszerver által olvasható mappába.
Fájlrendszer jogosultságok
A fájlok és mappák legyenek olvashatóak a webszerver/PHP preprocessor által.
A bootstrap/cache és a storage mappákat (és tartalmukat rekurzívan) írhatóvá kell tenni ezen felhasználó a számára.
Konfiguráció
A mellékelt .env.example fájlt le kell másolni .env néven. Ebben a fájlban lehet az alkalmazást konfigurálni.
Adatbázis konfiguráció
Az adatbázist előzetesen létre kell hozni.
DB_HOST=127.0.0.1 ## MySQL host
DB_PORT=3306 ## MySQL port
DB_DATABASE=krek_szavazas ## MySQL adatbázis neve
DB_USERNAME=kreksr ## MySQL felhasználó
DB_PASSWORD=1234 ## MySQL jelszó
SMTP/levelezés konfiguráció
MAIL_MAILER=smtp ## Transport megoldás: smtp vagy sendmail
MAIL_HOST=127.0.0.1 ## SMTP szerver cím
MAIL_PORT=25 ## SMTP port
MAIL_USERNAME=null ## SMTP felhasználó, ha szükséges
MAIL_PASSWORD=null ## SMTP jelszó, ha szükséges
MAIL_ENCRYPTION=null ## SMTP titkosítás, ha van (pl. tls)
MAIL_FROM_ADDRESS="hello@example.com" ## Kimenő levelek feladójának címe
MAIL_FROM_NAME="${APP_NAME}" ## Kimenő levelek feladójának neve
Redis
REDIS_CLIENT=phpredis ## Redis connector
REDIS_HOST=127.0.0.1 ## Redis címe
REDIS_PASSWORD=null ## Redis jelszó, ha van
REDIS_PORT=6379 ## Redis port
## ...
SESSION_DRIVER=redis ## Fájlok helyett Redisben tárolja a session adatokat
CACHE_STORE=redis ## Fájlok helyett Redisben tárolja a cache-t
Inicializáció
Miután a .env fájl beállításra került, CLI parancsokkal be kell fejezni a telepítést.
Le kell generálni a titkosításokhoz használt kulcsot:
Le kell futtatni az adatbázis migrációkat:
Cachelni kell a konfigurációt, statikus elemeket, hogy production-ready legyen az alkalmazás:
Végül a Filament gyorsítótárait fel kell tölteni:
Ettől a ponttól kezdve, ha módosítani szükséges a .env fájlon, a változtatások nem fognak érvénybe lépni, amíg a
php artisan config:cache parancs nem lesz újra futtatva.
nginx konfiguráció
server {
listen 80;
listen [::]:80;
# Legyen beállítva HTTPS, legalább Lets Encrypttel vagy belső használat esetén self signed certtel
# A kulcsok beállítása után ezekkel engedélyezhető a HTTPS kiszolgálás
# listen 443 ssl;
# listen [::]:443 ssl;
# Ez legyen a domain cím, amin kiszolgál az app
server_name example.com;
# A '/var/www/ksr' az, ahova ki lettek csomagolva a fájlok
root /var/www/ksr/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
# A "php-8.4-fpm" a telepített PHP verzióra legyen átírva
fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_hide_header X-Powered-By;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
Első felhasználó létrehozása
Az alkalmazás minden felülete jelszóval védett és nincs lehetőség weben keresztül regisztrálni, így az első felhasználót mindenképpen CLI-ből kell létrehozni.
Az alkalmazás gyökérkönyvtárában a
parancsot kiadva elindul a felhasználó létrehozási wizard. A bekért adatok:
- Name - felhasználó teljes, megjelenített neve,
- Email address - bejelentkezéshez használt e-mail cím,
- Password - bejelentkezéshez használt jelszó.
(A felhasználó a bejelentkezést követően megváltoztathatja a jelszavát.)