How to Install Python 3.7 on Arch Linux with Apache or Nginx
System Requirements
- A server with the latest Arch Linux release (refer to the official setup guide).
- A functional web server — either Apache or Nginx installed and configured.
- Root-level access (sudo):
Commands that require root privileges are marked with a#
. The best practice is to usesudo
with each root-level command as a non-root user. - An installed and familiar text editor such as
vi
,vim
,nano
,emacs
, or any equivalent tool.
Python 3.7 Installation on Web Server
Using Apache
It is not feasible to run both Python 2.x and 3.x Apache modules simultaneously on Arch Linux. However, this is generally not an issue.
To activate Python 3.x support:
# pacman -S mod_wsgi
Next, modify the Apache configuration file at /etc/httpd/conf/httpd.conf
. Scroll to the end of the LoadModule
entries and append:
LoadModule wsgi_module modules/mod_wsgi.so
Using Nginx
To enable Python 3.x with Nginx, execute:
# pacman -S uwsgi-plugin-python
Validating Python Setup
In your desired directory, create a test.py
file containing this script:
#-*- coding: utf-8 -*-
def wsgi_app(environment, start_response):
import sys
output = sys.version.encode('utf8')
status = '200 OK'
headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, headers)
yield output
application = wsgi_app
Apache Configuration
To integrate the test application with Apache, append the following to /etc/httpd/conf/httpd.conf
or insert it inside the appropriate <VirtualHost>
block if using multiple hosts:
WSGIScriptAlias /wsgi_app /srv/http/test.py
Restart Apache for changes to apply:
# systemctl restart httpd
Now, open a web browser and navigate to http://YOUR-SERVER-WEB-ADDRESS-OR-IP/wsgi_app
. A test page displaying your Python and GCC versions should appear.
Finally, clean up by removing the test.py
file and deleting the related WSGIScriptAlias
directive from the Apache configuration.
Then restart Apache again:
# systemctl restart httpd
Configure Python 3.7 with uWSGI and Nginx on Arch Linux
Create the uWSGI Configuration
Begin by creating a new file at /etc/uwsgi/wsgi_app.ini
and populate it with the configuration below:
[uwsgi]
socket = /run/uwsgi/wsgi_app.sock
uid = http
gid = http
plugins = python
chdir = /usr/share/nginx/html/
wsgi-file=test.py
callable = application
To begin serving wsgi_app
with uWSGI, execute:
# systemctl start uwsgi@wsgi_app
Update Nginx Configuration
Edit /etc/nginx/nginx.conf
. In every server
block where testing is desired, add the following configuration. If you are using separate virtual host files, apply the change to each one individually:
location ~ \wsgi_app {
root /usr/share/nginx/html/;
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/wsgi_app.sock;
}
Restart Nginx to apply the changes:
# systemctl restart nginx
Open your browser and go to http://YOUR-SERVER-WEB-ADDRESS-OR-IP/wsgi_app
. You should see a test page displaying the current Python and GCC versions.
Cleanup
After confirming it works, remove the test.py
file and the location
block for wsgi_app
from /etc/nginx/nginx.conf
.
Restart Nginx once again:
# systemctl restart nginx
Then, stop the uWSGI service for wsgi_app
:
# systemctl stop uwsgi@wsgi_app
Lastly, delete both the /etc/uwsgi/wsgi_app.ini
and test.py
files to complete the cleanup.
Conclusion
By following these steps, you’ve successfully configured Python 3.7 with uWSGI and Nginx on an Arch Linux server. This setup enables robust WSGI application serving while maintaining flexibility and performance. Don’t forget to clean up temporary test files and configurations to keep your server tidy and secure.