使用宝塔面板快速部署Django项目

本篇内容主要参考:使用宝塔快速部署Django项目
文章,这篇文章在过程有些遗漏和补全的地方,在这里进行补充来做记录
python版本:3.7.2
服务器系统:centos8
django版本:3.0.3

一、服务器安装宝塔面板并进行基础设置

宝塔面板有很多实用的功能,具体可以去宝塔官网查看。我们的服务器使用的是 centos8 的系统,所以安装 linux 免费版的宝塔。

安装方法很简单,远程到服务器,输入命令进行安装即可

# 安装命令
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

中途会有一次确认,按照操作提示输入 y 即可。

安装成功后,控制台会显示出宝塔面板的登录地址、用户名、密码。如下图所示,将内容记录好。

image

进行登录后,会提示推荐安装套件,直接关闭即可。然后点击左侧菜单栏中的面板设置,调整面板的 端口、安全入口、用户名及密码。修改完成后,记得点击最下方的保存。

注:安全入口:是拼接在登录地址之后的。之前系统会自动设置一个随机字符,更改安全入口后,将登录地址中的随机字符换成你更改后的内容。例如:安装后的登录地址为: http://10.10.10.10:8888/f5165b61 修改安全入口的内容为: /btmb 以后宝塔面板的登录地址变为:http://10.10.10.10:8888/btmb

image

二、安装环境包

宝塔的基础设置搞完了,接下来我们安装环境部署的一些必要软件程序:python、nginx、mysql(如果用到了就安装)
注意:这里我们用的是Django3的版本,从Django2.0起就不支持mysql5.5了,所以这里要安装高版本的mysql,推荐mysql5.6

在宝塔左侧菜单栏 点击 软件商店,第一页我们就可以看到nginx,点击安装选择急速安装即可。

image

与此同时,我们选择 宝塔插件 类别,在该类别下 选择 Python项目管理器 进行安装

image

安装成功后,会有一个 首页显示 的开关,我们打开这个开关,记得nginx也要打开这个哦。这个时候 我们在首页就可以看到了,因为后面我们会经常使用,所以最好要展示在首页。

image

接下来,我们该安装 python 了,在首页点击 python项目管理器,会出现一个弹窗,点击版本管理,选择一下你项目开发时使用的 python 版本。我使用的是 python 3.6.5 所以我安装这个版本。

注:python 2.7.5 显示已安装,这是系统自带的,我们不用管他。

image

三、上传项目文件并创建python项目

在上传项目文件的时候,我们需要先配置好项目所有的环境依赖包,所以,在本地开发的时候建议使用虚拟环境,这样我们创建依赖文件的时候,能减少引入一些不必要的包。在本地项目环境目录中(如果是虚拟环境,需要激活虚拟环境再进入项目目录)【django项目目录,即是在manage.py文件所处的路径】输入下方命令

pip freeze > requirements.txt
# 注意当前是 pip 还是 pip3

会生成一个 requirements.txt 文件,里面就会包含我们当前环境下所有的python包。

接下来,打开宝塔面板,点击 文件 ,此时注意路径需要在/www/wwwroot/下

image

点击上传按钮,选择目录,将我们项目的整个目录都上传上来(可以不用上传venv目录,这个是虚拟环境目录,会自动生成)。 我的项目在电脑路径为D:/xzbcx_1.11,此时上传就选择django_test目录。上传弹窗需要加载一会才能展示出文件,之后点击弹窗底部的开始上传,在右上角有一个进度条,等上传完成后就可以关闭该弹窗。

image

项目文件大的话上传时间就会比较长,是的,我上传了三十多分钟。

好了,现在我们开始创建 python 项目。打开首页的 python 项目管理器,点击 添加项目。填充数据:


image.png
  • 项目名称: 自定义就行,你开心就好

  • 路径: 定位到项目目录即可

  • Python 版本: 选择你项目对应的 python 版本

  • 框架: 选择 django

  • 启动方式: uswgi(自测了一下只有uswgi启动方式可行,其他的都没用,添加后服务启动不起来,除非自己去服务器手动启动)

  • 启动文件/文件加: 定位到 wsgi.py 所在的路径

  • 端口: 自定义就行,你开心就好,注意不要和系统端口冲突,设置1024端口号之后的,不然就算你开心也没用。

  • 勾选上 是否安装模块依赖 与 开机启动

点击确定,然后等待创建。

设置配置文件

注意: 选择的框架是 django 的时候,不需要设置

创建成功后,点击配置,增加一行wsgi.py的位置

