一:uWSGI的安装

  1. sudo pip install uwsgi

如果安装报错:

  1. conda install -c conda-forge uwsgi
  2. conda install -c conda-forge libiconv

测试 test.py:

  1. uwsgi --http :8020 --chdir /mnt/d/hegh/projects/0806/data_plot(项目路径) -w data_plot.wsgi

一个重要的任何就是监控。知道发生了什么在生产环境中是极其重要的。stats 子系统允许你 用 JSON 输出 uWSGI 的内部数据:

  1. uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

启动测试, 可以正常访问就安装没有问题
在项目的根目录下建立以自己项目命名的配置文件data_plot.ini:

  1. [uwsgi]
  2. project = data_plot
  3. base = /mnt/d/hegh/projects/0806/
  4. socket = 127.0.0.1:8030 # 指定项目执行的端口号,用nginx的时候就要配socket
  5. chdir = %(base)/%(project) # 指定项目的目录
  6. wsgi-file=%(base)/%(project)/%(project)/wsgi.py # 项目上wsgi.py所在的位置,与settings目录相同
  7. master = true # master :允许主线程存在(true)
  8. processes = 5 # 开启的进程数量
  9. threads=2
  10. pidfile=data_plot.pid
  11. daemonize=data_plot.log # 日志,uwsgi无法启动时来这查看错误日志

这将会产生 4 个进程(每个进程 2 个线程),一个主进程(当你的进程死掉时会重新 spawn 一个新的)以及 HTTP 路由器
老版(1.4 以下)的 Django(没有wsgi.py 文件) 发行版需要设置 evn, module 和 pythonpath (.. 使得我们可以访问 myproject.settings 模块)

  1. uwsgi --ini data_plot.ini # 启动uwsgi, 一定要在django实际使用的conda环境下,否则会报错
  2.  
  3.   uwsgi --stop data_plot.pid # 停止uwsgi
  4.  
  5.   uwsgi --reload data_plot.pid # 重启uwsgi

或者 建立一个自启脚本

  1. sudo vi /etc/init/uwsgi.conf

内容如下 setuid的值改为你的项目名:

  1. description "uWSGI application server in Emperor mode"
  2. start on runlevel [2345]
  3. stop on runlevel [!2345]
  4. setuid data_plot
  5. setgid www-data
  6.  
  7. exec exec /mnt/d/hegh/miniconda3/envs/data_plot/bin/uwsgi --emperor /mnt/d/hegh/projects/0806/data_plot

二: 方向代理: Nginx的安装和配置
1:安装: sudo apt-get install nginx

2: 创建配置文件: sudo vim /etc/nginx/sites-available/data_plot

  1. server{
  2. listen 8030;
  3. server_name localhost;
  4. access_log /mnt/d/hegh/projects/0806/data_plot/nginx.access.log;
  5. error_log /mnt/d/hegh/projects/0806/data_plot/nginx.error.log;
  6.  
  7. location /static/ {
  8. root /mnt/d/hegh/projects/0806/data_plot; 或者:alias /mnt/d/hegh/projects/0806/data_plot/static;
  9. }
  10. location /favico.ico {
  11. root mnt/d/hegh/projects/0806/data_plot/static/img/favico.ico;
  12. }
  13. location / {
  14. include /etc/nginx/uwsgi_params;
  15. uwsgi_pass 127.0.0.1:8030;
  16. }
  17. }

  

然后链接文件:

  1. sudo ln -s /etc/nginx/sites-available/data_plot /etc/nginx/sites-enabled/

检查是否有错误:

  1. sudo service nginx configtest

出现错误,那就是配置文件写错了,自己检查一下,没有就直接启动!

  1. sudo service nginx restart

最后输入,启动uwsgi :

  1. uwsgi /mnt/d/hegh/projects/0806/data_plot/data_plot.ini -d /mnt/d/hegh/projects/0806/data_plot/data_plot.log

Django项目setting.py设置:
DEBUG = False
一般在开发环境中: 即settings.py中的DEBUG = True 时 , Django 会自动帮助我们处理静态文件,所以不用操心静态文件404的问题,但是在部署时,出于安全考虑,我们必须关闭DEBUG!保证自己网站的信息不泄露。只是当DEBUG关闭后,Djang就不会帮我们处理静态文件了,所以会出现样式丢失,静态文件404问题

  1. STATIC_URL = '/static/'
  2. # STATIC_ROOT = os.path.join(BASE_DIR, 'static')
  3. MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
  4. STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
  5. STATICFILES_FINDERS = (
  6. 'django.contrib.staticfiles.finders.FileSystemFinder',
  7. 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
  8. )

1.MEDIA_ROOT:媒体文件,所有上传的文件。示例:图像,文件
2.STATIC_ROOT 在开发过程中无用,只需要部署。
在开发中,STATIC_ROOT什么都不做。你甚至不需要设置它。Django在每个应用程序目录(myProject/appName/static)中查找静态文件,并自动提供。
当你的项目部署时,事情有所不同。很可能你将使用Django提供动态内容,Nginx将提供静态文件。为什么?因为Nginx的效率非常高,并且会减少Django的工作量。
这时候STATIC_ROOT才有用,因为Nginx不知道你的django项目,不知道在哪里找到静态文件。
所以你设置STATIC_ROOT = '/some/folder/', 并告诉Nginx寻找静态文件/some/folder/。然后运行manage.py collectstatic,Django将会从所有应用程序复制静态文件/some/folder/。
3.STATICFILES_DIRS : 静态文件的额外目录
STATICFILES_DIRS用于包含要查找的其他目录。例如,默认情况下,Django无法识别/myProject/static/。所以你可以把它设置一下。

