工作记录:学会django不难,APACHE部署太难!

甲爸用一个月的时间学习了DJANGO,再用一个月的时间开发了一个项目:牛校网。一切都还顺畅。可是在部署时,却花了两天时间才搞定,主要是网上没有较新的基于宝塔面板部署django的教程,全靠实践去验证。后来找到一篇实用教程,发现基于较新的PYTHON项目管理器,部署DJANGO,还算简单,不需要手动去编写一些配置文件。可惜的是,当时没有把这个成功的操作记录下来,所参考的实用教程也找不着了。

云主机到期了,换了一个性价比更高的。可见:网站空间更换至野草云CTGNet+BGP 香港VPS云主机。在重新部署django时,发现问题来了。

网站搬家至新空间,数据库导入,修改网站的数据库链接,域名解析至新主机。先尝试一下新方法,在宝塔面板(8.0最新版)的“网站-python项目”,添加新的python项目。

添加PYTHON项目

添加成功后提示要绑定域名,于是按其操作。然后尝试该问该网站,打不开,显示信息与SSL证书相关。

可能需要手动去配置SSL,这有点难。放弃吧。换以前的老方法:用python项目管理器来部署吧。

添加python项目,可参考来自网络上的一个图。

部署DJANGO

能正常启动(别忘了在宝塔面板中还要去添加的端口号,开放)。如下图。

注意!重点来了。如何判断你的django项目是正常运行的呢,首先就是要看状态显示:运行中,但仅有这个还不够,还得看CPU和内存,这两个有数字(不是0)就表示真正地跑起来了。

就是说使用宝塔面板部署django其实很容易。无需手动设置。

还有一个知识点,就是python版本。本地开发的版本和服务器并不一样。我本地是3.9,WEB服务器是3.8。这个并没多大影响,只要python版本能支持你所使用的django版本(例如我是用3.12)就好。

确定django项目是真正的跑起来后,就要做一下域名映射。

就会自动生成一个站点,其中php显示为精态,备注为自动加,SSL证书设置同PHP站点。

这样在python项目管理器中,才会有取消映射这个设置。

注意事项:我由于好几个月没弄这些,把顺序给忘记了。先添加站点再去做映射,会显示站点已存在之类的信息,导致映射不成功。因此方法必须是这样,无需手动添加网站,在python项目管理中添加映射自动生成网站,才是正确的方式

然后该问网站,出现一个400问题,此问题从没见过。搜索资料有解决方式,实践当中也就突然解决了问题(此处已无从记录)。

再后就是一个非常恼人的问题,就是网站静态文件不能正常加载。如下图。

原理大体上我自己还是知道。就是python项目管理器的django项目运行,本身就是有一个自己的服务器在支持的(叫uwsgi),但这个只处理django动态文件,不处理静态文件(如模板中所用的css、js及图片之类),这个处理静态文件的工作,交给APACHE或nginx去做。

以前部署成功,用是的nginx,其中配置静态文件的资料,网上有很多,实践也是成功的。可是现在使用的是APACHE,而且不能换(因为其中有一个PHP网站,用到了swoole这个东东,在APACHE下正常,Nginx不正常,也很无语~),因此只能寻找apache处理django静态文件的解决方法。

能google搜索都用上,网上也不缺少资料,但折腾了好久,就是不成功。

最后没有办法。我只好把静态文件放到自己的另一个网站下,修改下django的配置文件settings.py。

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/

STATIC_URL = 'https://www.uptom.com/static/'

# Default primary key field type
# https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

SITENAME='牛校网'

STATICFILES_DIRS=[os.path.join(BASE_DIR,'static')]
STATIC_URL = 'https://www.uptom.com/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'https://www.uptom.com/static')

进入python项目管理器,重启django项目(这些顺序还是有点不清楚,要不要重启项目,要不要重启APACHE等)。发现,成了。静态文件能正常地解析读取。

放在另一个网站下能正常地访问静态资源,如此的话,以后部署django就可以采用宝塔面板+python项目管理器+云存储的方式来解决。

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注