Centos 7 下部署Django + uWSGI + Nginx

1、废话

之前利用Django写了些测试工具,一直是直接 python manage.py runserver 8081这么来用的。用户量不大,倒也不影响什么。uWSGI+Nginx的性能肯定要好,so 研究了一下

2、环境:

Python: 3.5

Django: 1.8

OS: CentOS 7 x86_64

uwsgi: 2.0.17

3、安装Python3.5

  • 不要删除自带的python2.7,否则会出问题,因为centos许多软件需要依赖系统自带python
  • 安装依赖工具 yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
  • 下载 wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
  • 解压 tar -zxvf Python-3.5.1.tgz
  • 移动至规范的放软件的目录下 mv Python-3.5.1 /usr/local
  • 安装:
  • cd /usr/local/Python-3.5.1/
  • make & make install
  • 更新python的软连接:

rm -rf /usr/bin/python

ln -s /usr/local/bin/python3.5 /usr/bin/python

  • 验证

python -V

4、安装uWSGI

  • 安装 pip install uwsgi
  • 验证
  • def application(env, start_response):
        start_response(‘200 OK‘, [(‘Content-Type‘,‘text/html‘)])
        return [b"Hello Django"]
    uwsgi --http :8001 --wsgi-file test.py

    浏览器访问,网页能显示 Hello Django 那么就没问题

5、安装Nginx

  • 配置源

