本篇内容主要参考:使用宝塔快速部署Django项目
文章,这篇文章在过程有些遗漏和补全的地方,在这里进行补充来做记录
python版本:3.7.2
服务器系统:centos8
django版本:3.0.3
一、服务器安装宝塔面板并进行基础设置
安装方法很简单,远程到服务器,输入命令进行安装即可
# 安装命令 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
中途会有一次确认,按照操作提示输入 y 即可。
安装成功后,控制台会显示出宝塔面板的登录地址、用户名、密码。如下图所示,将内容记录好。
进行登录后,会提示推荐安装套件,直接关闭即可。然后点击左侧菜单栏中的面板设置,调整面板的 端口、安全入口、用户名及密码。修改完成后,记得点击最下方的保存。
二、安装环境包
宝塔的基础设置搞完了,接下来我们安装环境部署的一些必要软件程序:python、nginx、mysql(如果用到了就安装)
注意:这里我们用的是Django3的版本,从Django2.0起就不支持mysql5.5了,所以这里要安装高版本的mysql,推荐mysql5.6
在宝塔左侧菜单栏 点击 软件商店,第一页我们就可以看到nginx,点击安装选择急速安装即可。
与此同时,我们选择 宝塔插件 类别,在该类别下 选择 Python项目管理器 进行安装
安装成功后,会有一个 首页显示 的开关,我们打开这个开关,记得nginx也要打开这个哦。这个时候 我们在首页就可以看到了,因为后面我们会经常使用,所以最好要展示在首页。
接下来,我们该安装 python 了,在首页点击 python项目管理器,会出现一个弹窗,点击版本管理,选择一下你项目开发时使用的 python 版本。我使用的是 python 3.6.5 所以我安装这个版本。
注:python 2.7.5 显示已安装,这是系统自带的,我们不用管他。
三、上传项目文件并创建python项目
在上传项目文件的时候,我们需要先配置好项目所有的环境依赖包,所以,在本地开发的时候建议使用虚拟环境,这样我们创建依赖文件的时候,能减少引入一些不必要的包。在本地项目环境目录中(如果是虚拟环境,需要激活虚拟环境再进入项目目录)【django项目目录,即是在manage.py文件所处的路径】输入下方命令
pip freeze > requirements.txt # 注意当前是 pip 还是 pip3
会生成一个 requirements.txt 文件,里面就会包含我们当前环境下所有的python包。
接下来,打开宝塔面板,点击 文件 ,此时注意路径需要在/www/wwwroot/下
点击上传按钮,选择目录,将我们项目的整个目录都上传上来(可以不用上传venv目录,这个是虚拟环境目录,会自动生成)。 我的项目在电脑路径为D:/xzbcx_1.11,此时上传就选择django_test目录。上传弹窗需要加载一会才能展示出文件,之后点击弹窗底部的开始上传,在右上角有一个进度条,等上传完成后就可以关闭该弹窗。
项目文件大的话上传时间就会比较长,是的,我上传了三十多分钟。
好了,现在我们开始创建 python 项目。打开首页的 python 项目管理器,点击 添加项目。填充数据:
-
项目名称: 自定义就行,你开心就好
-
路径: 定位到项目目录即可
-
Python 版本: 选择你项目对应的 python 版本
-
框架: 选择 django
-
启动方式: uswgi(自测了一下只有uswgi启动方式可行,其他的都没用,添加后服务启动不起来,除非自己去服务器手动启动)
-
启动文件/文件加: 定位到 wsgi.py 所在的路径
-
端口: 自定义就行,你开心就好,注意不要和系统端口冲突,设置1024端口号之后的,不然就算你开心也没用。
-
勾选上 是否安装模块依赖 与 开机启动
点击确定,然后等待创建。
注意: 选择的框架是 django 的时候,不需要设置
创建成功后,点击配置,增加一行wsgi.py的位置
wsgi-file = 你的文件路径
四、创建并同步数据库
在宝塔面板左边菜单选择数据库,然后添加一个数据库:
创建完数据库后,把你项目中的数据库导出然后上传。如果你不从本地同步数据库导入,也可以直接在服务器上根据django规则来重新生成数据库。生成数据库步骤如下:
- 打开宝塔SSH终端
- 定位到项目目录
cd /var/www/wwwroot/xxx
- 进入虚拟环境
source xxx_venv/bin/activate
- 同步数据库
python manage.py makemigrations python manage.py migrate
创建完数据库之后,宝塔会自动生成用户名和一个随机密码
为了能连接数据库,这个时候需要把项目中的数据库配置修改一下。进入setting.py文件进行编辑,将下面的NAME
、USER
和PASSWORD
修改成上图中的对应值之后保存。
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '数据库名称', 'USER': '用户名', 'PASSWORD': '数据库密码', 'HOST': '', 'PORT': '' } }
五、检查项目是否运行成功
经过上面的操作之后,项目已经在本地服务器运行起来了,这个时候先检查一下项目运行的状况,是否有报错。
在面板中Python项目管理器 ,点击右侧的日志选项,查看你项目的运行状况,我这边项目的日志如下:
- 找到
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模式,调整静态设置
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 代理加载静态文件。
在网站中点击我们刚才映射出的域名或ip,会出现一个弹窗,选择 反向代理-》配置文件
找个缝隙,来添加静态文件和媒体资源的配置。
关于静态文件:就是存放css,js文件的位置。django框架中以static命名的。
关于媒体资源:比如用户上传图片的存放位置,一般命名有 media。 你设置的什么名字就写什么名字。
location /static/ { root /home/xzbcx1_static/; break; } location /media/ { alias /www/wwwroot/xzbcx1.11/media/; }
按照文件路径设置即可,只需要替换红色框内的,换成你的路径,其他的不用动。如果保存的时候出现报错,就把空格啥的删除一下。
完成之后需要在项目中执行以下如下命名收集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 项目管理器 内重启服务即可。
原文链接:https://www.jianshu.com/p/d2993dd31b1e?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation