经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python » 查看文章
nginx+uwsgi+djangos部署项目完整
来源:cnblogs  作者:冬冬杨  时间:2018/10/23 9:24:24  对本文有异议

1、基本信息

Linux 版本:SentOS7.4

Python 版本:3.7.1

2、下载 uWSGI

  1. pip3 install uwsgi

uwsgi 主要的任务是座位分发路由的服务器。

先写一个测试文件,测试 uwsgi 是否可以正常使用。

  1. # test.py
  2. def application(env, start_response):
  3. start_response('200 OK', [('Content-Type','text/html')])
  4. return [b"Hello World"] # python3
  5. #return ["Hello World"] # python2

3、测试

然后用 uwsgi 启动测试文件

  1. uwsgi --http :8000 --wsgi-file test.py

然后访问 127.0.0.1:8000 端口,即可收到 hello word 。证明 uwsgi 启动成功。

重点来了:用 uwsgi 使用配置文件启动 Django 项目。

4、启动 Django

先不要急,先用 Django 项目自带的 wsgi.py 文件启动一下 django 试试。

  1. uwsgi --http :8000 --wsgi-file djangp/wsgi.py

访问 127.0.0.1:8000

OK,启动成功。

接下来的任务就是写配置文件了,可以设置更加详细的参数。

文件 wsgi.ini:

  1. [uwsgi]
  2. # django 相关配置
  3. # 必须全部为绝对路径
  4. # 项目执行的端口号
  5. # http = :8000 # 用 uwsgi 启动项目用 http
  6. socket = :8001 # 用 nginx 启动用 socket
  7. # 项目路径
  8. chdir = 项目路径
  9. # Django 的 wsgi 文件的相对路径
  10. # wsgi-file = 项目路径/wsgi.py
  11. module = mysite.wsgi
  12. # python 虚拟环境的 路径
  13. home = /root/pythonEnvs/virtualenvName
  14. # 进程相关设置
  15. # 主进程
  16. master = True
  17. # 最大数量工作进程
  18. processes = 4
  19. # socket文件地址,绝对路径(不用手动创建,额nginx链接后自动创建)
  20. #socket =
  21. # 设置socket权限
  22. #chmod-socket=666
  23. # 守护进程的方式运行,log日志存在log文件里
  24. deamonize = 项目路径/uwsgi.log
  25. # 退出时清理环境
  26. vacuum=True

现在用这个文件通过

  1. uwsgi --ini wsgi.ini

就可以启动 django 项目了。

关于其中的 httpsocket 字段,当只用 uwsgi 启动 django 项目的时候,用 http 字段,因为是通过 http 请求服务器的。

如果还要使用 nginx 就使用 socket 字段。

好啦,现在 uwsgi 也配置好了。

接下来配置 nginx

5、配置 nginx

首先下载 nginx

  1. yum install nginx

下载成功后执行 nginx 命令直接启动。

然后访问本地地址可以看到 nginx 的欢迎页面。

OK,接下来接入 nginx 就可以了,先来写 nginx 的配置文件。

  1. events {
  2. worker_connections 1024;
  3. }
  4. http {
  5. upstream django {
  6. server 127.0.0.1:8001;
  7. }
  8. server {
  9. # the port your site will be served on
  10. listen 8000 ; # 端口号
  11. # the domain name it will serve for
  12. server_name 0.0.0.0; # 服务器 ip 或是域名
  13. charset utf-8;
  14. # Django media
  15. location /media {
  16. alias 项目路径/media; # 媒体文件所在文件夹
  17. }
  18. location /static {
  19. alias 项目路径/static; # 静态文件所在文件夹
  20. }
  21. # max upload size
  22. client_max_body_size 75M; # adjust to taste
  23. # Finally, send all non-media requests to the Django server.
  24. location / {
  25. uwsgi_pass django;
  26. include /uwsgi_params; #uwsgi_params 路径
  27. }
  28. }
  29. }

其中用到一个 uwsgi_params 文件,这个文件是用来链接 nginx 和 uwsgi 的。

自己建一个文件就可以,内容如下:

  1. uwsgi_param QUERY_STRING $query_string;
  2. uwsgi_param REQUEST_METHOD $request_method;
  3. uwsgi_param CONTENT_TYPE $content_type;
  4. uwsgi_param CONTENT_LENGTH $content_length;
  5. uwsgi_param REQUEST_URI $request_uri;
  6. uwsgi_param PATH_INFO $document_uri;
  7. uwsgi_param DOCUMENT_ROOT $document_root;
  8. uwsgi_param SERVER_PROTOCOL $server_protocol;
  9. uwsgi_param REQUEST_SCHEME $scheme;
  10. uwsgi_param HTTPS $https if_not_empty;
  11. uwsgi_param REMOTE_ADDR $remote_addr;
  12. uwsgi_param REMOTE_PORT $remote_port;
  13. uwsgi_param SERVER_PORT $server_port;
  14. uwsgi_param SERVER_NAME $server_name;

6、启动项目

先来部署一下静态文件,如果你的 app 下有多个静态文件的话(我没用到)。

  1. python manage.py collectstatic

STATIC_ROOT 一定要设置好。

启动 nginx:

  1. nginx -c 配置文件地址

配置文件地址一定要写绝对路径。

启动 uWSGI:

  1. uwsgi --ini wsgi.ini

OK,到这里 nginx+uWSGI+Django 项目部署就完成啦。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号