-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup.sh
133 lines (115 loc) · 3.13 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
123
124
125
126
127
128
129
130
131
132
133
#!/bin/sh
export PATH=$OPENSHIFT_RUNTIME_DIR/bin:$PATH
OPENSHIFT_ACTION_HOOKS_DIR=$OPENSHIFT_REPO_DIR/.openshift/action_hooks
cd $OPENSHIFT_TMP_DIR
#####
##### yaml
#####
install_yaml()
{
# get and compile
wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
tar xzf yaml-0.1.4.tar.gz
cd yaml-0.1.4
./configure --prefix=$OPENSHIFT_RUNTIME_DIR
make
make install
# clean up
cd $OPENSHIFT_TMP_DIR
rm -rf yaml*
}
#####
##### ruby
#####
install_ruby()
{
# dont install if ruby is already 1.9.3
if (( $(ruby -v | awk '{print $2 ~ "1.9.3"}') )); then
return 0;
fi
install_yaml
# get the source
wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz
tar xzf ruby-1.9.3-p194.tar.gz
# tell ruby about yaml.h and libyaml
cd ruby-1.9.3-p194/ext/psych
export C_INCLUDE_PATH=$OPENSHIFT_RUNTIME_DIR/include
export LIBYAMLPATH=$OPENSHIFT_RUNTIME_DIR/lib
sed -i '1i $LIBPATH << ENV["LIBYAMLPATH"]' extconf.rb
# compile
cd $OPENSHIFT_TMP_DIR/ruby-1.9.3-p194
./configure --enable-shared --disable-install-doc --prefix=$OPENSHIFT_RUNTIME_DIR
make
make install
# clean up
cd $OPENSHIFT_TMP_DIR
rm -rf ruby*
}
#####
##### bundler
#####
install_bundler()
{
gem install bundler
# setup the pre-build script
echo > $OPENSHIFT_ACTION_HOOKS_DIR/pre-build
cat << 'EOF' > $OPENSHIFT_ACTION_HOOKS_DIR/pre-build
data="${OPENSHIFT_DATA_DIR}/assets"
assets="${OPENSHIFT_REPO_DIR}/public"
# Make the data directory if it doesn't exist
if [ ! -d "$data" ]; then
mkdir $data;
fi
# Remove the assets directory if it's empty
find $assets/assets -maxdepth 0 -type d -empty -delete 2> /dev/null
# Try to make the symlink
ln -s $data $assets 2> /dev/null
if [ $? -gt 0 ]; then
echo "Unable to create symlink to assets directory, using existing directory in repository"
fi
EOF
# setup the build script
echo > $OPENSHIFT_ACTION_HOOKS_DIR/build
cat << 'EOF' > $OPENSHIFT_ACTION_HOOKS_DIR/build
export PATH=$OPENSHIFT_RUNTIME_DIR/bin:$PATH
pushd ${OPENSHIFT_REPO_DIR} > /dev/null
bundle install --deployment
popd > /dev/null
EOF
# setup the deploy script
echo > $OPENSHIFT_ACTION_HOOKS_DIR/deploy
cat << 'EOF' > $OPENSHIFT_ACTION_HOOKS_DIR/deploy
export PATH=$OPENSHIFT_RUNTIME_DIR/bin:$PATH
pushd ${OPENSHIFT_REPO_DIR} > /dev/null
# Run db:migrate
#bundle exec rake db:migrate RAILS_ENV="production"
# Precompile the assets
bundle exec rake assets:precompile RAILS_ENV="production"
popd > /dev/null
EOF
}
#####
##### unicorn
#####
install_unicorn()
{
gem install unicorn
# setup the start script
echo > $OPENSHIFT_ACTION_HOOKS_DIR/start
cat << 'EOF' > $OPENSHIFT_ACTION_HOOKS_DIR/start
#!/bin/bash
export PATH=$OPENSHIFT_RUNTIME_DIR/bin:$PATH
unicorn -l $OPENSHIFT_INTERNAL_IP:$OPENSHIFT_INTERNAL_PORT -E "production" -D
EOF
# setup the stop script
echo > $OPENSHIFT_ACTION_HOOKS_DIR/stop
cat << 'EOF' > $OPENSHIFT_ACTION_HOOKS_DIR/stop
#!/bin/bash
export PATH=$OPENSHIFT_RUNTIME_DIR/bin:$PATH
kill -s QUIT `ps -ef | grep "unicorn master" | grep -v grep | awk "{ print $2 }"`
EOF
}
install_ruby
cd $OPENSHIFT_REPO_DIR
install_bundler
install_unicorn