Centos8下django项目部署 nginx+uwsgi的教程

yizhihongxing

下面我将为您介绍Centos8下Django项目部署Nginx+Uwsgi的完整攻略。本文分为以下几个部分:

  • 安装和配置Nginx
  • 安装和配置Uwsgi
  • 部署Django项目

安装和配置Nginx

  1. 安装Nginx

您可以使用以下命令来安装Nginx:

sudo dnf install nginx
  1. 配置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服务器的地址和端口。

  1. 启动Nginx

配置完成后,通过以下命令启动Nginx:

sudo systemctl start nginx

安装和配置Uwsgi

  1. 安装Uwsgi

您可以使用以下命令来安装Uwsgi:

sudo dnf install uwsgi uwsgi-plugin-python3
  1. 创建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文件。

  1. 启动Uwsgi

通过以下命令启动Uwsgi:

sudo systemctl start uwsgi

部署Django项目

  1. 安装Django

使用pip安装Django:

sudo dnf install python3-pip
sudo pip3 install django
  1. 创建Django项目

创建Django项目:

django-admin startproject mysite
  1. 创建Django应用

创建Django应用:

cd mysite/
python3 manage.py startapp myapp
  1. 编辑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.")
  1. 配置Django路由

在Django项目内的mysite/urls.py文件中加入以下内容:

from django.urls import path
from myapp import views

urlpatterns = [
    path('', views.index, name='index'),
]
  1. 测试Django项目

执行以下命令启动Django项目:

python3 manage.py runserver

在浏览器中输入"http://localhost:8000/myapp",应该看到“Hello, world. You're at the polls index.”。

  1. 修改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)
  1. 重启服务器

重启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技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • .NETCore Docker实现容器化与私有镜像仓库管理

    针对“.NETCoreDocker实现容器化与私有镜像仓库管理”的完整攻略,我们可以从以下几个方面来进行说明: 容器化基础知识 安装 Docker 和构建 .NET Core 应用镜像 使用 Docker Compose 实现简化部署 搭建私有镜像仓库管理 首先,我们来讲一下容器化基础知识: 容器化是一种新型的应用部署方式,它把应用与应用所需要的依赖打包在一…

    Linux 2023年5月14日
    00
  • linux ps top 命令 VSZ,RSS,TTY,STAT, VIRT,RES,SHR,DATA的含义

    VIRT:virtual memory usage 虚拟内存1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量 RES:resident memory usage 常驻内存1、进程当前使用的内存大小,但不包括swap out2、包含其他进程的共享3、如果…

    Linux 2023年4月11日
    00
  • Linux xinit命令

    下面就是对 Linux xinit 命令的详细解释以及使用方法攻略。 1. 命令的作用 xinit 命令主要用于启动 X Windows 系统。当你在命令行中输入 xinit 命令后,系统将启动 X 服务器并进入窗口系统环境,然后开始运行指定的用户的客户端应用程序。 2. 使用方法 使用 xinit 命令前,你需要确保已安装 X 服务器系统,并且当前用户具有…

    Linux 2023年3月28日
    00
  • Linux配置为代理服务器,代理微信

    1.安装squid(全程使用root账号,如使用其他请注意权限问题) yum install squid 2.生成代理的账号密码 #如果没有htpasswd命令 先安装sudo yum install httpd-tools #zsp为用户名,按自己实际情况替换 htpasswd -c /etc/squid/passwd zsp 2.配置/etc/squid…

    2023年4月8日
    00
  • Linux命令篇 – tar 命令

    tar GNU `tar’ saves many files together into a single tape or disk archive, and can restore individual files from the archive. tar:用于压缩和解压缩文件; 格式:tar [OPTION…] [FILE]… # tar命令常…

    Linux 2023年4月10日
    00
  • Linux 学习笔记之超详细基础linux命令 Part 6

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ———————————接Part 5—————————— 删除口令 例子:删除tom用户的口令 [root@localhost ~]# passwd -d tom 清除用户的密码 tom。 …

    Linux 2023年4月11日
    00
  • linux的字符集转换

    查看命令参数 查看支持的字符集    将文件转换成utf-8 的文件(经测试比较鸡肋,不好用) [root@ag-1 hh]# iconv oldboy -f us-ascii -t utf-8 -o test –verbose oldboy: [root@ag-1 hh]#     

    Linux 2023年4月11日
    00
  • [Linux] memache打印所有的key

     1.在使用memcache的时候 , 经常需要查看下里面存储的值 , 前提是要先知道key是啥,memcache没有redis的keys命令 2.下面两个命令的结合,可以查看到key stats items 查看所有的items stats cachedump 上面item的编号 0 3.下面的示例中items只有一个,编号是1 4.所有的key就看到了 …

    Linux 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部