设置一个 web 服务器来运行 Python 应用程序似乎有些麻烦,尤其是对初学者来说。
本指南将引导您在 Ubuntu 24.04 和 22.04 上使用 Python 的 Mod_WSGI 设置 Apache ,Mod_WSGI 是一个 Apache 模块,允许你运行 Python web 应用程序。
必备条件
- A server running Ubuntu 24.04 or 22.04
- A non-root user with sudo privileges
- Basic knowledge of the command line
Step 1: Update Your Server
首先,更新服务器的包索引。
sudo apt update
sudo apt upgrade -y
Step 2: Install Apache
接下来,安装 Apache。Apache 是一个可靠且易于使用的 web 服务器。
sudo apt install apache2 -y
安装完成后,启动 Apache 并使其能够在引导时运行。
sudo systemctl start apache2
sudo systemctl enable apache2
在浏览器中访问服务器的 IP 地址,检查 Apache 是否正在运行。
Step 3: Install Mod_WSGI and Python
安装 Mod_WSGI 和 Python 包
sudo apt install libapache2-mod-wsgi-py3 python3 -y
Step 4: Create a Python Application
创建一个简单的 Python web 应用程序来测试设置。首先为你的应用创建一个目录。
mkdir ~/myapp && cd ~/myapp
在这个目录中,创建一个名为 myapp.py 的文件,包含以下内容:
def application(environ, start_response):
status = '200 OK'
output = b'Hello From TecAdmin!'
response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
确保文件和目录属于正确的用户和组。以 Apache 用户“www-data”为例,用户的归属设置如下:
sudo chown -R www-data:www-data ~/myapp
sudo chmod o+x ~/myapp/myapp.py
Step 5: Configure Apache to Serve Your Python App
为 Python WSGI 应用程序创建一个 Apache 配置文件
sudo nano /etc/apache2/sites-available/myapp.conf
添加以下内容:
<VirtualHost *:80>
ServerName myapp.local
WSGIDaemonProcess myapp threads=5
WSGIScriptAlias / /home/yourusername/myapp/myapp.py
<Directory /home/yourusername/myapp>
Require all granted
</Directory>
Alias /static /home/yourusername/myapp/static
<Directory /home/yourusername/myapp/static/>
Require all granted
</Directory>
</VirtualHost>
注意:将 yourusername 替换为您的实际用户名。
启用新站点,禁用默认站点。
sudo a2ensite myapp
sudo a2dissite 000-default
启用 WSGI 模块并重启 Apache
sudo a2enmod wsgi
sudo systemctl restart apache2
Step 6: Test Your Application
编辑 /etc /hosts 文件,把 myApp.local 指向到服务器的 IP 地址,添加以下内容:
your_server_ip myapp.local
把 your_server_ip 替换为服务器的 IP 地址,打开浏览器并访问:http://myapp.local
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。