Linux 版本:SentOS7.4html
Python 版本:3.7.1python
pip3 install uwsgi
uwsgi 主要的任务是座位分发路由的服务器。linux
先写一个测试文件,测试 uwsgi 是否能够正常使用。nginx
# test.py def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"] # python3 #return ["Hello World"] # python2
而后用 uwsgi 启动测试文件django
uwsgi --http :8000 --wsgi-file test.py
而后访问 127.0.0.1:8000 端口,便可收到 hello word 。证实 uwsgi 启动成功。服务器
重点来了:用 uwsgi 使用配置文件启动 Django 项目。app
先不要急,先用 Django 项目自带的 wsgi.py 文件启动一下 django 试试。dom
uwsgi --http :8000 --wsgi-file djangp/wsgi.py
访问 127.0.0.1:8000socket
OK,启动成功。测试
接下来的任务就是写配置文件了,能够设置更加详细的参数。
文件 wsgi.ini:
[uwsgi] # django 相关配置 # 必须所有为绝对路径 # 项目执行的端口号 # http = :8000 # 用 uwsgi 启动项目用 http socket = :8001 # 用 nginx 启动用 socket # 项目路径 chdir = 项目路径 # Django 的 wsgi 文件的相对路径 # wsgi-file = 项目路径/wsgi.py module = mysite.wsgi # python 虚拟环境的 路径 home = /root/pythonEnvs/virtualenvName # 进程相关设置 # 主进程 master = True # 最大数量工做进程 processes = 4 # socket文件地址,绝对路径(不用手动建立,额nginx连接后自动建立) #socket = # 设置socket权限 #chmod-socket=666 # 守护进程的方式运行,log日志存在log文件里 deamonize = 项目路径/uwsgi.log # 退出时清理环境 vacuum=True
如今用这个文件经过
uwsgi --ini wsgi.ini
就能够启动 django 项目了。
关于其中的 http 和 socket 字段,当只用 uwsgi 启动 django 项目的时候,用 http 字段,由于是经过 http 请求服务器的。
若是还要使用 nginx 就使用 socket 字段。
好啦,如今 uwsgi 也配置好了。
接下来配置 nginx
首先下载 nginx
yum install nginx
下载成功后执行 nginx
命令直接启动。
而后访问本地地址能够看到 nginx 的欢迎页面。
OK,接下来接入 nginx 就能够了,先来写 nginx 的配置文件。
events { worker_connections 1024; } http { upstream django { server 127.0.0.1:8001; } server { # the port your site will be served on listen 8000 ; # 端口号 # the domain name it will serve for server_name 0.0.0.0; # 服务器 ip 或是域名 charset utf-8; # Django media location /media { alias 项目路径/media; # 媒体文件所在文件夹 } location /static { alias 项目路径/static; # 静态文件所在文件夹 } # max upload size client_max_body_size 75M; # adjust to taste # Finally, send all non-media requests to the Django server. location / { uwsgi_pass django; include /uwsgi_params; #uwsgi_params 路径 } } }
其中用到一个 uwsgi_params 文件,这个文件是用来连接 nginx 和 uwsgi 的。
本身建一个文件就能够,内容以下:
uwsgi_param QUERY_STRING $query_string; uwsgi_param REQUEST_METHOD $request_method; uwsgi_param CONTENT_TYPE $content_type; uwsgi_param CONTENT_LENGTH $content_length; uwsgi_param REQUEST_URI $request_uri; uwsgi_param PATH_INFO $document_uri; uwsgi_param DOCUMENT_ROOT $document_root; uwsgi_param SERVER_PROTOCOL $server_protocol; uwsgi_param REQUEST_SCHEME $scheme; uwsgi_param HTTPS $https if_not_empty; uwsgi_param REMOTE_ADDR $remote_addr; uwsgi_param REMOTE_PORT $remote_port; uwsgi_param SERVER_PORT $server_port; uwsgi_param SERVER_NAME $server_name;
先来部署一下静态文件,若是你的 app 下有多个静态文件的话(我没用到)。
python manage.py collectstatic
STATIC_ROOT 必定要设置好。
启动 nginx:
nginx -c 配置文件地址
配置文件地址必定要写绝对路径。
启动 uWSGI:
uwsgi --ini wsgi.ini
OK,到这里 nginx+uWSGI+Django 项目部署就完成啦。