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

140 lines
4 KiB
Markdown

# Déploiement du service Web2Print
## 1. Transférer les fichiers sur le serveur
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# É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
```bash
# 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
```bash
# 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
```bash
# 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é