source: OpenRLabs-Git/deploy/rlabs-docker/web2py-rlabs/scripts/setup-web2py-nginx-uwsgi-opensuse.sh @ 42095c5

mainqndtest v1.1.1
Last change on this file since 42095c5 was 42bd667, checked in by David Fuertes <dfuertes@…>, 4 years ago

Historial Limpio

  • Property mode set to 100755
File size: 6.1 KB
Line 
1#!/bin/bash
2echo 'setup-web2py-nginx-uwsgi-opensuse.sh'
3echo 'Requires OpenSUSE  12.3 32Bits and installs Nginx + uWSGI + Web2py'
4
5
6# Get Web2py Admin Password
7echo -e "Web2py Admin Password: \c "
8read  PW
9
10zypper clean && zypper refresh && zypper up
11zypper in -y nginx python-xml python-pip unzip sudo
12zypper in -y gcc python-devel libxml2-devel python-pip unzip
13pip install --upgrade pip
14PIPPATH=`which pip`
15$PIPPATH install --upgrade uwsgi
16
17
18# Prepare folders for uwsgi
19mkdir /etc/uwsgi
20mkdir /var/log/uwsgi
21
22usermod -G www nginx
23
24mkdir -p /etc/nginx/vhosts.d/
25mkdir -p /etc/nginx/ssl/
26
27
28cd /etc/nginx/ssl
29openssl genrsa 1024 > web2py.key
30chmod 400 web2py.key
31openssl req -new -x509 -nodes -sha1 -days 1780 -key web2py.key > web2py.crt
32openssl x509 -noout -fingerprint -text < web2py.crt > web2py.info
33
34
35echo 'server {
36        listen          80;
37        server_name     $hostname;
38        #to enable correct use of response.static_version
39        location ~* /(\w+)/static(?:/_[\d]+\.[\d]+\.[\d]+)?/(.*)$ {
40            alias /srv/www/web2py/applications/$1/static/$2;
41            expires max;
42        }
43        location / {
44            #uwsgi_pass      127.0.0.1:9001;
45            uwsgi_pass      unix:///tmp/web2py.socket;
46            include         /etc/nginx/uwsgi_params;
47            uwsgi_param     UWSGI_SCHEME $scheme;
48            uwsgi_param     SERVER_SOFTWARE    nginx/$nginx_version;
49        }
50}
51server {
52        listen 443 default_server ssl;
53        server_name     $hostname;
54        ssl_certificate         /etc/nginx/ssl/web2py.crt;
55        ssl_certificate_key     /etc/nginx/ssl/web2py.key;
56        ssl_prefer_server_ciphers on;
57        ssl_session_cache shared:SSL:10m;
58        ssl_session_timeout 10m;
59        ssl_ciphers ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA;
60        ssl_protocols SSLv3 TLSv1;
61        keepalive_timeout    70;
62        location ~* /(\w+)/static(?:/_[\d]+\.[\d]+\.[\d]+)?/(.*)$ {
63            alias /srv/www/web2py/applications/$1/static/$2;
64            expires max;
65        }
66        location / {
67            #uwsgi_pass      127.0.0.1:9001;
68            uwsgi_pass      unix:///tmp/web2py.socket;
69            include         /etc/nginx/uwsgi_params;
70            uwsgi_param     UWSGI_SCHEME $scheme;
71            uwsgi_param     SERVER_SOFTWARE    nginx/$nginx_version;
72        }
73
74}' >/etc/nginx/vhosts.d/web2py.conf
75
76
77
78# Create configuration file /etc/uwsgi/web2py.xml
79echo '<uwsgi>
80    <socket>/tmp/web2py.socket</socket>
81    <pythonpath>/srv/www/web2py/</pythonpath>
82    <mount>/=wsgihandler:application</mount>
83    <master/>
84    <processes>4</processes>
85    <harakiri>60</harakiri>
86    <reload-mercy>8</reload-mercy>
87    <cpu-affinity>1</cpu-affinity>
88    <stats>/tmp/stats.socket</stats>
89    <max-requests>2000</max-requests>
90    <limit-as>512</limit-as>
91    <reload-on-as>256</reload-on-as>
92    <reload-on-rss>192</reload-on-rss>
93    <uid>nginx</uid>
94    <gid>www</gid>
95    <cron>0 0 -1 -1 -1 python /srv/www/web2py/web2py.py -Q -S welcome -M -R scripts/sessions2trash.py -A -o</cron>
96    <no-orphans/>
97</uwsgi>' >/etc/uwsgi/web2py.xml
98
99
100cd /srv/www/
101wget http://web2py.com/examples/static/web2py_src.zip
102unzip web2py_src.zip
103rm web2py_src.zip
104mv web2py/handlers/wsgihandler.py web2py/wsgihandler.py
105chown -R nginx:www web2py
106cd /srv/www/web2py
107sudo -u nginx python -c "from gluon.main import save_password; save_password('$PW',443)"
108
109
110
111## Daemons /start/stop
112
113echo '#!/bin/sh
114# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
115#
116# Author: James Oakley
117#
118# /etc/init.d/uwsgi
119#   and its symbolic link
120# /(usr/)sbin/rcuwsgi
121#
122# LSB compatible service control script; see http://www.linuxbase.org/spec/
123#
124### BEGIN INIT INFO
125# Provides:          uwsgi
126# Required-Start:    $syslog $remote_fs
127# Should-Start:      $time ypbind smtp
128# Required-Stop:     $syslog $remote_fs
129# Should-Stop:       ypbind smtp
130# Default-Start:     3 5
131# Default-Stop:      0 1 2 6
132# Short-Description: Application Container Server for Networked/Clustered Web Applications
133# Description:       Application Container Server for Networked/Clustered Web Applications
134### END INIT INFO
135
136# Check for missing binaries (stale symlinks should not happen)
137UWSGI_BIN=/usr/bin/uwsgi
138test -x $UWSGI_BIN || { echo "$UWSGI_BIN not installed";
139        if [ "$1" = "stop" ]; then exit 0;
140        else exit 5; fi; }
141
142UWSGI_EMPEROR_MODE=true
143UWSGI_VASSALS="/etc/uwsgi/"
144UWSGI_OPTIONS="--logto /var/log/uwsgi/uwsgi.log"
145
146
147UWSGI_OPTIONS="$UWSGI_OPTIONS --autoload"
148
149if [ "$UWSGI_EMPEROR_MODE" = "true" ] ; then
150    UWSGI_OPTIONS="$UWSGI_OPTIONS --emperor $UWSGI_VASSALS"
151fi
152
153. /etc/rc.status
154
155rc_reset
156
157case "$1" in
158    start)
159        echo -n "Starting uWSGI "
160        /sbin/startproc $UWSGI_BIN $UWSGI_OPTIONS
161        rc_status -v
162        ;;
163    stop)
164        echo -n "Shutting down uWSGI "
165        /sbin/killproc $UWSGI_BIN
166        rc_status -v
167        ;;
168    try-restart|condrestart)
169        if test "$1" = "condrestart"; then
170                echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}"
171        fi
172        $0 status
173        if test $? = 0; then
174                $0 restart
175        else
176                rc_reset
177        fi
178        rc_status
179        ;;
180    restart)
181        $0 stop
182        $0 start
183        rc_status
184        ;;
185    force-reload)
186        echo -n "Reload service uWSGI "
187        /sbin/killproc -HUP $UWSGI_BIN
188        rc_status -v
189        ;;
190    reload)
191        echo -n "Reload service uWSGI "
192        /sbin/killproc -HUP $UWSGI_BIN
193        rc_status -v
194        ;;
195    status)
196        echo -n "Checking for service uWSGI "
197        /sbin/checkproc $UWSGI_BIN
198        rc_status -v
199        ;;
200    probe)
201        echo -n "uWSGI does not support probe "
202        rc_failed 3
203        rc_status -v
204        ;;
205    *)
206        echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}"
207        exit 1
208        ;;
209esac
210rc_exit '> /etc/init.d/uwsgi
211
212
213chmod +x /etc/init.d/uwsgi
214/etc/init.d/uwsgi start
215/etc/init.d/nginx restart
216
217
218chkconfig --add uwsgi
219chkconfig --add nginx
220
221## you can reload uwsgi with
222#/etc/init.d/uwsgi restart
223## to reload web2py only (without restarting uwsgi)
224# touch /etc/uwsgi/web2py.xml
Note: See TracBrowser for help on using the repository browser.