How to Install Web2py on CentOS 7

Table of Contents


Web2py is a free and open source Python framework for developing web applications. You can develop fast, scalable and secure web-based applications rapidly using web2py. Web2py allows you to easily program dynamic web content using the Python programming language. You can perform many tasks, such as development, testing, debugging, and database administration via a web interface. Web2py supports various operating systems like Windows, Mac, and Linux. It readily integrates with Apache, Nginx, Lighttpd and other web servers. Web2py is designed to help secure your server from various kinds of attacks like Cross Site Scripting, Malicious File Execution, and Injection Flaws.

In this tutorial we will explain how to install the Web2py framework on a CentOS 7 server.


  • A server running CentOS 7.
  • A non-root user with sudo privilege.

Getting Started

To get started we will install some required packages and update our system by running the following commands:

sudo yum clean all
sudo yum update -y
sudo yum install git -y

Once your system is updated, you can proceed to the next step.

Install Web2py

Create a directory for the web2py installation and clone the web2py repository to it.

sudo mkdir /opt/web2py
cd /opt/web2py/
sudo git clone --recursive /opt/web2py

Next you will need to use openssl to generate a SSL key and certificate which will be used to secure access to the Web2py web interface.

Create a directory to store the key and certificate:

sudo mkdir /opt/web2py_cert

Create a RSA key and certificate pair with the following commands:

cd /opt/web2py_cert/
sudo openssl req -x509 -new -newkey rsa:4096 -days 365 -nodes -keyout web2py.key -out web2py.crt

Answer all the questions:

Generating a 4096 bit RSA private key
writing new private key to 'web2py.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]:IN
State or Province Name (full name) []:GUJ
Locality Name (eg, city) [Default City]:JND
Organization Name (eg, company) [Default Company Ltd]: Your Company Name
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:web2py
Email Address []:username@domain.tld

You should now have a web2py.key and web2py.crt file in your /opt/web2py_cert directory.

Set some restrictive permissions for the SSL key and certificate:

sudo chmod -R 600 /opt/web2py_cert/*

Access the Web2py Web Admin Interface

You are now ready to start python application server.

sudo python /opt/web2py/ -a '[ADMIN_PASSWORD]' -k /opt/web2py_cert/web2py.key -c /opt/web2py_cert/web2py.crt -i -p 8000 &

Note: You should substitute a strong password after the -a flag in place of [ADMIN_PASSWORD].

Your Python application server is now running on port 8000. Before accessing web interface, you will need to allow port 8000 through the firewall. (firewalld)

You can do this with the following commands:

sudo firewall-cmd --permanent --zone=public --add-port=8000/tcp
sudo firewall-cmd --reload

Open a web browser and point it to the URL https://your-server-ip:8000, you should see the following "welcome" page:

Web2py welcome page

Click on the blue ADMIN button and sign in with the password you just specified when starting the server.

Web2py login page

Web2py Dashboard

Web2py dashboard


You should now have a basic knowledge of installing and running the Web2py web framework. You are welcome to leave feedback in the comments section below if you have any questions related to web2py.