1.工作原理
web客户端(浏览器)<-->Nginx<-->UWSGI(处理动态网页)<-->Django
2.软件版本
Django==2.0.2
Python==3.6
UWSGI==2.0.16
Nginx == 1.10.3
3.小项目梗概
部署过程
1.阿里ECS安全组配置
入方向开放80/80 8000/8001端口,权限为0.0.0.0/0
2.软件安装
①apt-get
阿里的ECS如果是Ubuntu系统的话,貌似需要apt-get update之后才能用(不知道为什么.......)
②pip
sudo apt-get install python3-pip
sudo pip3 install --upgrade pip
安装完了之后还可以顺手更新一下pip
③uwsgi
sudo pip3 install uwsgi
安装速度相对慢一些
④django
sudo pip3 install django==2.0.2
⑤项目文件
笔者用xftp上传到服务器
3.配置setting.py文件
设置ALLOWED_HOSTS为
ALLOWED_HOSTS = ["*"]
设置DEBUG = False
DEBUG = False
在末尾加上这两行
STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR,'static')
4.配置Uwsgi
/home/lmc/apa(项目目录)下新建两个文件,apa_uwsgi.ini,uwsgi_params
内容如下,其中uwsgi_params的内容是死的,可以从官网上下载
uwsgi.ini
[uwsgi] chdir = /home/lmc/apa #项目目录 module = apa.wsgi #项目的wsgi模块(wsgi.py) master = true processes = 10 #同时开启的进程数 socket = :8001 #和nginx通信的端口 chmod-socket = 666 #socket的权限 vacuum =true #伴随退出环境
uwsgi_params
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 REMOTE_ADDR $remote_addr; uwsgi_param REMOTE_PORT $remote_port; uwsgi_param SERVER_ADDR $server_addr; uwsgi_param SERVER_PORT $server_port; uwsgi_param SERVER_NAME $server_name;
5.配置Nginx
在项目目录下新建一个文件apa_nginx.conf
apa_nginx.conf
upstream django{ server 127.0.0.1:8001; } #django的数据流,注意端口8001,与前面uwsgi.ini中设置的一致 server{ listen 80;#监听80端口,HTTP一般都是这个端口,HTTPS另外再说 server_name xxx.xxx.xxx.xxx; #这里如果有域名就写域名,没有写阿里ECS公网ip地址 charset utf-8; client_max_body_size 75M; location /static { alias /home/lmc/apa/static; #这个很重要,关系到静态文件的是否能够正确传输,项目下python3 manage.py collectstatic可便捷创建static文件 } location / { uwsgi_pass django; #交给django处理 include /home/lmc/apa/uwsgi_params; #参数表:使用uwsgi_params } }到这里还不够,还要把apa_nginx.conf交给nginx才行
把/etc/nginx/sties-enabled里的default删了(一个软连接而已)
然后把建立一个和/home/apa/apa_nginx.conf的软连接(实时保持内容一致)
(sudo) cd /etc/nginx/sites-enabled (sudo) rm default (sudo) ln -s /home/lmc/apa/apa_nginx.conf
重新加载nginx
(sudo) /etc/init.d/nginx reload
应该显示OK,否则用nginx -t检查一下语法错误
不出意外的话,这时候直接用浏览器输入域名或者IP地址,应该就是这个效果
6.收集静态文件
在项目下执行python3 manage.py collectstatic
会发现多了一个叫static的文件夹,而且你html文件里所需的静态文件都这正是上面apa_nginx.conf里需求的
7.测试
uwsgi --ini /home/lmc/apa/uwsgi.ini
这时网页应该能够正常访问了
8.设置uwsgi随系统启动并且后台运行
应该发现了,uwsgi不能退出,一退出就无法访问,但是不退出又没法干别的事情而且SSH连接不能关闭,解决办法之一是设置uwsgi开机启动。
(sudo) vim /etc/rc.local
在exit 0上面添上这么一句话:
uwsgi --ini /home/lmc/apa/uwsgi.iniOK,大工告成