wsgi-file = 你的文件路径
image

四、创建并同步数据库

在宝塔面板左边菜单选择数据库,然后添加一个数据库:

创建完数据库后,把你项目中的数据库导出然后上传。如果你不从本地同步数据库导入,也可以直接在服务器上根据django规则来重新生成数据库。生成数据库步骤如下:

  • 打开宝塔SSH终端
  • 定位到项目目录
cd /var/www/wwwroot/xxx
  • 进入虚拟环境
source xxx_venv/bin/activate
  • 同步数据库
python manage.py makemigrations
python manage.py migrate

创建完数据库之后,宝塔会自动生成用户名和一个随机密码

为了能连接数据库,这个时候需要把项目中的数据库配置修改一下。进入setting.py文件进行编辑,将下面的NAMEUSERPASSWORD修改成上图中的对应值之后保存。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '数据库名称',
        'USER': '用户名',
        'PASSWORD': '数据库密码',
        'HOST': '',
        'PORT': ''
    }
}

五、检查项目是否运行成功

经过上面的操作之后,项目已经在本地服务器运行起来了,这个时候先检查一下项目运行的状况,是否有报错。

在面板中Python项目管理器 ,点击右侧的日志选项,查看你项目的运行状况,我这边项目的日志如下:

image.png

发现有报错,查阅资料发现是Django2.2之后内部的一个版本限制在作怪,相关文章在这里查看,解决方案如下:

  • 找到 venv(虚拟环境路径)/lib/python/site-packages/django/db/backends/mysql/base.py
  • 注释掉下面两行代码
version = Database.version_info
# if version < (1, 3, 13):
#     raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
  • 重启python项目

继续观察日志,直到没有新的报错日志出现就说明项目运行成功了!

五、关闭DEBUG模式,调整静态设置

现在我们通过 侧边栏 文件 菜单 进入项目文件,找到 setting.py 文件,进行编辑。

DEBUG模式设置为False,ALLOWED_HOST 添加 '*'

DEBUG = False

ALLOWED_HOSTS = ['*']

配置静态文件地址为/home/xxx_static/static/,后面会统一把静态文件移至该目录

STATIC_URL = '/static/'
STATICFILES_DIR = [
    os.path.join(BASE_DIR,'static'),
]
STATIC_ROOT = '/home/xxx_static/static/'

六、设置网站服务,并配置nginx代理

上述操作,我们已经在内部启动了,接下来就是设置成网站服务,提供外部访问,并设置 nginx 代理加载静态文件。

在 python 项目管理器 中点击 映射,设置域名 或者外网IP。映射成功后在面板侧边栏 网站 菜单中查看。(此时已经可以在外部访问了。但是是没有静态文件的)

在网站中点击我们刚才映射出的域名或ip,会出现一个弹窗,选择 反向代理-》配置文件

image

找个缝隙,来添加静态文件和媒体资源的配置。

关于静态文件:就是存放css,js文件的位置。django框架中以static命名的。

关于媒体资源:比如用户上传图片的存放位置,一般命名有 media。 你设置的什么名字就写什么名字。

location /static/ {
    root /home/xzbcx1_static/;
    break;
}
location /media/ {
    alias /www/wwwroot/xzbcx1.11/media/;
}

按照文件路径设置即可,只需要替换红色框内的,换成你的路径,其他的不用动。如果保存的时候出现报错,就把空格啥的删除一下。

image.png

完成之后需要在项目中执行以下如下命名收集admin后台的静态文件,不然通过uwsgi服务启动的django服务,会找不到admin的样式文件导致样式失效。

  • 进入项目根目录
cd /var/www/wwwroot/xxx
  • 进入虚拟环境
source xxx_venv/bin/activate
  • 执行如下命令(该命令将收集项目中所有静态资源,转移到上面配置的/home/xxx_static/static/目录)
python manage.py collectstatic
  • 重启python项目和nginx服务

到此,万事大吉!可以通过你设置的域名或ip进行访问了。

七、后话

当涉及到调整代码时,可以在线调整,或者线下调整完成后,上传调过的文件,然后在首页 python 项目管理器 内重启服务即可。

踩坑记录

Django+Nginx+uWSGI部署到服务器Django admin后台样式消失

报错:django.db.utils.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")解决

报错:django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,271评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,725评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,252评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,634评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,549评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,985评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,471评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,128评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,257评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,233评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,235评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,940评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,528评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,623评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,858评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,245评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,790评论 2 339

推荐阅读更多精彩内容