Hi, it works now... I missed a pip3... works on a newly spun ubuntu 18.04 
instance on vultr.com



#!/bin/bash

echo 'setup-web2py-nginx-uwsgi-ubuntu-precise.sh'

echo 'Requires Ubuntu > 12.04 or Debian >= 8 and installs Nginx + uWSGI + 
Web2py'

# Check if user has root privileges

if [[ $EUID -ne 0 ]]; then

   echo "You must run the script as root or using sudo"

   exit 1

fi

# parse command line arguments

nopassword=0

nocertificate=0

while [ "$#" -gt 0 ]; do

  case "$1" in

    --no-password) nopassword=1; shift 1;;

    --no-certificate) nocertificate=1; shift 1;;

  esac

done

# Get Web2py Admin Password

if [ "$nopassword" -eq 0 ]

then

  echo -e "Web2py Admin Password: \c "

  read -s PW

  printf "\n"  # fix no new line artifact of "read -s" to avoid cleartext 
password

fi

# Upgrade and install needed software

apt-get update

apt-get -y upgrade

apt-get autoremove

apt-get autoclean

apt-get -y install nginx-full

apt-get -y install build-essential python3-dev libxml2-dev python3-pip unzip

pip3 install setuptools --no-use-wheel --upgrade

PIPPATH=`which pip3`

$PIPPATH install --upgrade uwsgi

# Create common nginx sections

mkdir /etc/nginx/conf.d/web2py

echo '

gzip_static on;

gzip_http_version   1.1;

gzip_proxied        expired no-cache no-store private auth;

gzip_disable        "MSIE [1-6]\.";

gzip_vary           on;

' > /etc/nginx/conf.d/web2py/gzip_static.conf

echo '

gzip on;

gzip_disable "msie6";

gzip_vary on;

gzip_proxied any;

gzip_comp_level 6;

gzip_buffers 16 8k;

gzip_http_version 1.1;

gzip_types text/plain text/css application/json application/x-javascript 
text/xml application/xml application/xml+rss text/javascript;

' > /etc/nginx/conf.d/web2py/gzip.conf

# Create configuration file /etc/nginx/sites-available/web2py

echo 'server {

        listen          80;

        server_name     $hostname;

        ###to enable correct use of response.static_version

        location ~* ^/(\w+)/static(?:/_[\d]+\.[\d]+\.[\d]+)?/(.*)$ {

            alias /home/www-data/web2py/applications/$1/static/$2;

            expires max;

            ### if you want to use pre-gzipped static files (recommended)

            ### check scripts/zip_static_files.py and remove the comments

            # include /etc/nginx/conf.d/web2py/gzip_static.conf;

        }

        ###


        ###if you use something like myapp = dict(languages=['en', 'it', 
'jp'], default_language='en') in your routes.py

        #location ~* ^/(\w+)/(en|it|jp)/static/(.*)$ {

        #    alias /home/www-data/web2py/applications/$1/;

        #    try_files static/$2/$3 static/$3 =404;

        #}

        ###

        

        location / {

            #uwsgi_pass      127.0.0.1:9001;

            uwsgi_pass      unix:///tmp/web2py.socket;

            include         uwsgi_params;

            uwsgi_param     UWSGI_SCHEME $scheme;

            uwsgi_param     SERVER_SOFTWARE    nginx/$nginx_version;


            ###remove the comments to turn on if you want gzip compression 
of your pages

            # include /etc/nginx/conf.d/web2py/gzip.conf;

            ### end gzip section


            ### remove the comments if you use uploads (max 10 MB)

            #client_max_body_size 10m;

            ###

        }

}

server {

        listen 443 default_server ssl;

        server_name     $hostname;

        ssl_certificate         /etc/nginx/ssl/web2py.crt;

        ssl_certificate_key     /etc/nginx/ssl/web2py.key;

        ssl_prefer_server_ciphers on;

        ssl_session_cache shared:SSL:10m;

        ssl_session_timeout 10m;

        ssl_ciphers 
ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        keepalive_timeout    70;

        location / {

            #uwsgi_pass      127.0.0.1:9001;

            uwsgi_pass      unix:///tmp/web2py.socket;

            include         uwsgi_params;

            uwsgi_param     UWSGI_SCHEME $scheme;

            uwsgi_param     SERVER_SOFTWARE    nginx/$nginx_version;

            ###remove the comments to turn on if you want gzip compression 
of your pages

            # include /etc/nginx/conf.d/web2py/gzip.conf;

            ### end gzip section

            ### remove the comments if you want to enable uploads (max 10 
MB)

            #client_max_body_size 10m;

            ###

        }

        ###to enable correct use of response.static_version

        location ~* ^/(\w+)/static(?:/_[\d]+\.[\d]+\.[\d]+)?/(.*)$ {

            alias /home/www-data/web2py/applications/$1/static/$2;

            expires max;

            ### if you want to use pre-gzipped static files (recommended)

            ### check scripts/zip_static_files.py and remove the comments

            # include /etc/nginx/conf.d/web2py/gzip_static.conf;

        }

        ###


}' >/etc/nginx/sites-available/web2py


