Aller au contenu

Mise en production

Ce guide couvre les etapes pour deployer ArtisanCMS sur un serveur de production.

Fenêtre de terminal
APP_ENV=production
APP_DEBUG=false
APP_KEY=base64:... # php artisan key:generate
APP_URL=https://www.monsite.com
Fenêtre de terminal
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=artisancms
DB_USERNAME=artisancms_user
DB_PASSWORD=mot_de_passe_fort
CACHE_DRIVER=redis
QUEUE_CONNECTION=redis
SESSION_DRIVER=redis
MAIL_MAILER=smtp
MAIL_HOST=smtp.example.com
MAIL_PORT=587
MAIL_ENCRYPTION=tls
Fenêtre de terminal
php artisan storage:link # Lien symbolique stockage public
npm run build # Compilation des assets frontend
php artisan migrate --force # Migration de la base de donnees
php artisan optimize # Optimisation (config, routes, vues)

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 :

Fenêtre de terminal
sudo certbot --nginx -d www.monsite.com -d monsite.com
Fenêtre de terminal
* * * * * cd /var/www/artisancms && php artisan schedule:run >> /dev/null 2>&1
CommandeFrequenceDescription
cms:publish-scheduledChaque minutePublie les contenus planifies
cms:analytics:aggregateQuotidienneAgrege les donnees d’analytics
cms:purge-viewsHebdomadairePurge les page views expirees
cms:check-updatesQuotidienneVerifie les mises a jour disponibles
[program:artisancms-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/artisancms/artisan queue:work redis --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/artisancms/storage/logs/worker.log
Fenêtre de terminal
sudo supervisorctl reread && sudo supervisorctl update
sudo supervisorctl start artisancms-worker:*
Fenêtre de terminal
sudo chown -R www-data:www-data /var/www/artisancms
sudo 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/storage
sudo chmod -R 775 /var/www/artisancms/bootstrap/cache

ArtisanCMS inclut un script deploy.sh :

#!/bin/bash
set -e
echo "Deploiement d'ArtisanCMS..."
git pull origin main
composer install --no-dev --optimize-autoloader
npm ci && npm run build
php artisan migrate --force
php artisan optimize
php artisan view:cache
sudo supervisorctl restart artisancms-worker:*
echo "Deploiement termine."