Kihagyás

Ü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:

php artisan key:gen

Le kell futtatni az adatbázis migrációkat:

php artisan migrate

Cachelni kell a konfigurációt, statikus elemeket, hogy production-ready legyen az alkalmazás:

php artisan optimize

Végül a Filament gyorsítótárait fel kell tölteni:

php artisan icons:cache
php artisan filament:cache-components

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

php artisan filament:user

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.)