django部署

利用Nginx部署django网站

django部署

  • 服务器: Centos
  • 工具:XShell

系统配置

系统环境

  1. yum update :更新系统
  2. yum install yum-utils :安装工具与开发相关组件
  3. yum groupinstall development : 打包安装开发相关组件

Python 环境

  1. yum install https://centos7.iuscommunity.org/ius-release.rpm 软件资源库
  2. yum install python36u :安装Python3.6
  3. yum install python36u-pip :安装Python3.6的pip包
  4. yum install python36u-devel
  5. 修改默认打开的python版本

centos默认的python版本是python2.7,如果要使用3.6版本,可以用python3.6来运行,也可以直接修改默认的python版本
django部署

  • vi ~/.bashrc
  • 添加 alias python='/usr/bin/python3.6'
  • Esc:wq 保存退出
    -. .bashrc 应用修改
    django部署

上传站点配置虚拟环境

liunx命令

  1. ls查看当前目录下的文件
  2. cd进入某个目录
  3. mkdir 创建目录

python 导入导出依赖包

  1. pip freeze > requirements.txt
    导出所依赖的包到requirements.txt
  2. pip install -r requirements.txt 安装requirements.txt中的所以库

上传站点

  1. 选择ftp工具上传
  2. 使用git上传

配置虚拟环境

  1. python3.6 -m venv venv_myspace创建虚拟环境
    django部署

  2. source venv_myspace/bin/activate**虚拟环境

  3. pip install -r requirements.txt导入站点的依赖库
    django部署

Web 服务器

uwsgi 安装使用

  • pip3 install uwsgi 安装uwsgi网关接口
  • 测试网关接口
    • 使用vi test.py创建测试代码
      django部署

    • 使用uwsgi --http :8000 --wsgi-file test.py运行测试文件

    测试
    django部署
    如果没打开不开上述页面,请检查服务器是否启用8000端口
    django部署

Nginx安装启动

-. 安装:yum install nginx
-. 操作

  • 启动 :systemctl start nginx.service “Centos 7系统”

    Centos 6及以下版本:service start nginx

  • 重启 :systemctl restart nginx.service

  • 停止 :systemctl stop nginx.service

  • 安装完成后在/etc/nginx/nginx.conf 文件中可以看到一个配置节inxlude /etc/nginx/conf.d/*.conf,它的含义是导入/etc/nginx/conf.d/下的所有.conf文件。这样我们在配置nginx的时候就不用去操作nginx.conf主文件,保证了主配置文件的完整性也给我们提供了最大的灵活性。django部署

Nginx特定站点配置

  1. /etc/nginx/目录下有一个uwsgi_params配置文件,这个文件是nginx于uwsgi衔接的一个主要配置文件,我们需要将这个文件拷贝到站点跟中 cp /etc/nginx/uwsgi_params /站点根/uwsgi_params
    django部署
  2. 创建站点的Nginx配置文件在/etc/nginx/conf.d/
    django部署
upstream django {
    server unix:///var/run/myspace.sock;   # 指定uwsgi的sock文件所有动态请求就会直接丢给他
}

server {
    listen 80;   # 监听的端口
    server_name    jung.wang;  # 配置域名
    charset        utf-8;   # 字符集

    client_max_body_size    75M;  # 客户端请求发送的内容最大不要超过多少M

# 指定静态文件路径
    location /static {
        alias    /var/www/MySpace/static;
    }

# 指定项目路径uwsgi
# 这个location就和咱们Django的url类似,
    location / {
        uwsgi_pass     django;
        include        /var/www/MySpace/uwsgi_params;  # 导入一个Nginx模块他是用来和uWSGI进行通讯的
    }
}

uwsgi特定站点配置

  1. 在站点下创建.ini的uwsgi配置文件
    vi myspace.ini
[uwsgi]

chdir         = /var/www/MySpace  # 指定项目的根目录
module        = MySpace.wsgi   # 指定项目的wsgi
home          = /var/www/venvs/venv_myspace   # 指定虚拟环境的位置

master        = true  # 是否主进程
processes     = 20   # 工作进程

socket        = /var/run/myspace.sock  # socket 在程序运行时会自动创建
chmod-socket  = 666  # socket文件权限
vaccum        = true  # 每次启动时清除之前配置

2.在项目下的settings.py中配置ALLOWED_HOSTS(允许的主机)
ALLOWED_HOSTS = ['118.***.***.156','junh.wang',]

注意检查是否关闭调试模式DEBUG = False

3.因为新增了.ini配置文件,所以要重启ngnix
4.在虚拟环境中运行uwsgi --ini /var/www/MySpace/myspace.ini

5.如果站点访问有问题,可以查看nginx的日志文件,查询问题原因cat /var/log/nginx/error.log