Files

122 lines
4.1 KiB
Markdown

# Producción — pflores.linkedcorp.net
## Estado actual
- Versión: `1.0.0`
- Estado: `operativo`
- Última validación: `2026-06-05`
## Acceso público
- URL: `https://pflores.linkedcorp.net`
- Admin: `https://pflores.linkedcorp.net/wp-admin`
- PDF: `https://pflores.linkedcorp.net/?cv_pdf=1`
## Servidor de aplicación
- Host: `192.168.222.3`
- SSH: `deploy@192.168.222.3 -p 2203`
- Ruta base: `/opt/apps/pflores.linkedcorp.net`
- Credenciales SSH: ver `.token_gitea` bloque `# Produccion user`
## Estructura en servidor
- Código fuente: `/opt/apps/pflores.linkedcorp.net/`
- WordPress: `/opt/apps/pflores.linkedcorp.net/backend/wordpress/`
- Plugins propios: `backend/wordpress/wp-content/plugins/pflores-cv-fields/`
- Temas: `backend/wordpress/wp-content/themes/`
- Config: `/opt/apps/pflores.linkedcorp.net/.env` (local, nunca versionar)
- Script de deploy: `scripts/deploy_prod_web.sh`
## Servicio systemd
- Servicio: `pflores-web.service`
- Puerto: `0.0.0.0:8081`
> ⚠ **El servicio DEBE escuchar en `0.0.0.0:8081`**, no en `127.0.0.1:8081`.
> NPM viene de una IP externa y no puede alcanzar el loopback. Si queda en `127.0.0.1` el resultado es **502 Bad Gateway**.
```bash
sudo systemctl status pflores-web
sudo systemctl restart pflores-web
sudo journalctl -u pflores-web -n 50 --no-pager
```
## Nginx Proxy Manager
- Domain: `pflores.linkedcorp.net`
- Forward Hostname/IP: `192.168.222.3`
- Forward Port: `8081`
- Scheme: `http`
- SSL: certificado `pflores.linkedcorp.net`, Force SSL activado
- `X-Forwarded-Proto: https` — wp-config.php lo detecta automáticamente
## Base de datos (producción)
- Host: `192.168.222.32`
- Base: `paty.wordpress`
- Usuario: `paty.wordpress`
- Prefijo de tablas: `cv_`
- Credenciales: ver `.token_gitea` bloque `# Base de datos`
## Plugins de terceros (no en git — reinstalar si es necesario)
```bash
cd /opt/apps/pflores.linkedcorp.net/backend/wordpress/wp-content/plugins
# CMB2
wget -q https://downloads.wordpress.org/plugin/cmb2.latest-stable.zip -O cmb2.zip
python3 -c "import zipfile; zipfile.ZipFile('cmb2.zip').extractall('.')" && rm cmb2.zip
# WP Mail SMTP
wget -q https://downloads.wordpress.org/plugin/wp-mail-smtp.latest-stable.zip -O wpmail.zip
python3 -c "import zipfile; zipfile.ZipFile('wpmail.zip').extractall('.')" && rm wpmail.zip
```
## WordPress core (no en git — reinstalar si es necesario)
```bash
cd /opt/apps/pflores.linkedcorp.net/backend/wordpress
wget -q https://wordpress.org/wordpress-7.0.zip -O /tmp/wp.zip
python3 -c "import zipfile,shutil,os; ..."
```
## Verificación rápida
```bash
# Desde el servidor de producción:
curl -s -o /dev/null -w "HTTP %{http_code}" http://127.0.0.1:8081/
curl -sI http://127.0.0.1:8081/?cv_pdf=1 | grep Content-Type
curl -s -o /dev/null -w "favicon: HTTP %{http_code}\n" http://127.0.0.1:8081/favicon.ico
```
## Problemas conocidos y soluciones
### 502 Bad Gateway general
El servicio escucha en `0.0.0.0:8081`. Si queda en `127.0.0.1` NPM no puede alcanzarlo.
### 502 en recursos estáticos (CSS, JS, favicon) con NPM Cache Assets activado
NPM cachéa respuestas de error (502/404). Si un recurso faltaba antes y ahora existe,
NPM sigue sirviendo la respuesta vieja desde caché.
**Solución:** en NPM, desactivar **Cache Assets** → guardar → reactivar → guardar.
Para un sitio CV, **Cache Assets puede quedarse desactivado** sin impacto notable.
### CSS/JS con 404 tras clonar el repo en un servidor nuevo
Los symlinks `persona-cv`, `lumina` y `cvolio` en `wp-content/themes/` usan **rutas relativas**
(`../../../../frontend/...`). Si al clonar quedan rotos, recrearlos:
```bash
THEMES='/opt/apps/pflores.linkedcorp.net/backend/wordpress/wp-content/themes'
FRONTEND='/opt/apps/pflores.linkedcorp.net/frontend'
rm -f $THEMES/persona-cv $THEMES/lumina $THEMES/cvolio
ln -s $FRONTEND/persona-cv-theme $THEMES/persona-cv
ln -s $FRONTEND/lumina-cv-theme $THEMES/lumina
ln -s $FRONTEND/cvfolio-theme $THEMES/cvolio
```
### favicon.ico
El archivo `backend/wordpress/favicon.ico` está en git (foto de Patricia, 16/32/48px).
No hace falta recrearlo manualmente.
## Pendientes
- [ ] Configurar SMTP en WP Mail SMTP
- [ ] Confirmar que NPM apunta a `192.168.222.3:8081`