web2print-service/guides/DEPLOY.md
isUnknown e3534dcefb
All checks were successful
Deploy / deploy (push) Successful in 8s
classify guides
2026-03-05 07:11:08 +01:00

4 KiB

Déploiement du service Web2Print

1. Transférer les fichiers sur le serveur

# Depuis votre machine locale, transférer le dossier deploy vers le serveur
scp -r -i ~/.ssh/id_ed25519 deploy/* debian@83.228.210.201:/tmp/web2print-deploy/

# OU utiliser rsync (plus rapide)
rsync -avz -e "ssh -i ~/.ssh/id_ed25519" deploy/ debian@83.228.210.201:/tmp/web2print-deploy/

2. Sur le serveur, copier les fichiers vers /var/www/web2print

# Se connecter au serveur
ssh -i ~/.ssh/id_ed25519 debian@83.228.210.201

# Copier les fichiers
sudo cp -r /tmp/web2print-deploy/config /var/www/web2print/
sudo cp -r /tmp/web2print-deploy/src /var/www/web2print/
sudo cp -r /tmp/web2print-deploy/public /var/www/web2print/

# Définir les bonnes permissions
sudo chown -R www-data:www-data /var/www/web2print
sudo chmod -R 755 /var/www/web2print
sudo chmod -R 775 /var/www/web2print/logs
sudo chmod -R 775 /var/www/web2print/tmp

# Sécuriser le fichier de configuration
sudo chmod 640 /var/www/web2print/config/config.php

3. Générer une clé API

# Générer une clé sécurisée
openssl rand -hex 32

# Copier la clé générée et éditer le fichier de configuration
sudo nano /var/www/web2print/config/config.php

# Remplacer 'REMPLACER_PAR_VOTRE_CLE_API_GENEREE' par la clé générée
# Sauvegarder (Ctrl+O) et quitter (Ctrl+X)

4. Vérifier le chemin de pagedjs-cli

# Vérifier le chemin
which pagedjs-cli

# Si différent de /usr/bin/pagedjs-cli, mettre à jour dans config.php
sudo nano /var/www/web2print/config/config.php
# Modifier la ligne 'pagedjs_bin' avec le bon chemin

5. Configurer la variable d'environnement pour Puppeteer

# Éditer le fichier envvars d'Apache
sudo nano /etc/apache2/envvars

# Ajouter à la fin :
export PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium

# Sauvegarder et redémarrer Apache
sudo systemctl restart apache2

6. Tester le service

Test depuis le serveur

# Test simple (remplacer YOUR_API_KEY par votre clé)
cat > /tmp/test-request.json << 'EOF'
{
  "html": "<!DOCTYPE html><html><head><meta charset='utf-8'><style>@page { size: A4; margin: 2cm; } body { font-family: Arial; } h1 { color: #333; }</style></head><body><h1>Test PDF Paged.js</h1><p>Ceci est un test.</p></body></html>"
}
EOF

curl -X POST http://localhost/generate \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d @/tmp/test-request.json \
  --output /tmp/result.pdf

# Vérifier le PDF
file /tmp/result.pdf
ls -lh /tmp/result.pdf

Test depuis votre machine locale

# Test en ligne de commande (tout sur une seule ligne, remplacer YOUR_API_KEY par votre clé)
curl -X POST http://web2print.studio-variable.com/generate -H "Content-Type: application/json" -H "X-API-Key: 25377ab6e2153b159d1d5fa22501228810b6aec9d63346bd0614045dc167061c" -d '{"html":"<!DOCTYPE html><html><head><meta charset=\"utf-8\"><style>@page { size: A4; margin: 2cm; } body { font-family: Arial; } h1 { color: #333; }</style></head><body><h1>Test PDF</h1><p>Test depuis local</p></body></html>"}' --output test-result.pdf

# Vérifier le PDF reçu
file test-result.pdf
open test-result.pdf

7. Nettoyer

# Supprimer le dossier temporaire
rm -rf /tmp/web2print-deploy

Structure finale sur le serveur

/var/www/web2print/
├── config/
│   └── config.php
├── src/
│   ├── Controllers/
│   │   └── GenerateController.php
│   ├── Services/
│   │   └── PdfGenerator.php
│   └── Middleware/
│       └── AuthMiddleware.php
├── public/
│   ├── index.php
│   └── .htaccess
├── logs/
└── tmp/

Troubleshooting

Si l'API ne fonctionne pas :

  1. Vérifier les logs Apache : sudo tail -f /var/www/web2print/logs/apache-error.log
  2. Vérifier les logs applicatifs : sudo tail -f /var/www/web2print/logs/app.log
  3. Vérifier les permissions : ls -la /var/www/web2print
  4. Tester pagedjs-cli manuellement avec la variable d'environnement
  5. Vérifier que le VirtualHost Apache est bien configuré