centos7 django项目简单部署

本文详细介绍了在CentOS7系统中部署Django项目的步骤,包括安装Django和MySQL客户端,创建并运行项目,解决sqlite3版本不匹配、数据库引擎配置错误等问题,以及设置开机自启动和后台运行项目的方法。同时,文中还提供了针对DisallowedHost和数据库连接错误的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值