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.启动之后会看到命令行左边有括号括起的环境名称

1 pip3 install uwsgi 安装uwsgi库

3.安装pycharm

1 直接用浏览器下载tar.gz包
2 解压 tar xzvf xxx.tar.gz -C 指定解压到的目录
3 进入该目录
4 cd bin/5 sh pycharm.sh就开启了pycharm

4.创建django项目

因为我们没有事先安装Django,直接用pycharm创建新的Django项目,指定我们刚才的虚拟环境pycharm会在这个环境下自动安装较新版本的Django,如果需要指定版本可以先用pip安装到虚拟环境,创建时项目,指定虚拟环境。

使用manager.py Task 工具测试一下项目,runserver,浏览器访问一下我们的admin

没有毛病继续下一步操作

5.测试uWSGI,在项目下创建一个test.py文件

1 def application(env, start_response):
2     start_response(‘200 OK‘, [(‘Content-Type‘,‘text/html‘)])
3     return "Hello World"
运行 sudo uwsgi --http 0.0.0.0:8000 --wsgi-file test.py

然后浏览 http://127.0.0.1:8000,有”Hello World”输出即安装成功。

说明uWSGI没有毛病,接下一步

6.下载nginx并安装

1 wget http://nginx.org/download/nginx-1.13.10.tar.gz2 进入下载目录,解压 tar xzvf nginx-1.13.10.tar.gz3 进入解压目录  cd nginx-1.13.104 ./configure --prefix=/usr/local/nginx  #把所有资源文件放在/usr/local/nginx的路径中,不会杂乱。5  make6   make install

7. 配置uwsgi

uwsgi支持ini、xml等多种配置方式,本文ini为例, 在项目下新建wifiproject_uwsgi.ini,添加如下配置:

#wifiproject_uwsgi.ini file
[uwsgi]

#与nginx通信
socket = 127.0.0.1:8080

#让uwsgi作为单独的web-server,这里注释掉
#http = 127.0.0.1:8080

#django项目根目录
chdir = /home/wei/pythonproject/wifiproject

#wsgi.py在项目中的位置
module  = wifiproject.wsgi

enable-threads = true
#进程数
processes = 4
#线成
threads = 2
#退出时清空环境变量
vacuum = true

#配uWSGI搜索静态文件目录,(及django项目下存放的static文件目录,用uwsgi作为单独服务器时才需要设置,此时我们用nginx处理静态文件
#check-static = /home/wei/pythonproject/wifiproject

#日志存储路径
daemonize = /home/wei/pythonproject/wifiproject/log/uwsgi.log

8. 配置nginx

