Instalação com Nginx
3 minute read
Estas instruções são para instalação com nginx. Se preferir Apache, use a página de instalação padrão (Apache).
Requisitos do servidor
- Versão suportada do PHP >= 8.2 (8.3 recomendado).
- Servidor web: nginx.
- Banco SQL: MySQL ou MariaDB (testado com MySQL 8.0 e MariaDB 10.6+).
- Extensões PHP necessárias:
openssl,pdo,pdo_mysql,mbstring,tokenizer,xml,dom,gd,exif,bcmath,zip,curl,redis. - Redis para filas/cache.
- Tectonic para geração de PDF de etiquetas.
- Pandoc para renderização bibliográfica (recomendado).
- Supervisor para jobs em segundo plano.
Prepare o servidor
O exemplo abaixo usa pacotes do Ubuntu/Debian e PHP 8.3. Instale nginx, PHP-FPM e os mesmos serviços e extensões exigidos pela instalação Apache:
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install nginx mysql-server redis-server tectonic pandoc supervisor \
php8.3-fpm php8.3-cli php8.3-intl php8.3-mysql php8.3-sqlite3 php8.3-gd \
php8.3-mbstring php8.3-xml php8.3-bcmath php8.3-zip php8.3-curl php8.3-redis
sudo systemctl enable --now nginx php8.3-fpm redis-server supervisor
php -m | grep -E 'mbstring|xml|gd|mysql|redis|bcmath|pcntl|zip'
systemctl status php8.3-fpm --no-pager
Siga as seções de usuário dedicado, download, MySQL, Supervisor e permissões da
instalação Apache. Para nginx,
configure /etc/php/8.3/cli/php.ini e /etc/php/8.3/fpm/php.ini e reinicie
php8.3-fpm.
Configuração do site no nginx
Crie o arquivo do site (exemplo):
sudo nano /etc/nginx/sites-available/opendatabio
Use este bloco base (ajuste domínio/caminhos):
server {
listen 80;
server_name seu-dominio.exemplo;
root /home/odbserver/opendatabio/public;
index index.php index.html;
charset utf-8;
client_max_body_size 100M;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_read_timeout 300s;
fastcgi_send_timeout 300s;
}
location ~ /\. {
deny all;
}
}
Ative e recarregue:
sudo ln -s /etc/nginx/sites-available/opendatabio /etc/nginx/sites-enabled/opendatabio
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx
Se o link simbólico já existir, não o recrie. Nunca recarregue o nginx antes de
nginx -t terminar com sucesso.
HTTPS
O bloco da porta 80 é adequado para a validação inicial. Uma instalação pública de produção deve usar HTTPS. Configure um certificado diretamente no nginx, por exemplo com a integração Certbot da sua distribuição, ou termine o TLS em um proxy reverso confiável. Redirecione HTTP para HTTPS somente depois de testar o VirtualHost HTTPS.
Configure a URL pública de forma consistente:
APP_URL=https://seu-dominio.exemplo
ASSET_URL=https://seu-dominio.exemplo
APP_FORCE_HTTPS=true
Quando o TLS terminar em um proxy reverso, encaminhe os cabeçalhos originais
Host e X-Forwarded-Proto e restrinja o acesso direto ao backend.
Content Security Policy (CSP)
No mesmo arquivo do site nginx, adicione no bloco server { ... }:
add_header Content-Security-Policy-Report-Only "default-src 'self'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; object-src 'none'; script-src 'self' 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https://server.arcgisonline.com https://*.tile.openstreetmap.org; font-src 'self' data:; connect-src 'self'; media-src 'self' blob:; worker-src 'self' blob:;" always;
Depois recarregue:
sudo nginx -t
sudo systemctl reload nginx
Notas:
- Comece com
Report-Onlye depois migre para enforcement após validar logs. https://server.arcgisonline.comehttps://*.tile.openstreetmap.orgsão necessários para os tiles do mapa.
URL da instalação
O bloco acima publica o OpenDataBio na raiz de um host dedicado. Use valores
correspondentes no .env:
APP_URL=https://seu-dominio.exemplo
ASSET_URL=https://seu-dominio.exemplo
Depois recompile todos os assets gerados:
sh scripts/build-assets.sh
php artisan optimize:clear
Uma instalação nginx em subcaminho, como /opendatabio, também exige regras
específicas de location, alias e FastCGI; alterar somente o .env não é
suficiente. Prefira um host ou subdomínio dedicado. Se o subcaminho for
obrigatório, use a configuração Apache testada ou prepare e teste uma
configuração nginx específica antes de publicá-la.
Etapas compartilhadas da aplicação
Para evitar redundância, use as mesmas seções da instalação Apache (também válidas para implantação com nginx):
- Configurações de PHP na Instalação padrão, usando o caminho FPM indicado acima
- Configurar o supervisord em Instalação padrão
- Permissões de arquivos e pastas em Instalação padrão
- Instale o OpenDataBio conforme a Instalação padrão, mas execute
php install nginx - Configurações pós-instalação em Instalação padrão