环境准备:
安装python3、nginx、uwsgi,数据库使用mysql。配置域名,下载证书文件
目录说明:项目放置在root/test路径下,项目名称为project
创建uwsgi.ini,放置于项目根目录root/test/project
1.uwsgi配置:
# uwsgi.ini 配置文件
[uwsgi]
http = 0.0.0.0:8080
# Django 项目执行端口号
socket = /root/test/uwsgi.sock
# Django 项目根目录
chdir = /root/test/paoject
# Django 的wsgi文件 :application
module = project/wsgi.py:application
# 允许主进程存在
master = true
# 最大进程数
processes = 5
# 日志文件,我这里设置为yes
daemonize=yes
# 当服务器退出时自动清理环境
vacuum = true
# wsgi所在目录,跟django项目的settings文件同级
wsgi-file = /root/test/project/project/wsgi.py
pidfile=/root/test/project/uwsgi.pid
2.nginx配置(域名修改为自己的域名,证书文件填写绝对路劲):
user root;
#worker_processes auto;
#pid /run/nginx.pid;
#include /etc/nginx/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
# 新增
upstream uwsgi {
server 0.0.0.0:8080;
}
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
# 新增
server {
listen 80;
# 域名,.表示映射一级域名和二级域名,多个使用空格分隔
server_name 填写你的域名;
# http请求重定向至HTTPS
return 301 https://域名$request_uri;
}
server {
listen 443 ssl;
# server_name 域名/ip
server_name 域名;
# 证书文件
ssl_certificate ***.pem;
# 秘钥文件
ssl_certificate_key ***.key;
# 协议
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
charset utf-8;
# 日志文件位置
access_log /var/log/nginx/nginx-uwsgi-https.log;
location / {
proxy_pass http://uwsgi;
}
location /static_file {
alias /root/test/project/static_file;
}
}
}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}
3.Django中settings配置(我这里是将静态文件全部放进项目目录下的static_file文件中):
STATIC_URL = '/static_file/'
STATICFILES_DIRS = [
(os.path.join(BASE_DIR, 'static')),
os.path.join(BASE_DIR, 'templates'),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static_file')收集静态文件(项目路径下输入):python3 manage.py collectstatic
启动:
启动uwsgi(uwsgi.ini目录里启动):uwsgi --ini uwsgi.ini
启动nginx:sudo nginx
停止:killall -9 uwsgi
killall -9 nginx
部署常用命令
检查nginx配置语法错误(正确返回OK):nginx -t -c nginx.conf
日志文件:nginx报错去var/log/nginx路径下查看,服务端报错查看uwsgi的日志我上面是配置在项目的yes文件中,具体错误具体分析
前后端不分离部分需要在前台页面导入静态文件
{% load static %}4.其他设置:
允许所有域名:ALLOWED_HOSTS = ["*"]
时区设置(这里不设置会比正常晚6小时):TIME_ZONE = 'Asia/Shanghai'
数据库设置
# 引入数据库
import pymysql
# 注册数据库
pymysql.install_as_MySQLdb()
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 数据库名,
'user': user,
'PASSWORD': pwd, # 密码
'HOST': 地址, # IP
'PORT': '3306', # 端口,mysql是3306
}
}版权声明:本文为m0_55661258原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。