介绍
关于django的开发,在其开发文档中已经写的比较详细,但是有关部署的方面还是有些欠缺。因为我发现官网提供的大部分部署资料,是链接到其他网站让其他网站的主体来描述的。为此这篇blog衔接了部署的流程,为已开发完毕的dajngo项目提供一个部署策略。同时使用systemctl来做一个进程的开启,如同systemctl start nginx.service这样的功能。至于具体如何实现让我们unpack and jump in ~
第一步:uwsgi
我们开发django的时候经常使用
python manage.py runserver
然而这并不正式,我们需要:
- 使用uwsgi来作为我们的python web project 的网关(gateway)
- 使用nginx来作为我们的web 服务器
这一步查看uwsgi官方文档:
Setting up Django and your web server with uWSGI and nginx — uWSGI 2.0 documentation
学习完到这一步就可以了,www-data是有关网络服务器用户方面的知识,(不懂的知识要去额外搜索):
第二步:学习systemctl
第一次接触到systemctl是在使用nginx.server的时候,相信你们也是,深入的学习可以参考这为b站的视频
linux云计算白嫖系列之-.systemctl服务管理_哔哩哔哩_bilibili
感谢:墨黎浮沉
第三步:有效整合systemctl+uwsgi
这里同样是参考官方文档:
Systemd — uWSGI 2.0 文档 (uwsgi-docs-zh.readthedocs.io)
这个是翻译过的版本了,其他没什么。
可能要注意一下 ExecStart 的设置,因为这是因项目而异,而且第一步我们最终是用--emperor运行的不过经过第二步的学习,你大概也能知道有关参数怎么填写了。
最终我是能跑出这样的结果的,这里给你们看开启服务的status吧,当然是要有前面知识基础才看的懂的,不然有一些不一样的地方会抓耳挠腮。
第四步:举一反三
那经过学习其实我们是具备了customize systemctl server 的能力了,同时我的django web server,还要跨域访问另一个服务是叫streamlit,我需要使用这个服务的chatbot功能,正常运行的指令是:
streamlit run example.py
那我想能不能将这个也作为一个服务,或是说systemctl管理的线程呢?
答案是可以的,我的.service文件是这样的:
同样是可以正常运行的哈,前提是要了解这个体系的知识才知道在说啥。
总结
如果有什么不懂的也可以评论区讨论,这是一套部署流程,有一定的知识体系。