下面我为您详细讲解在Debian下配置Python+Django+Nginx+uWSGI+MySQL的完整攻略。
环境准备
在配置过程中,需要准备以下环境:
- Debian操作系统
- Python环境
- Django框架
- Nginx服务器
- uWSGI应用服务器
- MySQL数据库
请确保在Debian系统中安装了相应的软件,在此不再赘述。
安装Python和Django
要在Debian系统中安装Python和Django,可以使用以下命令:
sudo apt update
sudo apt install python3 python3-pip python3-venv python3-dev
pip3 install Django
安装MySQL
使用以下命令安装MySQL:
sudo apt install mysql-server mysql-client
在安装过程中,需要设置数据库密码并启动本地MySQL服务器。
安装Nginx
使用以下命令安装Nginx:
sudo apt update
sudo apt install nginx
安装完成后,启动Nginx服务器:
sudo systemctl start nginx
并设置开机自启动:
sudo systemctl enable nginx
安装uWSGI
使用以下命令安装uWSGI:
sudo apt install build-essential python3-dev
pip3 install uwsgi
配置Django项目
在完成Python、Django、MySQL、Nginx和uWSGI的安装之后,可以开始配置Django项目。
- 创建Django项目:
django-admin startproject myproject
- 在
myproject
目录下创建uwsgi.ini
文件:
[uwsgi]
module = myproject.wsgi:application
master = true
processes = 4
socket = 127.0.0.1:8000
vacuum = true
die-on-term = true
- 在
myproject
目录下创建config.json
文件并配置MySQL连接信息:
{
"DATABASES": {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "myproject",
"USER": "root",
"PASSWORD": "password",
"HOST": "",
"PORT": "",
}
}
}
- 在
settings.py
文件中添加以下代码:
import json
with open('/path/to/config.json') as f:
config = json.load(f)
DATABASES = config['DATABASES']
其中/path/to/config.json
是config.json
文件的路径。
- 在
myproject
目录下运行以下命令,生成静态文件:
python3 manage.py collectstatic
配置Nginx和uWSGI
- 在
/etc/nginx/sites-available
中创建myproject
文件,并添加以下代码:
server {
listen 80;
server_name myproject.com;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
}
其中myproject.com
是你的域名,需要根据实际情况修改。
- 在
/etc/nginx/sites-enabled
中创建软链接:
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
- 在
/etc/systemd/system
中创建myproject.service
文件,并添加以下代码:
[Unit]
Description=uWSGI instance to serve myproject
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/path/to/myproject
ExecStart=/usr/local/bin/uwsgi --ini uwsgi.ini
[Install]
WantedBy=multi-user.target
其中/path/to/myproject
是你的项目路径,需要根据实际情况修改。
- 重新加载Nginx配置文件和systemd服务:
sudo systemctl daemon-reload
sudo systemctl restart nginx
sudo systemctl start myproject
至此,在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程已经完成。
示例说明
以下两条示例说明如何在Django项目中使用MySQL。
示例一
在models.py
中创建一个模型:
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
使用以下命令将模型同步到数据库中:
python3 manage.py migrate
示例二
在views.py
中编写一个视图,查询数据库中的数据并返回JSON格式数据:
from django.http import JsonResponse
from .models import Author
def authors(request):
data = []
for author in Author.objects.all():
data.append({
'id': author.id,
'name': author.name,
'email': author.email,
})
return JsonResponse({'authors': data})
在urls.py
中添加路由:
from django.urls import path
from . import views
urlpatterns = [
path('authors/', views.authors, name='authors'),
]
访问http://myproject.com/authors/
即可通过API获取数据库中的数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程 - Python技术站