Instalação all-in-one do i-educar 2.6.0 e i-Diário 1.3.3 no Ubuntu 20

Fiz esse script da forma mais simples que consegui, para iniciantes como eu fazer a instalação em servidor local/VPS do i-educar 2.6.0 e i-Diário de forma fácil e sem erros.

No início do processo de instalação, será solicitado quais sistemas deseja instalar.

No final do processo de instalação o script informa os dados de acesso aos portais, como também ao banco de dados, por padrão o acesso remoto ao banco vai estar desabilitado.

Basta copiar o conteúdo abaixo e colar em um arquivo sh, exemplo: install_ieducar-idiario_ubuntu_20.04_all-in-one.sh

Conceder permissão de execução para o arquivo: chmod +x install_ieducar-idiario_ubuntu_20.04_all-in-one.sh

#!/bin/bash

# Informações de conexão da instância de banco de dados."
DB_HOST=127.0.0.1
DB_PORTA=5432

IP=$(hostname -I)

# Versões
POSTGRES_VERSAO=13
VERSAO_IEDUCAR=2.6.0
VERSAO_IDIARIO=1.3.3

# Atribui Configuraçao
sed_configuracao() {
orig=$(echo $1 | tr -s ’ ’ ‘|’ | cut -d ‘|’ -f 1 | head -n 1)
origparm=$(echo $1 | tr -s ’ ’ ‘|’ | cut -d ‘|’ -f 3 | head -n 1)
if [[ -z $origparm ]];then
origparm=$(echo $1 | tr -s ’ ’ ‘|’ | cut -d ‘|’ -f 2 | head -n 1)
fi
dest=$(grep -E “^(#|;|)$orig” $2 | tr -s ’ ’ ‘|’ | cut -d ‘|’ -f 1 | head -n 1)
destparm=$(grep -E “^(#|;|)$orig” $2 | tr -s ’ ’ ‘|’ | cut -d ‘|’ -f 3 | head -n 1)
if [[ -z $destparm ]];then
destparm=$(grep -E “^(#|;|)$orig” $2 | tr -s ’ ’ ‘|’ | cut -d ‘|’ -f 2 | head -n 1)
fi
case ${dest} in
#${orig})
sed -i “/^$dest.$destparm/c\${1}" $2
;;
;${orig})
sed -i "/^$dest.
$destparm/c\${1}” $2
;;
${orig})
if [[ $origparm != $destparm ]]; then
sed -i “/^$orig/c\${1}” $2
else
if [[ -z $(grep ‘[A-Z_A-ZA-Z]$origparm’ $2) ]]; then
fullorigparm3=$(echo $1 | tr -s ’ ’ ‘|’ | cut -d ‘|’ -f 3 | head -n 1)
fullorigparm4=$(echo $1 | tr -s ’ ’ ‘|’ | cut -d ‘|’ -f 4 | head -n 1)
fullorigparm5=$(echo $1 | tr -s ’ ’ ‘|’ | cut -d ‘|’ -f 5 | head -n 1)
fulldestparm3=$(grep -E “^(#|;|)$orig” $2 | tr -s ’ ’ ‘|’ | cut -d ‘|’ -f 3 | head -n 1)
fulldestparm4=$(grep -E “^(#|;|)$orig” $2 | tr -s ’ ’ ‘|’ | cut -d ‘|’ -f 4 | head -n 1)
fulldestparm5=$(grep -E “^(#|;|)$orig” $2 | tr -s ’ ’ ‘|’ | cut -d ‘|’ -f 5 | head -n 1)
sed -i “/^$dest.*$fulldestparm3\ $fulldestparm4\ $fulldestparm5/c\$orig\ =\ $fullorigparm3\ $fullorigparm4\ $fullorigparm5” $2
fi
fi
;;
*)
echo ${1} >> $2
;;
esac
}

# i-Educar

instalacao_iEducar() {

echo “===> INSTALANDO LIBS BASE i-Educar”
sleep 2
sudo apt update -y
sudo apt upgrade -y
sudo apt install -y git wget curl zip unzip net-tools software-properties-common bash-completion openjdk-8-jre

echo “===> INSTALANDO POSTGRESQL 13”
sleep 2
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
echo “deb Index of /pub/repos/apt/ lsb_release -cs-pgdg main” | sudo tee /etc/apt/sources.list.d/pgdg.list
sudo apt update -y

sudo apt install -y postgresql-$POSTGRES_VERSAO postgresql-client-$POSTGRES_VERSAO

echo “===> CONFIGURANDO POSTGRESQL”
sleep 2
pg_dropcluster --stop $POSTGRES_VERSAO main
pg_createcluster -u postgres -g postgres $POSTGRES_VERSAO main

echo “===> LIBERANDO AUTENTICAÇÃO POSTGRESQL”
sleep 2
sed -i ‘s/md5$/trust/g’ /etc/postgresql/$POSTGRES_VERSAO/main/pg_hba.conf
sed -i ‘s/peer$/trust/g’ /etc/postgresql/$POSTGRES_VERSAO/main/pg_hba.conf
PGPATH=/etc/postgresql/$POSTGRES_VERSAO/main/postgresql.conf
sed_configuracao “listen_addresses = ‘*’” “$PGPATH”

echo “===> INICIANDO POSTGRESQL”
sleep 2
/etc/init.d/postgresql start

sudo -u postgres psql postgres -c “ALTER USER postgres WITH PASSWORD ‘postgres’;”
sleep 2
DB_BASE_IEDUCAR=ieducar
DB_USUARIO_IEDUCAR=ieducar
DB_PASSWORD_IEDUCAR=$(openssl passwd -crypt $DB_USUARIO_IEDUCAR)

echo “===> CRIANDO DATABASE DO i-Educar”
sleep 2
psql -U postgres -c “CREATE ROLE $DB_USUARIO_IEDUCAR WITH LOGIN PASSWORD ‘$DB_PASSWORD_IEDUCAR’;”
psql -U postgres -c “CREATE DATABASE $DB_BASE_IEDUCAR OWNER $DB_USUARIO_IEDUCAR”
psql -U postgres -c “GRANT postgres TO $DB_USUARIO_IEDUCAR;”
psql -U postgres -c “ALTER USER $DB_USUARIO_IEDUCAR WITH SUPERUSER;”

RELEASE=$(cat /etc/lsb-release | grep DISTRIB_CODENAME | cut -c18-30)
case “$RELEASE” in
bionic)
echo “===> É UBUNTU 18.04”
sleep 2
;;
focal)
echo “===> É UBUNTU 20.04”
sleep 2
;;
*)
echo “===> RELEASE INVALIDA”
sleep 2
exit
;;
esac

echo “===> FAZENDO DOWNLOAD DO PACOTE DO i-Educar”
sleep 2
wget https://github.com/portabilis/i-educar/releases/download/$VERSAO_IEDUCAR/ieducar-$VERSAO_IEDUCAR.tar.gz -O /tmp/ieducar-$VERSAO_IEDUCAR.tar.gz

echo “===> CONFIGURANDO USUARIO SSH”
sleep 2
IEDUCAR_SSH_PASSWORD=$(openssl passwd -crypt ieducar)
IDIARIO_SSH_PASSWORD=$(openssl passwd -crypt idiario)
sudo useradd -d /home/ieducar -g www-data -G sudo,www-data -k /etc/skel -m -s /bin/bash -p $IEDUCAR_SSH_PASSWORD ieducar
sudo useradd -d /home/idiario -g www-data -G sudo,www-data -k /etc/skel -m -s /bin/bash -p $IDIARIO_SSH_PASSWORD idiario

echo “===> INSTALANDO PHP 7.4”
sleep 2
sudo add-apt-repository -y ppa:ondrej/php
sudo apt update -y
sudo apt install -y php7.4-fpm php7.4-common php7.4-zip php7.4-pgsql php7.4-curl php7.4-xml php7.4-xmlrpc php7.4-json php7.4-pdo php7.4-gd php7.4-imagick php7.4-ldap php7.4-imap php7.4-mbstring php7.4-intl php7.4-cli php7.4-tidy php7.4-bcmath php7.4-opcache

echo “===> CONFIGURANDO PHP 7.4”
sleep 2
PHP_PATH=/etc/php/7.4/fpm/php.ini
sed_configuracao “upload_max_filesize = ‘2048M’” “$PHP_PATH”
sed_configuracao “post_max_size = ‘2048M’” “$PHP_PATH”
sed_configuracao “max_execution_time = ‘300’” “$PHP_PATH”

PHP_WWW_PATH=/etc/php/7.4/fpm/pool.d/www.conf
sed_configuracao “request_terminate_timeout = ‘300’” “$PHP_WWW_PATH”

echo “===> INSTALANDO NGNIX”
sleep 2
sudo apt install -y nginx

echo “===> CONFIGURANDO VIRTUAL HOST”
sleep 2
echo > /etc/nginx/conf.d/default.conf
cat << NGNIX_DEFAULT_IEDUCAR > /etc/nginx/conf.d/default.conf
server {

listen 80;

server_name default_server;

root /var/www/ieducar/public;
index index.php index.html;

error_log  /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;

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/) {
    rewrite ^(.*)$ /index.php$1;
}

location ~ \.php {
    fastcgi_read_timeout 300;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass php-fpm;
    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;
}

}
NGNIX_DEFAULT_IEDUCAR

echo > /etc/nginx/conf.d/upstream.conf
cat << NGNIX_UPSTREAM_IEDUCAR > /etc/nginx/conf.d/upstream.conf
upstream php-fpm {
server unix:/run/php/php7.4-fpm.sock;
}
NGNIX_UPSTREAM_IEDUCAR

sudo rm -v /etc/nginx/sites-enabled/default
sudo service nginx restart

echo “===> EXTRAINDO PACOTE DO i-Educar”
sleep 2
tar -zxf /tmp/ieducar-$VERSAO_IEDUCAR.tar.gz -C /var/www/
mv /var/www/ieducar-$VERSAO_IEDUCAR /var/www/ieducar

echo “===> REINICIANDO SERVIÇO DO PHP7.4-FPM”
sleep 2
sudo service php7.4-fpm restart

echo “===> INSTALANDO COMPOSER”
cd /tmp
curl -sS https://getcomposer.org/installer -o composer-setup.php
HASH=curl -sS https://composer.github.io/installer.sig
php -r “if (hash_file(‘SHA384’, ‘composer-setup.php’) === ‘$HASH’) { echo ‘Installer verified’; } else { echo ‘Installer corrupt’; unlink(‘composer-setup.php’); } echo PHP_EOL;”
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

echo “===> AJUSTANDO PERMISSÕES DO i-Educar”
sleep 2
sudo chown -R www-data:www-data /var/www/ieducar

echo “===> CONFIGURANDO ARQUIVO ENVIROMENT DO i-Educar”
sleep 2

sudo cat << ENV > /var/www/ieducar/.env
APP_NAME=i-Educar
APP_ENV=production
APP_KEY=base64:DjkHU/qQgA2pJUKjClLssG2NDiK37/Ff+U0G8SB38Eg=
APP_DEBUG=false
APP_URL=http://localhost
APP_TIMEZONE=America/Sao_Paulo
APP_TRACK_ERROR=false
APP_DEFAULT_HOST=ieducar.com.br

API_ACCESS_KEY=
API_SECRET_KEY=

LEGACY_CODE=true
LEGACY_DISPLAY_ERRORS=false
LEGACY_PATH=ieducar

LOG_CHANNEL=stack

TELESCOPE_ENABLED=false

DB_CONNECTION=pgsql
DB_HOST=echo $DB_HOST
DB_PORT=echo $DB_PORTA
DB_DATABASE=echo $DB_BASE_IEDUCAR
DB_USERNAME=echo $DB_USUARIO_IEDUCAR
DB_PASSWORD=echo $DB_PASSWORD_IEDUCAR

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

HONEYBADGER_API_KEY=

GOOGLE_TAG_MANAGER=

FILESYSTEM_DRIVER=local

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=
AWS_BUCKET=

MIX_SOCKET_SERVER=127.0.0.1
MIX_SOCKET_PORT=6001

ENV

echo “===> INSTALANDO i-Educar”
cd /var/www/ieducar
composer new-install --no-interaction
}

# i-Educar - Pacote de Relatórios

instalacao_PacoteRelatorios_iEducar() {
echo “===> INSTALANDO PACOTE DE RELATÓRIOS no i-Educar”
cd /var/www/ieducar && rm -rf packages/portabilis/i-educar-reports-package
git clone https://github.com/portabilis/i-educar-reports-package.git packages/portabilis/i-educar-reports-package
composer update --plug-and-play --no-interaction
php artisan reports:install
}

# i-Diário

instalacao_iDiario() {
echo “===> INSTALANDO LIBS BASE i-Diário”
sleep 2
sudo apt update -y
sudo apt upgrade -y
sudo apt install -y libpq-dev redis-server nodejs cmdtest

echo “===> INSTALANDO GERENCIADOR DE VERSÕES RUBY”
sleep 2
curl -sSL https://rvm.io/pkuczynski.asc | gpg --import -
curl -sSL https://get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh

echo “===> INSTALANDO RUBY 2.4.10”
sleep 2
rvm install 2.4.10

echo “===> FAZENDO DOWNLOAD DO PACOTE DO i-Diário”
wget https://github.com/portabilis/i-diario/archive/refs/tags/$VERSAO_IDIARIO.tar.gz -O /tmp/i-diario-$VERSAO_IDIARIO.tar.gz

echo “===> EXTRAINDO PACOTE DO i-Diário”
sleep 2
tar -zxf /tmp/i-diario-$VERSAO_IDIARIO.tar.gz -C /var/www/
mv /var/www/i-diario-$VERSAO_IDIARIO /var/www/i-diario
cd /var/www/i-diario

echo “===> INSTALANDO A GEM BUNDLER”
sleep 2
gem install bundler -v ‘1.17.3’

echo “===> INSTALANDO AS GEMS”
sleep 2
bundle install

echo “===> INSTALANDO YARN”
sleep 2
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo “deb https://dl.yarnpkg.com/debian/ stable main” | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update -y
sudo apt install -y yarn
sudo yarn install --check-files

echo “===> GERANDO CHAVE SECRETA”
sleep 2
CHAVE_SECRETA_PRODUCTION=$(bundle exec rake secret)
CHAVE_SECRETA_DEVELOPMENT=$(bundle exec rake secret)
CHAVE_SECRETA_TEST=$(bundle exec rake secret)

echo “===> CRIANDO ARQUIVO DE SECRETS”
sleep 2
sudo cat << CONFIG_SECRETS > /var/www/i-diario/config/secrets.yml
production:
secret_key_base: $CHAVE_SECRETA_PRODUCTION
SMTP_ADDRESS: SMTP_ADDRESS
SMTP_PORT: SMTP_PORT
SMTP_DOMAIN: SMTP_DOMAIN
SMTP_USER_NAME: SMTP_USER_NAME
SMTP_PASSWORD: SMTP_PASSWORD
NO_REPLY_ADDRESS: NO_REPLY_ADDRESS
EMAIL_SKIP_DOMAINS: EMAIL_SKIP_DOMAINS
STUDENT_DOMAIN: STUDENT_DOMAIN

development:
secret_key_base: $CHAVE_SECRETA_DEVELOPMENT
SMTP_ADDRESS: SMTP_ADDRESS
SMTP_PORT: SMTP_PORT
SMTP_DOMAIN: SMTP_DOMAIN
SMTP_USER_NAME: SMTP_USER_NAME
SMTP_PASSWORD: SMTP_PASSWORD
NO_REPLY_ADDRESS: NO_REPLY_ADDRESS
EMAIL_SKIP_DOMAINS: EMAIL_SKIP_DOMAINS
STUDENT_DOMAIN: STUDENT_DOMAIN

test:
secret_key_base: $CHAVE_SECRETA_TEST
SMTP_ADDRESS: SMTP_ADDRESS
SMTP_PORT: SMTP_PORT
SMTP_DOMAIN: SMTP_DOMAIN
SMTP_USER_NAME: SMTP_USER_NAME
SMTP_PASSWORD: SMTP_PASSWORD
NO_REPLY_ADDRESS: NO_REPLY_ADDRESS
EMAIL_SKIP_DOMAINS: EMAIL_SKIP_DOMAINS
STUDENT_DOMAIN: STUDENT_DOMAIN
CONFIG_SECRETS

DB_BASE_IDIARIO=idiario
DB_USUARIO_IDIARIO=idiario
DB_PASSWORD_IDIARIO=$(openssl passwd -crypt $DB_USUARIO_IDIARIO)

echo “===> CRIANDO DATABASE DO i-Diário”
sleep 2
psql -U postgres -c “CREATE ROLE $DB_USUARIO_IDIARIO WITH LOGIN PASSWORD ‘$DB_PASSWORD_IDIARIO’;”
psql -U postgres -c “GRANT postgres TO $DB_USUARIO_IDIARIO;”
psql -U postgres -c “ALTER USER $DB_USUARIO_IDIARIO WITH SUPERUSER;”
sleep 2

echo “===> CRIANDO ARQUIVO DE CONFIGURAÇÃO DE BANCO DE DADOS DO i-Diário”
sleep 2
sudo cat << CONFIG_DATABASE > /var/www/i-diario/config/database.yml
default: &default
adapter: postgresql
encoding: utf8
pool: 5
username: $DB_USUARIO_IDIARIO
password: $DB_PASSWORD_IDIARIO
host: $DB_HOST
port: $DB_PORTA

development:
<<: *default
database: idiario_development

test:
<<: *default
database: idiario_test

CONFIG_DATABASE

echo “===> CRIANDO BANCO DE DADOS”
sleep 2
bundle exec rake db:create

echo “===> POPULANDO BANCO DE DADOS”
sleep 2
bundle exec rake db:migrate

echo “===> CRIANDO PÁGINAS 400 E 500 CONFORME MODELO”
sleep 2
cp public/404.html.sample public/404.html
cp public/500.html.sample public/500.html

ENTITY=prefeitura
ADMIN_PORTAL_SENHA_IDIARIO=123456789

echo “===> bundle exec rake entity:setup”
sleep 2
bundle exec rake entity:setup NAME=$ENTITY DOMAIN=$IP DATABASE=$DB_BASE_IDIARIO
bundle exec rake entity:admin:create NAME=$ENTITY ADMIN_PASSWORD=$ADMIN_PORTAL_SENHA_IDIARIO

echo “===> INICIANDO O i-Diário”
sleep 2
bundle exec rails server -d -b 0.0.0.0

# Processo 1 (Responsável pela sincronização com o i-educar)
echo “===> INICIANDO PROCESSO DE SINCRONIZAÇÃO COM O i-Educar”
sleep 2
bundle exec sidekiq -q synchronizer_enqueue_next_job -c 1 -d --logfile log/sidekiq.log

# Processo 2 (Responsável pelos outros jobs)
echo “===> INICIANDO PROCESSO RESPONSÁVEL PELOS OUTROS JOBS”
sleep 2
bundle exec sidekiq -c 10 -d --logfile log/sidekiq.log
}

alteraSenhaMestrePostgres() {
DB_PASSWORD_POSTGRES=$(openssl passwd -crypt postgres)
echo “===> DEFININDO SENHA PARA O USUÁRIO postgres”
sleep 2
psql -U postgres -c “ALTER USER postgres WITH PASSWORD ‘$DB_PASSWORD_POSTGRES’;”
}

echoIEducar() {
echo “++++++++++++++++++++++++++++++++++++++++++++++++++++ i-Educar ++++++++++++++++++++++++++++++++++++++++++++++++++++”
echo “++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++”
echo “”
echo “INSTALAÇÃO TERMINADA.”
echo " ACESSE: http://"echo $IP"/login"
echo “”
echo " Após concluir o processo (para a opção sem pacote de relatórios), acesse o servidor na raiz da instalação, "
echo " ou seja: /var/www/ieducar e executar o comando: php artisan db:seed --force "
echo “”
echo " Isso se faz necessário devido ao processo de instalação ter um bug que não executa as seeds."
echo " A execução do comando serve para popular as tabelas de configurações iniciais da aplicação."
echo “”
echo “++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++”
echo “”
echo “INFORMAÇÕES DE ACESSO AO BANCO DE DADOS”
echo " HOST: " echo $DB_HOST
echo " PORTA: " echo $DB_PORTA
echo " DB_BASE_IEDUCAR: " echo $DB_BASE_IEDUCAR
echo " DB_USUARIO_IEDUCAR: " echo $DB_USUARIO_IEDUCAR
echo " DB_PASSWORD_IEDUCAR: " echo $DB_PASSWORD_IEDUCAR
echo “”
echo “SENHA do usuário postgres é: " echo $DB_PASSWORD_POSTGRES
echo “”
echo “++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++”
echo “”
echo “GUARDE AS CREDENCIAIS DE ACESSO DO ADMINISTRADOR DO PORTAL i-Educar: "
echo " USUÁRIO: admin”
echo " SENHA: 123456789”
echo “”
echo "GUARDE A SENHA SSH PARA USUARIO ieducar: " echo $IEDUCAR_SSH_PASSWORD
echo “”
}

echoIDiario() {
echo “++++++++++++++++++++++++++++++++++++++++++++++++++ i-Diário ++++++++++++++++++++++++++++++++++++++++++++++++++++++”
echo “++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++”
echo “INSTALAÇÃO TERMINADA.”
echo " ACESSE: http://"echo $IP":3000"
echo “++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++”
echo “”
echo “INFORMAÇÕES DE ACESSO AO BANCO DE DADOS”
echo " HOST: " echo $DB_HOST
echo " PORTA: " echo $DB_PORTA
echo " DB_BASE_IDIARIO: " echo $DB_BASE_IDIARIO
echo " DB_USUARIO_IDIARIO: " echo $DB_USUARIO_IDIARIO
echo " DB_PASSWORD_IDIARIO: " echo $DB_PASSWORD_IDIARIO
echo “”
echo “GUARDE AS CREDENCIAIS DE ACESSO DO ADMINISTRADOR DO PORTAL i-Diário: "
echo " USUÁRIO: admin@domain.com.br”
echo " SENHA: 123456789"
echo “”
echo “GUARDE A SENHA SSH PARA USUARIO idiario: " echo $IDIARIO_SSH_PASSWORD
echo “”
echo “INFORMAÇÃO: Sempre que for fazer deploy, deve-se parar o sidekiq e depois reiniciá-lo.”
echo " ps -ef | grep sidekiq | grep -v grep | awk ‘{print $2}’ | xargs kill -TERM && sleep 20”
echo “”
echo “COMANDO PARA INICIAR O SIDEKIQ”
echo " Processo 1 (Responsável pela sincronização com o i-educar)"
echo " bundle exec sidekiq -q synchronizer_enqueue_next_job -c 1 -d --logfile log/sidekiq.log"
echo “”
echo " Processo 2 (Responsável pelos outros jobs)"
echo " bundle exec sidekiq -c 10 -d --logfile log/sidekiq.log"
echo “”
echo “++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++”
}

# Fluxo Condicional de Instalação
while read -r -t 0; do read -r; done

clear
echo “”
echo “BEM VINDO AO GERENCIADOR DE INSTALAÇÃO DO i-Educar e i-Diário”
echo “”
echo “1 - INSTALA SOMENTE O i-Educar”
echo “2 - INSTALA O i-Educar e o Pacote de Relatórios”
echo “3 - INSTALA SOMENTE O i-Diário”
echo “4 - INSTALA O i-Educar e o i-Diário”
echo “5 - INSTALA O i-Educar, Pacote de Relatórios e o i-Diário”
echo “”
read -p "SELECIONE A OPÇÃO E PRESSIONE ENTER! " OPC
echo “”
case “$OPC” in
1)
instalacao_iEducar
alteraSenhaMestrePostgres
echoIEducar
;;
2)
instalacao_iEducar
instalacao_PacoteRelatorios_iEducar
echoIEducar
;;
3)
instalacao_iDiario
alteraSenhaMestrePostgres
echoIDiario
;;
4)
instalacao_iEducar
instalacao_iDiario
alteraSenhaMestrePostgres
echoIEducar
echoIDiario
;;
5)
instalacao_iEducar
instalacao_iDiario
alteraSenhaMestrePostgres
instalacao_PacoteRelatorios_iEducar
echoIEducar
echoIDiario
;;
*)
echo “===> OPÇÃO INVÁLIDA. FINALIZANDO A EXECUÇÃO DO SCRIPT.”
exit 0
;;