进入到 /usr/local/nginx 安装目录下

  1. 我们不使用nginx的默认配置运用我们的项目,
  2. 在项目下创建一个conf文件夹和logs文件夹分别存放配置文件和日志文件

  把这三个文件分别复制拷贝到项目的conf文件夹,也可以重命名

  然后对nginx.conf配置文件进行设置

  1 user  root; #使用root否则静态文件可能加载失败
  2 worker_processes  1; #运行nginx工作进程,一般几个cpu核心就写ji
  3
  4 #error_log  logs/error.log;
  5 #error_log  logs/error.log  notice;
  6 #error_log  logs/error.log  info;
  7
  8 #pid        logs/nginx.pid;
  9
 10
 11 events {
 12     worker_connections  1024; #一个进程能同时处理1024个请求
 13 }
 14
 15
 16 http {
 17     include       mime.types;
 18     default_type  application/octet-stream;
 19
 20     #log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
 21     #                  ‘$status $body_bytes_sent "$http_referer" ‘
 22     #                  ‘"$http_user_agent" "$http_x_forwarded_for"‘;
 23
 24     #access_log  logs/access.log  main;
 25
 26     sendfile        on;
 27     #tcp_nopush     on;
 28
 29     #keepalive_timeout  0;
 30     keepalive_timeout  65;
 31
 32     #gzip  on;
 33 #开始配置一个域名,一个server配置一般对应一个域名
 34     server {
 35         listen       8002; #暴露给外部的端口,等于浏览器访问的端口
 36         server_name  localhost; #域名
 37         charset utf-8;
 38         error_log   /home/wei/pythonproject/wifiproject/log/nginx_error.log;
 39         access_log  /home/wei/pythonproject/wifiproject/log/nginx_access.log;
 40 #可以有多个location
 41         location / {
 42             #root   html; #站点根目录
 43             #index  index.html index.htm; #索引文件
 44     include  /home/wei/pythonproject/wifiproject/conf/uwsgi_params; #设置将所有请求转发给uwsgi服务器处理
 45     uwsgi_pass  127.0.0.1:8080; #指定uwsgi的url,与uwsgi通信
 46
 47          }
 48 location /static/ {
 49 #设置将/static的静态请求交给nginx,并指定静态文件的目录
 50
 51 alias  /home/wei/pythonproject/wifiproject/static/;
 52 }
 53
 54
 55         #error_page  404              /404.html;
 56
 57         # redirect server error pages to the static page /50x.html
 58         error_page   500 502 503 504  /50x.html;
 59         #定义页面错误,如果出现这些错误,把站点根目录下的50x.html返回给用户
 60 location = /50x.html {
 61             root   html;
 62         }
 63
 64         # proxy the PHP scripts to Apache listening on 127.0.0.1:80
 65         #
 66         #location ~ \.php$ {
 67         #    proxy_pass   http://127.0.0.1;
 68         #}
 69
 70         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
 71         #
 72         #location ~ \.php$ {
 73         #    root           html;
 74         #    fastcgi_pass   127.0.0.1:9000;
 75         #    fastcgi_index  index.php;
 76         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
 77         #    include        fastcgi_params;
 78         #}
 79
 80         # deny access to .htaccess files, if Apache‘s document root
 81         # concurs with nginx‘s one
 82         #
 83         #location ~ /\.ht {
 84         #    deny  all;
 85         #}
 86     }
 87
 88
 89     # another virtual host using mix of IP-, name-, and port-based configuration
 90     #
 91     #server {
 92     #    listen       8000;
 93     #    listen       somename:8080;
 94     #    server_name  somename  alias  another.alias;
 95
 96     #    location / {
 97     #        root   html;
 98     #        index  index.html index.htm;
 99     #    }
100     #}
101
102
103     # HTTPS server
104     #
105     #server {
106     #    listen       443 ssl;
107     #    server_name  localhost;
108
109     #    ssl_certificate      cert.pem;
110     #    ssl_certificate_key  cert.key;
111
112     #    ssl_session_cache    shared:SSL:1m;
113     #    ssl_session_timeout  5m;
114
115     #    ssl_ciphers  HIGH:!aNULL:!MD5;
116     #    ssl_prefer_server_ciphers  on;
117
118     #    location / {
119     #        root   html;
120     #        index  index.html index.htm;
121     #    }
122     #}
123
124 }

9 创建相关日志文件

  这样 就不会在终端打印日志了

10  生产模式下diango设置

  settings.py 中设置debug = False ,Django将不会代管静态文件,我们是交给nginx管理,所以要把django的相关静态文件收集到一个目录下,并在nginx的配置文件里指向该目录

  settings.py 添加

  STATIC_ROOT = os.path.join(BASE_DIR,‘static‘)

  调用manage命令 collectstatic    就会自动把相关静态文件收集到上面的路径里

11. 使用配置文件开启 uwsgi

  使用虚拟环境进入项目

  然后运行

  

  如果没有报错就开启了uwsgi

12  在nginx启动目录下使用配置文件开启  nginx

  

13 使用浏览器访问

 

原文地址:https://www.cnblogs.com/Thomas-blog/p/8998670.html

时间: 2024-07-30 18:43:31

Centos7下搭建Django+uWSGI+nginx基于python3的相关文章

[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

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 in

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

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

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

Ubuntu16.04下搭建mysql + uwsgi + nginx环境启动flask 项目

1.安装mysql Sudo apt-get install mysql 配置mysql的数据存储路径,默认在 /var/lib/mysql sudo cp -R /var/lib/mysql/* /home/applex/mysqldb sudo chown -R mysql:mysql home/applex/mysqldb sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf 将 [mysqld] 组下的 datadir改为: datadir = /h

python django+uwsgi+nginx 搭建步骤(血一般的教训)

安装Django 没有pip的童鞋可以看http://blog.csdn.net/imphp/article/details/38228619安装python包管理工具pip 先在 https://pypi.python.org/ 上 搜索Django,排在第一的那个就是我们要安装的主要框架Django啦- 点进去可以查找一些相关文档,虽然全部是鸟语花香,不过有翻译.百度.炕忙,就算是菜鸟也成英国鸟了. Django 的官网文档 https://docs.djangoproject.com/en

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