Skip to content

Running a simple Python HTTPServer app on a Server

Published: at 04:36 AM

Overview

This guide will walk you through the steps to run a simple Python HTTPServer app on a server. You will learn about the prerequisites, including installing Python and setting up a web server like Apache.

Step-by-Step Instructions

1. Install Python

If Python is not already installed on your server, you can download it from the official Python website. Follow the installation instructions for your operating system.

2. Install and Configure Apache

Apache is a widely-used web server that can serve Python files. To install Apache, follow the instructions for your operating system. Here are some basic steps for Linux-based systems:

sudo apt update
sudo apt install apache2

After installing Apache, you need to enable CGI (Common Gateway Interface) to run Python scripts. Edit the Apache configuration file (typically located at /etc/apache2/sites-available/000-default.conf) and add the following lines:

<Directory /var/www/html>
    Options +ExecCGI
    AddHandler cgi-script .py
</Directory>

3. Place Your Python Script in the Web Directory

Move your Python script to the web server’s root directory. For Apache, this is usually /var/www/html. Make sure your script has execute permissions:

sudo chmod +x /var/www/html/your_script.py

4. Test Your Python Script

Open your web browser and navigate to http://your_server/your_script.py. If everything is set up correctly, your Python script should run and display the output.

Implementing Python HTTPServer

Apache with mod_wsgi

# Apache configuration
<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html

    # WSGI configuration
    WSGIDaemonProcess python-app
    WSGIProcessGroup python-app
    WSGIScriptAlias / /var/www/html/wsgi.py

    # Static files
    Alias /static/ /var/www/html/static/
    <Directory /var/www/html/static>
        Require all granted
    </Directory>
</VirtualHost>

# wsgi.py
from myapp import app as application

This approach uses Apache’s mod_wsgi module to run Python applications. It’s the recommended method for production environments as it provides better process management and scaling capabilities.Development Server

# app.py
from http.server import HTTPServer, SimpleHTTPRequestHandler

def run_server():
    server_address = ('', 8000)
    httpd = HTTPServer(server_address, SimpleHTTPRequestHandler)
    print('Starting httpd on port 8000...')
    httpd.serve_forever()

if __name__ == '__main__':
    run_server()

This approach uses Python’s built-in HTTP server for development and testing. It’s ideal for quick prototyping and local development but should not be used in production.

Best Practices

  1. Security - Use HTTPS for production
  1. Performance - Configure appropriate worker processes
  1. Deployment - Use version control

Previous Post
Quick Notes on Image Processing and Vectorization
Next Post
Calculating File Hashes with PowerShell and Python