centos7下部署Django(nginx+uwsgi+python3+django)
安装各类基础模块
yum install gcc-c++ yum install wget openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel yum install libxml* yum -y install zlib* yum remove lrzsz -y yum install lrzsz -y 关闭防火墙 systemctl stop firewalld
———————————————————————————————-
编译安装python3
mkdir /application/ cd /application/ wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz tar xf Python-3.6.3.tgz -C /usr/local/src/ cd /usr/local/src/Python-3.6.3/ ./configure --prefix=/usr/local/python3 make && make install 将export PATH=/usr/local/python3/bin:$PATH粘贴到/etc/profile末尾 source /etc/profile 给python3安装django和uwsgi以及配置启动项目的xml文件 注:如果出现一片红,那就多执行几遍 pip3 install django pip3 install uwsgi 查看安装了哪些包 pip3 freeze or pip list 挂软链接 ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi3
————————————————————————————————-
uwsgi配置
上传项目目录 cd /application/ mkdir 项目 cd 项目,上传项目 runserver测试 python3 项目目录/manage.py runserver 10.0.0.8:80 mkdir script cd script vim uwsgi.ini [uwsgi] # 项目目录 chdir=/application/opt/yb # 启动uwsgi的用户名和用户组 uid=root gid=root # 指定项目的application module=yb.wsgi:application # 指定sock的文件路径 socket=/application/opt/script/uwsgi.sock # 启用主进程 master=true # 进程个数 workers=5 pidfile=/application/opt/script/uwsgi.pid # 自动移除unix Socket和pid文件当服务停止的时候 vacuum=true # 序列化接受的内容,如果可能的话 thunder-lock=true # 启用线程 enable-threads=true # 设置自中断时间 harakiri=30 # 设置缓冲 post-buffering=4096 # 设置日志目录 daemonize=/application/opt/script/uwsgi.log ######################################## 启动uwsgi uwsgi --ini uwsgi.ini 关闭uwsgi uwsgi --stop uwsgi.pid 查看uwsgi日志 tail -f /application/opt/script/uwsgi.log
安装nginx
yum install nginx /usr/sbin/nginx ps -ef |grep nginx
nginx配置
>/etc/nginx/nginx.conf
mkdir /etc/nginx/logs
touch /etc/nginx/logs/django.log
touch /etc/nginx/logs/errordjango.log
#nginx配置
worker_processes 8;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#django配置
server {
listen 80;
server_name dh.gcav.me;
access_log /etc/nginx/logs/django.log;
error_log /etc/nginx/logs/errordjango.log;
charset utf-8;
gzip on;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
# 指定项目路径uwsgi
location / {
include uwsgi_params;
uwsgi_connect_timeout 30;
uwsgi_pass unix:/application/opt/script/uwsgi.sock;
}
# 指定静态文件路径
location /static/{
alias /application/opt/yb/static/;
index index.html index.htm;
}
}
#php配置
# server {
# listen 80;
# server_name gcav.me;
# return 301 http://www.gcav.me$request_uri;
# index index.php index.html index.htm;
# }
#
# server {
# listen 80;
# server_name www.gcav.me;
# access_log /var/log/nginx/video.log;
# error_log /var/log/nginx/videoerror.log;
# root /usr/share/nginx/html/video;
# index index.php index.html index.htm;
# location ~ .*\.(php|php5)?$ {
# root /usr/share/nginx/html/video;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# include fastcgi.conf;
# }
# }
#
}
修改静态文件路径
1.将项目的settings.py文件底部添加
STATIC_ROOT = os.path.join(BASE_DIR, "static_all")
2.执行命令生效
python3 manage.py collectstatic
3.修改nginx.conf静态文件路径
# 指定静态文件路径
location /static/{
alias /application/opt/yb/static_all/;
index index.html index.htm;
}
4.重启服务
启动nginx
/usr/sbin/nginx -t /usr/sbin/nginx
查看nginx日志
tail -f /etc/nginx/logs/django.log
关闭uwsgi和nginx
uwsgi --stop uwsgi.pid /usr/sbin/nginx -s stop
创建admin
cd 到项目目录下创建admin python3 manage.py migrate 创建admin超级用户 python3 manage.py createsuperuser python3 manage.py collectstatic --noinput
连接数据库
编辑app目录下__init__.py文件
import pymysql
pymysql.install_as_MySQLdb()
修改settings.py文件中的DATABASES
django.db.backends.postgresql 连接 PostgreSQL
django.db.backends.mysql 连接 mysql
django.db.backends.sqlite3 连接 sqlite
django.db.backends.oracle 连接 oracle
若是要连接mysql之类的,需要账户密码的,连接配置应该这样写:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '库名',
'USER': '用户名',
'PASSWORD': '密码',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
第一个命令:创建迁移文件
python3 manage.py makemigrations
第二个命令:同步到数据库
python3 manage.py migrate
更改数据库编码为utf8
mysql.cnf存在于mysql的安装目录下或/etc/下在my.cnf或my.ini下找到[mysqld], 在其下方添加一行: character_set_server=utf8 然后保存退出, 并重启mysql服务即可。