#!/bin/bash <. LICENSE echo -e '\n\n Bem vindo a instalação do i-Educar.' echo -e '\n Este script lhe guiará na instalação do software, para mais detalhes acesse a página oficial da comunidade i-Educar https://portal.softwarepublico.gov.br/social/i-educar/' exit_if_failed () { if [ $1 = 0 ]; then return 0; fi echo -e "\n\n\n Desculpe, mas a instalação não pode continuar pois ocorreu algum erro inesperado." echo -e "\n Por favor, tente novamente." exit 1; } required_read () { echo -n "$1" read _INPUT if [ -z "$_INPUT" ]; then required_read "$1" fi } login_or_create_user () { echo -e "\n A instalação não pode ser realizada pelo usuário root, selecione uma opção:\n" echo -e ' 1 - logar-se com outro usuário' echo -e ' 2 - criar um novo usuário\n' required_read ' opção: ' if [ $_INPUT = 1 ]; then echo -e '\n' required_read ' informe o nome do seu usuário: ' su $_INPUT $0 exit 0 elif [[ $_INPUT = 2 ]]; then echo -e '\n' required_read ' informe o nome do novo usuário (ex: ieducar): ' useradd --create-home --groups sudo --shell /bin/bash $_INPUT exit_if_failed $? echo -e '\n por favor, informe a senha do novo usuário:\n' sudo passwd $_INPUT exit_if_failed $? su $_INPUT $0 exit 0 else echo -e '\n' echo -n ' opção inválida, tente novamente.' read -n 1 login_or_create_user fi } install_packages () { echo -e '\n * instalando dependências\n' # fix "Failed to fetch bzip2 ... Hash Sum mismatch" error on apt-get update sudo rm -rf /var/lib/apt/lists/* sudo apt-get update -y sudo apt-get install -y curl wget rpl unzip exit_if_failed $? # pg sudo apt-get install -y libreadline6 libreadline6-dev make gcc zlib1g-dev flex bison exit_if_failed $? } install_apache () { echo -e '\n\n * instalando apache\n' sudo apt-get install -y apache2 exit_if_failed $? sudo a2enmod rewrite exit_if_failed $? sudo service apache2 restart exit_if_failed $? } install_php () { echo -e '\n\n * instalando php\n' sudo apt-get install -y libapache2-mod-php5 php5-pgsql php5-curl exit_if_failed $? } install_pear () { echo -e '\n\n * instalando pear\n' sudo apt-get install -y php-pear exit_if_failed $? sudo service apache2 restart exit_if_failed $? } install_pgvm () { echo -e '\n\n * instalando pgvm\n' curl -s -L https://raw.github.com/guedes/pgvm/master/bin/pgvm-self-install | bash -s -- --update exit_if_failed $? #source ~/.bashrc if [ -z "$pgvm_home" ] then pgvm_home=/home/$USER/.pgvm pgvm_logs=${pgvm_home}/logs pgvm_clusters=${pgvm_home}/clusters pgvm_environments=${pgvm_home}/environments export pgvm_home pgvm_logs pgvm_environments pgvm_clusters export PATH=${pgvm_home}/bin:$PATH export PATH=${pgvm_environments}/current/bin:$PATH fi } install_pg () { echo -e '\n\n * instalando postgres 8.2 via pgvm\n' pgvm install 8.2.23 pgvm use 8.2.23 pgvm cluster create main pgvm cluster start main echo -e '\n' required_read ' informe o nome desejado para o banco de dados (ex: ieducar): ' DBNAME=$_INPUT echo -e '\n\n * destruindo banco de dados caso exista\n' ~/.pgvm/environments/8.2.23/bin/dropdb $DBNAME -p 5433 DBUSER=ieducar if [ $USER != $DBUSER ]; then echo -e '\n\n * criando usuário do banco de dados\n' ~/.pgvm/environments/8.2.23/bin/psql -d postgres -p 5433 -c "DROP USER IF EXISTS $DBUSER;" ~/.pgvm/environments/8.2.23/bin/createuser --superuser $DBUSER -p 5433 exit_if_failed $? fi echo -e '\n\n * baixando dump banco de dados\n' rm -f ieducar.backup.gz rm -f ieducar.backup wget https://s3-us-west-2.amazonaws.com/portabilis2/public/ieducar/ieducar.backup.gz gunzip ieducar.backup.gz exit_if_failed $? echo -e '\n\n * criando banco de dados\n' ~/.pgvm/environments/8.2.23/bin/createdb $DBNAME -E latin1 -p 5433 exit_if_failed $? echo -e '\n\n * restaurando dump do banco de dados\n' ~/.pgvm/environments/8.2.23/bin/pg_restore -d $DBNAME -p 5433 -U $DBUSER --no-owner ieducar.backup #exit_if_failed $? rm -f ieducar.backup.gz rm -f ieducar.backup echo -e '\n\n * definindo search_path\n' ~/.pgvm/environments/8.2.23/bin/psql -d $DBNAME -p 5433 -c 'ALTER DATABASE '$DBNAME' SET search_path = "$user", public, portal, cadastro, acesso, alimentos, consistenciacao, historico, pmiacoes, pmicontrolesis, pmidrh, pmieducar, pmiotopic, urbano, modules;' exit_if_failed $? } install_git () { echo -e '\n\n * instalando git\n' sudo apt-get install -y git-core exit_if_failed $? } clone_ieducar () { echo -e '\n' required_read ' informe o nome do diretório em que a aplicação será instalada (ex: ieducar): ' APPDIR=$_INPUT echo -e '\n\n * destruindo repositório ieducar local caso exista\n' rm -rf $APPDIR echo -e "\n\n * clonando repositório ieducar no caminho $HOME/$APPDIR\n" git -c http.sslVerify=false clone http://softwarepublico.gov.br/gitlab/i-educar/i-educar.git $APPDIR exit_if_failed $? echo -e "\n\n * reconfigurando ieducar\n" rpl "app.database.dbname = ieducar" "app.database.dbname = $DBNAME" $APPDIR/ieducar/configuration/ieducar.ini sudo service apache2 reload } install_ieducar_packages () { echo -e '\n\n * instalando dependências i-Educar via pear\n' # pear download is freezing :( #bash ~/ieducar/ieducar/scripts/install_pear_packages.sh wget http://download.pear.php.net/package/Mail-1.2.0.tgz wget http://download.pear.php.net/package/Net_Socket-1.0.14.tgz wget http://download.pear.php.net/package/Net_SMTP-1.6.2.tgz wget http://download.pear.php.net/package/Net_URL2-2.0.5.tgz wget http://download.pear.php.net/package/HTTP_Request2-2.2.0.tgz wget http://download.pear.php.net/package/Services_ReCaptcha-1.0.3.tgz sudo pear install -O Mail-1.2.0.tgz exit_if_failed $? sudo pear install -O Net_Socket-1.0.14.tgz exit_if_failed $? sudo pear install -O Net_SMTP-1.6.2.tgz exit_if_failed $? sudo pear install -O Net_URL2-2.0.5.tgz exit_if_failed $? sudo pear install -O HTTP_Request2-2.2.0.tgz exit_if_failed $? sudo pear install -O Services_ReCaptcha-1.0.3.tgz exit_if_failed $? rm Mail-1.2.0.tgz rm Net_Socket-1.0.14.tgz rm Net_SMTP-1.6.2.tgz rm Net_URL2-2.0.5.tgz rm HTTP_Request2-2.2.0.tgz rm Services_ReCaptcha-1.0.3.tgz sudo service apache2 restart } config_apache () { echo -e '\n\n * configurando virtual host apache\n' sudo rm -f /etc/apache2/sites-enabled/ieducar sudo rm -f /etc/apache2/sites-available/ieducar sudo rm -f /etc/apache2/sites-available/apache-sites-available-ieducar sudo wget https://s3-us-west-2.amazonaws.com/portabilis2/public/ieducar/apache/sites-available/ieducar -P /etc/apache2/sites-available/ sudo mv /etc/apache2/sites-available/apache-sites-available-ieducar /etc/apache2/sites-available/ieducar echo -e "\n\n * reconfigurando virtual host\n" sudo rpl "/home/portabilis/ieducar" "$HOME/$APPDIR" /etc/apache2/sites-available/ieducar sudo service apache2 reload sudo a2dissite 000-default sudo a2ensite ieducar sudo service apache2 restart if [ $ISSERVER = 0 ]; then echo -e '\n' required_read ' informe o host desejado para acesso local ao sistema no navegador (ex: ieducar.local): ' HOST=$_INPUT if ! grep -q $HOST /etc/hosts; then echo -e '\n\n * adicionando host para $HOST\n' echo "127.0.0.1 $HOST" | sudo tee -a /etc/hosts fi fi } add_crontab_job () { echo -e '\n\n * instalando job crontab para inicializar o banco de dados ao iniciar o servidor\n' crontab -l > tmp_crontab echo "@reboot $HOME/.pgvm/environments/8.2.23/bin/postgres -D $HOME/.pgvm/clusters/8.2.23/main" >> tmp_crontab crontab tmp_crontab rm tmp_crontab } before_install () { dpkg -l ubuntu-desktop >/dev/null 2>/dev/null ISSERVER=$? # ! desktop } install () { cd ~ before_install install_packages install_apache install_php install_pear install_git install_pgvm install_pg clone_ieducar install_ieducar_packages config_apache add_crontab_job echo -e '\n\n --------------------------------------------' echo -e "\n Parabéns o i-Educar foi instalado com sucesso," server_ip=$(ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p') if [ $ISSERVER = 0 ]; then echo -e " você pode acessar o sistema em http://$HOST/ (neste computador) ou em http://$server_ip/ nos demais computadores da rede local." else echo -e " você pode acessar o sistema em http://$server_ip/" fi echo -e "\n utilize usuário admin e senha admin" echo -e "\n\n * Tire suas dúvidas e receba por e-mail as novidades e atualizações do i-Educar, assinando a lista de e-mails da comunidade: https://softwarepublico.gov.br/gitlab/i-educar/i-educar/wikis/como-se-inscrever-e-participar-das-listas" } if [ $USER = 'root' ]; then login_or_create_user else echo -e "\n\n instalando i-Educar com usuário $USER" install fi