人生苦短 我用python
开始愉快的享(代)受(码)时间:
一、前言
搭建项目部署前的相关环境配置 具体请参照部署Django+uwsgi+nginx项目前 搭建必要环境
二、必要的前提
1) 准备知识
django 一个基于python的开源web框架,请确保自己熟悉它的框架目录结构。
uWSGI 一个基于自有的uwsgi协议、wsgi协议和http服务协议的web网关
nginx 常用高性能代理服务器
2)基本原理:
- 首先客户端请求服务资源,nginx作为直接对外的服务接口,接收到客户端发送过来的http请求,会解包、分析,如果是静态文件请求就根据nginx配置的静态文件目录,返回请求的资源,如果是动态的请求,nginx就通过配置文件,将请求传递给uWSGI;
uWSGI 将接收到的包进行处理,并转发给wsgi,wsgi根据请求调用django工程的某个文件或函数,处理完后django将返回值交给wsgi,wsgi将返回值进行打包,转发给nginx,nginx最终将返回值返回给客户端(如浏览器)。
三、 修改本地Django项目配置 并上传(假设项目名为TestDjangoProject 所在路径/home/linux/TestDjangoProject)
1) 请将项目的settings.py的相关字段按如下修改:
DEBUG = False
ALLOWED_HOSTS = ["*"]
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
注意: (STATIC_ROOT必须设置,而且不能和STATICFILES_DIRS共存 !!!)
2) 收集admin后台静态文件(如果不收集,将来访问linux的blog的admin将没有样式)
在pycharm终端terminal执行<python manage.py collectstatic>命令以收集静态文件
3) 使用工具 **FileZilla ** 将项目上传(一般使用FileZilla上传项目,也可使用scp命令远程同步)
4) 在远程终端 进入项目 为你的项目创建一个uwsgi.ini初始化配置文件,进入文件,编辑写入下面的代码 然后退出并保存(请参照个人项目做相应修改)
[uwsgi]
# Django-related settings
socket = 127.0.0.1:9001
# 项目绝对路径
chdir = /home/linux/TestDjangoProject
# Django的wsgi文件相对路径
wsgi-file = TestDjangoProject/wsgi.py
# process-related settings
# master
master = True
# 最大进程数,一般为cpu的个数
processes = 4
# 线程数
threads = 2
#设置此参数,有一个主进程
master=True
#守护进程的方式运行,log日志存在此log文件里
daemonize=/var/log/uwsgi/TestDjangoProject.log
#主进程id写入文件里
pidfile= /var/log/nginx/uwsgi.pid
# ... with appropriate permissions - may be needed
# chmod-socket = 664
#退出时,清理环境
vacuum = True
reload-mercy = 10
max-requests = 5000
limit-as = 512
buffer-size = 30000
5) 进入etc/nginx/conf.d文件夹下创建django_nginx.conf文件并写入以下代码(请参照个人项目做相应修改)
server {
# 监听端口号(填写自己的监听端口)
listen 8000;
server_name 127.0.0.1
access_log /var/log/nginx/myblog_access.log;
error_log /var/log/nginx/myblog_error.log;
charset utf-8;
client_max_body_size 75M;
#项目的绝对路径(填写自己项目的绝对路径)
root /home/linux/TestDjangoproject;
location / {
include uwsgi_params;
# 填写自己代理服务器要访问的端
uwsgi_pass 127.0.0.1:9001;
uwsgi_read_timeout 2;
}
location /static/ {
expires 30d;
autoindex on;
add_header Cache-Control private;
# 静态文件的绝对路径
alias /home/linux/MyBlog/static/;
}
}
6) 执行命令<service nginx restart>重启nginx服务
7) 在项目目录下执行命令<uwsgi --ini uwsgi.ini>启动项目
四、
自此可以通过 外部访问项目,可以通过域名或IP:端口号实现。如果出现页面则表示成功!!