centos7 django项目简单部署

centos7 django项目简单部署

1、安装django、mysql客户端
pip3 install django== 3.1.4
python3进入交互模式,引入django模块,成功则安装成功
pip3 install pymyql== 1.0.2

2、创建django项目
django-admin startproject mysite
报错:-bash: django-admin: command not found
原因:find / -name django-admin发现缺少软连接
解决:ln -s /usr/local/python3/bin/django-admin /usr/bin/django-admin

3、运行django项目
cd /root/mysite
python3 manage.py runserver 10.128.17.91:8000

报错:django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).
原因:sqlite3版本太低,与django版本不匹配
解决:升级sqlite3
wget https://www.sqlite.org/2019/sqlite-autoconf-3270200.tar.gz
tar -zxvf sqlite-autoconf-3270200.tar.gz
cd sqlite-autoconf-3270200
./configure
make && make install
# 检查新安装sqlite3版本
/usr/local/bin/sqlite3 --version
# 检查旧的sqlite3版本
/usr/bin/sqlite3 --version
# 备份旧的sqlite3
mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
# 设置软连接
ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
# 查看sqlite3版本
sqlite3 --version
# 设置开机自启动
echo “/usr/local/lib” > /etc/ld.so.conf.d/sqlite3.conf
ldconfig
# 检查Python sqlite3版本
python
import sqlite3
sqlite3.sqlite_version

报错:django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higher
原因:可能是不支持新的版本
解决:更换sqlite3 为pysqlite3
vim /usr/local/python3/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py #报错文件
# from sqlite3 import dbapi2 as Database # 注释第14 行
from pysqlite3 import dbapi2 as Database # 将默认数据库获取位置改为 pysqlite3
from pysqlite3 import dbapi2 as Database

报错:DisallowedHost at /
Invalid HTTP_HOST header: ‘10.128.19.167:8000’. You may need to add u’10.128.19.167’ to ALLOWED_HOSTS.
解决:修改django配置文件,添加允许IP
vim /root/mysite/mysite/settings.py
ALLOWED_HOSTS = [‘*’]

报错:django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
DATABASES = {
‘default’: {
# ‘ENGINE’: ‘django.db.backends.sqlite3’,
‘ENGINE’: ‘django.db.backends.mysql’,
# ‘NAME’: BASE_DIR / ‘db.sqlite3’,
‘NAME’: ‘switch’,
# ‘HOST’: ‘10.128.17.91’,
‘HOST’: ‘’,
‘PORT’: ‘3306’,
‘USER’: ‘root’,
‘PASSWORD’: ‘helloxxxx’,
}
}
原因:设置了django数据库引擎为mysql后,django默认使用的是mysqlclient客户端(加载python中的mysqlclient模块),然而我没下载,下载的是pymysql
解决:修改settings.py同级目录下的__init__.py文件,指定使用pymysql客户端
import pymysql
# 告诉django使用pymysql模块连接mysql数据库,如果django数据库引擎为mysql,默认会使用mysqlclient模块(接口驱动)连接mysql数据库
pymysql.install_as_MySQLdb()

4、维护django
后端运行:nohup python3 /root/pycode/switch/manage.py runserver 10.128.17.91:8000 &
关闭进程:netstat -tulpn
netstat -tulpn | grep 8000
kill -9 pid

你可能感兴趣的:(coding,python)