-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinit.d-uwsgi.sh
executable file
·147 lines (132 loc) · 3.84 KB
/
init.d-uwsgi.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
#!/bin/bash
# Use uwsgi to run psgi web apps.
# !!! Запускать от простого пользователя
# для которого установлен perlbrew
# su - <user> -c "/home/<user>/service1/<this bash script>.sh start"
# http://perlbrew.pl/Perlbrew-In-Shell-Scripts.html
# perlbrew info
#~ export PERLBREW_ROOT=~/perl5/perlbrew
#~ export PERLBREW_HOME=~/.perlbrew
#~ source ${PERLBREW_ROOT}/etc/bashrc
#perlbrew use perl-5.16.3
# mojo generate app Service1
SERVICE_ROOT=~/api.dropboxapi.com
SERVICE_SCRIPT="$SERVICE_ROOT/test-app.pl"
#~ OWNER=guest # su
#~ GROUP=guest
NAME=uwsgi
DESC=uwsgi
# uWSGI собирать при соответсвующем Перле!!!
# perlbrew use perl-5.16.2
# $ curl http://uwsgi.it/install | bash -s psgi ~/uwsgi-perl-v5.16.2
DAEMON=~/uwsgi
LOG="$SERVICE_ROOT/log/$NAME.log"
#~ LOG="/dev/null"
#LOG="$SERVICE_ROOT/log/development.log"
PID_FILE="$SERVICE_ROOT/$NAME.pid"
SOCK="$SERVICE_ROOT/uwsgi.sock"
NUM_SOCK=1 # сверь с uwsgi_pass/upstream nginx.conf, циферка в названии файла сокета в конце
THIS=$0
ACTION=$1
shift
DAEMON_OPTS="--psgi $SERVICE_SCRIPT --uwsgi-socket=$SOCK --master --pidfile=$PID_FILE --daemonize=$LOG"
# --enable-threads --processes=5
# --http-websockets
#--declare-option '$@' --uid=$OWNER --gid=$GROUP --uwsgi-socket=$SOCK.{1..$NUM_SOCK}
echo "CHECK COMMAND: " $DAEMON $DAEMON_OPTS
#~ %v the vassals directory (pwd)
#~ http://uwsgi-docs.readthedocs.org/en/latest/ConfigLogic.html
#~ http://uwsgi-docs.readthedocs.org/en/latest/Configuration.html
#~ [13:27] <GrahamDumpleton> guest-quest: If you don't understand what it is, use --single-interpreter
#~ [13:27] <GrahamDumpleton> It is safer to use single interpreter.
test -x $DAEMON || exit 0
# Include uwsgi defaults if available
if [ -f /etc/default/uwsgi ] ; then
. /etc/default/uwsgi
fi
set -e
get_pid() {
if [ -f $PID_FILE ]; then
echo `cat $PID_FILE`
fi
}
case $ACTION in # был shift!!!
start)
echo -n "Starting $DAEMON... "
PID=$(get_pid)
if [ -z "$PID" ]; then
[ -f $PID_FILE ] && rm -f $PID_FILE
touch $PID_FILE
touch $LOG
#~ chown $OWNER:$GROUP $PID_FILE
#~ su - $OWNER -pc "$DAEMON $DAEMON_OPTS"
$DAEMON $DAEMON_OPTS
echo "OK."
else
echo "Its running? Found PID_FILE=[$PID_FILE]. Check (ps ax | grep \"$DAEMON\" | grep $PID) and then (rm '$PID_FILE')"
ps=$(ps ax | grep "$DAEMON" | grep $PID)
# echo "123 $ps"
if [ -z "$ps" ]; then
# ps=$(ps ax | grep $PID)
echo "Проверить для rm"
exit
else
echo "Found process:"
echo "$ps"
fi
fi
;;
stop)
echo -n "Stopping $DAEMON... "
PID=$(get_pid)
[ ! -z "$PID" ] && kill -s 3 $PID &> /dev/null
if [ $? -gt 0 ]; then
echo "was not running"
exit 1
else
echo "OK."
rm -f $PID_FILE &> /dev/null
for s in $(seq $NUM_SOCK);
do
rm -f "$SOCK.$s" &> /dev/null
done
fi
;;
reload)
echo "Reloading $DAEMON..."
PID=$(get_pid)
[ ! -z "$PID" ] && kill -s 1 $PID # &> /dev/null
if [ $? -gt 0 ]; then
echo "was not running"
exit 1
else
echo "OK."
fi
;;
force-reload)
echo "Reloading $DAEMON..."
PID=$(get_pid)
[ ! -z "$PID" ] && kill -s 15 $PID &> /dev/null
if [ $? -gt 0 ]; then
echo "was not running"
exit 1
else
echo "OK."
fi
;;
restart)
$0 stop
sleep 2
$0 start
;;
status)
# инфа кидается в лог $LOG
killall -10 $DAEMON
tail -n 100 $LOG
;;
*)
echo "Usage: $THIS {start|stop|restart|reload|force-reload|status} [options pass to app -- not work :(]" >&2
exit 1
;;
esac
exit 0