91 lines
3.0 KiB
Markdown
91 lines
3.0 KiB
Markdown
# Déploiement Ferme (release Gitea)
|
||
|
||
## 1) Premier déploiement
|
||
|
||
### Pré-requis système (Ubuntu)
|
||
1. Mettre à jour la machine
|
||
```bash
|
||
sudo apt update
|
||
sudo apt install -y software-properties-common ca-certificates curl gnupg unzip git nginx
|
||
```
|
||
2. Installer PHP 8.4 + FPM + extensions
|
||
```bash
|
||
sudo add-apt-repository -y ppa:ondrej/php
|
||
sudo apt update
|
||
sudo apt install -y \
|
||
php8.4 php8.4-fpm php8.4-cli php8.4-common \
|
||
php8.4-mbstring php8.4-xml php8.4-curl php8.4-intl \
|
||
php8.4-zip php8.4-gd php8.4-pgsql php8.4-opcache
|
||
```
|
||
3. Installer PostgreSQL (si la DB est locale)
|
||
```bash
|
||
sudo apt install -y postgresql postgresql-contrib
|
||
sudo -u postgres psql
|
||
```
|
||
Dans psql :
|
||
```sql
|
||
CREATE USER ferme_user WITH PASSWORD 'motdepassefort';
|
||
CREATE DATABASE ferme OWNER ferme_user;
|
||
\q
|
||
```
|
||
|
||
### Dossier de déploiement
|
||
1. Créer le dossier de déploiement
|
||
```bash
|
||
sudo mkdir -p /var/www/ferme
|
||
sudo chown -R malio:malio /var/www/ferme
|
||
```
|
||
2. Créer le fichier d’environnement
|
||
- Backend : `/var/www/ferme/.env`
|
||
- `APP_ENV=prod`
|
||
- `APP_DEBUG=0`
|
||
- `APP_SECRET=...`
|
||
- `DATABASE_URL=postgresql://ferme_user:motdepassefort@127.0.0.1:5432/ferme?serverVersion=16&charset=utf8`
|
||
- `JWT_SECRET_KEY=%kernel.project_dir%/config/jwt/private.pem`
|
||
- `JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem`
|
||
- `JWT_PASSPHRASE=...`
|
||
- `COOKIE_SECURE=1`
|
||
- `PONT_BASCULE_BYPASS=false`
|
||
3. Générer les clés JWT
|
||
```bash
|
||
cd /var/www/ferme
|
||
mkdir -p config/jwt
|
||
php bin/console lexik:jwt:generate-keypair
|
||
```
|
||
4. Config Nginx (sous-domaine)<br>
|
||
Copier le fichier de conf /deploy/nginx/ferme.conf dans /etc/nginx/sites-available/ferme.conf
|
||
```bash
|
||
sudo ln -s /etc/nginx/sites-available/ferme.conf /etc/nginx/sites-enabled/ferme.conf
|
||
sudo nginx -t && sudo systemctl reload nginx
|
||
```
|
||
5. Installer le script de déploiement (disponible /scripts/deploy-release.sh)
|
||
```bash
|
||
sudo nano /usr/local/bin/deploy-ferme
|
||
sudo chmod +x /usr/local/bin/deploy-ferme
|
||
```
|
||
|
||
## 2) Déployer une release
|
||
|
||
1. Créer un tag sur `develop` (auto-tag `v0.0.X`)
|
||
2. Attendre que la release Gitea soit publiée
|
||
3. (Une seule fois) Donner les droits d'écriture à PHP sur `var/` via ACL
|
||
```bash
|
||
sudo apt update
|
||
sudo apt install -y acl
|
||
sudo setfacl -R -m u:malio:rwx,g:www-data:rwx /var/www/ferme/var
|
||
sudo setfacl -R -m d:u:malio:rwx,d:g:www-data:rwx /var/www/ferme/var
|
||
```
|
||
4. Déployer la release
|
||
```bash
|
||
/usr/local/bin/deploy-ferme vX.Y.Z
|
||
```
|
||
Notes :
|
||
- Lancer le déploiement en tant que `malio` (ou `sudo -u malio`) pour éviter de casser les droits.
|
||
- Le script applique `umask 002` pour garder les fichiers group-writable (`www-data`).
|
||
- Le script force des droits d'exécution minimaux sur `/var/www` et `/var/www/ferme` pour éviter un blocage Nginx.
|
||
|
||
### Vérifications
|
||
- Front : `http://ferme.malio-dev.fr/`
|
||
- API : `http://ferme.malio-dev.fr/api/users`
|
||
- Login : `POST http://ferme.malio-dev.fr/api/login_check`
|