python-django 项目部署,不难!

前言

用django开发项目的时候,都是用debug=True模式运行,所以静态文件都是django去处理。在实际项目中,还是需要多线程以及专门处理静态文件的服务来配合,才能提升整个系统的性能。因此,可以选用nginx+gunicorn+django的架构进行部署。

django项目结构

使用命令python startproject mysite创建项目,然后进入mysite文件夹 python manager.py startapp blog创建自己的应用,就是下面的目录结构了,然后创建static目录来存放静态文件,创建templates来存放模板文件。

mysite/

├── blog

│ ├── admin.py

│ ├── apps.py

│ ├── __init__.py

│ ├── migrations

│ ├── models.py

│ ├── __pycache__

│ ├── tests.py

│ ├── urls.py

│ └── views.py

├── db.sqlite3

├── manage.py

├── mysite

│ ├── __init__.py

│ ├── __pycache__

│ ├── settings.py

│ ├── urls.py

│ └── wsgi.py

├── static

│ └── 1.img

└── templates

└── blog

配置模板和静态文件路径

修改配置文件mysite/mysite/settings.py

找到TEMPLATES中的DIRS的key,在列表里面添加templates的路径,有因为工作目录是mysite,所以直接写相对路径即可。

在同一个配置文件里面找到STATIC_URL,在钱见加上STATICFILES_DIRS的设置,列表里面填写静态文件的路径即可。

gunicorn

直接使用pip install gunicorn就可以安装了。

cd ~/mysite

gunicorn -w 3 -b 127.0.0.1:8080 mysite.wsgi:application

这样子gunicorn就跑起来了,直接访问127.0.0.1:8000就可以看到自己的网站了。

-w 是指开启几个进程进行处理

-b 是指绑定的监听IP及端口

mysite.wsgi:application,前半截很容易理解,就是调用了mysite下的wsgi.py,而后面的application就是wsgi.py里面定义的一个对象,所以是固定的。

但是,你会发现静态文件都访问不到了。这时候就需要nginx

nginx配置

在nginx配置文件nginx.conf,修改对应的server就可以了。

server{

listen 80;监听的端口

location / {

proxy_pass http://127.0.0.1:8000;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

}

# location 顾名思义,定位,就是当访问 / 的时候,nginx会将请求转给本地的8000端口,而后面的设置都是一些基本的配置,可以直接用

location /static {

alias /home/project/mysite/static;

}

# 这个就是配置静态文件的地方,要用绝对地址,对应最开始的目录形式,假设project就在/home/project/mysite下面,那么这样配置就可以的了.

}

配置完以后启动nginx,然后直接访问127.0.0.1就可以访问到自己的网站。

人生苦短,我用Python!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180521A1NVSC00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券