Django部署Nginx服务器

  Django部署方式有很多种,之前写过一篇部署在Apache上的博文:https://www.cnblogs.com/shenh/p/7552722.html 。下文介绍的是通过Nginx来部署。

  Nginx是一个高性能的HTTP和反向代理服务,运用非常广泛。Django应用可以通过Nginx+uwsgi的方式进行部署。Nginx放置在服务器的最前端来接收所有web请求,统一管理,首先分离出静态请求,自己做处理。然后,Nginx将非静态请求通过uwsgi转发给Django,由Django处理。

一、安装Nginx

安装Nginx命令

apt-get install Nginx

Nginx的默认端口为80,很容易被其他服务占用,因此需要修改成其他端口。打开文件 vi /etc/nginx/nginx.conf ,如果能找到监听的端口,直接修改 。找不到的也没关系 ,找到如下配置 ,说明是引用了其他目录的文件

...
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}
...

打开 /etc/nginx/sites-enabled/ ,找到并编辑 default ,将80修改成8088

# Default server configuration
#
server {
    listen 8088 default_server;
    listen [::]:8088 default_server;

    # SSL configuration
    #
    # listen 443 ssl default_server;
    # listen [::]:443 ssl default_server;
    #
    # Note: You should disable gzip for SSL traffic.
    # See: https://bugs.debian.org/773332
    #
    # Read up on ssl_ciphers to ensure a secure configuration.
    # See: https://bugs.debian.org/765782
    #
    # Self signed certs generated by the ssl-cert package
    # Don‘t use them in a production server!
    #
    # include snippets/snakeoil.conf;

Nginx启动命令

service nginx start

service nginx restart

service nginx stop

测试下,访问  http://10.1.35.51:8088/

二、配置uwsgi

1.安装

pip 安装 uwsgi 命令:

pip install uwsgi

2.配置 uwsgi 和 Django 的连接

Django 项目路径位于 /home/project/web/ ,在 Django 项目根目录(manage.py 同级目录)新建文件 uwsgi.ini (也支持 xml 文件格式)。在文件中添加如下内容:

# uwsgi.ini file
[uwsgi]

# Django-related settings
socket = :8000

# the base directory (full path)
chdir = /home/project/web

# Django s wsgi file
module = web.wsgi

# process-related settings
master = true

# maximum number of worker processes
processes = 5

#maximum number of worker threadsthreads = 5
# try to remove all of the generated file/sockets
vacuum = true

3. 配置 uwsgi 和 Nginx 的连接

修改Nginx配置文件:vi /etc/nginx/sites-available/default ,增加一段配置。然后重启Nginx

server {
    listen         8099;
    server_name    127.0.0.1
    charset UTF-8;
    access_log      /var/log/nginx/web_access.log;
    error_log       /var/log/nginx/web_error.log;

    client_max_body_size 75M;

    location / {
        include uwsgi_params;                   # 通过uwsgi转发请求
        uwsgi_pass 127.0.0.1:8000;              # 和上文配置的socket端口保持一致
        uwsgi_read_timeout 15;                  # 设置请求超时时间
    }
    location /static {                          # 访问静态资源
        expires 30d;
        autoindex on;
        add_header Cache-Control private;
        alias /var/web/;
     }
 }

4.配置 Django 静态资源

在setting里增加配置,静态资源 路径 和 Nginx 里的访问路径一致

STATIC_ROOT = os.path.join(BASE_DIR,‘/var/web‘)

执行命令

Python manage.py collectstatic

5.最后启动项目

cd /home/project/web
uwsgi --ini uwsgi.ini

运行成功:

(env35) [email protected]:/home/project/ShiHangTool# uwsgi --ini ShiHangTool_uwsgi.ini
[uWSGI] getting INI configuration from ShiHangTool_uwsgi.ini
*** Starting uWSGI 2.0.17.1 (64bit) on [Tue Dec 11 17:42:10 2018] ***
compiled with version: 5.4.0 20160609 on 10 December 2018 08:38:05
os: Linux-4.4.0-139-generic #165-Ubuntu SMP Wed Oct 24 10:58:50 UTC 2018
nodename: ubuntu
machine: x86_64
clock source: unix
detected number of CPU cores: 2
current working directory: /home/project/ShiHangTool
detected binary path: /root/.virtualenvs/env35/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
chdir() to /home/project/ShiHangTool
your processes number limit is 7764
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 TCP address :8000 fd 3
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
Python version: 3.5.2 (default, Nov 12 2018, 13:43:14)  [GCC 5.4.0 20160609]
Python main interpreter initialized at 0x1504fe0
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
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 687984 bytes (671 KB) for 25 cores
*** Operational MODE: preforking+threaded ***
WSGI app 0 (mountpoint=‘‘) ready in 0 seconds on interpreter 0x1504fe0 pid: 5194 (default app)
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 5194)
spawned uWSGI worker 1 (pid: 5196, cores: 5)
spawned uWSGI worker 2 (pid: 5197, cores: 5)
spawned uWSGI worker 3 (pid: 5202, cores: 5)
spawned uWSGI worker 4 (pid: 5207, cores: 5)
spawned uWSGI worker 5 (pid: 5208, cores: 5)

