source: OpenWorkouts-current/bin/install

current
Last change on this file was 8ee2af5, checked in by Borja Lopez <borja@…>, 5 years ago

Added the scripts and config files to run uwsgi instead of pserve
for development.

This fixes a problem that caused pserve to hang up forever when
several ajax requests were sent to generate screenshots of workout
maps (pserve does not handle concurrent requests very well).

After pulled this change, you can start the app manually using the
uwsgi_start helper::

./bin/uwsgi_start development

Or just use the ./bin/start script, which takes care also of starting
ZEO and several other steps.

  • Property mode set to 100755
File size: 5.1 KB
Line 
1#!/bin/sh
2#
3# Script to install OpenWorkouts for development
4#
5
6# Full path to where we run the script from
7current=`pwd`
8# Full path to the main python binary (will be set by check_python3())
9python_bin=''
10# Full path to the env
11env_path=${current}/env
12# full path to the install logs
13install_log=${current}/var/log/install.log
14# mail queue directory (where automatically generated emails are stored)
15mail_queue_path=${current}/var/spool/mqueue
16
17set_scripts_permissions() {
18    echo "Setting up script permissions"
19    # ensure the shell scripts we will need have proper permissions
20    chmod u+x ${current}/bin/js_deps
21    chmod u+x ${current}/bin/start
22}
23
24check_python3() {
25    # if python3 is not installed, exit with an error
26    if command -v python3 > /dev/null; then
27        # ok
28        python_bin=`command -v python3`
29        echo "Found valid python installation: ${python_bin}"
30        return
31    else
32        # no python3 binary, look for python
33        if command -v python > /dev/null; then
34            # python found, check if it is 3.x
35            if `command -v python` -c "import sys; exit(0) if sys.version.startswith('3.') else exit(1)"; then
36                python_bin=`command -v python`
37                echo "Found valid python installation: ${python_bin}"
38                return
39            else
40                # no python binary, error
41                echo "Error: could not find a suitable python version installed, please install python 3.x"
42                exit 1
43            fi
44        else
45            # no python binary, error
46            echo "Error: could not find a suitable python version installed, please install python 3.x"
47            exit 1
48        fi
49    fi
50}
51
52create_venv() {
53    # create a new virtual environment
54    if [ ! -d ${env_path} ]; then
55        echo "Creating new python virtual environment [${env_path}]"
56        ${python_bin} -m venv ${env_path}
57    else
58        if [ ! -f ${env_path}/bin/activate ]; then
59            # env dir found, but not a virtual env
60            echo "Error: ${env_path} exists and is not a valid virtual environment"
61            exit 1
62        else
63            echo "Reusing python virtual environment [${env_path}]"
64        fi
65    fi
66}
67
68upgrade_pip_setuptools() {
69    . ${env_path}/bin/activate
70    echo "Upgrading python packaging tools"
71    yes | pip install --upgrade setuptools pip >> ${install_log}.stdout 2>> ${install_log}.stderr
72    deactivate
73}
74
75install_openworkouts() {
76    . ${env_path}/bin/activate
77    echo "Installing OpenWorkouts dependencies"
78    yes | pip install --upgrade -e ${current}[testing,translations] >> ${install_log}.stdout 2>> ${install_log}.stderr
79    deactivate
80}
81
82install_js_deps() {
83    echo "Installing javascript components"
84    ${current}/bin/js_deps >> ${install_log}.stdout 2>> ${install_log}.stderr
85}
86
87create_mail_queue() {
88    # Creates a Maildir-format directory that pyramid_mailer can use to
89    # queue mails.
90    echo "Creating mail spool directory ${mail_queue_path}"
91    mkdir -p ${mail_queue_path}/new >> ${install_log}.stdout 2>> ${install_log}.stderr
92    mkdir -p ${mail_queue_path}/tmp >> ${install_log}.stdout 2>> ${install_log}.stderr
93    mkdir -p ${mail_queue_path}/cur >> ${install_log}.stdout 2>> ${install_log}.stderr
94}
95
96create_temp_dirs() {
97    # Creates the tmp directory where cache files are stored
98    echo "Creating tmp and cache directories ${current}/var/tmp"
99    mkdir -p ${current}/var/tmp/chameleon
100    mkdir -p ${current}/var/tmp/egg_cache
101}
102
103setup_mail_server() {
104    echo ""
105    echo "IMPORTANT, READ BEFORE STARTING OpenWorkouts"
106    echo "--------------------------------------------"
107    echo ""
108    echo "For emails to be sent by OpenWorkouts you have to set up your mail"
109    echo "server account. Edit the file development.ini and update the"
110    echo "parameters:"
111    echo ""
112    echo "  mail.host = SERVER"
113    echo "  mail.tls = True"
114    echo "  mail.username = USERNAME"
115    echo "  mail.password = PASSWORD"
116    echo ""
117    echo "--------------------------------------------"
118
119}
120
121create_cron_job() {
122    echo ""
123    echo "IMPORTANT, READ BEFORE STARTING OpenWorkouts"
124    echo "--------------------------------------------"
125    echo ""
126    echo "Remember to add a periodic task in your operating system to process"
127    echo "the mail queue, so emails are sent"
128    echo ""
129    echo "In a unix-like system, add this to your crontab:"
130    echo ""
131    echo "*/5 * * * * cd ${current} && ./bin/send_emails > /dev/null 2> /dev/null"
132    echo ""
133    echo "--------------------------------------------"
134    echo ""
135}
136
137setup_start_stop() {
138    echo "OpenWorkouts successfully installed in ${env_path}"
139    echo ""
140    echo "You can now start the OpenWorkouts service calling:"
141    echo ""
142    echo "  cd ${current} && ./bin/start"
143    echo ""
144    echo "(the installation script left a log under ${install_log})"
145    echo ""
146    # echo "You can stop any running OpenWorkouts instances calling:"
147    # echo ""
148    # echo "  ${current}/bin/stop"
149    # echo ""
150}
151
152set_scripts_permissions
153check_python3
154create_venv
155upgrade_pip_setuptools
156install_openworkouts
157install_js_deps
158create_mail_queue
159setup_mail_server
160create_cron_job
161create_temp_dirs
162setup_start_stop
Note: See TracBrowser for help on using the repository browser.