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 |