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

接下来我将为您讲解“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爬取当当、京东、亚马逊图书信息代码实例

    Python爬取当当、京东、亚马逊图书信息代码实例 在爬虫技术的应用中,Python是非常常见的一种语言,其强大的模块和库支持、语言简洁易学,使其成为了爬虫技术的首选语言之一。本篇文章主要讲解如何使用Python爬取当当、京东、亚马逊图书信息,以下是详细步骤: 步骤一:分析页面代码 在爬取页面信息之前,我们首先需要对目标页面的结构进行分析。在本例中,我们以当…

    python 2023年5月14日
    00
  • 把csv文件转化为数组及数组的切片方法

    针对您的问题我将为您提供一个详细的markdown攻略,以便您能够更好地理解如何将csv文件转化为数组及切片方法。 CSV文件转化为数组 CSV文件是一种表格格式文件,非常适合存储和处理数据。将CSV文件转化为数组是一种将CSV文件中的数据转换为可供计算机分析和处理的数据格式的方法。使用Python可以轻松地将CSV文件转换为数组,具体步骤如下: 1. 导入…

    python 2023年6月3日
    00
  • Python 中list ,set,dict的大规模查找效率对比详解

    以下是“Python中list、set、dict的大规模查找效率对比详解”的完整攻略。 1. list、set、dict的概述 在Python中,list、set、dict是常用的数据类型。它们别用于存储有序的素、无序的元素和键值对。在进行大规模查找时,它们的效率是不的。 list:list是一种有序的数据类型,可以存储任何类型的数据。在进行查找时,需要遍历…

    python 2023年5月13日
    00
  • Django框架会话技术实例分析【Cookie与Session】

    Django框架会话技术实例分析【Cookie与Session】 本文将深入探讨Django框架中的会话技术,其中包括Cookie与Session两种常见的实现方式,通过实例分析,给大家带来更全面的理解。 什么是会话技术? 会话技术是Web开发中常用的一种技术,它可以实现跨页面(同一域名下)的数据共享。当用户在网站上进行操作时,我们可以通过会话技术来保存用户…

    python 2023年6月3日
    00
  • python3.x如何向mysql存储图片并显示

    完整攻略分为以下几个步骤: 1.建立数据库连接 首先需要在Python环境中安装并导入PyMySQL库,用于连接MySQL数据库。然后使用connect()方法建立与数据库服务器的连接,即 import pymysql db = pymysql.connect(host="localhost",user="root",…

    python 2023年5月20日
    00
  • Python实现拼音转换

    Python实现拼音转换 拼音转换是指将中文汉字转换成对应的拼音字母,常用于中文输入法中的候选词显示和搜索引擎中的中文搜索。Python提供了多种方法实现拼音转换,包括使用第三方库和自定义转换函数等。 使用第三方库 Python中常用的第三方库有pypinyin和xpinyin。 pypinyin库 pypinyin库是一个完全用Python编写的、功能简单…

    python 2023年6月5日
    00
  • Python高级特性——详解多维数组切片(Slice)

    Python高级特性:详解多维数组切片(Slice) 1. 多维数组切片基本用法 切片是 Python 中常用的一种操作,可以用来切分列表、字符串、元组等序列型数据,多维数组也不例外。对于二维数组,切片只需在索引号中加入” : “符号,即可切分整行或整列。而对于多维数组,我们可以在切片表达式中使用多个” : “符号,来对各个维度进行切片。 下面是一个基本的多…

    python 2023年6月5日
    00
  • python异常处理try的实例小结

    Python异常处理try的实例小结 在Python中,异常处理是一种重要的编程技巧,可以帮助我们更好地处理程序中的错误和异常情况。try语句是Python中异常处理的核心,用来捕获处理异常。本文将详细讲解Python异常处理try的实例,包括try-except语句的基本用法、多个except语句的使用、以及try-finally语句的使用。在过程中,我们…

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