Neste tópico vamos mostrar um passo a passo de como utilizar este recurso para instalar o i-Educar numa instância nova do Ubuntu Server 18.04.
Como esta é uma instância nova, vamos atualizar e fazer upgrade dos nossos pacotes:
$ sudo apt update
$ sudo apt upgrade -y
Depois de tudo atualizado vamos instalar as principais dependências do i-Educar, aquelas que precisam estar presentes e configuradas para usarmos o instalador:
$ sudo apt install nginx php-fpm postgresql
Este comando vai instalar as versões mais recentes do nginx e php-fpm presentes em seu repositório. Ele também deve instalar o PostgreSQL 10 (a versão padrão disponível enquanto escrevo este artigo). O i-Educar é extensivamente testado na versão 9.5 e não garantimos total compatibilidade com versões mais recentes. Recomendamos que, se possível, a versão 9.5 seja usada até que novas versões sejam devidamente validadas, mas para este artigo vamos prosseguir com a versão padrão do sistema que deve funcionar bem o suficiente pra gente instalar o i-Educar.
Neste ponto, se eu acessar o IP da minha máquina, devo ser capaz de ver a mensagem de boas vindas do nginx: “Welcome to nginx!”. Isso indica que o nginx foi devidamente instalado.
Agora vamos baixar o release do i-Educar e colocar num lugar onde o nginx possa ler seus conteúdos:
$ wget https://github.com/portabilis/i-educar/releases/download/2.1.X/ieducar-2.1.X.tar.gz
$ sudo tar -zxf ieducar-2.1.0.tar.gz -C /var/www/
$ sudo mv /var/www/ieducar-2.1.0/ /var/www/ieducar
Substitua o caminho de download do release pelo release atual. Dá pra ver todos os releases aqui:
No momento em que posto este tópico o release atual é o 2.1.13 então o meu comando ficaria assim:
$ wget https://github.com/portabilis/i-educar/releases/download/2.1.13/ieducar-2.1.13.tar.gz
Depois que o código foi devidamente copiado, vamos configurar o nginx para carregar o projeto. No repositório temos um exemplo de arquivo de configuração do nginx. Vamos copiá-lo realizando algumas adaptações (se você não está acostumado com o vim, fique à vontade para usar qualquer outro editor):
$ sudo vim /etc/nginx/sites-available/ieducar
server {
index index.php index.html;
server_name _;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/ieducar/public;
location ~ ^/intranet/?$ {
rewrite ^.*$ /intranet/index.php redirect;
}
location ~ /module/(.*)/(styles|scripts|imagens)/(.*) {
rewrite ^/module/(.*)/(imagens|scripts|styles)/(.*)$ /intranet/$2/$3 break;
}
location ~ /module/(.*)/(.*) {
rewrite ^/module/(.*/)(.*intranet/.*)$ /$2 redirect;
rewrite ^/module/(.*/)(.*index\.php)$ /$2 redirect;
rewrite ^/module/(.*/)(.*logof\.php)$ /intranet/logof.php redirect;
rewrite ^/module/(.*/)(.*meusdados\.php)$ /intranet/meusdados.php redirect;
rewrite ^/module/(.*/)(.*_xml.*)(\.php)$ /intranet/$2.php redirect;
rewrite ^/module/(.*/)(.*erro_banco\.php)$ /intranet/erro_banco.php redirect;
rewrite ^/module/(.*/)(.*educar_pesquisa_cliente_lst\.php)$ /intranet/educar_pesquisa_cliente_lst.php redirect;
rewrite ^/module/(.*/)(.*educar_pesquisa_obra_lst\.php)$ /intranet/educar_pesquisa_obra_lst.php redirect;
rewrite ^/module/(.*)$ /module/index.php last;
}
location ~ ^(/intranet.*\.php|/modules.*\.php|/module/) {
try_files /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location ~ \.php {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
}
Alteramos a diretiva root indicando a nova pasta onde colocamos os arquivos do i-Educar. Veja que o root precisa ser a pasta public
dentro da pasta que baixamos do i-Educar. Também alteramos a diretiva fastcgi_pass apontando para o socket do php-fpm rodando na nossa máquina. Vamos remover o site padrão do nginx e habilitar o i-Educar:
$ sudo rm /etc/nginx/sites-enabled/default
$ sudo ln -s /etc/nginx/sites-available/ieducar /etc/nginx/sites-enabled/ieducar
$ sudo service nginx restart
O próximo passo é conectar ao PostgreSQL e criar um banco de dados para o i-Educar. Antes vamos criar um novo usuário (role) para o nosso projeto. Aqui vou criar um usuário exatamente com o mesmo login que uso no meu sistema, neste caso ieducar
:
$ sudo -u postgres createuser -P -s -e ieducar
Substitua ieducar
pelo nome de usuário que você desejar e preencha a senha. Agora basta criar o banco de dados. Como criamos um usuário com o mesmo nome de usuário do nosso sistema, tudo o que precisamos fazer é chamar o seguinte comando.
$ createdb
Se você usou um outro nome de usuário, dê uma olhada na documentação do createdb
para saber como proceder.
Com tudo pronto nós já devemos ser capazes de acessar o nosso instalador pelo browser:
Troque “endereco.de.ip” pelo endereço de IP de sua instância ou domínio. A tela de instalação deve surgir.
O instalador pode encontrar uma série de problemas que nos impede de prosseguir com o processo. Primeiro ele avisa que existem extensões do PHP que ainda não foram instaladas, então vamos resolver isto:
$ sudo apt install php-bcmath php-curl php-xml php-mbstring php-pgsql php-zip php-gd
$ sudo service php7.2-fpm restart
O próximo erro indica que o arquivo de configuração ieducar.ini
não está correto. Vamos configurá-lo exatamente da forma como o instalador sugere que façamos:
$ cd /var/www/ieducar/ieducar/configuration
$ vim ieducar.ini
[192.168.0.105 : production]
Como você pode ver, todas as sugestões de comandos e mudanças de arquivo levam em consideração o ambiente em que a aplicação está rodando. Assim fica fácil simplesmente copiar o que o instalador sugere.
Em seguida precisamos modificar o nosso arquivo .env
para realizar a conexão com o banco:
$ cd /var/www/ieducar
$ vim .env
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=ieducar
DB_USERNAME=ieducar
DB_PASSWORD=12345678
Estas configurações vão variar de acordo com a forma como você criou e configurou o banco de dados. Infelizmente para este passo o instalador não tem como descobrir os valores corretos de antemão então é necessário modificá-los de acordo com sua realidade.
Por fim vamos dar permissão de escrita ao servidor em algumas pastas e arquivos específicos. Novamente podemos usar exatamente a sugestão de comando que o instalador nos fornece:
$ sudo chown -R www-data:www-data /var/www/ieducar
Com isso podemos clicar no botão “Recarregar” e todas as checagens devem estar positivas agora.
Se algo ainda não estiver funcionando basta corrigir e tentar novamente.
Ao final da página defina uma senha segura e forte para o usuário “admin”, clique em “instalar” e aguarde pelo processo de instalação. Uma mensagem de sucesso irá surgir e, logo em seguida, você pode acessar o sistema instalado clicando no link “Clique aqui para acessar o i-Educar”.
Parabéns! Você acabou de instalar o i-Educar em seu servidor!
A instalação do i-Educar é bem simples. O mais complexo é organizar a infra-estrutura para permitir sua instalação de forma adequada. A preparação que fizemos aqui é apenas o primeiro passo no caminho de gestão do i-Educar, por isso é importante ter profissionais capacitados responsáveis por garantir seu bom funcionamento levando em consideração questões como segurança, backups, escalabilidade, atualizações, etc. A Portabilis, mantenedora do projeto i-Educar, oferece serviços que respondem a estas questões da melhor forma possível.
Esperamos que o instalador seja de grande ajuda para quem quer experimentar o i-Educar sem dificuldades. Mas se houver qualquer dúvida ou problema, manda a dúvida aqui no fórum ou entre em contato com a Portabilis para uma assessoria profissional.
Agora que você é um expert em instalação do i-Educar considere contribuir conosco participando de nossa comunidade, escrevendo código, documentações, etc. Toda contribuição é super bem-vinda. Para mais informações visite nosso GitHub!