centos系统下Django+Ngnix+Gunicorn+Mysql部署过程中遇到的坑
作者:快盘下载 人气:python虚拟环境配置
Virtualenvwrapper安装失败
试试这条命令 :-p
sudo pip install virtualenvwrapper --upgrade --ignore-installed six
简答解释就是包six版本有点低,详细解释点此
找不到virtualenvwrapper.sh文件
按照官方文档上说是安在 /usr/local/bin/virtualenvwrapper.sh,但是并没有,每个系统的情况不一样,使用如下命令
pip uninstall virtualenvwrapper
不用担心,这并不会立刻移除virtualenvwrapper,会输出以下内容,再输入n取消安装
Uninstalling virtualenvwrapper-4.8.2: /usr/bin/virtualenvwrapper.sh /usr/bin/virtualenvwrapper_lazy.sh /usr/lib/python2.7/site-packages/virtualenvwrapper-4.8.2-py2.7-nspkg.pth /usr/lib/python2.7/site-packages/virtualenvwrapper-4.8.2.dist-info/DESCRIPTION.rst /usr/lib/python2.7/site-packages/virtualenvwrapper-4.8.2.dist-info/INSTALLER /usr/lib/python2.7/site-packages/virtualenvwrapper-4.8.2.dist-info/METADATA ...... Proceed (y/n)?
看第一行,这下知道在哪里的吧,对于我的centos7来说是在 /usr/bin/virtualenvwrapper.sh 下
具体见此https://stackOverflow.com/questions/12647266/where-is-virtualenvwrapper-sh-after-pip-install/41676706#41676706
mysql配置
安装教程https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-centos-7 ,比较靠谱
中文乱码
问题可能出现在两个地方,一个是Django的配置文件中,还有一个就是Mysql的配置出问题
Django数据配置
找到project的settings.py,修改这两个地方,注意,对于较新版本的django,把zh-cn改成了zh-Hans
LANGUAGE_CODE = 'zh-Hans' TIME_ZONE = 'Asia/Shanghai'
Mysql数据配置
先登录到你的mysql中,执行如下命令
SHOW VARIABLES LIKE 'character_set_%';
发现大多数行的值都不是utf-8,而是latin1
那么,找到mysql的配置文件my.cnf
对于 MySQL 5.7+,执行以下命令,别的情况见此
mysqladmin --help | grep 'Default options' -A 2
输出的第二行就是文件的所在
Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
打开此文件 /etc/my.cnf
添加如下内容如下,别的地方别修改
[mysqld] collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' character-set-server = utf8 ... [mysql] default-character-set=utf8
改完之后记得重启mysql服务
sudo systemctl restart mysqld
gunicorn找不到 django.core.xxx
找到gunicorn的所在地
which gunicorn
应为是在python虚拟环境下安装的,所以一般在/
Django 静态文件404
在production模式下Django并不支持静态文件的处理,这一切都要交给一个服务器处理,比如此处的nginx,千万要记住!!!!!!
Nginx无法正常启动
(ps1:centos7安装Nginx的教程见此,比较靠谱)
(ps2:默认相关防火墙已开启)
在输入
sudo systemctl start nginx sudo systemctl status nginx
发现其启动失败,则多半是你配置文件写错的结果,输入一下命令排错
sudo nginx -t
修改完之后记得刷新哦
sudo service nginx restart #或者 sudo service nginx reload
加载全部内容