esac

3 Curtidas

Olá @moliveirasoares o que você está fazendo será uma ajuda e tanto para os iniciantes. Antecipadamente agradeço o seu empenho e dedicação.
Bom, copiei o script, executei os passos inicias para executar o arquivo.sh, porém o terminal me retornou uma mensagem abaixo descrita.

./sistema-idiario.sh: line 43: unexpected EOF while looking for matching `)’
./sistema-idiario.sh: line 640: syntax error: unexpected end of file

Não entendo de programação, se você puder verificar e nos explicar/corrigir agradeço.
Testei no Ubuntu Server 18.04.

1 Curtida

Olá @gilcimartec, obrigado pelo retorno.

Ajustei o script, o erro estava na formação do script na plataforma, pois alguns caracteres a plataforma entende de forma diferente.

Testa ai e me avisa.

Mais uma vez agradeço sua dedicação. Nem sempre se encontra pessoas, assim como você, dispostas a ajudar.
Realmente, nem tudo sai como a gente quer na plataforma.
Copiei todo o script, criei um novo arquivo .sh, porém persistiu o mesmo erro. A partir daí vi que tem um site para checar scripts de forma online. Então fui lá e coloquei o seu script e me retornou o print abaixo.

“Não estou querendo ensinar o padre a rezar”, mas a intenção aqui é ajudar a localizar o problema mais rapidamente.
Aguardo seu retorno @moliveirasoares

1 Curtida

rrsrs @gilcimartec, tranquilo quanto a isso.

Bom avaliando o que está ai realmente tem mais algum caractere que a plataforma não entendeu e acabou convertendo.

O que está rolando é que no script eu defino alguns comentários para explicar o que é a função e o comentário começa com # e esse caractere está sendo interpretado de outra forma na plataforma.

Como não tem uma forma de anexar o script, fiz o seguinte comando para baixar o arquivo do meu Driver compartilhado.

Instalação em um só comando:

wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1-BwKqlXNGiCjkJUzByc98u2aRTCYcEsy' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=1-BwKqlXNGiCjkJUzByc98u2aRTCYcEsy" -O /tmp/install.sh ; cd /tmp ; sudo chmod +x install.sh ; sudo ./install.sh

Testa ai e me avisa.

Fala @moliveirasoares !
Passei o dia longe do PC e só agora pude testar. Meu irmão, esse comando tá show de bola. Tô muito feliz, mas muito feliz mesmo, com sua iniciativa de ajudar os iniciantes como eu que pretendem utilizar o i-educar e i-diario.
Ao executar o comando, o script foi baixado e iniciado e primeiramente escolhi a opção 3 (instalar só o i-diario). No meio do processo ele não localizou o diretório /var/www, provavelmente porque o diretória não tinha sido criado anteriormente. Então reiniciei a instalação e dessa vez escolhi a opção 5 (instalar tudo) e me apareceram as mensagens dos prints abaixo.
1 erro
erro 1


erro 2

Ao final de todo o processo o i-educar rodou, consegui entrar, tudo certinho, porém o i-diario que tá sendo “a pedra no meu sapato” não funcionou.

1 Curtida

Olá @gilcimartec, obrigado pelo retorno.

Eu testei o script e tem momentos que esse erro do yarn aparece e momentos não, acabei não tendo tempo de pegar o motivo disso. O erro no yarn está relacionado ao npm, por algum motivo o yarn que foi instalado não veio do pacote informado no script, acabou pegando do source padrão do servidor.

Amanhã durante o dia, revisarei e postarei aqui a atualização.

Olá, @gilcimartec, revisei o script, como disse, achei um porque do erro, mais adicionei alguns passos de sleep para dar tempo o SO processar a informação.

Realizei o tratamento para o diretório /var/www não encontrado.

Quando ao erro no npm, pode relevar ele por enquanto, tem uma particularidade que precisa ser tratada mais não interfere na instalação nem no uso da aplicação.

Pode tentar usar novamente o script.

wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1-BwKqlXNGiCjkJUzByc98u2aRTCYcEsy' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=1-BwKqlXNGiCjkJUzByc98u2aRTCYcEsy" -O /tmp/install.sh ; cd /tmp ; sudo chmod +x install.sh ; sudo ./install.sh
2 Curtidas

Olá @moliveirasoares, faço das palavras do colega @gilcimartec, as minhas! Parabéns e muito obrigado! Ajudou muito e encaminhei bastante a instalação por aqui porém, como estou iniciando na plataforma, ainda estou encontrando muita dificuldade e alguns erros foram identificados na implantação. Vou passar os arquivos anexos, e se possível, gostaria muito de sua ajuda.
Tentei instalar como root, como outro usuário com privilégios, mas não deu… rsrs… o problema deve ser falha minha em alguma parte.
A VM é nova, está na linode e pode ser limpa e restaurada a qquer momento, caso necessário.
Seguem os erros. Desculpa se foram muitos arquivos… Muito Obrigado!

e

Os erros ocorrem tanto para o i-educar quanto para o i-diario.
Crio os bancos manualmente e o i-educar consigo instalar pelo install.php. Mas o idiário, faz dias que tento e não vai!
Mais uma vez, obrigado


r

Olá, obrigado pelo retorno.

Ontem fiz um ajuste e comentei duas linhas que tratavam da autenticação externa no postgres e isso afetou o script pois acabei salvando ele sem descomentar as linhas.

Irei fazer assim que pegar no computador e aviso aqui.

Obrigado pelo retorno Marcos. Muito Obrigado

Bom dia!! Consegui remover o # de linha comentada e executar a instalação, porém tive que fazer mais uma alteração pois dava um erro de utf8 incompatível. Vou deixar aqui a solução, caso alguém precise.
Na configuração do arquivo database.yml, deve ser acrescentado a opção template e alterado o encoding para unicode. Acredito que nem todos devam encontrar esse problema… provavelmente depende da VM utilizada.

default: &default
adapter: postgresql
template: template0
encoding: unicode

Também pode ser necessário executar os comandos:
su postgres
psql
UPDATE pg_database SET datistemplate = FALSE WHERE datname = ‘template1’;
DROP DATABASE template1;
CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = ‘UNICODE’;
UPDATE pg_database SET datistemplate = TRUE WHERE datname = ‘template1’;
\c template1
VACUUM FREEZE;
\q

Agora tenho outros problemas… rsrs
Após a finalização, o i-diário que abre pela porta 3000, dava erro 404-página não encontrada. E após reiniciar o servidor, a porta não consta mais aberta e dá conexão recusada.
Será que fiz algo errado?

Mais uma vez, obrigado pela atenção.

1 Curtida

Olá @robsonm, obrigado pero retorno.

Sim, você está correto, nem todos podem enfrentar esse erro, pois algumas VPS já devem estar com a codificação compatível com o i-Diário. Engraçado que o templete0 e template1 devem estar iguais, logo não faz diferença. Geralmente definimos outro template para usar um encoding diferente, tipo ISO

Segue a lista que deve estar na sua instalação do Postgres

# psql -U postgres -c "\l"
                                       List of databases
        Name         |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
---------------------+----------+----------+-------------+-------------+-----------------------
 idiario             | idiario  | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 idiario_development | idiario  | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 idiario_test        | idiario  | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 ieducar             | ieducar  | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres            | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0           | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
                     |          |          |             |             | postgres=CTc/postgres
 template1           | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
                     |          |          |             |             | postgres=CTc/postgres
(7 rows)

Eu não sei qual encoding é o homologado pelo i-Educar e nem pelo i-Diário, se soubesse teria como já definir no script. @tiago.camargo, poderia ajudar nessa questão do encoding do banco de dados para ambos os sistemas como também o encoding do servidor?

Aproveito para informar que fiz o ajuste no Script quanto a erro de autenticação no Postgres

1 Curtida

Bom dia @moliveirasoares, eu quem agradeço pela presteza e tempo em ajudar a todos aqui.
Realmente, não tenho como agradecer pela ajuda que tem dado a mim e a toda comunidade.

Quanto a codificação, eu acredito que utf8 daria certo para ambos. Não tenho muito conhecimento em postgres, por isso tenho sofrido aqui… kkkkk
Segue minha lista:

No meu, não cria o banco idiario… triste! Parece que as alterações que encaminhei ajudou a parar o erro, mas não solucionou… rsrs

Consegui!

executando esses comandos, consegui alterar tudo pra utf8…

$ sudo dpkg-reconfigure locales
======> e escolhi en_US.UTF8

depois

su postgres
psql
UPDATE pg_database SET datistemplate = FALSE WHERE datname = ‘template1’;
DROP DATABASE template1;
CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING=‘UNICODE’ LC_COLLATE=‘en_US.UTF8’ LC_CTYPE=‘en_US.UTF8’;
UPDATE pg_database SET datistemplate = TRUE WHERE datname = ‘template1’;
UPDATE pg_database SET datallowconn = FALSE WHERE datname = ‘template1’;

UPDATE pg_database SET datistemplate = FALSE WHERE datname = ‘template0’;
DROP DATABASE template0;
CREATE DATABASE template0 WITH TEMPLATE = template0 ENCODING=‘UNICODE’ LC_COLLATE=‘en_US.UTF8’ LC_CTYPE=‘en_US.UTF8’;
UPDATE pg_database SET datistemplate = TRUE WHERE datname = ‘template0’;
UPDATE pg_database SET datallowconn = FALSE WHERE datname = ‘template0’;
\q

Muito Obrigado!

1 Curtida

Você precisou fazer isso devido a particularidade da sua VPS, teria que entender melhor e colocar um comportamento no script para identificar esse tipo de configuração de VPS e se adaptar, mais é algo mais demorado para ser feito.

Eu acredito nisso tbem… mas deu tudo certo na instalação após alterar a codificação.

Eu só continuo com um probleminha… quando a VPS é reiniciada, nem todos os serviços voltam. Identificado até agora é a porta 3000. Não navega. Dá conexão recusada e não consta nas portas abertas e disponíveis.

Também não consegui sincronizar enquanto rodava, mesmo seguindo todos os passos.

Alguma ideia do que pode estar acontecendo, principalmente no caso da porta do i-diario?

Desculpas pela tomada de tempo e mais uma vez, obrigado.

1 Curtida

O script não registra o i-diário para iniciar juntamente com a inicialização do SO, nem tão pouco os jobs necessários.

O i-Educar iniciar junto com o SO devido o ngnix e php subirem junto com a inicialização do SO.

Uma das opções é fornecer o i-Diário com um ngnix com suporte a Ruby ou criar um script auxiliar para iniciar após a reinicialização do SO.

2 Curtidas

Agora lascou… kkkkkkkkk

Comecei a mexer recentemente com a plataforma e estava me virando até que me pediram o i-diário e estou bastante perdido, pq até então sempre utilizei CENTOS e CPANEL. Conhecimento ZERO em Ubuntu, ngnix, Ruby e demais… kkkkk

Então me aconselharia rodar o i-educar em uma VPS e o i-diário em outra? É isso?

1 Curtida