django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

yizhihongxing

接下来我将为您讲解“django2+uwsgi+nginx上线部署到服务器Ubuntu16.04”的完整攻略。

准备工作

在进行上线部署前,我们需要先做好一些准备工作:

  1. 确认服务器已安装Ubuntu16.04操作系统。
  2. 安装必要的软件包,如Python3、pip、virtualenv、nginx、uwsgi和git等。
  3. 在服务器上创建项目文件夹,并将Django项目上传至该文件夹中。
  4. 配置服务器的防火墙,以允许访问80端口。

安装uwsgi

  1. 使用pip安装uwsgi:
    pip3 install uwsgi

  2. 在项目的根目录下,创建uwsgi配置文件uwsgi.ini:

[uwsgi]
chdir = /path/to/your/project
module = project.wsgi:application
master = true
processes = 4
socket = /tmp/uwsgi.sock
chmod-socket = 664
vacuum = true

  1. 测试uwsgi是否能够正常启动:
    uwsgi --ini uwsgi.ini

如果成功启动,会输出如下信息:
*** Starting uWSGI 2.0.14 (64bit) on [Wed Sep 14 15:51:20 2016] ***
compiled with version: 5.4.0 20160609 on 22 August 2016 15:07:47
os: Linux-4.4.0-36-generic #55-Ubuntu SMP Thu Aug 11 18:01:55 UTC 2016
nodename: ubuntu
machine: x86_64
clock source: unix
pcre jit disabled
detected number of CPU cores: 4
current working directory: /path/to/your/project
detected binary path: /usr/local/bin/uwsgi
*** WARNING: you are running uWSGI without its master process manager ***
your processes number limit is 7180
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to UNIX address /tmp/uwsgi.sock fd 3
Python version: 3.5.2 (default, Aug 25 2016, 11:11:35) [GCC 5.4.0 20160609]
Set PythonHome to /home/username/.virtualenvs/project
Python main interpreter initialized at 0x1f05410
python threads support enabled
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 72752 bytes (71 KB) for 1 cores
*** Operational MODE: single process ***
uWSGI http bound on :9000 fd 4
spawned uWSGI http 1 (pid: 18688)
*** WARNING: you are running uWSGI without its master process manager ***
*** Spawned uWSGI http 1 (pid: 18688) ***

  1. 停止uwsgi服务:
    uwsgi --stop /tmp/uwsgi.pid

配置nginx

  1. 修改nginx配置文件/etc/nginx/sites-available/default:

```
server {
listen 80;
server_name yourdomain.com;
charset utf-8;
client_max_body_size 75M;

    location / {
        uwsgi_pass unix:///tmp/uwsgi.sock;
        include uwsgi_params;
    }

    location /static/ {
        alias /path/to/your/static/files/;
    }

    location /media/ {
        alias /path/to/your/media/files/;
    }
}

```

  1. 检查配置文件是否正确:
    sudo nginx -t

如果配置文件正确无误,会输出如下信息:
nginx: configuration file /etc/nginx/nginx.conf test is successful

  1. 启动nginx服务:
    sudo systemctl start nginx

部署Django项目

  1. 在服务器上克隆Django项目代码库:
    git clone git@github.com:yourusername/yourproject.git

  2. 为Django项目创建Python虚拟环境:
    virtualenv -p /usr/bin/python3 env

  3. 激活虚拟环境:
    source env/bin/activate

  4. 安装项目所需的Python包:
    pip3 install -r requirements.txt

  5. 运行集成测试,确保项目可以在服务器上成功运行:
    python3 manage.py test

  6. 创建Django项目的数据库:
    python3 manage.py migrate

  7. 收集静态文件:
    python3 manage.py collectstatic --noinput

  8. 启动uwsgi服务:
    uwsgi --ini uwsgi.ini

  9. 确认项目已经成功部署:
    curl http://localhost

如果返回了Django项目的欢迎页面,表明项目已经成功部署到服务器上。

示例说明

以下是两个示例,分别针对不同的场景:

示例一:部署单个Django项目

