forked from FinalHashLLC/bitnodes-hardware
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.sh
executable file
·122 lines (99 loc) · 3.05 KB
/
setup.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
#!/bin/bash
#
# Copyright (c) Addy Yeow Chin Heng <[email protected]>
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
usage()
{
cat <<EOF
Installs the required Python packages into current virtualenv environment and
initializes a new database to bootstrap the project.
Usage: $0 [-h] [-d]
-h
Print usage.
-d
Setup the project in debug mode, i.e. settings.DEBUG=True
EOF
}
debug=0
while getopts ":d" opt
do
case "$opt" in
h)
usage
exit 0
;;
d)
debug=1
;;
?)
usage >& 2
exit 1
;;
esac
done
find . -name '*.pyc' -exec rm -vf '{}' \; -print
if [ ${debug} -eq 0 ]
then
/usr/bin/pkill -f lcd.py
echo "Stopping project's supervisor. This can take a few minutes."
echo "Ignore ImportError when setup.sh is executed for the first time."
./manage.py supervisor stop all
dropdb --echo bitnodes
createdb --echo bitnodes
fi
rm -vf *.log *.db db.sqlite3 .secret_key .debug
if [ ${debug} -eq 1 ]
then
touch .debug
fi
# Required to build Bitcoin Core >= v0.12.0
sudo apt-get install libevent-dev
# Update project
git checkout master && git pull
pip install --upgrade pip
pip install --upgrade -r requirements.txt -e .
./manage.py migrate
# Install default site admin user
./manage.py loaddata default.json
# Create default cache table
./manage.py createcachetable default_cache
# Copy all static files to be served directly by Nginx
./manage.py collectstatic --noinput --clear
# Create a new bitcoin.conf with random RPC username and password
rm -vf .bitcoin/bitcoin.conf
if [ ${debug} -eq 0 ]
then
rm -vf /media/data/.bitcoin/bitcoin.conf
fi
./manage.py create_bitcoin_conf
# Create a new nginx.conf
cp nginx.conf.tmpl nginx.conf
./manage.py makemigrations
./manage.py migrate
if [ ${debug} -eq 0 ]
then
setsid sh -c 'exec ./lcd.py <> /dev/tty1 >&0 2>&1' &
echo "Restarting system's supervisor. This can take a few minutes."
sudo service supervisor stop
sudo service supervisor start
fi
echo "Setup completed!"