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端口没打开!一般都是这几个问题。
- 建立后台超级用户:
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
- 同步静态文件:
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