vi /etc/yum.repos.d/nginx.repo 添加下面内容

  • [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/mainline/centos/7/x86_64/
    gpgcheck=0
    enabled=1
  • yum install nginx
  • 启动nginx:

systemctl start nginx

此处如果报错,可以查看系统日志来分析,本人遇到的问题如下:

nginx: [emerg] bind() to 0.0.0.0:8089 failed (13: Permission denied)

权限拒绝,度娘,发现是,经检查发现是开启selinux 导致的。 直接关闭:

   方法一:临时关闭  setenforce 0
   方法二:用户关闭
     修改/etc/selinux/config 文件
     将SELINUX=enforcing改为SELINUX=disabled
     重启机器即可
  • 修改默认端口号(默认为80)

    vim /etc/nginx/conf.d/default.conf
    

    server {
        listen 8089;

    listen [::]:8089;
        ...

    ...

    }

  • systemctl restart nginx 重启nginx,直接访问http://ip:8089 能看到nginx的欢迎界面即可。

6、配置

配置uwsgi启动django的参数

vim django_uwsgi.ini

[uwsgi]
# 通过uwsgi访问django需要配置成http
# 通过nginx请求uwsgi来访问django 需要配置成socket
# 9000 是django的端口号
socket = :9000

# web项目根目录
chdir = /home/root/pydj/django_one

# module指定项目自带的的wsgi配置文件位置
module = django_one.wsgi

# 允许存在主进程
master = true

# 开启进程数量
processes = 3

# 服务器退出时自动清理环境
vacuum = true

7、配置nginx

vi /etc/nginx/conf.d/default.conf

# 在文件最后,新加一个server

server {
    listen       8089;
    listen      [::]:8089;
    server_name 127.0.0.1 192.168.10.114;

    location / {
        include /etc/nginx/uwsgi_params;
        uwsgi_pass 127.0.0.1:9000;
    }
    location /index/ {
        root /index/;
    }
    location /static{
        alias /home/root/pydj/django_one/sign/static;
    }

}
# 8089 是对外的端口号
# server_name nginx代理uwsgi对外的ip# 绿色高亮的是核心, 127.0.0.1:9000 即当nginx收到8089端口的请求时,直接将请求转发给 127.0.0.1:9000


8、uwsgi启动django

# 进入项目根目录
/home/root/pydj/django_one

# 启动
uwsgi --ini django_uwsgi.ini

9、重启Nginx

systemctl restart nginx

此时,环境搭建完毕,使用浏览器访问 http://ip:8089/index/ 即可显示出django的index路由对应的页面了

原文地址:https://www.cnblogs.com/byron0918/p/8724999.html

时间: 2024-10-08 07:24:22

Centos 7 下部署Django + uWSGI + Nginx的相关文章

Ubuntu环境下部署Django+uwsgi+nginx总结

前言 这是我在搭建Django项目时候的过程,拿来总结记录,以备不时之需. 项目采用nginx+uwsgi的搭配方式. 项目依赖包采用requirements.txt文件管理的方式. 本地准备工作 确认项目能够运行起来,没有bug 将当前环境的包导出 pip freeze > requirements.txt 将项目上传到服务器上的/srv目录下.这里以git的形式为例, 打开终端, 依次输入如下命令: $ git init $ git remote add origin xxx.git # 替

用Docker部署Django+uWSGI+Nginx

用Docker部署Django+uWSGI+Nginx 大致步骤如下: 创建Centos容器 安装Python及pip 安装MySQL 使Django连接到MySQL 运行uWSGI服务器 运行Nginx服务器 ? ? 创建Centos容器 安装docker软件 yum install docker 创建一个centos容器 docker run -d --name deploy1 --network host centos tail -f /dev/null -d:让它在后台运行. –name

[linux]centos7.4部署django+Uwsgi+Nginx

前言:我已经写了几个接口用来部署在服务器上的,首先选择django+Uwsgi+Nginx因为配置简单,比较符合python的简单操作功能强大的特点 然后对于django的一些版本在之前的文章写了 参考:https://www.cnblogs.com/Jack-cx/p/9351633.html  根据版本,服务器pip3 install xxx 安装下 我的django项目大概结构: TestWebApi ----TestWebApi ----Apiso(创建的应用) ----manage.p

Centos7下搭建Django+uWSGI+nginx基于python3

1.电脑环境 Centos7 + python3.6 + virtualenv 由于centos自带的是python2.7版本,所以要自己安装新的版本,这里就不对此描述了,直接开工 2.具体流程 使用python虚拟环境 1.在自己想要创建虚拟环境的文件夹下创建虚拟环境,我们的uWSGI也是安装在虚拟环境中 1 virtualenv Env 2 cd Env 3 cd bin 4 启动虚拟环境 source activate (关闭的命令 deactivate) 2.启动之后会看到命令行左边有括

centos7下部署Django(nginx+uWSGI+Python3+Django)

部署代码后uWSGI需要重新启动,关闭系统防火墙或者开放端口 系统版本:CentOS7.0 Python版本:Python3.6.3 Django版本:2.0.5 uWSGI版本:2.0.17 nginx版本1.4.4 1.安装需要的依赖 ```shell yum install wget openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel yum install libxml* yum -y

Django + Uwsgi + Nginx 的生产环境部署

使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等,本篇文章总结归纳了一下基于uwsgi+Nginx下django项目生产环境的部署 准备条件: 1.确保有一个能够用runserver正常启动的django项目 2.项目已上传到linux 3.linux上已部署好python环境,且已安装好项目所需的模块 安装uwsgi uwsgi是python的一个模块,安装u

Django + Uwsgi + Nginx 实现生产环境部署

一.如何在生产上部署Django? Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 二.uwsgi介绍 uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI / uwsgi / uWSGI 这三个概念的区分. WSGI是一种Web服务器网关接口.它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask

Django+uWSGI+Nginx 部署网站

Django 1.11设置 保证Django在本地调试没有问题: 当然这是前提^_^ 收集静态文件至指定文件夹 Django静态文件设置具体参考:https://docs.djangoproject.com/en/1.11/ref/contrib/staticfiles/ 在myproject/settings.py中设置静态文件STATIC_URL和STATIC_ROOT设置: 如: STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE

django+uwsgi+nginx部署(非常详细)

django+uwsgi+nginx部署 1.介绍: 在网上看了很多教程,但自己部署了很久都没有成功,这篇博文记录自己所踩过得坑. 2.环境: 1 Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-130-generic x86_64) 3.下载uwsgi以及nginx 1 apt-get install uwsgi 2 apt-get install nginx (注:如果下载异常出现权限问题,在命令前添加sudo) 4.创建Django项目 例如:项目名为mysite