下面我将为您介绍Centos8下Django项目部署Nginx+Uwsgi的完整攻略。本文分为以下几个部分:
- 安装和配置Nginx
- 安装和配置Uwsgi
- 部署Django项目
安装和配置Nginx
- 安装Nginx
您可以使用以下命令来安装Nginx:
sudo dnf install nginx
- 配置Nginx
通过编辑Nginx的配置文件来配置Nginx。打开配置文件:
sudo vi /etc/nginx/nginx.conf
找到“http {}”块,在该块中添加以下配置:
upstream django_server {
server unix:///path/to/your/mysite/mysite.sock;
}
server {
listen 80;
server_name your_domain.com;
location / {
uwsgi_pass django_server;
include uwsgi_params;
}
}
在上面的配置中,您需要将“/path/to/your/mysite/mysite.sock”替换为您自己的Django项目的socket文件路径,“your_domain.com”替换为您自己的域名。这里的“upstream”指令定义了Uwsgi服务器的地址和端口。
- 启动Nginx
配置完成后,通过以下命令启动Nginx:
sudo systemctl start nginx
安装和配置Uwsgi
- 安装Uwsgi
您可以使用以下命令来安装Uwsgi:
sudo dnf install uwsgi uwsgi-plugin-python3
- 创建Uwsgi配置文件
创建一个Uwsgi配置文件,并设置它的路径:
sudo vi /etc/uwsgi.d/mysite.ini
将以下内容添加到文件中:
[uwsgi]
chdir=/path/to/your/mysite
module=mysite.wsgi:application
master=True
processes=4
socket=/path/to/your/mysite/mysite.sock
chmod-socket=666
vacuum=True
在上面的配置中,“chdir”指令设置要使用的Django项目的根目录,“module”指令设置wsgi应用程序的名称,并且后面的值应该是“模块名.应用名:对象名”。其中,“应用名”是您的Django项目名,“对象名”是wsgi.py文件中的一个对象,“socket”指令定义了应用程序绑定的socket文件。
- 启动Uwsgi
通过以下命令启动Uwsgi:
sudo systemctl start uwsgi
部署Django项目
- 安装Django
使用pip安装Django:
sudo dnf install python3-pip
sudo pip3 install django
- 创建Django项目
创建Django项目:
django-admin startproject mysite
- 创建Django应用
创建Django应用:
cd mysite/
python3 manage.py startapp myapp
- 编辑Django应用的view.py
vi myapp/views.py
添加以下内容:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
- 配置Django路由
在Django项目内的mysite/urls.py
文件中加入以下内容:
from django.urls import path
from myapp import views
urlpatterns = [
path('', views.index, name='index'),
]
- 测试Django项目
执行以下命令启动Django项目:
python3 manage.py runserver
在浏览器中输入"http://localhost:8000/myapp",应该看到“Hello, world. You're at the polls index.”。
- 修改Django项目配置
修改Django项目配置,以便使应用程序绑定到Uwsgi的socket文件。
在mysite/settings.py
中添加以下内容:
ALLOWED_HOSTS = ['your_domain.com']
在mysite/settings.py
中添加以下内容:
STATIC_ROOT = '/path/to/your/mysite/static'
在mysite/urls.py
中添加以下内容:
from django.conf.urls.static import static
from django.conf import settings
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
- 重启服务器
重启Nginx和Uwsgi:
sudo systemctl restart uwsgi
sudo systemctl restart nginx
现在应该可以在浏览器中访问"https://your_domain.com/myapp",并看到“Hello, world. You're at the polls index.”。
以下是一个具体的示例:
- 假设已经安装了Nginx、Uwsgi和Django。
- 项目文件路径为“/root/myproject”。
- 域名为“your_domain.com”。
首先,我们需要配置Nginx。
sudo su # 切换到root用户
vi /etc/nginx/nginx.conf
在配置文件中添加:
upstream django_server {
server unix:///root/myproject/myproject.sock;
}
server {
listen 80;
server_name your_domain.com;
charset utf-8;
client_max_body_size 128M;
location /static {
alias /root/myproject/static;
}
location /media {
alias /root/myproject/media;
}
location / {
uwsgi_pass django_server;
include /etc/nginx/uwsgi_params;
}
}
注意:这里将静态文件和媒体文件的路径都设置了,并且在Nginx配置中也需要做相应的修改。
然后,我们需要配置Uwsgi。
cd /etc/uwsgi.d/
vi myproject.ini
添加以下内容:
[uwsgi]
chdir=/root/myproject
module=myproject.wsgi:application
master=True
pidfile=/root/myproject/myproject_uwsgi.pid
processes=4
socket=/root/myproject/myproject.sock
chmod-socket=666
vacuum=True
max-requests=5000
接着,我们需要将Django的静态文件收集到STATIC_ROOT指定的目录中。
cd /root/myproject
python3 manage.py collectstatic
最后,我们需要重启Nginx和Uwsgi。
systemctl restart uwsgi
systemctl restart nginx
现在,我们可以在浏览器中输入"http://your_domain.com"来访问Django项目了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Centos8下django项目部署 nginx+uwsgi的教程 - Python技术站