2.linux下启动crm项目
| 1.准备好crm项目代码,上传到服务器 |
| lrzsz xftp scp |
| 用解压命令 unzip tf_crm.zip |
| 2.cd到项目目录,创建python解释器的虚拟环境,用于启动crm项目 |
| virtualenv --python=python3 venv_crm |
| 3.激活虚拟环境 |
| source venv_crm/bin/activate |
| 4.立即解决crm运行所需要的依赖 |
| 将requirements.txt 上传到服务器 |
| 在venv_crm 虚拟环境中,安装此文件即可 |
| |
| 如果没有此模块依赖文件,那么就手动解决把。 (联网情况下,离线情况下要自己手动下载安装包上传值服务器,手动安装) |
| pip3 install -i htpps://pypi.douban.com/simple xx |
| |
| python3 manage.py runserver 这个命令,并不是让你启动django项目的, |
| 因为此命令,调用的是python内置的wsgirf单机socket模块,性能低下,单线程单进程,一般用于调式项目是否正常运行使用。 |
| 在没有所需要的依赖包是,可以按照启动报错,来看缺少哪些模块,最笨的方法。 |
| |
| (venv_crm) pip3 install -i https://pypi.douban.com/simple django=1.1.25 |
| (venv_crm) pip3 install -i https://pypi.douban.com/simple pymysql |
| (venv_crm) pip3 install -i https://pypi.douban.com/simple django-multiselectfield |
| 5.缺少mysql,要安装mariadb,并启动 (客户端和服务端) |
| (venv_crm) yum install mariadb-server mariadb -y |
| |
| 不会,因为激活虚拟环境,只是添加了一个PATH,只会影响python相关的操作,不会影响yum工具 |
| 6.启动mariadb数据库(mysql), |
| (venv_crm) systemctl start mariadb |
| 默认端口3306 |
| 7.注意可能要修改django的settings有关数据库的账号密码。 |
| 8.还要注意,由于数据库中没有数据,所以需要数据库的导入,导出本地数据库。 |
| mysqldump -uroot -p --all-databases > alldb.sql |
| 9.发送此文件alldb.sql文件,给linux机器,进行导入 |
| mysql -uroot -p < /opt/alldb.sql |
| 10.在尝试启动crm项目 |
| python3 manage.py runserver 0.0.0.0:9090 |
| 11.修改settings中的ALLOWED_HOSTS |
3.uwsgi 启动python crm项目
让你的django在linux上,支持并发形式启动,支持多进程,多线程,乃至多协程的一个c编写的高性能工具。

| 1.安装uwsgi |
| (venv_crm) pip3 install -i https://pypi.douban.com/simple uwsgi |
| 2.编辑uwsgi.ini配置文件,以多进程形式启动crm |
| touch uwsgi.ini |
| |
| uwsgi支持ini、xml等多种配置方式,本文以 ini 为例, 在/etc/目录下新建添加如下配置: |
| |
| |
| |
| [uwsgi] |
| |
| |
| |
| |
| chdir = /opt/luffy_crm |
| |
| |
| module = luffy_crm.wsgi |
| |
| |
| home = /opt/luffy_crm/venv_crm |
| |
| |
| master = true |
| |
| |
| |
| |
| processes = 3 |
| |
| |
| |
| |
| |
| |
| |
| http = 0.0.0.0:9090 |
| |
| |
| |
| |
| vacuum = true |
| |
| 3.此时可以用命令,启动一个基于uwsgi协议的高性能web后端了 |
| uwsgi --ini ./uwsgi.ini |
| |
| 4.此时crm项目已经用uwsgi支持了3个进程的启动了,此时没有静态文件,但是由于uwsgi对静态文件的解析性能很弱,线上是丢给nginx去处理的。 |
| |
| 5.未完待续,学完nginx在部署。 |

3.supervisor管理工具-supervisor 启动uwsgi和crm
程序挂了会自动重启
| supervisor 是基于 python 的任务管理工具,用来自动运行各种后台任务,当然你也能直接利用 nohup 命令使任务自动后台运行,但如果要重启任务,每次都自己手动 kill 掉任务进程,这样很繁琐,而且一旦程序错误导致进程退出的话,系统也无法自动重载任务。 |
| |
| |
| |
| 比如crm的技术栈 |
| nginx+uwsgi+django+mysql 我们可以手动启动每一个进程 |
| 也可以用supervisor一键启动这4个进程,进行批量管理,批量启停 |
| |
安装(此时已经退出虚拟环境)
| 1.安装 |
| yum install supervisor -y |
| 2.通过命令生成配置文件 |
| echo_supervisord_conf > /etc/supervisord.conf |
| 3.配置文件中末尾添加以下参数,(supervisord.conf配置文件参数解释) |
| |
| |
| |
| [program:crm] |
| command=/opt/luffy_crm/venv_crm/bin/uwsgi --ini /opt/luffy_crm/uwsgi.ini ; 程序启动命令、supervisor其实就是在帮你启动进程而已 |
| autostart=true ; 在supervisord启动的时候也自动启动 |
| startsecs=10 ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒 |
| autorestart=true ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启 |
| |
| |
| |
| |
| |
| |
| |
| stopasgroup=true ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程 |
| killasgroup=true ;默认为false,向进程组发送kill信号,包括子进程 |
接着上面部署
| uwsgi和uwsgi.ini都配置完毕后,开始进行supervisor工具进行管理 |
| 先明确,启动uwsgi的绝对路径是? |
| /opt/luffy_crm/venv_crm/bin/uwsgi |
| /opt/luffy_crm |
| 启动crm完整命令 |
| /opt/luffy_crm/venv_crm/bin/uwsgi --ini /opt/luffy_crm/uwsgi.ini |


用supervisor启动uwsgi
| supervisord -c /etc/supervisord.conf |
| |
| ps -ef |grep supervisor |
| ps -ef |grep uwsgi |
| |
| |
| supervisorctl -c /etxc/supervisord.conf |
| supervisorctl -c /etxc/supervisord.conf restart crm |
| supervisorctl -c /etc/supervisord.conf [start|stop|restart] [program-name|all] |
| |
| status |
| stop all |
| stop crm |
| start crm |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)