nginx + uwsgi + crm + mysql + virtualenv + supervisor项目部署

1.后端整起,用uwsgi启动crm

2.创建一个新的虚拟环境,用于运行crm新业务
mkvirtualenv crm_env (crmenv) [root@localhost 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 #配合nginx使用
#指定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的配置文件
[root@s24_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的管理交互式终端,管理任务
[root@localhost ~]# supervisorctl -c /etc/supervisord.conf
CRM RUNNING pid 37756, uptime 0:00:04 16.supervisor的管理命令
status #查看状态
start all #启动所有任务
restart all #重启所有任务

linux--后端项目部署的更多相关文章

  1. Dockerfile文件记录(用于后端项目部署)

    Dockerfile文件记录(用于后端项目部署) 本教程依据个人理解并经过实际验证为正确,特此记录下来,权当笔记. 注:基于linux操作系统(敏感信息都进行了处理) 此文结合另一篇博客共同构成后端服 ...

  2. Docker环境下的前后端分离项目部署与运维(九)后端项目部署与负载均衡

    数据库准备 建立数据库 renren_fast ,然后运行renrenfast项目中的db文件夹内的脚本 -- 菜单 CREATE TABLE `sys_menu` ( `menu_id` bigin ...

  3. (转)linux中项目部署和日志查看

    1 查找进程 ps -ef | grep java   查看所有关于java的进程 root     17540     1  0  2009 ?        01:42:27 /usr/java/ ...

  4. linux --- 6. 项目部署

    一.负载均衡 .准备三台机器,准备3台虚拟机,或者和俩同桌交流一下 192.168.226.128 是nginx资源服务器,返回页面的 192.168.226.129 用作nginx负载均衡服务器 1 ...

  5. linux服务器项目部署【完整版】

    之前总玩v8虚拟机,最近看到腾讯云学生套餐很实惠就租了个linux服务器搭一个项目,做下这个项目部署全记录,即为了方便以后查看,同时也分享下自己的经验,不足之处还请多多指教,废话不多说,直接开始!!! ...

  6. Linux Django项目部署

    步骤 .数据库的处理 1.1 上传bbs.sql 1.2 在mysql中创建bbs库,并导入数据库SQL脚本 mysql> create database bbs charset utf8mb4 ...

  7. vue+django前后端项目部署

    一.python3的安装 1.安装python前的库环境: yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel ...

  8. Linux上项目部署在home目录中无法访问的问题

    在Linux上开发一个Web项目,使用nginx作为Web服务器.在nginx的配置文件中添加一个server,root路径写的是放在home目录中的项目目录的路径.打开浏览器访问,提示错误:403 ...

  9. linux(centos) 项目部署阶段相关命令汇总

    1.ssh免密码登陆主要命令cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys-->添加公钥service sshd restart -- ...

  10. 161118、linux(centos) 项目部署阶段相关命令汇总

    1.ssh免密码登陆 主要命令 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys-->添加公钥 service sshd restart ...

随机推荐

  1. asp.net core 3.x 授权中的概念

    前言 预计是通过三篇来将清楚asp.net core 3.x中的授权:1.基本概念介绍:2.asp.net core 3.x中授权的默认流程:3.扩展. 在完全没有概念的情况下无论是看官方文档还是源码 ...

  2. Red Team 指南--第2章开源情报(OSINT)侦察

    第2章开源情报(OSINT)侦察 贡献者:伊恩·巴维斯翻译:BugMan 哇,慢点牛仔吧!在我们深入探讨“做性感时光”(笑话)红队闻名的黑客冒险,还有一些作业要做.五分之一的专业人士从未学习或做过任何 ...

  3. Babel配置中的presets、plugins、各个阶段stage的含义

    什么是Babel Babel 官方文档: https://babeljs.io/ Babel 中文文档:https://www.babeljs.cn/ 我们知道各个浏览器对JavaScript版本的支 ...

  4. php面试笔记(6)-php基础知识-正则表达式考点

    本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而正则表达式相关 ...

  5. 转载【React Native代码】手写验证码倒计时组件

    实例代码: import React, { Component , PropTypes} from 'react'; import { AppRegistry, StyleSheet, Text, V ...

  6. 手把手教你如何构建Vue前端组件库

    在前端开发中可能会遇到将相同的功能模板集合成一个组件,供他人调用,这样可以减少重复造轮子,也可以节约人力.财力,更能够提高代码的可维护度:下面将通过详细的步骤教你如何构建一个Vue前端组件. 1.在本 ...

  7. C# WPF 时钟动画(2/2)

    模拟实现时钟效果,学习WPF动画好例子,本文承接上文 C# WPF 时钟动画(1/2). 微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. C# ...

  8. 快速解决docker生成镜像时提示Could not resolve ‘archive.ubuntu.com’问题

    今天在其中一台Linux 中使用Docker命令创建镜像时失败,报错提示: Temporary failure resolving ‘archive.ubuntu.com’ 典型的DNS解析问题,尝试 ...

  9. shell中expect免交互

    expect前言观察ssh登录的交互现象有些程序难以避免的需要交互.你该如何解决脚本与程序的交互问题?名词解释期待, 预期, 盼望, 预料,料想, 指望, 希望, 要求,想, 认为一.概述 我们通过S ...

  10. MacBook Pro安装VMware Fusion 11

    下载地址 https://www.vmware.com/cn/products/fusion/fusion-evaluation.html 序列号 TX1NF-PPVRW-A1XAX-X5PVZ-Q7 ...