Commit 1782a499358d57955d76bd34ba42f232598565cb

Authored by Caroline Salib
1 parent 6185c0f5
Exists in master

Adicionado script de instalação automática do i-educar;

Showing 1 changed file with 336 additions and 0 deletions   Show diff stats
install-ieducar.sh 0 → 100644
... ... @@ -0,0 +1,336 @@
  1 +#!/bin/bash
  2 +
  3 +<<LICENSE
  4 +Copyright (c) 2016 Caroline Salib.
  5 +
  6 +--
  7 +
  8 +Este programa é um software livre; você pode redistribuí-lo e/ou
  9 +modificá-lo dentro dos termos da Licença Pública Geral GNU como
  10 +publicada pela Fundação do Software Livre (FSF); na versão 3 da
  11 +Licença, ou (na sua opinião) qualquer versão.
  12 +
  13 +Este programa é distribuído na esperança de que possa ser útil,
  14 +mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÃO
  15 +a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a
  16 +Licença Pública Geral GNU para maiores detalhes.
  17 +
  18 +Você deve ter recebido uma cópia da Licença Pública Geral GNU junto
  19 +com este programa. Se não, veja <http://www.gnu.org/licenses/>.
  20 +LICENSE
  21 +
  22 +echo -e '\n\n Bem vindo a instalação do i-Educar.'
  23 +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/'
  24 +
  25 +exit_if_failed () {
  26 + if [ $1 = 0 ]; then
  27 + return 0;
  28 + fi
  29 +
  30 + echo -e "\n\n\n Desculpe, mas a instalação não pode continuar pois ocorreu algum erro inesperado."
  31 + echo -e "\n Por favor, tente novamente."
  32 +
  33 + exit 1;
  34 +}
  35 +
  36 +required_read () {
  37 + echo -n "$1"
  38 + read _INPUT
  39 +
  40 + if [ -z "$_INPUT" ]; then
  41 + required_read "$1"
  42 + fi
  43 +}
  44 +
  45 +login_or_create_user () {
  46 + echo -e "\n A instalação não pode ser realizada pelo usuário root, selecione uma opção:\n"
  47 + echo -e ' 1 - logar-se com outro usuário'
  48 + echo -e ' 2 - criar um novo usuário\n'
  49 +
  50 + required_read ' opção: '
  51 +
  52 + if [ $_INPUT = 1 ]; then
  53 + echo -e '\n'
  54 + required_read ' informe o nome do seu usuário: '
  55 +
  56 + su $_INPUT $0
  57 + exit 0
  58 +
  59 + elif [[ $_INPUT = 2 ]]; then
  60 + echo -e '\n'
  61 + required_read ' informe o nome do novo usuário (ex: ieducar): '
  62 +
  63 + useradd --create-home --groups sudo --shell /bin/bash $_INPUT
  64 + exit_if_failed $?
  65 +
  66 + echo -e '\n por favor, informe a senha do novo usuário:\n'
  67 + sudo passwd $_INPUT
  68 + exit_if_failed $?
  69 +
  70 + su $_INPUT $0
  71 + exit 0
  72 + else
  73 + echo -e '\n'
  74 + echo -n ' opção inválida, tente novamente.'
  75 + read -n 1
  76 +
  77 + login_or_create_user
  78 + fi
  79 +}
  80 +
  81 +install_packages () {
  82 + echo -e '\n * instalando dependências\n'
  83 +
  84 + # fix "Failed to fetch bzip2 ... Hash Sum mismatch" error on apt-get update
  85 + sudo rm -rf /var/lib/apt/lists/*
  86 +
  87 + sudo apt-get update -y
  88 + sudo apt-get install -y curl wget rpl unzip
  89 + exit_if_failed $?
  90 +
  91 + # pg
  92 + sudo apt-get install -y libreadline6 libreadline6-dev make gcc zlib1g-dev flex bison
  93 + exit_if_failed $?
  94 +}
  95 +
  96 +install_apache () {
  97 + echo -e '\n\n * instalando apache\n'
  98 + sudo apt-get install -y apache2
  99 + exit_if_failed $?
  100 +
  101 + sudo a2enmod rewrite
  102 + exit_if_failed $?
  103 +
  104 + sudo service apache2 restart
  105 + exit_if_failed $?
  106 +}
  107 +
  108 +install_php () {
  109 + echo -e '\n\n * instalando php\n'
  110 + sudo apt-get install -y libapache2-mod-php5 php5-pgsql php5-curl
  111 + exit_if_failed $?
  112 +}
  113 +
  114 +install_pear () {
  115 + echo -e '\n\n * instalando pear\n'
  116 + sudo apt-get install -y php-pear
  117 + exit_if_failed $?
  118 +
  119 + sudo service apache2 restart
  120 + exit_if_failed $?
  121 +}
  122 +
  123 +install_pgvm () {
  124 + echo -e '\n\n * instalando pgvm\n'
  125 + curl -s -L https://raw.github.com/guedes/pgvm/master/bin/pgvm-self-install | bash -s -- --update
  126 + exit_if_failed $?
  127 +
  128 + #source ~/.bashrc
  129 +
  130 + if [ -z "$pgvm_home" ]
  131 + then
  132 + pgvm_home=/home/$USER/.pgvm
  133 + pgvm_logs=${pgvm_home}/logs
  134 + pgvm_clusters=${pgvm_home}/clusters
  135 + pgvm_environments=${pgvm_home}/environments
  136 +
  137 + export pgvm_home pgvm_logs pgvm_environments pgvm_clusters
  138 +
  139 + export PATH=${pgvm_home}/bin:$PATH
  140 + export PATH=${pgvm_environments}/current/bin:$PATH
  141 + fi
  142 +}
  143 +
  144 +install_pg () {
  145 + echo -e '\n\n * instalando postgres 8.2 via pgvm\n'
  146 + pgvm install 8.2.23
  147 + pgvm use 8.2.23
  148 + pgvm cluster create main
  149 + pgvm cluster start main
  150 +
  151 + echo -e '\n'
  152 + required_read ' informe o nome desejado para o banco de dados (ex: ieducar): '
  153 + DBNAME=$_INPUT
  154 +
  155 + echo -e '\n\n * destruindo banco de dados caso exista\n'
  156 + ~/.pgvm/environments/8.2.23/bin/dropdb $DBNAME -p 5433
  157 +
  158 + DBUSER=ieducar
  159 +
  160 + if [ $USER != $DBUSER ]; then
  161 + echo -e '\n\n * criando usuário do banco de dados\n'
  162 + ~/.pgvm/environments/8.2.23/bin/psql -d postgres -p 5433 -c "DROP USER IF EXISTS $DBUSER;"
  163 + ~/.pgvm/environments/8.2.23/bin/createuser --superuser $DBUSER -p 5433
  164 + exit_if_failed $?
  165 + fi
  166 +
  167 + echo -e '\n\n * baixando dump banco de dados\n'
  168 + rm -f ieducar.backup.gz
  169 + rm -f ieducar.backup
  170 + wget https://s3-us-west-2.amazonaws.com/portabilis2/public/ieducar/ieducar.backup.gz
  171 + gunzip ieducar.backup.gz
  172 + exit_if_failed $?
  173 +
  174 + echo -e '\n\n * criando banco de dados\n'
  175 + ~/.pgvm/environments/8.2.23/bin/createdb $DBNAME -E latin1 -p 5433
  176 + exit_if_failed $?
  177 +
  178 + echo -e '\n\n * restaurando dump do banco de dados\n'
  179 + ~/.pgvm/environments/8.2.23/bin/pg_restore -d $DBNAME -p 5433 -U $DBUSER --no-owner ieducar.backup
  180 + #exit_if_failed $?
  181 +
  182 + rm -f ieducar.backup.gz
  183 + rm -f ieducar.backup
  184 +
  185 + echo -e '\n\n * definindo search_path\n'
  186 + ~/.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;'
  187 + exit_if_failed $?
  188 +}
  189 +
  190 +install_git () {
  191 + echo -e '\n\n * instalando git\n'
  192 + sudo apt-get install -y git-core
  193 + exit_if_failed $?
  194 +}
  195 +
  196 +clone_ieducar () {
  197 + echo -e '\n'
  198 + required_read ' informe o nome do diretório em que a aplicação será instalada (ex: ieducar): '
  199 + APPDIR=$_INPUT
  200 +
  201 + echo -e '\n\n * destruindo repositório ieducar local caso exista\n'
  202 + rm -rf $APPDIR
  203 +
  204 + echo -e "\n\n * clonando repositório ieducar no caminho $HOME/$APPDIR\n"
  205 + git -c http.sslVerify=false clone http://softwarepublico.gov.br/gitlab/i-educar/i-educar.git $APPDIR
  206 + exit_if_failed $?
  207 +
  208 + echo -e "\n\n * reconfigurando ieducar\n"
  209 + rpl "app.database.dbname = ieducar" "app.database.dbname = $DBNAME" $APPDIR/ieducar/configuration/ieducar.ini
  210 + sudo service apache2 reload
  211 +}
  212 +
  213 +install_ieducar_packages () {
  214 + echo -e '\n\n * instalando dependências i-Educar via pear\n'
  215 +
  216 + # pear download is freezing :(
  217 + #bash ~/ieducar/ieducar/scripts/install_pear_packages.sh
  218 +
  219 + wget http://download.pear.php.net/package/Mail-1.2.0.tgz
  220 + wget http://download.pear.php.net/package/Net_Socket-1.0.14.tgz
  221 + wget http://download.pear.php.net/package/Net_SMTP-1.6.2.tgz
  222 + wget http://download.pear.php.net/package/Net_URL2-2.0.5.tgz
  223 + wget http://download.pear.php.net/package/HTTP_Request2-2.2.0.tgz
  224 + wget http://download.pear.php.net/package/Services_ReCaptcha-1.0.3.tgz
  225 +
  226 + sudo pear install -O Mail-1.2.0.tgz
  227 + exit_if_failed $?
  228 +
  229 + sudo pear install -O Net_Socket-1.0.14.tgz
  230 + exit_if_failed $?
  231 +
  232 + sudo pear install -O Net_SMTP-1.6.2.tgz
  233 + exit_if_failed $?
  234 +
  235 + sudo pear install -O Net_URL2-2.0.5.tgz
  236 + exit_if_failed $?
  237 +
  238 + sudo pear install -O HTTP_Request2-2.2.0.tgz
  239 + exit_if_failed $?
  240 +
  241 + sudo pear install -O Services_ReCaptcha-1.0.3.tgz
  242 + exit_if_failed $?
  243 +
  244 + rm Mail-1.2.0.tgz
  245 + rm Net_Socket-1.0.14.tgz
  246 + rm Net_SMTP-1.6.2.tgz
  247 + rm Net_URL2-2.0.5.tgz
  248 + rm HTTP_Request2-2.2.0.tgz
  249 + rm Services_ReCaptcha-1.0.3.tgz
  250 +
  251 + sudo service apache2 restart
  252 +}
  253 +
  254 +config_apache () {
  255 + echo -e '\n\n * configurando virtual host apache\n'
  256 + sudo rm -f /etc/apache2/sites-enabled/ieducar
  257 + sudo rm -f /etc/apache2/sites-available/ieducar
  258 + sudo rm -f /etc/apache2/sites-available/apache-sites-available-ieducar
  259 +
  260 + sudo wget https://s3-us-west-2.amazonaws.com/portabilis2/public/ieducar/apache/sites-available/ieducar -P /etc/apache2/sites-available/
  261 + sudo mv /etc/apache2/sites-available/apache-sites-available-ieducar /etc/apache2/sites-available/ieducar
  262 +
  263 + echo -e "\n\n * reconfigurando virtual host\n"
  264 + sudo rpl "/home/portabilis/ieducar" "$HOME/$APPDIR" /etc/apache2/sites-available/ieducar
  265 + sudo service apache2 reload
  266 +
  267 + sudo a2dissite 000-default
  268 + sudo a2ensite ieducar
  269 + sudo service apache2 restart
  270 +
  271 + if [ $ISSERVER = 0 ]; then
  272 + echo -e '\n'
  273 + required_read ' informe o host desejado para acesso local ao sistema no navegador (ex: ieducar.local): '
  274 + HOST=$_INPUT
  275 +
  276 + if ! grep -q $HOST /etc/hosts; then
  277 + echo -e '\n\n * adicionando host para $HOST\n'
  278 + echo "127.0.0.1 $HOST" | sudo tee -a /etc/hosts
  279 + fi
  280 + fi
  281 +}
  282 +
  283 +add_crontab_job () {
  284 + echo -e '\n\n * instalando job crontab para inicializar o banco de dados ao iniciar o servidor\n'
  285 +
  286 + crontab -l > tmp_crontab
  287 + echo "@reboot $HOME/.pgvm/environments/8.2.23/bin/postgres -D $HOME/.pgvm/clusters/8.2.23/main" >> tmp_crontab
  288 +
  289 + crontab tmp_crontab
  290 + rm tmp_crontab
  291 +}
  292 +
  293 +before_install () {
  294 + dpkg -l ubuntu-desktop >/dev/null 2>/dev/null
  295 + ISSERVER=$? # ! desktop
  296 +}
  297 +
  298 +install () {
  299 + cd ~
  300 +
  301 + before_install
  302 + install_packages
  303 + install_apache
  304 + install_php
  305 + install_pear
  306 + install_git
  307 + install_pgvm
  308 + install_pg
  309 + clone_ieducar
  310 + install_ieducar_packages
  311 + config_apache
  312 + add_crontab_job
  313 +
  314 + echo -e '\n\n --------------------------------------------'
  315 + echo -e "\n Parabéns o i-Educar foi instalado com sucesso,"
  316 +
  317 + server_ip=$(ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p')
  318 +
  319 + if [ $ISSERVER = 0 ]; then
  320 + echo -e " você pode acessar o sistema em http://$HOST/ (neste computador) ou em http://$server_ip/ nos demais computadores da rede local."
  321 + else
  322 + echo -e " você pode acessar o sistema em http://$server_ip/"
  323 + fi
  324 +
  325 + echo -e "\n utilize usuário admin e senha admin"
  326 +
  327 + 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"
  328 +
  329 +}
  330 +
  331 +if [ $USER = 'root' ]; then
  332 + login_or_create_user
  333 +else
  334 + echo -e "\n\n instalando i-Educar com usuário $USER"
  335 + install
  336 +fi
0 337 \ No newline at end of file
... ...