12

How do i get a basic web2py server up and running on PythonAnywhere?

hwjp
  • 15,359
  • 7
  • 71
  • 70
fuzzyman
  • 8,271
  • 2
  • 30
  • 32
  • getting the admin site running is an extra challenge, because HTTPS isn't supported yet - I've included a workaround in my answer... – hwjp Dec 05 '11 at 14:31

5 Answers5

17

[update - 29/05] We now have a big button on the web tab that will do all this stuff for you. Just click where it says Web2Py, fill in your admin password, and you're good to go.

Here's the old stuff for historical interest...

I'm a PythonAnywhere developer. We're not massive web2py experts (yet?) but I've managed to get web2py up and running like this:

First download and unpack web2py:

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

Go to the PythonAnywhere "Web" panel and edit your wsgi.py. Add these lines:

import os
import sys

path = '/home/my_username/web2py'
if path not in sys.path:
    sys.path.append(path)

from wsgihandler import application

replacing my_username with your username.

You will also need to comment out the last two lines in wsgi.py, where we have the default hello world web.py application...

# comment out these two lines if you want to use another framework
#app = web.application(urls, globals())
#application = app.wsgifunc()

Thanks to Juan Martinez for his instructions on this part, which you can view here: http://web2py.pythonanywhere.com/

then open a Bash console, and cd into the main web2py folder, then run

python web2py.py --port=80

enter admin password

press ctrl-c

(this will generate the parameters_80.py config file)

then go to your Web panel on PythonAnywhere, click reload web app, and things should work!

hwjp
  • 15,359
  • 7
  • 71
  • 70
4

You can also simply run this bash script:

http://pastebin.com/zcA5A89k

admin will be disabled because of no HTTPS unless you bypass it as in the previous post. It will create a security vulnerability.

Massimo
  • 1,653
  • 12
  • 11
  • Pls explain `python -c "from gluon.main import save_password; save_password(raw_input('admin password: '),433)"` – Pacerier Jun 08 '19 at 14:16
2

Pastebin was down, I retrieved this from the cache.

cd ~
wget -O web2py_srz.zip http://web2py.com/examples/static/web2py_src.zip
unzip web2py_src.zip
echo "
PATH = '/home/"`whoami`"/web2py'
import os
import sys
sys.stdout = sys.stderr
os.chdir(PATH)
if not './' in sys.path[:1]: sys.path.insert(0,'./')
from gluon.main import wsgibase as application
" > /var/www/wsgi.py
cd web2py
python -c "from gluon.main import save_password; save_password(raw_input('admin  password: '),433)"
1

I have recently summarized my experience with deployment of Web2Py on PythonAnywhere here

Hope it helps NeoToren

Toren
  • 442
  • 3
  • 13
0

I'll try to add something new to the discussion. The EASIEST way I've found is to go here when you aren't logged in. This makes it so you don't have to mess around with the terminal:

https://www.pythonanywhere.com/try-web2py

Come up with a domain name, then you'll get redirected to a page showing your login information and created dashboard for that domain. From there just create an account so your app isn't erased after 24 hours. When you sign up, your app has a 3 month expiry date (if you're not paying). I believe this is a new policy. Then simply go to https://appname.pythonanywhere.com/admin and then enter the password you were given and then upload your Web2Py file into the dashboard and then visit the page.

I'm not sure how to upload a Web2Py app on PythonAnywhere for an existing account, but that's the easiest method I've found.

Jubl
  • 247
  • 3
  • 14
  • PythonAnywhere dev here: just to clarify one point -- free accounts keep their web apps forever, but you have to log in and click a button at least once every three months to keep them running. That's to stop our servers from getting clogged up with sites that people set up to try something out but don't want any more. We're happy to keep hosting your site indefinitely if you actually want it :-) – Giles Thomas Jun 24 '16 at 12:28