访问 http://10.1.35.51:8099/Home/OrderSettle-K8S/

原文地址:https://www.cnblogs.com/shenh/p/10101344.html

时间: 2024-10-07 04:32:59

Django部署Nginx服务器的相关文章

Nginx+uWSGI+Django部署web服务器

目录 Nginx+uWSGI+Django部署web服务器 环境说明 前言 搭建项目 Django部署 编辑luffy/luffy/settings.py 编辑luffy/app01/views.py 编辑luffy/luffy/urls.py 运行并测试 uWSGI部署 测试运行uWSGI 使用uWSGI运行django项目 uWSGi热加载Djangoa项目 部署nginx nginx配置uwsgi和django django部署static文件 重新加载nginx进行测试 测试nginx

debian7下部署nginx服务器

笔者是在vmware中的Debian7下部署nginx服务器,采用离线部署方式.过程如下: 1.准备好需要的离线安装包 nginx-1.6.2.tar.gz,pcre-8.34.tar.gz,openssl(在线安装),zlib-1.2.8.tar.gz (这些包文章末尾给出了下载链接) 2.安装pcre tar zxvf pcre-8.34.tar.gz cd pcre-8.34 ./configure make sudo make install 3.安装openssl 采用在线安装方式,s

社交网站部署——Nginx服务器+PHP服务器搭建+MySQL主从集群

案例概述 某公司的社交网站采用PHP语言开发,为了管理PHP程序员开发的代码,上级领导要求搭建SVN服务器进行版本控制.社交网站的第一个版本部署在LNMP平台之上,前端为Nginx服务器,通过fastcgi协议访问后端的PHP服务器.为了保证数据安全,要求搭建MySQL数据库主从集群. 社交网站项目包含用户的相册功能,允许用户上传照片,上传照片需要使用共享存储来存放.针对共享存储可用的开源方案有很多,如MFS.FastDFS 等.公司决定使用MFS分布式文件系统来实现,并将MFS挂载在PHP服务

Django 部署(Nginx)

本文主要讲解 nginx + uwsgi socket 的方式来部署 Django,比 Apache mod_wsgi 要复杂一些,但这是目前主流的方法. 推荐:使用Code Studio 云端开发,新人更有免费一个月云主机,可以用来实战体验本节的部署! 1. 运行开发服务器测试 1 2 cd zqxt # 进入项目 zqxt 目录 python manage.py runserver 运行开发服务器测试,确保开发服务器下能正常打开网站. 2. 安装 nginx 和 需要的包 2.1 安装 ng

Centos6.9安装部署nginx服务器

(一)依赖包安装 首先,gcc,pcre,zlib,openssl安装一边(可以用非-devel,但是嫌麻烦....用非-devel的看这个链接) yum  -y install gcc ------------------------------------------------------------------------------------------------------------------------------------------------------------

docker部署nginx服务器

1,下载nginx镜像 docker pull nginx 2,启动 docker run --name runoob-nginx-test -p 8081:80 -d nginx 3,创建本地目录 mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf 4,复制容器中的配置文件到本地目录 docker cp 容器id:/etc/nginx/nginx.conf ~/nginx/conf 5,启动新容器 docker run -d -p 8082:80 --

Django部署:Django+gunicorn+Nginx环境的搭建

本人的服务器环境为Ubuntu14.04,使用的是Python3.4版本,并且安装有pip(Ubuntu中Python3配合的是pip3),并且以管理员身份运行,如果是普通用户,请切换管理员权限(sudo). 一.gunicorn和nginx的简介 gunicorn需要搭配nginx使用,那么两者的作用到底是什么. 1.gunicorn简介:gunicorn是一个Python WSGI UNIX服务器.WSGI(Web Server Gateway Interface)是Web服务网关接口,位于

django - 部署

django项目部署 步骤 1.github建立新仓库 [email protected]:yc913344706/learning_log.git 2.本地安装git [email protected] MINGW64 /e/yc_study/python/django/sys/workspace/learning_log $ git --version git version 2.16.0.windows.2 3. 创建.gitignore并编辑 [email protected] MING

社交网站部署——SVN服务器搭建并发布上线

案例概述 某公司的社交网站采用PHP语言开发,为了管理PHP程序员开发的代码,上级领导要求搭建SVN服务器进行版本控制.社交网站的第一个版本部署在LNMP平台之上,前端为Nginx服务器,通过fastcgi协议访问后端的PHP服务器.为了保证数据安全,要求搭建MySQL数据库主从集群. 社交网站项目包含用户的相册功能,允许用户上传照片,上传照片需要使用共享存储来存放.针对共享存储可用的开源方案有很多,如MFS.FastDFS 等.公司决定使用MFS分布式文件系统来实现,并将MFS挂载在PHP服务