forked from RedeMocambos/baobaxia
-
Notifications
You must be signed in to change notification settings - Fork 0
/
install_arch.sh
executable file
·398 lines (347 loc) · 14 KB
/
install_arch.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
#!/bin/bash
# script de instalação do baobáxia
USER_BBX='exu'
USER_BBX_PASSWD='abre os caminhos'
UID_BBX=10000
BBX_DIR_NAME='bbx'
DEFAULT_REPOSITORY_DIR_NAME='repositories'
DEFAULT_MEDIA_ROOT='/data/bbx/'
DEFAULT_REPOSITORY_DIR=$DEFAULT_MEDIA_ROOT$DEFAULT_REPOSITORY_DIR_NAME
DEFAULT_REPOSITORY_NAME='mocambos'
INSTALL_DIR='/srv/bbx'
LOG_DIR='log/'
PACK_DIR='/root/baobaxia'
#PACK_FILE='pip_wheel_20140606.tbz'
BBX_LOCAL_REPO='/root/baobaxia'
BBX_REMOTE_REPO='https://github.com/RedeMocambos/baobaxia'
create_user() {
USERNAME=$1
USER_UID=$2
# checa se usuario ja existe
USER_EXISTS=`cat /etc/passwd | grep $USER_BBX`
if [[ "$USER_EXISTS" == '' ]]; then
echo "criando usuario $USER_BBX ..."
useradd --uid $USER_UID --create-home -p "$USER_BBX_PASSWD" --shell /bin/bash $USERNAME
fi
}
# PRE: pkgs:
# dependencies: for arch linux (note arch dont need -dev because all header is on package)
# libtiff5=libtiff zlib1g=zlib libjpeg62-turbo= libjpeg-turbo rabbitmq-server = rabbitmq libfreetype6=libfreetype liblcms2=lcms tcl8.5=tcl(8.6) tk8.5=tk(8.6), tenho que ver o acontece com o python-tk (por enquanto ele fica fora)
sudo pacman -Suy
sudo pacman -S git git-annex nginx supervisor python-pip rabbitmq libjpeg libtiff libjpeg-turbo zlib libfreetype lcms libwebp tcl tk python2 python2-setuptools gettext gsasl python2-pip
### cria diretorio basico
mkdir -p $DEFAULT_REPOSITORY_DIR
# 1) escolha do nome da mucuaLocal
echo "------------------------"
echo " /"
echo " \_ \ /"
echo " \ | /___"
echo " <== \| / ()"
echo " ==> || NPDD/Rede Mocambos"
echo " nnn ||/ "
echo " || http://wiki.mocambos.net/wiki/NPDD"
echo " || Vamos fazer um mundo digital mais do nosso jeito..."
echo "______/~~~~\_____________________________________________________________ _ _ _"
echo ""
echo " E ku abo ilê Baobáxia!"
echo " Bem vindo ao Baobáxia!"
echo " Welcome to Baobáxia!"
echo ""
echo "Esse é o instador do Baobáxia. "
echo ""
echo "----------------"
echo "Escolha o nome da sua mucua"
echo "----------------"
echo ""
read -p `hostname`" -> este é o nome da sua mucua? (s/n)" ESCOLHA
case "$ESCOLHA" in
s|S|*) MUCUA=`hostname`;;
n|N) read -p "Escolha o nome da mucua: " MUCUA ;;
esac
echo ""
echo "O nome da mucua é $MUCUA"
echo ""
echo "----------------"
echo " Escolha o endereço da sua mucua"
echo "----------------"
echo ""
MUCUA_URL=
read -p `hostname`".mocambos.net -> este é o url da sua mucua? (s/n)" ESCOLHA
case "$ESCOLHA" in
s|S|*) MUCUA_URL=`hostname`".mocambos.net";;
n|N) read -p "Escolha o url da mucua: " MUCUA_URL;;
esac
echo ""
echo "O url da mucua é $MUCUA_URL"
echo ""
echo ""
echo "Criando usuário padrão para o Baobáxia ..."
create_user $USER_BBX $UID_BBX
# define repositorioRemoto para espelhar / caminho do repositório
echo "----------------"
echo "Defina um repositório remoto para espelhar:"
echo "----------------"
echo ""
echo "É possível conectar-se de diferentes formas a um repositório:"
echo "- pela rede (ssh)"
echo "- por um dispositivo externo: pendrive, hd externo (media)"
echo "- de uma pasta local (local)"
read -p "Como você vai conectar? (ssh/media/local, padrão é local)" PROTOCOL
case "$PROTOCOL" in
# git clone via ssh
ssh|SSH) PROTOCOL='ssh';
echo "Acessar repositório via ssh..."
read -p "Defina a url do repositório para espelhar (padrão: dpadua.mocambos.net):" MIRROR_REPOSITORY_NAME
case $MIRROR_REPOSITORY_NAME in
'') MIRROR_REPOSITORY_NAME="dpadua.mocambos.net" ;;
esac
# TODO travar caso nao definir
read -p "Defina a porta do repositório para espelhar (padrão: 9022):" MIRROR_REPOSITORY_PORT
case $MIRROR_REPOSITORY_PORT in
'') MIRROR_REPOSITORY_PORT=9022 ;;
esac
read -p "Defina a pasta do repositório para espelhar (padrão: $DEFAULT_REPOSITORY_DIR/$DEFAULT_REPOSITORY_NAME):" MIRROR_REPOSITORY_FOLDER
case $MIRROR_REPOSITORY_FOLDER in
'') MIRROR_REPOSITORY_FOLDER="$DEFAULT_REPOSITORY_DIR/$DEFAULT_REPOSITORY_NAME" ;;
esac
cd $DEFAULT_REPOSITORY_DIR
git clone ssh://$USER_BBX@$MIRROR_REPOSITORY_NAME:$MIRROR_REPOSITORY_PORT/$MIRROR_REPOSITORY_FOLDER
;;
# git clone de media
media|MEDIA) PROTOCOL='media'
echo ""
echo "Conecte o drive externo ou pendrive."
echo "Aperte ENTER quando inserir"
read
# TODO: travar até que o repositorio seja inserido
# verificar se nos pontos de montagem ha algo que seja um hd de repositorio
IS_BBX_REPO=false
for USB_DEVICE in `cat /proc/mounts | grep usb | cut -d' ' -f2`; do
echo 'Dispositivo USB encontrado: '$USB_DEVICE
for REPO in `find $USB_DEVICE -name 'description' | grep .git`; do
if [[ `cat $REPO` == "baobaxia" ]]; then
IS_BBX_REPO=true
REPO_NAME=$USB_DEVICE/`echo $REPO | cut -d '/' -f4`
break
fi
done
done;
if [[ $IS_BBX_REPO == "" ]]; then
echo "Insira um dispositivo com um repositório válido."
exit 0
fi
echo ""
echo "Espelhando repositório..."
cd $DEFAULT_REPOSITORY_DIR
git clone $REPO_NAME
;;
local|LOCAL|*) PROTOCOL='local'
read -p "Defina a pasta do repositório para espelhar (padrão: /root/baobaxia/mocambos):" MIRROR_REPOSITORY_FOLDER
case $MIRROR_REPOSITORY_FOLDER in
'') MIRROR_REPOSITORY_FOLDER="/root/baobaxia/mocambos" ;;
esac
cd $DEFAULT_REPOSITORY_DIR
git clone $MIRROR_REPOSITORY_FOLDER
;;
esac
## configurar permissoes
echo ""
echo "Configurando permissões do repositório"
chown -R $USER_BBX:$USER_BBX $DEFAULT_REPOSITORY_DIR/$DEFAULT_REPOSITORY_NAME
chmod -R 775 $DEFAULT_REPOSITORY_DIR/$DEFAULT_REPOSITORY_NAME
echo ""
echo "Definindo usuário git para usuário do baobáxia ($USER_BBX) ..."
echo "Criando novo repositório na mucua $MUCUA ..."
su - $USER_BBX -c "
cd $DEFAULT_REPOSITORY_DIR/$DEFAULT_REPOSITORY_NAME;
git config --global user.name 'Exu do BBX';
git config --global user.email '[email protected]';
git init . ;
git annex init $MUCUA;
git annex describe here $MUCUA;
"
# 5) criar diretórios locais
echo ""
echo "Criando diretórios locais da mucua $MUCUA ..."
mkdir -p $DEFAULT_REPOSITORY_DIR/$DEFAULT_REPOSITORY_NAME/$MUCUA/mocambolas
mkdir -p $DEFAULT_REPOSITORY_DIR/$DEFAULT_REPOSITORY_NAME/$MUCUA/requests
mkdir -p $INSTALL_DIR/bin
mkdir -p $INSTALL_DIR/media
mkdir -p $INSTALL_DIR/static
mkdir -p $INSTALL_DIR/run
mkdir -p $INSTALL_DIR/log
mkdir -p $INSTALL_DIR/log/celery
mkdir -p $INSTALL_DIR/envs
mkdir -p $DEFAULT_MEDIA_ROOT/db
mkdir -p $DEFAULT_MEDIA_ROOT/cache
chown -R $USER_BBX:$USER_BBX $DEFAULT_REPOSITORY_DIR/$DEFAULT_REPOSITORY_NAME
chmod -R 775 $DEFAULT_REPOSITORY_DIR/$DEFAULT_REPOSITORY_NAME
chown -R $USER_BBX:$USER_BBX $INSTALL_DIR
chmod -R 775 $INSTALL_DIR
chown -R $USER_BBX:$USER_BBX $DEFAULT_MEDIA_ROOT/db
chmod -R 775 $DEFAULT_MEDIA_ROOT/db
chown -R $USER_BBX:$USER_BBX $DEFAULT_MEDIA_ROOT/cache
chmod -R 775 $DEFAULT_MEDIA_ROOT/cache
echo ""
echo "Copiando arquivos do Baobáxia ..."
cd $INSTALL_DIR
# GARANTIR PERMISSAO DE GRAVACAO
# TODO: pegar futuramente um pacote offline
echo ""
read -p "De onde você vai baixar o repositório do baobáxia? (ex: https://github.com/RedeMocambos/baobaxia) - (1 - local / 2 - internet): " BBX_REPO_FROM
case "$BBX_REPO_FROM" in
2|internet) BBX_REPO_FROM=$BBX_REMOTE_REPO ;;
1|local|*) BBX_REPO_FROM=$BBX_LOCAL_REPO ;;
esac
git clone $BBX_REPO_FROM baobaxia
cd $INSTALL_DIR/baobaxia
echo ""
echo "Criando arquivo de configuração do Baobáxia ..."
cp $INSTALL_DIR/baobaxia/app/django-bbx/bbx/settings.example.py $INSTALL_DIR/baobaxia/app/django-bbx/bbx/settings.py
sed -i "s:^\(MEDIA_ROOT\s*=\s*\).*$:\1\"${DEFAULT_MEDIA_ROOT}\":" $INSTALL_DIR/baobaxia/app/django-bbx/bbx/settings.py
sed -i "s:^\(DEFAULT_MUCUA\s*=\s*\).*$:\1\"${MUCUA}\":" $INSTALL_DIR/baobaxia/app/django-bbx/bbx/settings.py
sed -i "s:^\(REPOSITORY_DIR_NAME\s*=\s*\).*$:\1\"${DEFAULT_REPOSITORY_DIR_NAME}\":" $INSTALL_DIR/baobaxia/app/django-bbx/bbx/settings.py
sed -i "s:^\(DEFAULT_REPOSITORY\s*=\s*\).*$:\1\"${DEFAULT_REPOSITORY_NAME}\":" $INSTALL_DIR/baobaxia/app/django-bbx/bbx/settings.py
sed -i "s:^\(STATIC_ROOT\s*=\s*\).*$:\1\"${INSTALL_DIR}\/static\":" $INSTALL_DIR/baobaxia/app/django-bbx/bbx/settings.py
echo ""
echo "Configurando interface web ..."
cp $INSTALL_DIR/baobaxia/app/django-bbx/bbx/static/js/config.js.example $INSTALL_DIR/baobaxia/app/django-bbx/bbx/static/js/config.js
sed -i "s/dpadua/${MUCUA}/" $INSTALL_DIR/baobaxia/app/django-bbx/bbx/static/js/config.js
### instalacao do baobaxia
echo ""
echo "Criando ambiente virtual do python ..."
pip2 install --upgrade pip
# atualiza mapa das variaveis de ambiente
hash -r
# cria ambiente virtual
pip2 install virtualenv
#cp $PACK_DIR/$PACK_FILE $INSTALL_DIR/
chown root:$USER_BBX $INSTALL_DIR/envs
chmod 775 $INSTALL_DIR/envs
#xhost +
su - $USER_BBX -c "
virtualenv $INSTALL_DIR/envs/bbx ;
. $INSTALL_DIR/envs/bbx/bin/activate ;
pip2 install --upgrade setuptools ;
cd $INSTALL_DIR;
pip2 install argparse;
pip2 install django==1.6.7;
pip2 install django-extensions;
pip2 install djangorestframework==2.4.4;
pip2 install gunicorn;
pip2 install six;
pip2 install Pillow;
pip2 install sorl-thumbnail;
pip2 install south;
pip2 install wheel;
pip2 install wsgiref;
pip2 install python-magic;
pip2 install python-memcached;
pip2 install longerusername;
pip2 install djangorestframework-jwt;
pip2 install celery==3.1.14
"
# colocando o pyhon acessivel para os que chamam ele pelo nome
alias python=python2
echo ""
echo "Definindo permissões do baobáxia ..."
chown -R $USER_BBX:$USER_BBX $INSTALL_DIR/baobaxia
echo ""
echo "Criando banco de dados do baobáxia ..."
su - $USER_BBX -c "
. $INSTALL_DIR/envs/bbx/bin/activate;
cd $INSTALL_DIR/baobaxia/app/django-bbx;
find . -name '000*.py' -exec rm '{}' \; && echo 'OK!';
python2 manage.py syncdb --noinput;
python2 manage.py schemamigration --initial --traceback mocambola;
python2 manage.py schemamigration --initial --traceback mucua;
python2 manage.py schemamigration --initial --traceback tag;
python2 manage.py schemamigration --initial --traceback media;
python2 manage.py schemamigration --initial --traceback repository;
python2 manage.py migrate --all;
python2 manage.py collectstatic --noinput
"
echo ""
echo "usuário do login número 1:"
echo "username: [email protected]"
echo "senha: livre"
echo ""
echo "Configurando o gunicorn ..."
cp $INSTALL_DIR/baobaxia/bin/gunicorn_start.sh.example $INSTALL_DIR/bin/gunicorn_start.sh
sed -i "s:_domain_:${BBX_DIR_NAME}:g" $INSTALL_DIR/bin/gunicorn_start.sh
touch $INSTALL_DIR/log/gunicorn_supervisor.log
chmod +x $INSTALL_DIR/bin/gunicorn_start.sh
chmod 775 $INSTALL_DIR/log/gunicorn_supervisor.log
chown $USER_BBX:$USER_BBX $INSTALL_DIR/log/gunicorn_supervisor.log
# 7) recriar mucuas da rede no django-bbx (mucuaLocal)
# sync a partir dos jsons
echo ""
echo "Primeira sincronização, criando objetos a partir dos arquivos ..."
su - $USER_BBX -c "
. $INSTALL_DIR/envs/bbx/bin/activate;
cd $INSTALL_DIR/baobaxia/app/django-bbx/;
python2 manage.py bbxsync mocambos
"
echo ""
echo "Criando arquivo de configuração do NGINX ..."
if ! grep -q "include " /etc/nginx/nginx.conf ; then mkdir /etc/nginx/servers-available; mkdir /etc/nginx/servers-enabled; sed -i '$ d' /etc/nginx/nginx.conf; echo -e " include servers-enabled/*; \n}" >> /etc/nginx/nginx.conf; fi
cp $INSTALL_DIR/baobaxia/conf/nginx/bbx /etc/nginx/servers-available/bbx
sed -i "s:_domain_:${BBX_DIR_NAME}:g" /etc/nginx/servers-available/bbx
sed -i "s:_domainaliases_:${MUCUA} ${MUCUA_URL}:g" /etc/nginx/servers-available/bbx
ln -s /etc/nginx/servers-available/bbx /etc/nginx/servers-enabled/bbx
echo ""
echo "Ativando NGINX ..."
systemctl restart nginx
echo ""
echo "Criando arquivo de configuração do Supervisor para Celery..." - retirei a pasta conf.d
mkdir /etc/supervisor.d/conf.d
cp $INSTALL_DIR/baobaxia/conf/supervisor/celeryd /etc/supervisord.conf
echo ""
echo "Criando arquivo de configuração do Supervisor para BBX..." - retirei a pasta conf.d
cp $INSTALL_DIR/baobaxia/conf/supervisor/bbx /etc/supervisord.conf
sed -i "s:_domain_:${BBX_DIR_NAME}:g" /etc/supervisord.conf
echo ""
echo "Ativando supervisor..."
systemctl restart supervisord
echo ""
echo "Instalando script para atualizar o BBX (update-templates) ..."
cp $INSTALL_DIR/baobaxia/bin/update-templates.sh.example $INSTALL_DIR/bin/update-templates.sh
chmod +x $INSTALL_DIR/bin/update-templates.sh
echo ""
echo "Ativando o Baobáxia ..." TODO
supervisorctl restart bbx
supervisorctl restart celery
echo ""
echo "Instalando script de sincronização (bbx-cron) ..."
cp $INSTALL_DIR/baobaxia/bin/bbx-cron.sh.example $INSTALL_DIR/bin/bbx-cron.sh
chmod +x $INSTALL_DIR/bin/bbx-cron.sh
echo ""
echo "Instalando script para pedidos de arquivos (process-requests) ..."
cp $INSTALL_DIR/baobaxia/bin/process-requests.sh.example $INSTALL_DIR/bin/process-requests.sh
chmod +x $INSTALL_DIR/bin/process-requests.sh
echo ""
echo ""
echo " >>> Instalação completa! <<< "
echo ""
echo "Lembre-se de entrar como usuario exu e pedir pra abrir os caminhos, lançando este script..."
echo "exu@"$MUCUA': /srv/bbx/bin/update-templates.sh'
echo ""
echo "Pode acessar essa mucua por esses endereços (depende da sua rede local):"
echo " http://"$MUCUA
echo " http://127.0.0.1"
# opção -I é inválida
# echo " http://"`hostname -I`
echo ""
echo ""
echo " / "
echo " _ \ / "
echo " \_| |/__ "
echo " <== | / () "
echo " ==> |/ NPDD/Rede Mocambos "
echo " nnn | "
echo " | http://wiki.mocambos.net/wiki/NPDD "
echo " | 'Vamos fazer um mundo digital mais do nosso jeito...' "
echo "______/~~~\________________________________________________________________ _ _ _ "
echo " / "
echo " BAOBÁXIA Software LIVRE! GPLv3 "
echo ""