linux项目部署学习(2) - linux下启动crm项目

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 
#是否激活虚拟环境,会影响linux的yum工具?
	不会,因为激活虚拟环境,只是添加了一个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  #在游览器中访问公网ip:9000,
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 #手动创建
#vim uwsgi.ini 配置文件
uwsgi支持ini、xml等多种配置方式,本文以 ini 为例, 在/etc/目录下新建添加如下配置:

# uwsgi.ini file
#头
[uwsgi]

# Django-related settings
# the base directory (full path) 
#填写crm项目的第一层的绝对路径
chdir           = /opt/luffy_crm
# Django's wsgi file
#填写crm项目第二层的相对路径,找到第二层目录下的wsgi.py
module          = luffy_crm.wsgi
# the virtualenv (full path)
#填写虚拟环境解释器的第一层的工作目录
home            = /opt/luffy_crm/venv_crm
# process-related settings
# master 主进程
master          = true
# maximum number of worker processes
#定义uwsgi运行的多进程数量  官网建议2倍的cpu核数+1
#如果是单进程,10W请求 都丢给一个进程去处理
#3个工作进程,10W请求,分给3个进程去分摊处理
processes       = 3
# the socket (use the full path to be safe
#这里的socket参数,是用于和nginx结合部署的unix-socket参数,先不用。
# socket          = 0.0.0.0:8000

#线上不会用http参数,因为是对后端不安全,而使用socket参数是安全的链接,用户nginx
#后端程序时在防火墙内的,外网无法直接访问的
#临时使用http参数,用于游览器调试
http = 0.0.0.0:9090 #测试用

# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
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 掉任务进程,这样很繁琐,而且一旦程序错误导致进程退出的话,系统也无法自动重载任务。
#检测uwsgi如果挂掉后,会自动重启
#使用supervisor这个python开发的进程管理工具,用它启动uwsgi后,进程挂了,会自动重启

比如crm的技术栈
	nginx+uwsgi+django+mysql 我们可以手动启动每一个进程
也可以用supervisor一键启动这4个进程,进行批量管理,批量启停

安装(此时已经退出虚拟环境)

1.安装
yum install supervisor -y 
2.通过命令生成配置文件
echo_supervisord_conf > /etc/supervisord.conf
3.配置文件中末尾添加以下参数,(supervisord.conf配置文件参数解释)

#[program:xx]是被管理的进程配置参数,xx是进程的名称

[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,表示进程意外杀死后才重启
#startretries=3       ; 启动失败自动重试次数,默认是3
#user=tomcat          ; 用哪个用户启动进程,默认是root
#priority=999         ; 进程启动优先级,默认999,值小的优先启动
#redirect_stderr=true ; 把stderr重定向到stdout,默认false
#stdout_logfile_maxbytes=20MB  ; stdout 日志文件大小,默认50MB
#stdout_logfile_backups = 20   ; stdout 日志文件备份数,默认是10; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
#stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out
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 #启动supervisor服务端,指定配置文件启动
#检查是否启动
ps -ef |grep supervisor
ps -ef |grep uwsgi

#进入supervisor任务管理终端
supervisorctl -c /etxc/supervisord.conf #进入终端界面
supervisorctl -c /etxc/supervisord.conf restart crm  #重启my项目
supervisorctl -c /etc/supervisord.conf [start|stop|restart] [program-name|all]
#终端内常用的命令
status
stop all
stop crm
start crm

posted @ 2020-06-28 21:31  hanfe1  阅读(275)  评论(0编辑  收藏  举报