From 1782a499358d57955d76bd34ba42f232598565cb Mon Sep 17 00:00:00 2001 From: Caroline Salib Date: Mon, 1 Aug 2016 19:30:22 -0300 Subject: [PATCH] Adicionado script de instalação automática do i-educar; --- install-ieducar.sh | 336 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 336 insertions(+), 0 deletions(-) create mode 100644 install-ieducar.sh diff --git a/install-ieducar.sh b/install-ieducar.sh new file mode 100644 index 0000000..07b8e55 --- /dev/null +++ b/install-ieducar.sh @@ -0,0 +1,336 @@ +#!/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 \ No newline at end of file -- libgit2 0.21.2