How to install and configure web2py on CentOS 7

Install Web2Py on CentOS 7

Web2Py is a simple yet powerful Python framework for developing web applications. In this tutorial we will show how to install the Web2Py framework on a CentOS 7 VPS.

First things first. Once you have the VPS make sure that you update it so that you can have the latest software.

# yum update

Create your application directory. In this example, we will be working in the /opt directory but you can use a directory of your choice.

# mkdir /opt/web2pyapp
# git clone --recursive https://github.com/web2py/web2py.git /opt/web2pyapp

We will need an SSL key and a certificate so that we can later access the administrative interface. For safety reasons, it is best if we put them in a different directory.

# mkdir /opt/web2pyapp_keys
# cd /opt/web2pyapp_keys
# openssl req -x509 -new -newkey rsa:4096 -days 3652 -nodes -keyout web2pyapp.key -out web2pyapp.crt

Generating a 4096 bit RSA private key
......++
.......................................................++
writing new private key to 'web2pyapp.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:Missouri
Locality Name (eg, city) [Default City]:St. Louis
Organization Name (eg, company) [Default Company Ltd]:Web2Py
Organizational Unit Name (eg, section) []:Web2Py
Common Name (eg, your name or your server's hostname) []:web2py.myvps.com
Email Address []:


### Set proper privileges for the ssl certificate
cd /opt
# chmod 700 web2pyapp_keys
# chmod -R 600 web2pyapp_keys/*

If everything is done correctly by this step, this is how should our layout in /opt should look like.

# ls -l /opt
total 8
drwxr-xr-x 13 root root 4096 Nov 12 11:21 web2pyapp
drwx------  2 root root 4096 Nov 12 11:04 web2pyapp_keys

# ls -l /opt/web2pyapp
total 1268
-rw-r--r-- 1 root root     214 Nov 12 09:46 ABOUT
-rw-r--r-- 1 root root   12965 Nov 12 09:46 anyserver.py
drwxr-xr-x 5 root root    4096 Nov 12 10:37 applications
-rw-r--r-- 1 root root     747 Nov 12 09:46 appveyor.yml
-rw-r--r-- 1 root root   65085 Nov 12 09:46 CHANGELOG
drwxr-xr-x 2 root root    4096 Nov 12 10:01 deposit
drwxr-xr-x 2 root root    4096 Nov 12 09:46 docs
drwxr-xr-x 2 root root    4096 Nov 12 09:46 examples
drwxr-xr-x 4 root root    4096 Nov 12 09:46 extras
-rw-r--r-- 1 root root    6067 Nov 12 09:46 fabfile.py
drwxr-xr-x 5 root root    4096 Nov 12 10:37 gluon
drwxr-xr-x 2 root root    4096 Nov 12 09:46 handlers
-rw-r--r-- 1 root root   18338 Nov 12 11:21 httpserver.log
-rw-r--r-- 1 root root    5727 Nov 12 09:46 LICENSE
drwxr-xr-x 2 root root    4096 Nov 12 10:01 logs
-rw-r--r-- 1 root root    5684 Nov 12 09:46 Makefile
-rw-r--r-- 1 root root      24 Nov 12 09:46 MANIFEST.in
-rw------- 1 root root     756 Nov 12 11:10 nohup.out
-rw-r--r-- 1 root root      92 Nov 12 11:20 parameters_8000.py
-rw-r--r-- 1 root root    3896 Nov 12 09:46 README.markdown
drwxr-xr-x 2 root root    4096 Nov 12 09:46 scripts
-rw-r--r-- 1 root root    3320 Nov 12 09:46 setup.py
drwxr-xr-x 2 root root    4096 Nov 12 09:46 site-packages
-rw-r--r-- 1 root root     337 Nov 12 09:46 tox.ini
-rw-r--r-- 1 root root      52 Nov 12 09:46 VERSION
-rwxr-xr-x 1 root root     900 Nov 12 09:46 web2py.py
-rw-r--r-- 1 root root 1089202 Nov 12 10:01 welcome.w2p

# ls -l /opt/web2pyapp_keys
total 8
-rw------- 1 root root 2057 Nov 12 09:52 web2pyapp.crt
-rw------- 1 root root 3272 Nov 12 09:52 web2pyapp.key

We are ready to start our python application server now.

# python /opt/web2pyapp/web2py.py -a 'STRONG-PASSWORD-HERE' -k /opt/web2pyapp_keys/web2pyapp.key -c /opt/web2pyapp_keys/web2pyapp.crt -i 0.0.0.0 -p 8000

web2py Web Framework
Created by Massimo Di Pierro, Copyright 2007-2016
Version 2.14.6-stable+timestamp.2016.05.09.19.18.48
Database drivers available: sqlite3, imaplib, pymysql, pg8000

please visit:
        https://127.0.0.1:8000/
use "kill -SIGTERM 1284" to shutdown the web2py server

IMPORTANT: Make sure that you put your own strong password after the -a flag.
Open up a web browser and put https://VPS-IP-ADDRESS:8000/ in the navbar, where VPS-IP-ADDRESS is your VPS IP Address.
Accept the certificate warning and the Web2Py welcoming page should appear. To login to the administration back-end, click on mysites and enter your password, the one that you used while starting the webserver.

To stop the webserver use the CTRL+C key combination.

Avoiding the open terminal to keep the Web2Py server alive

Since the Web2Py service requires an open terminal to be active, one option that you can use if you wish to exit the terminal and continue working, is by using the ampersand at the end of the command after which you can exit the SSH session.

# python /opt/web2pyapp/web2py.py -a 'Password01' -k /opt/web2pyapp_keys/web2pyapp.key -c /opt/web2pyapp_keys/web2pyapp.crt -i 0.0.0.0 -p 8000 &
[1] 1468

To stop the server use the process ID that is provided when you start the server:

# kill -9 1468

Keep in mind that with this way you may miss any important errors or warnings that may show up on the server while you are developing.


Of course, you don’t have to do any of this if you use one of our Python VPS Hosting services, in which case you can simply ask our expert Linux admins to install Web2Py for you. They are available 24×7 and will take care of your request immediately.

PS. If you liked this post please share it with your friends on the social networks using the buttons on the left or simply leave a reply below. Thanks.

Leave a Comment