blob: db3b9c047d70c8ac4863000d7356b733bc183f50 (
plain)
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
|
POSIX compatible Installer for OpenTox IST/ALU Services
=======================================================
A) It is assumed that your system is configured for sudo to gain root privileges.
B) It is assumed that your system is configured for using non-free packages.
This is a POSIX-compliant (not limited to a particular shell) Opentox installer. Please report bugs always via GitHub.
Here are some of my goals when writing the installer:
- Safe (existence of all the binaries will be checked before running, apart from GNU Core Utils)
- Idempotent (multiple execution does not change a thing)
- Atomic (return value of each non-elemtary action is asserted to be TRUE)
- Encapsulated (everything is installed in a sub-directory in $HOME)
- Logged (all non-elemtary actions are logged)
Even if we officially support only *one* distro (currently Debian 6.0.1), I tested the installer successfully on various Ubuntus. In the README at the top are the requirements of the installer. By default, everything is installed to $HOME/opentox-ruby (=OT_PREFIX). The configs go to OT_PREFIX/.sh_<Package>_ot.sh for each package.
After running the installer, configure the system by editing the startup file of your favorite shell (in my case, BASH with the file ~ /. bashrc) to include ~/.opentox-ui.sh (in my case with 'source ...'). This file is the only one that the installer creates outside OT_PREFIX. Thus, the system is fully configured: If you now open a new shell, all environment variables will be adjusted.
To start the system I run the following (but that is not part of the installer):
nohup $HOME/opentox-ruby/redis-2.2.2/src/redis-server $HOME/opentox-ruby/redis-2.2.2/redis.conf &
nohup $HOME/opentox-ruby/nginx/sbin/nginx -c $HOME/opentox-ruby/nginx/conf/nginx.conf &
To uninstall the system simply delete the link from the startup file: Done. To save disc space delete directory OT_PREFIX.
Anyone can run multiple Opentox versions on the same machine: Just install again, but to a different OT_PREFIX. The switch works manually: Include the sh_<Package>_ot.sh files from the desired OT_PREFIX in $HOME/opentox-ui.sh (only one installation may be activated at any time).
Some useful scripts to put in your ~/.bashrc in case you are using bash (assuming OT_PREFIX is '~/opentox-ruby'):
# Load server config
otconfig() {
source $HOME/.opentox-ui.sh
}
# Update the version
otupdate() {
START_DIR=`pwd`
otconfig
cd $HOME/opentox-ruby/www/opentox
for d in `find -not -name "." -type d -maxdepth 1 2>/dev/null`; do echo ; echo $d ; cd $d ; MYBRANCH=`git branch | grep "*" | sed 's/.*\ //g'`; git pull origin $MYBRANCH ; cd - ; done
cd $HOME/opentox-ruby/www/opentox/algorithm/libfminer
mv libbbrc/Makefile libbbrc/Makefile~
mv liblast/Makefile liblast/Makefile~
if ! git pull; then
echo "Error! Pull for Fminer failed."
return 1
fi
mv libbbrc/Makefile~ libbbrc/Makefile
mv liblast/Makefile~ liblast/Makefile
make -C libbbrc/ clean
make -C libbbrc/ ruby
make -C liblast/ clean
make -C liblast/ ruby
cd -
cd $HOME/opentox-ruby/www/opentox/algorithm/last-utils
if ! git pull; then
echo "Error! Pull for Last-Utils failed."
return 1
fi
cd -
cd opentox-ruby
LINK_DIR=`gem which opentox-ruby | sed 's/\/opentox-ruby.rb//'`
if [ -h $LINK_DIR ]; then
rm -f $LINK_DIR
fi
rake install
if ! [ -h $LINK_DIR ]; then
echo "Warning! Your lib $LINK_DIR is no symlink. Linking back for you..."
rm -rf "$LINK_DIR~"
mv "$LINK_DIR" "$LINK_DIR~"
ln -sf $HOME/opentox-ruby/www/opentox/opentox-ruby/lib `echo ${LINK_DIR::${#LINK_DIR}-3}`
fi
echo "Please execute 'otstart' to restart."
cd "$START_DIR"
}
# Start the server
otstart() {
otkill
bash -c "source $HOME/.opentox-ui.sh; nohup redis-server $HOME/opentox-ruby/redis-2.2.2/redis.conf >/dev/null 2>&1 &"
bash -c "source $HOME/.opentox-ui.sh; nohup nginx -c $HOME/opentox-ruby/nginx/conf/nginx.conf >/dev/null 2>&1 &"
sleep 2
if ! pgrep -u $USER nginx>/dev/null 2>&1; then echo "Failed to start nginx."; fi
if ! pgrep -u $USER redis-server>/dev/null 2>&1; then echo "Failed to start redis."; fi
}
# Display log
alias otless='less $HOME/.opentox/log/production.log'
# Tail log
alias ottail='tail -f $HOME/.opentox/log/production.log'
# Reload the server
otreload() {
bash -c "source $HOME/.opentox-ui.sh; nginx -s reload"
}
# Kill the server
otkill() {
killall nginx >/dev/null 2>&1
bash -c "source $HOME/.opentox-ui.sh; redis-cli shutdown >/dev/null 2>&1"
while ps x | grep PassengerWatchdog | grep -v grep >/dev/null 2>&1; do sleep 1; done
while ps x | grep Rack | grep -v grep >/dev/null 2>&1; do sleep 1; done
for p in `pgrep -u $USER R 2>/dev/null`; do kill -9 $p; done
}
|