Nginx+ uWSGI +django进行部署的更多相关文章

  1. 五步教你实现使用Nginx+uWSGI+Django方法部署Django程序

    Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求.ng ...

  2. 使用Nginx+uWSGI+Django方法部署Django程序

    第一步先解决uwsgi与django的桥接.解决在没有nginx的情况下,如何使用uwsgi+DJANGO来实现一个简单的WEB服务器. 第二步解决uwsgi与Nginx的桥接.通过nginx与uws ...

  3. 使用Nginx+uWSGI+Django方法部署Django程序(下)

    在上一篇文章<五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(上)>中,阐述了如何只使用uWSGI来部署Django程序. 当然,单单只有uWSGI是不够的, ...

  4. 使用Nginx+uWSGI+Django方法部署Django程序(上)

    Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求.ng ...

  5. Nginx+uwsgi+django+vue部署项目

    购买服务器 # 购买阿里云服务器 # 短期或是测试使用,创建 按量收费 服务器,可以随时删除,删除后不再计费,但要保证账户余额100元以上 连接服务器 1)账号 >: ssh root@39.9 ...

  6. Nginx+Uwsgi+Django 项目部署到服务器。

    首先先说一下思路: 1.本地django项目打包 主要用到的是 python自带的distutils.core 下的 setup,具体代码在下面,主要讲的两个问题是package主要打包为和目录同级的 ...

  7. 使用nginx+uwsgi+Django环境部署

    环境准备 Python点这里 nginx点这里 uwsgi点这里

  8. debian完整部署 Nginx + uWSGI + Django

    手工部署一个Django服务器真心不容易,需要安装很多东西.从头开始搭建服务器,主要是为了梳理一下后续开发中一般为碰到的平台部署.对后续问题的解决有一定帮助. 通常部署有2中方式: 一种是使用现成提供 ...

  9. [技术博客]ubuntu+nginx+uwsgi+Django+https的部署

    ubuntu+nginx+uwsgi+Django+https部署文档 配置机器介绍 操作系统:Ubuntu 18.04.2 LTS 64位 python版本:Python 3.6.7 Django版 ...

随机推荐

  1. Jenkins教程(八)实现 GitLab 触发 Jenkins 自动按模块发布前端

    楔子 上篇文章解决了提交/合并请求自动触发的需求,但所有前端模块都在同一个代码仓库里,如何获取变更文件路径确定要发布哪个模块呢?本文将带你解决这个问题. 思路 分别解决 3 个问题: 获取变更的文件列 ...

  2. BootStrap中模态框踩坑

    在模态框中使用html标签上的自定义属性来打开模态框后,在使用JS关闭模态框,就会出现多层蒙板问题 出现这个问题的原因就是没有仔细看bootstrap的官方文档,我人麻了,搞了好久 务必将模态框的 H ...

  3. [cf1290D]Coffee Varieties

    思路 统计数的种类数,也等价于统计有多少个数满足其之前没有与其相同的数 将序列以$\frac{k}{2}$为块大小分块,那么即会有$m=\frac{2n}{k}$个块 (关于$k=1$的情况,以1为块 ...

  4. [atARC124F]Chance Meeting

    为了方便,不妨先将$n$和$m$都减小1,其意义即为移动的次数 注意到老鼠向下移动和猫向上移动对于第2个条件是等价的,对于第1个条件即要求都恰好移动$n$次,那么对应的方案数即为${2n\choose ...

  5. [atAGC045B]01 Unbalanced

    将0变为-1后求前缀和,那么$s$的价值即为最大的前缀和-最小的前缀和(特别的,空前缀的前缀和为0) 令$f(x)$表示当最大的前缀和不大于$x$时,最小的前缀和最大是多少,答案即为$\min_{x} ...

  6. 实用QPS和TPS高的高效分析方法

    现在主库的MySQL的QPS一直在3K/s左右,想知道其到底执行了那些SQL,或者是那些SQL执行的次数比较多: 腾讯云的后台监控: 开启腾讯云的SQL审计后,下载几分钟SQL日志文件, 下列语句在M ...

  7. 洛谷 P7323 - [WC2021] 括号路径(启发式合并)

    题面传送门 emmmm----怎么评价这个题嘛...感觉纯论算法,此题根本谈不上难题,不过 WC 时候太智障只拿了个 48pts 就走人了.总之,技不如人,甘拜吓疯( 首先要注意到几件事情: 如果 \ ...

  8. Codeforces 979E Kuro and Topological Parity(dp)

    题面传送门 题意:有 \(n\) 个点,每个点要么被涂黑,要么被涂白,要么没有颜色. 现在你要: 给没有颜色的点图上颜色(黑色或白色) 在这 \(n\) 个点中连若干条有向边,可以不连通.但是只能从编 ...

  9. 洛谷 P3704 [SDOI2017]数字表格(莫比乌斯函数)

    题面传送门 题意: 求 \[\prod\limits_{i=1}^n\prod\limits_{j=1}^mfib_{\gcd(i,j)} \] \(T\) 组测试数据,\(1 \leq T \leq ...

  10. Codeforces 505E - Mr. Kitayuta vs. Bamboos(二分+堆)

    题面传送门 首先很显然的一点是,看到类似于"最大值最小"的字眼就考虑二分答案 \(x\)(这点我倒是想到了) 然鹅之后就不会做了/wq/wq/wq 注意到此题正着处理不太方便,故考 ...