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.
- 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
etnpm 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.
- 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
etnpm install
; - Modifier la variable d'environnement
APP_ENV
surprod
; - 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.
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.
- 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
andnpm 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.
- 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
andnpm install
; - Set
APP_ENV
environment variable toprod
; - 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.