linux--后端项目部署
nginx + uwsgi + crm + mysql + virtualenv + supervisor项目部署
1.后端整起,用uwsgi启动crm 2.创建一个新的虚拟环境,用于运行crm新业务 mkvirtualenv crm_env (crmenv) [ Envs]# which python3 /root/Envs/crmenv/bin/python3 确认python3来自虚拟环境下 3.上传crm代码到服务器 4.解决代码的模块依赖 之前在一个env1的虚拟环境中安装过这些模块,所以先切换到env1: workon env1 模块导出 pip3 freeze > requirements.txt 再次切换到当前新建的虚拟环境,导入下载安装项目依赖模块 pip3 install -i https://pypi.douban.com/simple -r requirements.txt 5.安装uwsgi工具,启动crm pip3 install -i https://pypi.douban.com/simple uwsgi #uwsgi能让你的项目支持多进程,多线程,提高性能 6.使用uwsgi的配置文件,启动crm项目 在CRM项目目录下(与项目的settings.py同级的目录文件)手动创建uwsgi的配置文件 touch uwsgi.ini 在uwsgi.ini写入一下配置内容: [uwsgi] # Django-related settings # the base directory (full path) # 填写项目的完整绝对路径,第一层 chdir =/root/CRM # Django's wsgi file #指定django的wsgi文件路径,填写相对路径 在项目的第二层目录下 module = CRM.wsgi # the virtualenv (full path) #填写虚拟环境的绝对路径 #查看虚拟环境路径 # cdvirtualenv # pwd home = /root/Envs/crm_env # process-related settings # master master = true # maximum number of worker processes #定义程序的多进程数量的,以cpu核数的2倍+1数量填写 2n+1 数量 processes = 3 # the socket (use the full path to be safe #把uwsgi启动在socket协议上,的8000端口 socket = 0.0.0.0:8000 #指定http协议的话,用户是可以直接访问到的,不安全的,因此使用socket协议,交给nginx去处理,可以进行并发处理,也可以进行限流,防止恶意攻击 #http =0.0.0.0:8000 # ... with appropriate permissions - may be needed # chmod-socket = 664 # clear environment on exit vacuum = true 7.启动uwsgi的命令 uwsgi --ini uwsgi.ini #指定配置文件启动 8.配置nginx,进行静态文件解析,以及反向代理crm的动态请求 server { listen 80; server_name _; #只要在server{}标签中看到root关键字,说明这个虚拟主机是一个静态文件服务器 #将www.crm_env.com 这个域名所有的请求,都分发给uwsgi #uwsi的地址,把接收到的请求交给uwsgi处理,进行反向代理,父载均衡 #可以再次vim uwsgi.ini查看socket的ip:port ....... location / { uwsgi_pass 127.0.0.1:8000; include uwsgi_params; } } 重新加载nginx,让配置生效 :nginx -s reload 如果报错:nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory) 启动nginx 输入命令:nginx 9.把ip做一个本地的hosts解析,添加一个假的域名 找到本地机器的hosts文件C:\Windows\System32\drivers\etc 192.168.16.85 www.pycrm.com 之前写的是192.168.16.85 www.crm_env.com报错了,可能是因为带下划线吧,我猜的 访问之后,成功了一半,一些静态文件没加载出来,css样式,js,图片都没有 10.收集crm所有的静态文件,交给nginx去处理 修改django的settings.py配置文件, 进到settings.py这个目录中 vim settings.py 添加如下配置 STATIC_URL = '/static/' #原来django中的配置文件中已经存在配置 STATIC_ROOT='/opt/pycrmstatic' #新添加的配置文件 通过命令收集django所有的静态文件 python3 manage.py collectstatic 11.配置nginx找到crm的静态文件 vim /etc/nginx/nginx.conf #修改配置如下形式 #配置nginx找到crm所有的静态文件 #只要是以/static开头的请求,就走如下配置 location /static { alias /opt/pycrmstatic/; } 12.重启nginx,查看crm项目 nginx -s reload http://www.pycrm.com/login/# 13.通过supervisor进程管理工具,管理uwsgi的后台,这个工具,其实就是在帮我们执行启动命令 需要下载安装即可 yum install supervisor 14.配置supervisor的配置文件 [_linux css]# echo_supervisord_conf > /etc/supervisor.conf #生成配置文件的目录 修改配置文件supervisord : vim /etc/supervisord.conf 将这些内容添加到supervisord.conf的下面 [program:CRM] #CRM要管理的进程,也就是项目名 command=/root/Envs/crm_env/bin/uwsgi --ini /root/CRM/CRM/uwsgi.ini ; 程序启动命令 autostart=true ; 在supervisord启动的时候也自动启动 stopasgroup=true ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程 killasgroup=true ;默认为false,向进程组发送kill信号,包括子进程 15.启动supervisord服务端 # 再次修改配置文件后,需要重启supervisorctl 命令:supervisorctl reload supervisord -c /etc/supervisord.conf # 启动supervisorctl 进入supervisor的管理交互式终端,管理任务 [ ~]# supervisorctl -c /etc/supervisord.conf CRM RUNNING pid 37756, uptime 0:00:04 16.supervisor的管理命令 status #查看状态 start all #启动所有任务 restart all #重启所有任务
相关推荐
eightbrother 2020-01-02
岁月如歌 2020-07-27
lreis00 2020-06-29
89403969 2020-06-12
ZhaoMengjiao 2020-06-09
87193750 2020-05-30
咻咻ing 2020-05-17
eightbrother 2020-05-05
87254055 2020-04-14
ZhaoMengjiao 2020-03-28
ZhaoMengjiao 2020-03-08
89403969 2020-03-04
89403969 2020-03-04
87193750 2020-02-24
85407718 2020-02-09
山顶冻人 2019-12-25
aolishuai 2019-12-13
89403969 2019-12-11
87193750 2019-12-09