runv-server

server tooling for runv.club
Log | Files | Refs | README

06-site-and-apache.md (2204B)


      1 # Site público e Apache
      2 
      3 [← Índice](README.md)
      4 
      5 ## Conteúdo estático
      6 
      7 - **`site/public/`:** HTML, CSS, JS servidos como DocumentRoot após `genlanding.py`.
      8 - A landing faz `fetch("data/members.json")` **relativo à URL** — o ficheiro efectivo é **`DocumentRoot/data/members.json`** (ver `site/public/assets/app.js`).
      9 
     10 ## Script: `site/genlanding.py`
     11 
     12 - Configura VirtualHost Apache, `mod_userdir`, `mod_rewrite`, copia `site/public` → DocumentRoot.
     13 - Modo produção: domínio predefinido `runv.club`, DocumentRoot predefinido `/var/www/runv.club/html`.
     14 - Modo `--dev`: `runv.local`, `/var/www/runv-dev/html`.
     15 - Opcional: `--certbot` (incompatível com `--dev`).
     16 - Após cópia, por omissão chama `build_directory.py` para gravar `data/members.json` no DocumentRoot (`--no-refresh-members` para omitir).
     17 - **`--sync-public-only`:** só copia `site/public/` → DocumentRoot, `chown www-data` e regenera `members.json`; **não** altera Apache (uso típico após `create_runv_user.py` e disponível para correr à mão).
     18 - **RSS (`/news/feed.rss`):** o `genlanding` completo (sem `--sync-public-only`) grava `/etc/apache2/conf-available/runv-landing-rss-mime.conf` com **`RemoveType`**, **`ForceType text/xml`** e **`Header set Content-Type`** (sobrepor `mod_mime` / `application/rss+xml`), activa **`a2enmod headers`** e **`a2enconf runv-landing-rss-mime`**. O snippet é **global** ao Apache (**:80 e :443**) sem editar o VirtualHost SSL do Certbot. Após mudar o DocumentRoot, volte a correr o `genlanding` completo para actualizar o snippet.
     19 - Versão actual do script: constante `VERSION` no ficheiro (ex.: `0.07`).
     20 
     21 ## TLS e DNS
     22 
     23 - **Recomendação:** DNS a apontar para o servidor antes de Certbot (documentado historicamente).
     24 
     25 ## Constelação (bolhas)
     26 
     27 - Depende de `members.json` no DocumentRoot.
     28 - Após **`create_runv_user.py`:** se `--landing-document-root` existir como directório, o script corre **`genlanding.py --sync-public-only`** (cópia de `site/public/` + `members.json`) e imprime **`landing (public + bolhas)`** ou **AVISO** se faltar path ou falhar (**evidência:** `create_runv_user.py`).
     29 
     30 Próximo: [07-public-members-directory.md](07-public-members-directory.md).