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服务即可。