详解Ubuntu环境下部署Django+uwsgi+nginx总结
本文将介绍在Ubuntu环境下如何部署Django+uwsgi+nginx,让你的Django网站在生产环境中稳定、高效地运行。
安装基础组件
首先,你需要安装Python和pip:
sudo apt-get update
sudo apt-get install python3
sudo apt-get install python3-pip
安装完成后,你可以使用下面的命令来验证安装是否成功:
python3 --version
pip3 --version
创建Django项目并安装依赖
使用以下命令创建一个新的Django项目:
cd /var/www/
sudo mkdir myproject
cd myproject
sudo django-admin startproject myproject
安装必要的依赖,在myproject目录下运行以下命令:
sudo pip3 install Django
sudo pip3 install uwsgi
sudo pip3 install pillow
配置uwsgi
在myproject目录下创建uwsgi.ini文件,写入以下内容:
[uwsgi]
# Django-related settings
# the base directory (full path)
chdir=/var/www/myproject
# Django's wsgi file
module=myproject.wsgi:application
# the virtualenv (full path)
home=/var/www/myproject/venv
# process-related settings
# master
master=True
# maximum number of worker processes
processes=4
# the socket (use the full path to be safe)
socket=/var/www/myproject/myproject.sock
# ... with appropriate permissions - may be needed
chmod-socket=664
uid=www-data
gid=www-data
# clear environment on exit
vacuum=true
这里需要修改以下几个参数:
chdir
:设置为你的Django根目录module
:指向你的wsgi.py文件(默认在根目录的myproject/wsgi.py
)home
:虚拟环境的目录位置
保存文件后,使用以下命令测试uwsgi是否配置正确:
uwsgi --ini /var/www/myproject/uwsgi.ini
如果没有报任何错误,那么uwsgi就已经配置成功了。
配置nginx
安装nginx:
sudo apt-get install nginx
在/etc/nginx/sites-available/
目录中添加一个新的配置文件,例如myproject
:
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 /var/www/myproject/myproject;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/var/www/myproject/myproject.sock;
}
}
这里需要修改以下几个参数:
server_name
:设置为你的域名root
:设置为你的静态文件目录位置uwsgi_pass
:指向你之前配置的uwsgi.sock文件的路径
保存文件后,创建一个软链接到/etc/nginx/sites-enabled/
目录中:
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
重新启动nginx服务器:
sudo service nginx restart
测试
在项目的根目录下运行以下命令启动uwsgi:
sudo uwsgi --ini /var/www/myproject/uwsgi.ini
现在你可以在浏览器中输入你的域名,看看Django网站是否正常运行了。
示例
示例1:安装MySQL
如果你需要使用MySQL作为数据库,你可以使用以下命令安装:
sudo apt-get install mysql-server libmysqlclient-dev
安装完成后,你需要安装MySQL的Python驱动:
sudo pip3 install mysqlclient
示例2:使用Gunicorn替代uwsgi
如果你不想使用uwsgi,也可以使用Gunicorn作为应用服务器。在项目根目录下运行以下命令安装Gunicorn:
sudo pip3 install gunicorn
配置Gunicorn,新建/etc/systemd/system/gunicorn.service
文件:
sudo nano /etc/systemd/system/gunicorn.service
写入以下内容:
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/myproject
ExecStart=/usr/local/bin/gunicorn --access-logfile - --workers 3 --bind unix:/var/www/myproject/myproject.sock myproject.wsgi:application
[Install]
WantedBy=multi-user.target
修改--workers
和--bind
参数,根据实际情况修改路径和端口。
启动Gunicorn:
sudo systemctl start gunicorn
并且添加到系统启动项:
sudo systemctl enable gunicorn
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Ubuntu环境下部署Django+uwsgi+nginx总结 - Python技术站