假设我们现在需要将单个Django项目部署到服务器上。我们可以按照以下步骤进行操作:

  1. 在服务器上创建目录,用于存放Django项目:
    mkdir /path/to/project

  2. 将Django项目上传到该目录下。

  3. 安装必要的软件包:
    sudo apt-get update
    sudo apt-get install python3 python3-pip nginx
    sudo pip3 install virtualenv uwsgi

  4. 创建Python虚拟环境:
    virtualenv -p /usr/bin/python3 env

  5. 激活虚拟环境:
    source env/bin/activate

  6. 安装项目所需的Python包:
    pip3 install -r requirements.txt

  7. 创建数据库:
    python3 manage.py migrate

  8. 收集静态文件:
    python3 manage.py collectstatic --noinput

  9. 创建uwsgi配置文件uwsgi.ini:
    [uwsgi]
    chdir = /path/to/project
    module = project.wsgi:application
    master = true
    processes = 4
    socket = /tmp/uwsgi.sock
    chmod-socket = 664
    vacuum = true

  10. 创建nginx配置文件/etc/nginx/sites-available/default:
    ```
    server {
    listen 80;
    server_name yourdomain.com;

    location / {
        uwsgi_pass unix:///tmp/uwsgi.sock;
        include uwsgi_params;
    }
    
    location /static/ {
        alias /path/to/project/static/;
    }
    

    }
    ```

  11. 创建软链接:
    sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/

  12. 测试nginx是否能够正常启动:
    sudo nginx -t

  13. 启动uwsgi服务:
    uwsgi --ini uwsgi.ini

  14. 启动nginx服务:
    sudo systemctl start nginx

  15. 确认项目已经成功部署:
    curl http://localhost

示例二:部署多个Django项目

