forked from joar/mediagoblin-init-scripts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
mediagoblin-paster.sh
executable file
·133 lines (119 loc) · 3.91 KB
/
mediagoblin-paster.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
# /etc/init.d/mediagoblin-paster
#
## LICENSE: CC0 <http://creativecommons.org/publicdomain/zero/1.0/>
# To the extent possible under law, Bryan Smith <http://fossetcon.org> has
# waived all copyright and related or neighboring rights to
# mediagoblin-paster. This work is published from the US.
#
## CREDIT
# Credit goes to jpope <http://jpope.org/>
# chimo <http://chimo.chromic.org/>.
# Joar Wandborg <http://wandborg.se>
# From which' Arch init scripts this is
# based upon.
#
### BEGIN INIT INFO
# Provides: mediagoblin-paster
# Required-Start: $network $named $local_fs
# Required-Stop: $remote_fs $syslog $network $named $local_fs
# Should-Start: postgresql $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: MediaGoblin paster FCGI server init script
# Description: This script will initiate the GNU MediaGoblin paster
# fcgi server.
### END INIT INFO
################################################################################
# CHANGE THIS
# to suit your environment
################################################################################
MG_ROOT=/srv/mediagoblin
MG_USER=mediagoblin
################################################################################
# NOW STOP
# You probably won't have to change anything else.
################################################################################
set -e
DAEMON_NAME=mediagoblin-paster
MG_BIN=$MG_ROOT/bin
MG_PASTER_BIN=$MG_BIN/paster
MG_PASTE_INI=$MG_ROOT/paste_local.ini
MG_FCGI_HOST=127.0.0.1
MG_FCGI_PORT=26543
MG_PASTER_PID_FILE=/var/run/mediagoblin/$DAEMON_NAME.pid
MG_PASTER_LOG_FILE=/var/log/mediagoblin/$DAEMON_NAME.log
set_up_directories() {
install -o $MG_USER -g users -d -m 755 /var/log/mediagoblin
install -o $MG_USER -g users -d -m 755 /var/run/mediagoblin
}
set_up_directories
# Include LSB helper functions
. /lib/lsb/init-functions
getPID () {
# Discard any errors from cat
cat $MG_PASTER_PID_FILE 2>/dev/null
}
case "$1" in
start)
# Start the MediaGoblin paster process
log_daemon_msg "Starting GNU MediaGoblin paster fcgi server" "$DAEMON_NAME"
if [ ! -f $MG_PASTE_INI ]; then
MG_PASTE_INI=$MG_ROOT/paste.ini
fi
if [ -z "$(getPID)" ]; then
su -c "CELERY_ALWAYS_EAGER=False $MG_PASTER_BIN serve \
$MG_PASTE_INI \
--server-name=fcgi \
fcgi_host=$MG_FCGI_HOST fcgi_port=$MG_FCGI_PORT \
--pid-file=$MG_PASTER_PID_FILE \
--log-file=$MG_PASTER_LOG_FILE \
--daemon" $MG_USER 2>&1 > /dev/null
PASTER_RESULT=$?
# Sleep for a while until we're kind of certain that paster has
# had it's time to initialize
TRIES=0
while ! [ "X$PASTER_RESULT" != "X" ]; do
log_action_msg "Tried $TRIES time(s)"
sleep 0.1
TRIES=$((TRIES+1))
done
log_end_msg $PASTER_RESULT
else
# Failed because the PID file indicates it's running
log_action_msg "PID file $MG_PASTER_BIN already exists"
log_end_msg 1
fi
;;
stop)
log_daemon_msg "Stopping GNU MediaGoblin paster fcgi server" "$DAEMON_NAME"
if [ -z "$(getPID)" ]; then
# Failed because the PID file indicates it's not running
RET=1
else
kill $(getPID)
if [ $? -gt 0 ]; then
RET=1
else
RET=0
fi
fi
log_end_msg $RET
;;
restart)
$0 stop
$0 start
;;
status)
if ! [ -z "$(getPID)" ]; then
echo "$DAEMON_NAME start/running, process $(getPID)"
else
echo "$DAEMON_NAME stopped."
fi
;;
*)
echo "Usage: $0 {restart|start|stop|status}"
exit 1
;;
esac
exit 0