ln -s /etc/nginx/sites-available/web2py /etc/nginx/sites-enabled/web2py

rm /etc/nginx/sites-enabled/default

mkdir /etc/nginx/ssl

cd /etc/nginx/ssl

if [ "$nocertificate" -eq 0 ]

then

  openssl genrsa 1024 > web2py.key

  chmod 400 web2py.key

  openssl req -new -x509 -nodes -sha1 -days 1780 -key web2py.key > 
web2py.crt

  openssl x509 -noout -fingerprint -text < web2py.crt > web2py.info

fi

# Prepare folders for uwsgi

sudo mkdir /etc/uwsgi

sudo mkdir /var/log/uwsgi

sudo mkdir /etc/systemd

sudo mkdir /etc/systemd/system


#uWSGI Emperor

echo '[Unit]

Description = uWSGI Emperor

After = syslog.target


[Service]

ExecStart = /usr/local/bin/uwsgi --ini /etc/uwsgi/web2py.ini

RuntimeDirectory = uwsgi

Restart = always

KillSignal = SIGQUIT

Type = notify

StandardError = syslog

NotifyAccess = all


[Install]

WantedBy = multi-user.target

' > /etc/systemd/system/emperor.uwsgi.service


# Create configuration file /etc/uwsgi/web2py.ini

echo '[uwsgi]


socket = /tmp/web2py.socket

pythonpath = /home/www-data/web2py/

mount = /=wsgihandler:application

processes = 4

master = true

harakiri = 60

reload-mercy = 8

cpu-affinity = 1

stats = /tmp/stats.socket

max-requests = 2000

limit-as = 512

reload-on-as = 256

reload-on-rss = 192

uid = www-data

gid = www-data

touch-reload = /home/www-data/web2py/routes.py

cron = 0 0 -1 -1 -1 python3 /home/www-data/web2py/web2py.py -Q -S welcome 
-M -R scripts/sessions2trash.py -A -o

no-orphans = true

' >/etc/uwsgi/web2py.ini


#Create a configuration file for uwsgi in emperor-mode

#for Upstart in /etc/init/uwsgi-emperor.conf

echo '# Emperor uWSGI script


description "uWSGI Emperor"

start on runlevel [2345]

stop on runlevel [06]

##

#remove the comments in the next section to enable static file compression 
for the welcome app

#in that case, turn on gzip_static on; on /etc/nginx/nginx.conf

##

#pre-start script

#    python3 /home/www-data/web2py/web2py.py -S welcome -R 
scripts/zip_static_files.py

#    chown -R www-data:www-data /home/www-data/web2py/*

#end script

respawn

exec uwsgi --master --die-on-term --emperor /etc/uwsgi --logto 
/var/log/uwsgi/uwsgi.log

' > /etc/init/uwsgi-emperor.conf

# Install Web2py

mkdir /home/www-data

cd /home/www-data

wget http://web2py.com/examples/static/web2py_src.zip

unzip web2py_src.zip

mv web2py/handlers/wsgihandler.py web2py/wsgihandler.py

rm web2py_src.zip

chown -R www-data:www-data web2py

cd /home/www-data/web2py

if [ "$nopassword" -eq 0 ]

then

   sudo -u www-data python3 -c "from gluon.main import save_password; 
save_password('$PW',443)"

fi


/etc/init.d/nginx start

systemctl start emperor.uwsgi.service

systemctl enable emperor.uwsgi.service


echo <<EOF

you can stop uwsgi and nginx with


  sudo /etc/init.d/nginx stop

  sudo systemctl stop emperor.uwsgi.service

 

and start it with


  sudo /etc/init.d/nginx start

  systemctl start emperor.uwsgi.service


EOF


On Tuesday, February 5, 2019 at 6:08:44 PM UTC-8, Richard wrote:
>
> Share you change here, we may point you in the right direction, so you can 
> submit a PR on github... It shouldn't be hard to get the actual script to 
> work.
>
> Richard
>
> On Tue, Feb 5, 2019 at 2:28 PM Ben Lawrence <[email protected] 
> <javascript:>> wrote:
>
>> HI
>> If anyone has a working install script for web2py using python3 + a 
>> webserver, can you please share with me?
>> I am using setup-web2py-nginx-uwsgi-ubuntu.sh and modified it to use 
>> python3 but the emporer uwsgi service always fails (with no error code).
>> thank you in advance.
>> Ben
>>
>> -- 
>> Resources:
>> - http://web2py.com
>> - http://web2py.com/book (Documentation)
>> - http://github.com/web2py/web2py (Source code)
>> - https://code.google.com/p/web2py/issues/list (Report Issues)
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "web2py-users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to