环境配置
- Centos 7
- Python 3.6.5
- Virtualenvwrapper 4.8.2
- Django 2.0.5
- Mysql 5.7.22
- Ngnix 1.12.2
- Gunicorn 19.8.1
注:这并不是什么教程
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
下
具体见此
Mysql配置
安装教程点此,比较靠谱
中文乱码
问题可能出现在两个地方,一个是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虚拟环境下安装的,所以一般在/<USER>/.virtualenvs/<PYTHON ENV>/bin/gunicorn
,如果不是这样的话终极解决方案是把要输入 gunicorn
的地方全改成 /<USER>/.virtualenvs/<PYTHON ENV>/bin/gunicorn
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
附录
三篇配置教程,仅供参考