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

  1. 1.后端整起,用uwsgi启动crm
  2. 2.创建一个新的虚拟环境,用于运行crm新业务
  3. mkvirtualenv crm_env
  4. (crmenv) [root@localhost Envs]# which python3
  5. /root/Envs/crmenv/bin/python3
  6. 确认python3来自虚拟环境下
  7. 3.上传crm代码到服务器
  8. 4.解决代码的模块依赖
  9. 之前在一个env1的虚拟环境中安装过这些模块,所以先切换到env1: workon env1
  10. 模块导出
  11. pip3 freeze > requirements.txt
  12. 再次切换到当前新建的虚拟环境,导入下载安装项目依赖模块
  13. pip3 install -i https://pypi.douban.com/simple -r requirements.txt
  14. 5.安装uwsgi工具,启动crm
  15. pip3 install -i https://pypi.douban.com/simple uwsgi #uwsgi能让你的项目支持多进程,多线程,提高性能
  16. 6.使用uwsgi的配置文件,启动crm项目
  17. CRM项目目录下(与项目的settings.py同级的目录文件)手动创建uwsgi的配置文件
  18. touch uwsgi.ini
  19. uwsgi.ini写入一下配置内容:
  20. [uwsgi]
  21. # Django-related settings
  22. # the base directory (full path)
  23. # 填写项目的完整绝对路径,第一层
  24. chdir =/root/CRM
  25. # Django's wsgi file
  26. #指定django的wsgi文件路径,填写相对路径
  27. 在项目的第二层目录下
  28. module = CRM.wsgi
  29. # the virtualenv (full path)
  30. #填写虚拟环境的绝对路径
  31. #查看虚拟环境路径
  32. # cdvirtualenv
  33. # pwd
  34. home = /root/Envs/crm_env
  35. # process-related settings
  36. # master
  37. master = true
  38. # maximum number of worker processes
  39. #定义程序的多进程数量的,以cpu核数的2倍+1数量填写 2n+1 数量
  40. processes = 3
  41. # the socket (use the full path to be safe
  42. #把uwsgi启动在socket协议上,的8000端口
  43. socket = 0.0.0.0:8000 #配合nginx使用
  44. #指定http协议的话,用户是可以直接访问到的,不安全的,因此使用socket协议,交给nginx去处理,可以进行并发处理,也可以进行限流,防止恶意攻击
  45. #http =0.0.0.0:8000
  46. # ... with appropriate permissions - may be needed
  47. # chmod-socket = 664
  48. # clear environment on exit
  49. vacuum = true
  50. 7.启动uwsgi的命令
  51. uwsgi --ini uwsgi.ini #指定配置文件启动
  52. 8.配置nginx,进行静态文件解析,以及反向代理crm的动态请求
  53. server {
  54. listen 80;
  55. server_name _;
  56. #只要在server{}标签中看到root关键字,说明这个虚拟主机是一个静态文件服务器
  57. #将www.crm_env.com 这个域名所有的请求,都分发给uwsgi
  58. #uwsi的地址,把接收到的请求交给uwsgi处理,进行反向代理,父载均衡
  59. #可以再次vim uwsgi.ini查看socket的ip:port
  60. .......
  61. location / {
  62. uwsgi_pass 127.0.0.1:8000;
  63. include uwsgi_params;
  64. }
  65. }
  66. 重新加载nginx,让配置生效 :nginx -s reload
  67. 如果报错:nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory)
  68. 启动nginx 输入命令:nginx
  69. 9.ip做一个本地的hosts解析,添加一个假的域名
  70. 找到本地机器的hosts文件C:\Windows\System32\drivers\etc
  71. 192.168.16.85 www.pycrm.com
  72. 之前写的是192.168.16.85 www.crm_env.com报错了,可能是因为带下划线吧,我猜的
  73. 访问之后,成功了一半,一些静态文件没加载出来,css样式,js,图片都没有
  74. 10.收集crm所有的静态文件,交给nginx去处理
  75. 修改djangosettings.py配置文件,
  76. 进到settings.py这个目录中
  77. vim settings.py
  78. 添加如下配置
  79. STATIC_URL = '/static/' #原来django中的配置文件中已经存在配置
  80. STATIC_ROOT='/opt/pycrmstatic' #新添加的配置文件
  81. 通过命令收集django所有的静态文件
  82. python3 manage.py collectstatic
  83. 11.配置nginx找到crm的静态文件
  84. vim /etc/nginx/nginx.conf
  85. #修改配置如下形式
  86. #配置nginx找到crm所有的静态文件
  87. #只要是以/static开头的请求,就走如下配置
  88. location /static {
  89. alias /opt/pycrmstatic/;
  90. }
  91. 12.重启nginx,查看crm项目
  92. nginx -s reload
  93. http://www.pycrm.com/login/#
  94. 13.通过supervisor进程管理工具,管理uwsgi的后台,这个工具,其实就是在帮我们执行启动命令
  95. 需要下载安装即可
  96. yum install supervisor
  97. 14.配置supervisor的配置文件
  98. [root@s24_linux css]# echo_supervisord_conf > /etc/supervisor.conf #生成配置文件的目录
  99. 修改配置文件supervisord : vim /etc/supervisord.conf
  100. 将这些内容添加到supervisord.conf的下面
  101. [program:CRM] #CRM要管理的进程,也就是项目名
  102. command=/root/Envs/crm_env/bin/uwsgi --ini /root/CRM/CRM/uwsgi.ini ; 程序启动命令
  103. autostart=true ; supervisord启动的时候也自动启动
  104. stopasgroup=true ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
  105. killasgroup=true ;默认为false,向进程组发送kill信号,包括子进程
  106. 15.启动supervisord服务端
  107. # 再次修改配置文件后,需要重启supervisorctl 命令:supervisorctl reload
  108. supervisord -c /etc/supervisord.conf # 启动supervisorctl
  109. 进入supervisor的管理交互式终端,管理任务
  110. [root@localhost ~]# supervisorctl -c /etc/supervisord.conf
  111. CRM RUNNING pid 37756, uptime 0:00:04
  112. 16.supervisor的管理命令
  113. status #查看状态
  114. start all #启动所有任务
  115. 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. SQL Server 2019 表无法修改问题

    SQL Server 2019 表无法修改问题 问题描述: 解决方法: 1.在菜单栏中,点击工具->选项,示例: 2.在选项中单击设计器->表设计器和数据库设计器->取消勾选阻止保存 ...

  2. WinFrom 在Devexpress里用GridControl和DataNavigtor进行分页

    1,分页嘛先要有个SQL 程序才能写下去 先提供下SQL的思路,对于分页的SQL我之前帖子有介绍,就不一一介绍了 select top pageSize * --显示数量 from (select r ...

  3. C# 多线程的阻塞和继续-ManaulResetEvent的使用

    在工作中,会遇到需要多线程处理相应的业务需求,最典型的包括Socket的通信. 多线程处理里,就会考虑到,哪个线程先运行,哪个线程后运行的情况. 这里我介绍一下,使用ManualResetEvent类 ...

  4. 1.3.6 详解build.gradle文件——Android第一行代码(第二版)笔记

    不同于Eclipse,Android Studio是采用Gradle来构建项目的.Gradle是一个非常先进的项目构建工具,它使用了一种基于Groovy的领域特定语言(DSL)来声明项目设置. 首先看 ...

  5. 使用Ajax时[object%20object] 报错的解决方案

    踩坑经过 最近初学Ajax,当我想把Ajax应用到自己项目中的时候,没有达到理想的效果,还报了如下错误: 点击图中报错,产生报错页面如下: 当时写的Ajax如下: // 提交修改密码表单 $(&quo ...

  6. 后端跨域的N种方法

    简单来说,CORS是一种访问机制,英文全称是Cross-Origin Resource Sharing,即我们常说的跨域资源共享,通过在服务器端设置响应头,把发起跨域的原始域名添加到Access-Co ...

  7. MySQL 8 InnoDB 集群生产部署

    生产部署InnoDB集群 1.先决条件 InnoDB集群使用组复制技术,所以InnoDB中的实例需要满足组复制要求.可以查看MySQL文档中组复制相关的部分,也可以通过AdminAPI提供的dba.c ...

  8. 面试想拿 10K,HR 说你只值 7K,该怎样回答或者反驳?

    当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫. 礼貌地说:"7K是吗?了解了.嗯~其实我对贵司的面试官印象很好.只不过,现在我的手头上已经有一份11K的offer. ...

  9. JAVA JDK keytool 生成数字证书

    简介: 数字证书作为网络安全数据传输的凭证,web在传输时客户端(浏览器)和 服务端(服务器)先进行会话握手,在握手过程中服务端会验证客户端的是否已经在服务端做了认证,这是单向认证.如果是双向认证的话 ...

  10. MySQL第七课

    统计记录条数 SELECT COUNT(*)  FROM 表名; SUM():总和 AVG():平均值 MAX():最大值 MIN():最小值 排序: SELECT 字段名  FROM 表名 ORDE ...