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 @@ |
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 | ... | ... |