122 lines
4.1 KiB
Markdown
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`
|