下面我将详细讲解“django生产环境搭建(uWSGI+django+nginx+python+MySQL)”的完整攻略,过程中我会包含两条示例说明。
概述
本文将会介绍在Linux系统上搭建Django网站的完整过程,包括uWSGI和Nginx的安装和配置,以及与MySQL数据库的连接。
示例说明
为了更好地演示这个过程,我将会给出两个示例,一个使用的是Python虚拟环境,一个不使用虚拟环境。
示例一:带有虚拟环境的Django应用
1. 安装Python、pip、virtualenv
sudo apt-get update
sudo apt-get install python3-pip python3-dev libmysqlclient-dev nginx uwsgi uwsgi-plugin-python3
sudo -H pip3 install --upgrade pip
sudo -H pip3 install virtualenv
2. 创建虚拟环境
cd ~
mkdir project
cd project
virtualenv venv
source venv/bin/activate
3. 安装Django和其他依赖
pip install django django-bootstrap4 pymysql
4. 创建Django项目
django-admin startproject myproject .
python manage.py migrate
5. 配置uWSGI和Nginx
sudo nano /etc/uwsgi/sites/myproject.ini
在文件中写入以下内容:
[uwsgi]
project = myproject
uid = nginx
base = /home/<user>/project
chdir = %(base)/%(project)
home = %(base)/venv
module = %(project).wsgi:application
master = true
processes = 2
socket = %(base)/%(project)/%(project).sock
chmod-socket = 664
vacuum = true
logto = /var/log/uwsgi/%(project).log
sudo nano /etc/nginx/sites-available/myproject
server {
listen 80;
server_name example.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/<user>/project;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/home/<user>/project/myproject/myproject.sock;
}
}
为了使Nginx更好地支持Django,还需进行以下配置:
sudo nano /etc/nginx/nginx.conf
在文件中寻找http {...}
,如下配置:
http {
...
client_body_buffer_size 32k;
client_max_body_size 100m;
#set client body timeout to 60s
client_body_timeout 60s;
#set send timeout to 60s
send_timeout 60s;
#set keepalive timeout to 60s
keepalive_timeout 60s;
...
}
6. 启动服务
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
sudo systemctl restart nginx
uwsgi --ini /etc/uwsgi/sites/myproject.ini
现在,你可以在浏览器中访问网站了:http://example.com
。
示例二:不带虚拟环境的Django应用
对于不使用虚拟环境的Django应用,只需将上面代码中的venv
替换为系统Python的路径,即可搭建完成。
结论
至此,你已经成功搭建了一个生产环境的Django网站。如果你遇到了任何问题或有任何问题需要解决,请随时留言。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:django生产环境搭建(uWSGI+django+nginx+python+MySQL) - Python技术站