假设我们现在需要将多个Django项目部署到服务器上。我们可以按照以下步骤进行操作:

  1. 在服务器上创建目录,用于存放多个Django项目:
    mkdir /path/to/projects

  2. 将各个Django项目上传到该目录下。

  3. 安装必要的软件包:
    sudo apt-get update
    sudo apt-get install python3 python3-pip nginx
    sudo pip3 install virtualenv uwsgi

  4. 为每个Django项目创建Python虚拟环境,分别命名为env1、env2、env3等:
    virtualenv -p /usr/bin/python3 env1
    virtualenv -p /usr/bin/python3 env2
    virtualenv -p /usr/bin/python3 env3

  5. 激活第一个项目的虚拟环境:
    source env1/bin/activate

  6. 安装第一个项目所需的Python包:
    pip3 install -r requirements.txt

  7. 创建第一个项目的数据库:
    python3 manage.py migrate

  8. 收集第一个项目的静态文件:
    python3 manage.py collectstatic --noinput

  9. 创建uwsgi配置文件uwsgi1.ini:
    [uwsgi]
    chdir = /path/to/projects/project1
    module = project.wsgi:application
    master = true
    processes = 4
    socket = /tmp/uwsgi1.sock
    chmod-socket = 664
    vacuum = true

  10. 创建nginx配置文件/etc/nginx/sites-available/project1:
    ```
    server {
    listen 80;
    server_name yourdomain1.com;

    location / {
        uwsgi_pass unix:///tmp/uwsgi1.sock;
        include uwsgi_params;
    }
    
    location /static/ {
        alias /path/to/projects/project1/static/;
    }
    

    }
    ```

  11. 创建软链接:
    sudo ln -s /etc/nginx/sites-available/project1 /etc/nginx/sites-enabled/

  12. 激活第二个项目的虚拟环境:
    source env2/bin/activate

  13. 安装第二个项目所需的Python包:
    pip3 install -r requirements.txt

  14. 创建第二个项目的数据库:
    python3 manage.py migrate

  15. 收集第二个项目的静态文件:
    python3 manage.py collectstatic --noinput

  16. 创建uwsgi配置文件uwsgi2.ini:
    [uwsgi]
    chdir = /path/to/projects/project2
    module = project.wsgi:application
    master = true
    processes = 4
    socket = /tmp/uwsgi2.sock
    chmod-socket = 664
    vacuum = true

  17. 创建nginx配置文件/etc/nginx/sites-available/project2:
    ```
    server {
    listen 80;
    server_name yourdomain2.com;

    location / {
        uwsgi_pass unix:///tmp/uwsgi2.sock;
        include uwsgi_params;
    }
    
    location /static/ {
        alias /path/to/projects/project2/static/;
    }
    

    }
    ```

  18. 创建软链接:
    sudo ln -s /etc/nginx/sites-available/project2 /etc/nginx/sites-enabled/

  19. 激活第三个项目的虚拟环境:
    source env3/bin/activate

  20. 安装第三个项目所需的Python包:
    pip3 install -r requirements.txt

  21. 创建第三个项目的数据库:
    python3 manage.py migrate

  22. 收集第三个项目的静态文件:
    python3 manage.py collectstatic --noinput

  23. 创建uwsgi配置文件uwsgi3.ini:
    [uwsgi]
    chdir = /path/to/projects/project3
    module = project.wsgi:application
    master = true
    processes = 4
    socket = /tmp/uwsgi3.sock
    chmod-socket = 664
    vacuum = true

  24. 创建nginx配置文件/etc/nginx/sites-available/project3:
    ```
    server {
    listen 80;
    server_name yourdomain3.com;

    location / {
        uwsgi_pass unix:///tmp/uwsgi3.sock;
        include uwsgi_params;
    }
    
    location /static/ {
        alias /path/to/projects/project3/static/;
    }
    

    }
    ```

  25. 创建软链接:
    sudo ln -s /etc/nginx/sites-available/project3 /etc/nginx/sites-enabled/

  26. 测试nginx配置文件是否正确:
    sudo nginx -t

  27. 启动uwsgi服务:
    uwsgi --ini uwsgi1.ini
    uwsgi --ini uwsgi2.ini
    uwsgi --ini uwsgi3.ini

  28. 启动nginx服务:
    sudo systemctl start nginx

  29. 确认项目已经成功部署:
    curl http://yourdomain1.com
    curl http://yourdomain2.com
    curl http://yourdomain3.com

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:django2+uwsgi+nginx上线部署到服务器Ubuntu16.04 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • 零基础也能看懂的python内置csv模块教程

    下面我将为您详细讲解“零基础也能看懂的python内置csv模块教程”的完整攻略。 标题1:什么是csv模块? CSV是指“Comma-separated values”(逗号分隔值)的缩写,是电子表格、数据库中常用的一种数据格式,其使用文本文件存储数据。Python内置的csv模块提供了读写CSV文件的功能,可轻松地操作CSV数据。 标题2:csv模块基本…

    python 2023年6月3日
    00
  • python调用百度语音REST API

    下面给您详细讲解Python调用百度语音REST API的完整攻略。 什么是百度语音REST API 百度语音REST API是百度提供的语音识别、语音合成、人脸识别等功能接口,可以通过HTTP或HTTPS协议请求,返回结果以JSON格式返回。相比于其他技术方案,百度的语音技术有以下优势: 识别准确率高:百度的语音识别准确率达到了业界领先水平; 支持离线识别…

    python 2023年5月19日
    00
  • Python生成随机数的一个标准库-random

    1.介绍 Random库Python中用于生成随机数的一个标准库。计算机没有办法产生真正的随机数,但它可以产生伪随机数。 伪随机数是计算机按照一定的运算规则产生的一些数据,只不过这些数据表现为随机数的形式。计算机中采用梅森旋转算法生成为随机序列,序列中的每一个元素就是伪随机数,由于计算机不能产生真正的随机数,所以伪随机数也就被称为随机数。 Random库包含…

    python 2023年4月27日
    00
  • Python使用爬虫爬取贵阳房价的方法详解

    本攻略将提供一个Python使用爬虫爬取贵阳房价的方法详解,包括爬虫的概念、爬虫的基本流程、爬取贵阳房价的方法。攻略将包含两个示例,分别演示如何使用Python爬取贵阳房价。 爬虫的概念 爬虫是一种自动化程序,用于从互联网上获取数据。爬虫程序通常会模拟浏览器行为,访问网站并抓取网页内容。爬虫程序可以用于各种用途,例如搜索引擎、数据挖掘、信息收集等。 爬虫的基…

    python 2023年5月15日
    00
  • pip报错“ValueError: invalid literal for int() with base 10: ‘3.7’”怎么处理?

    当使用 pip 安装 Python 包时,可能会遇到 “ValueError: invalid literal for int() with base 10: ‘3.7’” 错误。这个错误通常是由于 Python 版本不兼容或者 pip 安装不正确导致的。以下是详细讲解 pip 报错 “ValueError: invalid literal for int(…

    python 2023年5月4日
    00
  • 在Python中用三维数组的系数评估点(x, y)的二维切比雪夫级数

    首先需要了解什么是二维切比雪夫级数,它是关于一点的级数展开,以更多项的序列逼近函数。在二维空间中,切比雪夫级数的求和项是通过求解二维空间中任意两点之间的最大距离来计算的。 因此,在Python中用三维数组的系数评估点(x, y)的二维切比雪夫级数,需要进行以下步骤: 定义数组 定义一个三维数组,第一维表示级数的数量,第二维表示点的x坐标,第三维表示点的y坐标…

    python-answer 2023年3月25日
    00
  • python 3的kivy中是否有任何将textinput(小部件)的文本访问到另一个类的方法?

    【问题标题】:Is there any to access textinput (widget)’s text into another class in kivy of python 3?python 3的kivy中是否有任何将textinput(小部件)的文本访问到另一个类的方法? 【发布时间】:2023-04-05 16:53:02 【问题描述】: 我…

    Python开发 2023年4月5日
    00
  • python反转一个三位整数的多种实现方案

    下面是“Python反转一个三位整数的多种实现方案”的详细攻略。 问题描述 给定一个三位整数,如何编写Python代码将其反转。 解题思路 1. 将整数转换成字符串,再反转 首先将整数转换成字符串,再利用字符串反转的方法[::-1]将其反转回来,最后将反转后的字符串转换成整数。 实现代码如下: num = 123 # 给定一个三位整数 num_str = s…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部