Commit 1782a499358d57955d76bd34ba42f232598565cb
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
| @@ -0,0 +1,336 @@ | @@ -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 | \ No newline at end of file | 337 | \ No newline at end of file |