Mise en production
Ce guide couvre les etapes pour deployer ArtisanCMS sur un serveur de production.
Checklist de production
Section intitulée « Checklist de production »Variables d’environnement essentielles
Section intitulée « Variables d’environnement essentielles »APP_ENV=productionAPP_DEBUG=falseAPP_KEY=base64:... # php artisan key:generateAPP_URL=https://www.monsite.comBase de donnees, cache et messagerie
Section intitulée « Base de donnees, cache et messagerie »DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_DATABASE=artisancmsDB_USERNAME=artisancms_userDB_PASSWORD=mot_de_passe_fort
CACHE_DRIVER=redisQUEUE_CONNECTION=redisSESSION_DRIVER=redis
MAIL_MAILER=smtpMAIL_HOST=smtp.example.comMAIL_PORT=587MAIL_ENCRYPTION=tlsCommandes de deploiement
Section intitulée « Commandes de deploiement »php artisan storage:link # Lien symbolique stockage publicnpm run build # Compilation des assets frontendphp artisan migrate --force # Migration de la base de donneesphp artisan optimize # Optimisation (config, routes, vues)Configuration serveur web
Section intitulée « Configuration serveur web »ArtisanCMS inclut un .htaccess dans public/. Activez mod_rewrite.
<VirtualHost *:443> ServerName www.monsite.com DocumentRoot /var/www/artisancms/public
<Directory /var/www/artisancms/public> AllowOverride All Require all granted </Directory>
SSLEngine on SSLCertificateFile /etc/ssl/certs/monsite.pem SSLCertificateKeyFile /etc/ssl/private/monsite.key</VirtualHost>server { listen 443 ssl http2; server_name www.monsite.com; root /var/www/artisancms/public; index index.php;
ssl_certificate /etc/ssl/certs/monsite.pem; ssl_certificate_key /etc/ssl/private/monsite.key;
location / { try_files $uri $uri/ /index.php?$query_string; }
location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; }
location ~ /\.(?!well-known) { deny all; }}Let’s Encrypt fournit des certificats gratuits :
sudo certbot --nginx -d www.monsite.com -d monsite.comTaches planifiees (Cron)
Section intitulée « Taches planifiees (Cron) »* * * * * cd /var/www/artisancms && php artisan schedule:run >> /dev/null 2>&1| Commande | Frequence | Description |
|---|---|---|
cms:publish-scheduled | Chaque minute | Publie les contenus planifies |
cms:analytics:aggregate | Quotidienne | Agrege les donnees d’analytics |
cms:purge-views | Hebdomadaire | Purge les page views expirees |
cms:check-updates | Quotidienne | Verifie les mises a jour disponibles |
Files d’attente (Queue Workers)
Section intitulée « Files d’attente (Queue Workers) »Configuration Supervisor
Section intitulée « Configuration Supervisor »[program:artisancms-worker]process_name=%(program_name)s_%(process_num)02dcommand=php /var/www/artisancms/artisan queue:work redis --sleep=3 --tries=3 --max-time=3600autostart=trueautorestart=trueuser=www-datanumprocs=2redirect_stderr=truestdout_logfile=/var/www/artisancms/storage/logs/worker.logsudo supervisorctl reread && sudo supervisorctl updatesudo supervisorctl start artisancms-worker:*Permissions des fichiers
Section intitulée « Permissions des fichiers »sudo chown -R www-data:www-data /var/www/artisancmssudo find /var/www/artisancms -type d -exec chmod 755 {} \;sudo find /var/www/artisancms -type f -exec chmod 644 {} \;sudo chmod -R 775 /var/www/artisancms/storagesudo chmod -R 775 /var/www/artisancms/bootstrap/cacheScript de deploiement
Section intitulée « Script de deploiement »ArtisanCMS inclut un script deploy.sh :
#!/bin/bashset -eecho "Deploiement d'ArtisanCMS..."
git pull origin maincomposer install --no-dev --optimize-autoloadernpm ci && npm run buildphp artisan migrate --forcephp artisan optimizephp artisan view:cachesudo supervisorctl restart artisancms-worker:*
echo "Deploiement termine."