Skip to content

Latest commit

 

History

History
127 lines (110 loc) · 15.2 KB

SETUP.md

File metadata and controls

127 lines (110 loc) · 15.2 KB

In French

Installation

Warning

L'installation sans Docker nécessite d'avoir une base de données MySQL ou MariaDB pour la gestion des données du site Internet. Vous devez également être en possession d'un serveur SMTP (si possible avec le protocole DKIM configuré) pour l'envoi des courriels de création/connexion des comptes utilisateurs. Enfin, le site Internet traite un grand volume de données et utilise Redis comme solution de mise en cache pour enregistrer temporairement les données les plus fréquemment consultées.

Le déploiement en environnement de production (avec ou sans Docker) nécessite un serveur Web déjà configuré comme Nginx, Apache ou Caddy pour servir les scripts PHP.

Développement local

  • Installer PHP LTS (>8.2 ou plus) ;
  • Installer NodeJS LTS (>18 ou plus) ;
  • Installer Symfony CLI ;
  • Installer les extensions PHP additionnelles suivantes : zip, pdo_mysql, pdo_pgsql, redis, opcache, intl ;
  • Installer les dépendances du projet avec les commandes composer install et npm install ;
  • Modifier les variables d'environnement pour la connexion à la base de données (DATABASE_...) ;
  • Modifier les variables d'environnement pour la connexion au serveur de cache (REDIS_...) ;
  • Modifier les variables d'environnement pour configurer le serveur de messagerie (SMTP_...) ;
  • (Facultatif) Modifier les variables d'environnement pour activer l'authentification DKIM (DKIM_...) ;
  • Générer une phrase de passe avec la commande tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 30; echo (nécessite bash) ;
  • Modifier la variable d'environnement SSL_PHRASE avec la valeur générée à l'étape précédente ;
  • Générer un hash en base64 avec la commande openssl rand -base64 32 (nécessite OpenSSL) ;
  • Modifier la variable d'environnement APP_SECRET avec la valeur générée à l'étape précédente ;
  • (Facultatif) Exécuter la commande php bin/console doctrine:database:create --no-interaction --if-not-exists pour créer la base de données ;
  • Exécuter la commande php doctrine:schema:update --complete --force pour créer les tables dans la base de données ;
  • Démarrer le serveur local Symfony avec la commande symfony server:start ;
  • Dans un deuxième terminal, exécuter la commande npm run watch pour lancer la compilation automatique des fichiers TypeScript et SASS ;
  • Dans un troisième terminal, exécuter la commande php bin/console app:udp-server 127.0.0.1:8443 pour enregistrer les journaux d'événements des serveurs distants (votre pare-feu et/ou votre routeur doivent être correctement configurés) ;
  • (Facultatif) Configurer une tâche planifiée pour exécuter la commande php bin/console app:tasks-executor pour l'exécution des tâches planifiées des serveurs distants ;
  • (Facultatif) Configurer une tâche planifiée pour exécuter la commande php bin/console app:statistics-collector pour la collecte périodique des statistiques d'utilisation.

Déploiement en production

  • Installer PHP LTS (>8.2 ou plus) ;
  • Installer NodeJS LTS (>18 ou plus) ;
  • Installer les extensions PHP additionnelles suivantes : zip, pdo_mysql, pdo_pgsql, redis, opcache, intl ;
  • Installer les dépendances du projet avec les commandes composer install --no-dev --optimize-autoloader et npm install ;
  • Modifier la variable d'environnement APP_ENV sur prod ;
  • Modifier les variables d'environnement pour la connexion à la base de données (DATABASE_...) ;
  • Modifier les variables d'environnement pour la connexion au serveur de cache (REDIS_...) ;
  • Modifier les variables d'environnement pour configurer le serveur de messagerie (SMTP_...) ;
  • (Facultatif) Modifier les variables d'environnement pour activer l'authentification DKIM (DKIM_...) ;
  • Générer une phrase de passe avec la commande tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 30; echo (nécessite bash) ;
  • Modifier la variable d'environnement SSL_PHRASE avec la valeur générée à l'étape précédente ;
  • Générer un hash en base64 avec la commande openssl rand -base64 32 (nécessite OpenSSL) ;
  • Modifier la variable d'environnement APP_SECRET avec la valeur générée à l'étape précédente ;
  • Compiler les fichiers statiques du site Internet avec la commande npm run build ;
  • Supprimer les dépendances de développement avec la commande npm prune --production ;
  • Exécuter la commande php bin/console cache:clear pour vider le cache de fichiers utilisé par Symfony ;
  • Exécuter la commande composer dump-env prod pour transformer les variables d'environnement en variables statiques utilisables par PHP ;
  • (Facultatif) Exécuter la commande php bin/console doctrine:database:create --no-interaction --if-not-exists pour créer une base de données ;
  • Exécuter la commande php doctrine:schema:update --complete --force pour créer les tables dans la base de données ;
  • Utiliser un serveur Web pour servir les scripts PHP et les fichiers statiques générés dans les étapes précédentes ;
  • Exécuter la commande php bin/console app:udp-server 127.0.0.1:8443 pour enregistrer les journaux d'événements des serveurs distants (votre pare-feu et/ou votre routeur doivent être correctement configurés) ;
  • Configurer une tâche planifiée pour exécuter la commande php bin/console app:tasks-executor pour l'exécution des tâches planifiées des serveurs distants ;
  • Configurer une tâche planifiée pour exécuter la commande php bin/console app:statistics-collector pour la collecte périodique des statistiques d'utilisation.

