Django+umsgi+nginx 服务器部署

Django项目部署

虚拟环境

virtualenv env  --python=python3.7#虚拟环境
source env/bin/activate 
pip install -r requirements.txt

Django数据库配置+静态文件收集+管理员建立
1)进入Django项目下,同步并创建数据库,执行:

cd /home/django_project/
python manage.py makemigrations
python manage.py migrate

注意:如果出错了,首先检查models.py 里面是不是有什么错误,包括在第一行设置UTF-8编码方式,因为我发现它有时也会出现这种问题!再检查settings.py 关于连接部分的设置对不对,最后检查是不是3306端口没打开!一般都是这几个问题。

  1. 建立后台超级用户:
    python manage.py createsuperuser
    启动自带的服务器,测试是否可以正常运行!(此时settings.py 中的DEBUG = False)输入:
python manage.py runserver 8001

提醒:如果无法访问,是因为默认8000端口关闭了,打开它是在阿里云配置安全组里面,自己去找找。

而打开端口后出现:Bad Request (400),是因为我们之前ALLOWED_HOSTS里面只添加了域名,不过如果按照教程一步一步来的,没有必要测试,我这边启动时也没报错,所以判断是完美的。不管它,CTRL+Z 强制退出!并清理8000端口相关联的进程。

fuser -k 8000/tcp
  1. 同步静态文件:
python manage.py collectstatic

此时项目下的settings.py 中的STATIC_ROOT 后面的文件夹应该是'static' .


uwsgi.png

Uwsgi 安装与配置

pip install uwsgi # 安装

uwsgi.py文件配置

# 注意,在 Windows 上更改此文件时一定确保编码为 UTF-8
[uwsgi]
socket = 127.0.0.1:8099
# uwsgi 启动时所使用的地址与端口

# 指向网站目录
chdir = /data/django_project/

# python 启动程序文件
wsgi-file = HttpRunnerManager/wsgi.py
module = django_app2.wsgi:application

# 手动执行 uwsgi --reload /data/uwsgi_logs/django-master.pid 重启
pidfile = /data/uwsgi_logs/django-master.pid

logto = /data/uwsgi_logs/20181031.log

max-requests=1000

# 当文件改变时重启
# touch-reload = /data/django_project

virtualenv = env

pythonpath = .

# 不允许自动更新
# py-autoreload=2

# python 程序内用以启动的 application 变量名
callable = application

# 处理器数
processes = 5
workers = 4

# 设置“harakiri ”的超时
harakiri = 60

enable-threads = true #允许用内嵌的语言启动线程。这将允许你在app程序中产生一个子线程

# 线程数
threads = 3

master = true

#状态检测地址
stats = 127.0.0.1:9190

uwsgi 服务启动、部署

uwsgi uwsgi.ini # 启动nginx服务,需要使用非root账户、虚拟环境 
uwsgi /data/django_project/uwsgi.ini -d /data/uwsgi_logs/django_uwsgi.log   # 启动、并指定日志文件
uwsgi --reload /data/uwsgi_logs/django-master.pid  # 重载
ps -ef|grep uwsgi # 查看进程

nginx配置及启动

server {
    listen      80;
    listen     [::]:80;
    server_name blkid.cn;
    root /data/django_project;
    index templates/login.html;

    access_log  /data/nginx_logs/django_nginx.access.log;
    error_log   /data/nginx_logs/django_nginx.error.log;

    location /static {
        #autoindex on;
        alias /data/django_project/static;
    }

    location / {
        uwsgi_pass 127.0.0.1:8099;
        include uwsgi_params;
        uwsgi_param UWSGI_PYHOME /data/django_project/env;
        uwsgi_param UWSGI_CHDIR  /data/django_project;

    }

}

nginx启动
注意服务的端口好与uwsgi一致

sudo vim /usr/local/nginx/conf/vhost/runner.haibian.conf
sudo /usr/local/nginx/sbin/nginx -s reload
websocket4redis.png

你可能感兴趣的:(Django+umsgi+nginx 服务器部署)