Instalação padrão
8 minute read
Estas instruções são para uma instalação baseada em apache, mas podem ser facilmente ajustadas para funcionar com nginx.
Requisitos do servidor
- A versão mínima do PHP é 8.0
- O servidor da web pode ser apache ou nginx. Para nginx, verifique a configuração nos arquivos do docker para ajustar essas instruções, que são para o apache.
- Requer um banco de dados SQL, MySQL e MariaDB foram testados, mas também pode funcionar com Postgres. Testado com MYSQL.v8 e MariaDB.v15.1.
- Extensões PHP necessárias ‘openssl’, ‘pdo’, ‘pdo_mysql’, ‘mbstring’, ’tokenizer’, ‘xlm’, ‘dom’, ‘gd’, ’exif’, ‘bcmath’
- Pandoc é usado para traduzir o código LaTeX usado nas referências bibliográficas. Não é necessário para a instalação, mas é sugerido para uma melhor experiência do usuário.
- Requer Supervisor, que é necessário para os jobs de usuário
Criar usuário dedicado
A maneira recomendada de instalar o OpenDataBio para produção é usando um usuário de sistema dedicado. Nestas instruções, esse usuário é odbserver.
Baixar OpenDataBio
Faça login como seu Usuário dedicado
e baixe ou clone este software para onde deseja instalá-lo.
Aqui assumimos que é /home/odbserver/opendatabio
para que os arquivos de instalação residam neste diretório. Se este não for o seu caminho, altere abaixo sempre que aplicável.
Baixar OpenDataBio
Prepare o Servidor
Primeiro, instale os softwares Apache, MySQL, PHP, Pandoc e Supervisor. Em um sistema Debian, você também precisa instalar algumas extensões PHP e ativá-las:
#EXEMPLO EM UBUNTU 22.04
#repositórios
apt-get install software-properties-common
add-apt-repository ppa:ondrej/php
add-apt-repository ppa:ondrej/php ppa:ondrej/apache2
add-apt-repository ppa:ondrej/php
add-apt-repository ppa:ondrej/apache2
apt update
#instala o php
apt install php8.2 -y
apt update
apt upgrade
#instala extensoes (modulos) do php
php --version
#quais os modulos instalados?
php -m
#se algum desses nao estive, instale
apt install php8.2-{bcmath,xml,mysql,zip,intl,gd,cli,curl,mbstring,sqlite3}
#install apache
apt install libapache2-mod-php8.2
#install pandoc
apt install pandoc
#install supervisor (needed for jobs)
apt-get install supervisor -y
a2enmod php8.2
phpenmod mbstring
phpenmod xml
phpenmod dom
phpenmod gd
a2enmod rewrite
a2ensite
systemctl restart apache2.service
#To check if they are installed:
php -m | grep -E 'mbstring|cli|xml|gd|mysql|pandoc|supervisord|bcmath|pcntl|zip'
Adicione o seguinte à sua configuração do Apache.
- Mude
/home/odbserver/opendatabio
para o seu caminho (os arquivos devem estar acessíveis pelo apache) - Você pode criar um novo arquivo na pasta sites-available:
/etc/apache2/sites-available/opendatabio.conf
e colocar o seguinte código nele.
<IfModule alias_module>
Alias /opendatabio /home/odbserver/opendatabio/public/
Alias /fonts /home/odbserver/opendatabio/public/fonts
Alias /images /home/odbserver/opendatabio/public/images
<Directory "/home/odbserver/opendatabio/public">
Require all granted
AllowOverride All
</Directory>
</IfModule>
Isso fará com que o Apache redirecione todas as solicitações de /
para a pasta correta, e também permitirá que o arquivo .htaccess
fornecido controle as regras de reescrita, de forma que os URLs sejam bonitos. Se desejar acessar o arquivo apontando o navegador para a raiz do servidor, adicione também a seguinte diretiva:
RedirectMatch ^/$ /
Configure seu arquivo php.ini. O instalador pode reclamar da falta de extensões do PHP, então lembre-se de ativá-las nos arquivos cli (/etc/php/8.0/cli/php.ini
e web ini (/etc/php/8.0/fpm/php.ini
) para PHP!
Atualize os valores para as seguintes variáveis:
Encontre os arquivos
php -i | grep 'Configuration File'
Mudar:
memory_limit should be at least 512M
post_max_size should be at least 30M
upload_max_filesize should be at least 30M
Algo como:
[PHP]
allow_url_fopen=1
memory_limit = 512M
post_max_size = 100M
upload_max_filesize = 100M
Habilite os módulos Apache ‘mod_rewrite’ e ‘mod_alias’ e reinicie o servidor:
sudo a2enmod rewrite
sudo a2ensite
sudo systemctl restart apache2.service
Mysql Charset e Collation
- Você deve adicionar o seguinte ao seu arquivo de configuração do SQL (mariadb.cnf ou my.cnf), ou seja, o conjunto de caracteres e o agrupamento que você escolher para sua instalação devem corresponder aos do
config/database.php
[mysqld]
character-set-client-handshake = FALSE #without this, there is no effect of the init_connect
collation-server = utf8mb4_unicode_ci
init-connect = "SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci"
character-set-server = utf8mb4
log-bin-trust-function-creators = 1
sort_buffer_size = 4294967295 #this is needed for geometry (bug in mysql:8)
[mariadb]
max_allowed_packet=100M
innodb_log_file_size=300M #no use for mysql
- Se estiver usando MariaDB e você ainda tiver problemas do tipo #1267 Illegal mix of collations, então verifique aqui sobre como consertar isso.
Configurar o supervisord
Configure o Supervisor, que é necessário para trabalhos. Crie um nome de arquivo opendatabio-worker.conf na pasta de configuração do Supervisor /etc/supervisor/ conf.d/opendatabio-worker.conf
com o seguinte conteúdo, ajustando o caminho conforme a sua instalação:
touch /etc/supervisor/conf.d/opendatabio-worker.conf
echo ";--------------
[program:opendatabio-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/odbserver/opendatabio/artisan queue:work --sleep=3 --tries=1 --timeout=0 --memory=512
autostart=true
autorestart=true
user=odbserver
numprocs=8
redirect_stderr=true
stdout_logfile=/home/odbserver/opendatabio/storage/logs/supervisor.log
;--------------" > /etc/supervisor/conf.d/opendatabio-worker.conf
Permissões de arquivos e pastas
Segurança
As permissões de pasta e arquivo são importantes para proteger a instalação em um servidor aberto publicamente. Se você não configurar corretamente, seu site poderá estar em risco.- As pastas
storage
ebootstrap/cache
precisam ter permissão de escrita para o usuário do servidor (geralmente www-data). Defina0775
para esses diretórios. - O arquivo de configuração
.env
precisa ter permissão0640
pois contém senhas. - Este link mostra diferentes métodos de definir permissões para um aplicativo Laravel.
Este é o método recomendado:
cd /home/odbserver
#note que odbserver e www-data podem mudar na sua configuracao
#defia as permissões tanto par ao seu usuário (aqui odbserver) como para o do apache (aqui www-data)
sudo chown -R odbserver:www-data opendatabio
sudo find ./opendatabio -type f -exec chmod 644 {} \;
sudo find ./opendatabio -type d -exec chmod 755 {} \;
cd /home/odbserver/opendatabio
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache
#pasta media ajustar
sudo find ./storage/app/public/media -type f -exec chmod 664 {} \;
sudo find ./storage/app/public/media -type d -exec chmod 775 {} \;
#arquivo de configuracao .env para permissao 640
sudo chmod 640 ./.env
Instale OpenDataBio
Muitas distribuições Linux (Ubuntu e Debian) têm arquivos php.ini diferentes para a interface de linha de comando e para o Apache. Recomenda-se usar o arquivo de configuração do Apache ao executar o script de instalação, para que ele possa apontar corretamente as extensões ou configurações ausentes. Para fazer isso, encontre o caminho correto para o arquivo .ini e exporte-o **antes de usar o comando de instalação
php install
**.Por exemplo,
export PHPRC=/etc/php/8.0/fpm/php.ini
O script de instalação baixará o gerenciador de dependências Composer e todas as bibliotecas PHP necessárias listadas no arquivo
composer.json
. No entanto, se o seu servidor estiver atrás de um proxy, você deve instalar e configurar o Composer independentemente. Implementamos a configuração do PROXY, mas não a estamos mais usando e não testamos corretamente (se você precisar de ajustes, coloque um issue no GitLab).O script solicitará opções de configuração, que são armazenadas no arquivo de ambiente
.env
na pasta raiz do aplicativo.Você pode, opcionalmente, configurar este arquivo antes de executar o instalador:
- Crie um arquivo
.env
com o conteúdo docp .env.example .env
fornecido - Leia os comentários neste arquivo e ajuste de acordo
- Crie um arquivo
Execute o instalador:
cd /home/odbserver/opendatabio
php install
- Seed data - o script irá pergunar se você quer instalar Localidades e Taxons distribuídos com aplicativo. Esses dados são específicos de cada versão do OpenDataBio. Ver as notas das versões no repositório desses dados.
Pronto para usar
Se o script de instalação for concluído com sucesso, você está pronto para prosseguir! Aponte seu navegador parahttp://localhost/opendatabio
. As migrações de banco de dados incluem uma conta de administrador, com login admin@example.org
e senha password1
. Altere a senha após a instalação.Problemas de instalação
Existem inúmeras maneiras possíveis de instalar o aplicativo, mas podem envolver mais etapas e configurações.
- se o navegador retornar 500|SERVER ERROR , você deve olhar para o último error em
storage/logs/laravel.log
. Se você tiver ERROR: No application encryption key has been specified execute:
chave artesanal php: gerar
php artisan config: cache
- Se você receber o erro failed to open stream: Connection timed out durante a execução do instalador, isso indica uma configuração incorreta do seu roteamento IPv6. A correção mais fácil é desabilitar o roteamento IPv6 no servidor.
- Se você receber erros durante alimentação aleatória do banco de dados, você pode tentar remover o banco de dados inteiramente e reconstruí-lo. Claro, não execute isso em uma instalação de produção.
php artisan migrate: fresh
- Você pode substituir as tabelas Locations e Taxons usando o seed data depois de reconstruir a base:
php seedodb
Configurações pós-instalação
- Se seus Jobs de importação/exportação não estão sendo processados, certifique-se de que o Supervisor esteja executando
systemctl start supervisord && systemctl enable supervisord
e verifique os arquivos de log emstorage/logs/supervisor.log
. - Você pode alterar várias variáveis de configuração para o aplicativo. O mais importante deles provavelmente está definido pelo instalador, mas há outras variáveis em
.env
e no arquivoconfig/app.php
que você pode alterar. Em particular, você pode querer alterar as configurações de idioma, fuso horário e e-mail. Executephp artisan config: cache
após atualizar os arquivos de configuração. - Para impedir que os rastreadores do mecanismo de pesquisa indexem seu banco de dados, adicione o seguinte ao seu “robots.txt” na pasta raiz do servidor (no Debian, /var/www/html):
User-agent: *
Disallow: /
- As pastas
storage
ebootstrap/cache
devem ser graváveis pelo usuário do Apache (geralmente www-data). Veja este link para um exemplo de como fazer isso. Defina a permissão0775
para esses diretórios.
Armazenamento e backups
Você pode alterar as configurações de armazenamento em config/filesystem.php
, onde pode definir o armazenamento baseado em nuvem, que pode ser necessário se muitos usuários enviarem arquivos de mídia, exigindo muito espaço em disco.
- Downloads de dados são colocados em fila como Jobs e um arquivo é gravado em uma pasta temporária,sendo excluído quando o trabalho é excluído pelo usuário. Esta pasta é definida como
download disk
no arquivo de configuração filesystem.php, que aponta parastorage/app/public/downloads
. Apagar esses arquivos temporários depende dos usuários, portanto, um trabalho de limpeza do cron pode ser aconselhável para implementar em sua instalação; - Arquivos de mídia são armazenados por padrão no
media disk
, que coloca os arquivos na pastastorage/app/ public/media
; - Para configuração regular crie ambos os diretórios
storage/app/public/downloads
estorage/app/public/media
com permissões graváveis pelo usuário do servidor - Lembre-se de incluir a pasta de mídia em um plano de backup;