Tip

Pour tester le projet, vous pouvez également utiliser Docker. Une fois installé, il suffit de lancer l'image Docker de développement à l'aide de la commande docker compose up --detach --build. Lorsque le conteneur Docker est prêt, utilisez la commande npm run watch pour compiler automatiquement les fichiers TypeScript et SASS lors de chacune de vos modifications. Le site devrait être accessible à l'adresse suivante : http://localhost:8000/. Si vous souhaitez travailler sur le projet avec Docker, vous devez utiliser la commande docker compose watch --no-up pour que vos changements locaux soient automatiquement synchronisés avec le conteneur. 🐳

Caution

L'image Docker peut également être déployée en production, mais cela nécessite des connaissances approfondies pour déployer, optimiser et sécuriser correctement votre installation, afin d'éviter toute conséquence indésirable. ⚠️

In English

Setup

Warning

Installation without Docker requires having a MySQL or MariaDB database for managing website data. You must also have access to an SMTP server (preferably with the DKIM protocol configured) for sending emails related to user account creation/login. Finally, the website processes a large volume of data and uses Redis as a caching solution to temporarily store the most frequently accessed data.

Deployment in a production environment (with or without Docker) requires a pre-configured web server such as Nginx, Apache, or Caddy to serve PHP scripts.

Local Development

  • Install PHP LTS (>8.2 or higher) ;
  • Install NodeJS LTS (>18 or higher) ;
  • Install Symfony CLI ;
  • Install the following additional PHP extensions: zip, pdo_mysql, pdo_pgsql, redis, opcache, intl ;
  • Install project dependencies using composer install and npm install ;
  • Set environment variables for database connection (DATABASE_...) ;
  • Set environment variables for cache server connection (REDIS_...) ;
  • Set environment variables to configure mail server (SMTP_...) ;
  • (Optional) Set environment variables to enable DKIM authentication (DKIM_...) ;
  • Generate a passphrase using tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 30; echo (requires bash) ;
  • Set SSL_PHRASE environment variable with value generated in the previous step ;
  • Generate a base64 hash using openssl rand -base64 32 (requires OpenSSL) ;
  • Set APP_SECRET environment variable with value generated in the previous step ;
  • (Optional) Run php bin/console doctrine:database:create --no-interaction --if-not-exists to create a database ;
  • Run php doctrine:schema:update --complete --force to create tables in the database ;
  • Start local Symfony server with symfony server:start ;
  • In a second terminal, run npm run watch to start automatic compilation of TypeScript and SASS files ;
  • In a third terminal, run php bin/console app:udp-server 127.0.0.1:8443 to log event data from remote servers (firewall and/or router must be properly configured) ;
  • (Optional) Configure a scheduled task to run php bin/console app:tasks-executor for executing scheduled tasks on remote servers ;
  • (Optional) Configure a scheduled task to run php bin/console app:statistics-collector for periodic collection of usage statistics.

Production Deployment

  • Install PHP LTS (>8.2 or higher) ;
  • Install NodeJS LTS (>18 or higher) ;
  • Install the following additional PHP extensions: zip, pdo_mysql, pdo_pgsql, redis, opcache, intl ;
  • Install project dependencies with composer install --no-dev --optimize-autoloader and npm install ;
  • Set APP_ENV environment variable to prod ;
  • Set environment variables for database connection (DATABASE_...) ;
  • Set environment variables for cache server connection (REDIS_...) ;
  • Set environment variables to configure mail server (SMTP_...) ;
  • (Optional) Set environment variables to enable DKIM authentication (DKIM_...) ;
  • Generate a passphrase using tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 30; echo (requires bash) ;
  • Set SSL_PHRASE environment variable with value generated in the previous step ;
  • Generate a base64 hash using openssl rand -base64 32 (requires OpenSSL) ;
  • Set APP_SECRET environment variable with value generated in the previous step ;
  • Compile static website files with npm run build ;
  • Remove development dependencies with npm prune --production ;
  • Run php bin/console cache:clear to clear Symfony's file cache ;
  • Run composer dump-env prod to convert environment variables into static variables usable by PHP ;
  • (Optional) Run php bin/console doctrine:database:create --no-interaction --if-not-exists to create a database ;
  • Run php doctrine:schema:update --complete --force to create tables in the database ;
  • Use a web server to serve PHP scripts and static files generated in previous steps ;
  • Run php bin/console app:udp-server 127.0.0.1:8443 to log event data from remote servers (firewall and/or router must be properly configured) ;
  • Configure a scheduled task to run php bin/console app:tasks-executor for executing scheduled tasks on remote servers ;
  • Configure a scheduled task to run php bin/console app:statistics-collector for periodic collection of usage statistics.

Tip

To try the project, you can also use Docker installed. Once installed, simply start the development Docker image with docker compose up --detach --build command. When the Docker container is ready, run the npm run watch command to automatically compile all TypeScript and SASS files each time you make changes. The website should be available at http://localhost:8000/. If you want to work on the project with Docker, you need to use docker compose watch --no-up to automatically synchronize your local changes with the container. 🐳

Caution

The Docker image can also be deployed in production, but this requires advanced knowledge to properly deploy, optimize, and secure your installation, in order to avoid any unwanted consequences. ⚠️