Draft Instalador web
Motivação
As dificuldades do processo de instalação, mesmo com documentação, demonstra a necessidade de facilitar o processo, através da criação de um instalador.
Um instalador web é a opção que mais faz sentido para aplicações web. Diversas aplicações web possuem um instalador web que realiza alguns passos básicos. Dentre essas aplicações, algumas conhecidas incluem: Wordpress, Drupal, Joomla, Magento entre outras.
Entre esses passos, os mais comuns são:
- Verifica se o ambiente está corretamente configurado
- Formulário para especificar qual o banco de dados a ser utilizado pela aplicação
- Demais configurações da aplicação
No i-Educar, a verificação de ambiente contemplaria:
- Versão do PHP
- Configuração do PHP: register_globals, memory_limit, extensões gd, pgsql e pdflib, entre outras
- Banco de dados: a partir de dados informados pelo usuário, verifica se existe conexão entre a aplicação e o banco e se o banco de dados já foi criado (criar o banco de dados continua responsabilidade do administrador/usuário)
Com essas pré-condições satisfeitas, o instalador criaria as tabelas no banco de dados, configuraria o search_path e popularia o banco. Alguns dados já poderiam ser configurados pelo instalador, como a primeira instituição, o logo a ser usado nos relatórios, o estado e a cidade a serem utilizados nos campos de endereço entre outros pequenos detalhes.
A evolução dessa tarefa será documentada no ticket #51.
Anotações
Espaço reservado para anotações que possam dar ideias de como implementar o instalador.
Drupal
Foram duas frentes de trabalho, a primeira (Adrian/Vlado) não parece ter originado a implementação final mas dá uma boa ideia de como foi o processo. A segunda frente envolveu mais contribuidores e se tornou o instalador web de fato para o Drupal.
É interessante pois mostra como o desenvolvimento ocorreu, quais requisitos surgiram pelo caminho e a velocidade de adaptação aos novos cenários. Claro que o framework em si já contava com funcionalidades avançadas na parte de temas e formulários mas ainda assim é um bom recurso:
