发布CRM你将使用以下软件

  • nginx
  • uWSGI
  • CentOS7
  • CRM项目文件
  • virtualenv
  • supervisor

WSGI、uWSGI

python web服务器开发使用WSGI协议(Web Server Gateway Interface)

python web项目默认会生成一个wsgi.py文件,确定好应用模块。

生产环境中使用的是uWSGI,实现了WSGI所有接口,C语言编写,效率很高的web服务器。

uWSGI是一个全功能的HTTP服务器,实现了WSGI协议、uwsgi协议、http协议等。它要做的就是把HTTP协议转化成语言支持的网络协议。比如把HTTP协议转化成WSGI协议,让Python可以直接使用。

Nginx

使用nginx是为了它的反向代理功能,项目会通过Django+uWSGI+Nginx进行服务器线上部署。

CentOS

1.打包项目CRM文件夹,压缩文件

2.通过xftp、scp、lrzsz等上传文件至Centos服务器

Linux使用技巧

1.通过xshell或者iTerm等软件,多终端操作你的linxu,这样对uwsgi、nginx、项目代码调试的时候,避免来回切换目录,提供工作效率。

2.注意修改了linux软件的配置文件,都要重启服务才能生效。

Virtualenv

构建一个干净,隔离的python解释器环境,防止软件依赖,冲突等问题,建议使用。

Supervisor

Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

项目部署

上传knight项目到linux服务器

使用xftp工具,进项上传文件夹,将knight代码,传到linux服务器当中

完成python3解释器的安装

完成virtualenvwrapper工具的配置,解决虚拟环境问题

vim ~/.bashrc 最下面添加如下内容WORKON_HOME=~/Envs   #设置virtualenv的统一管理目录,以后自动下载的虚拟环境,全都放这了VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'   #添加virtualenvwrapper的参数,生成干净隔绝的环境VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3    #指定python解释器的本体#必须要有这个参数,才会在每次登陆linux的时候,加载这个虚拟环境脚本工具source /opt/python36/bin/virtualenvwrapper.sh #执行virtualenvwrapper安装脚本

1.新建一个knight虚拟环境用于运行  crm项目cd /opt/knightmkvirtualenv knight

完成centos7下安装配置mariadb数据库,且创建数据库数据,迁移导入knight数据

#centos7底下,mariadb就是mysql数据库,只是包名的不同yum install mariadb-server  mariadb  -y  #启动mariadb服务端systemctl start mariadb #使用客户端去链接mysql服务端1.mysql -uroot -p #注意,linux的数据库,需要对root用户设置远程链接的权限,#授权所有的权限,在所有库,所有表  对  root用户在所有的主机上, 设置权限密码是  redhat  grant all privileges on *.* to root@'%' identified by 'redhat';#刷新授权表flush privileges;注意2,linux的防火墙要给关闭,否则windows去链接linux的3306端口可能被拒绝在linux服务端,mysql,导入knight的数据1.mysql数据的导出,与导入这个命令是在linux/windows中敲的mysqldump -u root -p --all-databases >  knight.dump  2.上传这个数据文件到linux系统的/opt/目录中3.在linux的mysql,导入这个数据文件mysql -uroot -p   <   /opt/knight.dump  #会出现这个报错,是兼容问题,不影响ERROR 1911 (HY000) at line 5417: Unknown option 'STATS_PERSISTENT'

测试使用linux的python解释器去运行项目(注意要解决解释器的模块问题,才能正常运转项目)

pip3 install django==1.11.16pip3 install pymysqlpip3 install -i htttps://pypi.douban.com/simple django-multiselectield(注意安装的是django-multiselectield,错误提示的是缺少的是multiselectield)
        改setings里面的数据库配置ip还有ALLOWED_HOSTS = ['*']python3 manage.py runserver 0.0.0.0:8000

安装uwsgi

1.安装uwsgi
pip3 install uwsgi
2.使用学习uwsgi命令,如何启动python应用
通过uwsgi运行一个python web文件
3.通过命令去启动python web应用
uwsgi --http :8000   --wsgi-file  test.py --http 指定http协议--wsgi-file  指定一个支持python wsgi协议的文件4.通过uwsgi启动django项目(注意这里要进入knight项目目录)
uwsgi --http :8000 --module  knight.wsgi  

5.uwsgi自动重启python程序
uwsgi --http :8000 --module knight.wsgi --py-autoreload=1

在生产中,您可以监视文件/目录更改以触发重新加载(touch-reload,fs-reload ...)。

在开发过程中,可以方便地使用所有已加载/使用的python模块的监视器。但请仅在开发期间使用它

检查由一个以指定频率扫描模块列表的线程完成:

[uwsgi]
...
py-autoreload = 2
将每2秒检查python模块更改并最终重新启动实例。

使用uwsgi.ini配置文件去启动项目,这个文件自己去创建即可,放哪都可以

[uwsgi]# Django-related settings# the base directory (full path)#写上项目的绝对路径  chdir           = /opt/knight# Django's wsgi file
#填写找到django的wsgi文件,填写相对路径,以chdir参数为相对路径module          = knight.wsgi# the virtualenv (full path)#填写虚拟环境的绝对路径home            = /root/Envs/knight/# process-related settings# master#启动uwsgi主进程master          = true# maximum number of worker processesprocesses       = 5#如果你使用了nginx,做反向代理,必须填写socket链接,而不是http参数# the socket (use the full path to be safe#socket          = 0.0.0.0:8000#如果你不用nginx,直接使用uwsgi,运行一个http服务端,就用这个http参数http = 0.0.0.0:8000# ... with appropriate permissions - may be needed# chmod-socket    = 664# clear environment on exitvacuum          = true

指定配置文件(注意文件位置)去启动uwsgi

uwsgi --ini  uwsgi.ini (注意写清配置文件位置) 

使用ngixn处理django的静态文件

1.设置django的静态文件目录,收集一下修改knight/settings.py ,写入如下参数STATIC_ROOT= '/opt/static'2.使用命令收集django的静态文件python3 manage.py collectstatic3.查看django的静态文件收集目录ls /opt/static4.配置nginx,反向代理,找到uwsgi项目,且配置nginx处理uwsgi的静态文件nginx.conf 修改配置如下server {listen       80;server_name  qishijd.com;#只要用户访问qishijd.com:80/  就走这个location匹配>,反向代理给uwsgi:location / {include    uwsgi_params;uwsgi_pass  0.0.0.0:8000;}#当用户请求是qishijd.com/static/的时候#就会进入这个location匹配#通过alias参数进行路径别名,让nginx去/opt/static底下去找静>态资源location  /static  {alias  /opt/static;
}}

访问域名或者ip,查看项目

qishijd.com/login  查看静态页面是否正常

supervisor

本来我们是用命令启动管理项目,
现在讲这些命令,写入到supervisor,通过superviosr去启动管理这些命令

使用python2的模块管理工具,去下载supervisor ,注意此时,退出虚拟环境
使用python2的模块管理工具,去下载supervisor ,注意此时,退出虚拟环境
使用python2的模块管理工具,去下载supervisor ,注意此时,退出虚拟环境

安装supervisor
yum install python-setuptools
#安装
easy_install supervisor#进入虚拟环境执行下面步骤:
2.使用supervisor命令,生成配置文件
echo_supervisord_conf   >  /etc/supervisor.conf 3.在这个配置文件中,写入我们想要管理的任务
vim /etc/supervisor.conf
在最底行写入如下配置
#定义一个任务,名字自定义
#commnad=参数,定义我们启动项目的命令
[program:crm_knight]
command=/root/Envs/knight/bin/uwsgi    /opt/knight/uwsgi.ini
stopasgroup=true     ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=true     ;默认为false,向进程组发送kill信号,包括子进程4.通过配置文件启动supervisor服务
supervisord -c /etc/supervisor.conf5.启动了supervisor服务端后,管理任务
supervisorctl -c /etc/supervisor.conf任务管理命令如下:有两种,一个是交互式,一个是参数形式
#参数形式supervisorctl -c /etc/supervisor.conf stop/start/restart   all
supervisorctl -c /etc/supervisor.conf start crm_knight#交互式形式
supervisorctl -c /etc/supervisor.conf start 项目名
stop 项目名

转载于:https://www.cnblogs.com/yidashi110/p/10264107.html

部署knight项目相关推荐

  1. Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo

    Docker 部署SpringBoot项目整合 Redis 镜像做访问计数Demo 最终效果如下 大概就几个步骤 1.安装 Docker CE 2.运行 Redis 镜像 3.Java 环境准备 4. ...

  2. Docker 部署SpringBoot项目不香吗?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:流星007 链接:toutiao.com/i68433912 ...

  3. 基于docker+gunicorn部署sanic项目

    基于docker+gunicorn部署sanic项目 源代码: https://github.com/ltoddy/Python-useful/tree/master/sanic-app 最近云服务提 ...

  4. docker nginx部署前端项目

    最近一直在搞前后端分类,一直在想前端的html页面应该用什么部署 想来想去,如果用tomcat好像有点浪费资源,作为程序员自然要时时刻刻追求新的东西 一直以来都是在apache tomcat上面运行, ...

  5. docker 挂载目录_完美解决:Docker部署SpringBoot项目后图片无法访问和上传,3招搞定!...

    以前使用FTP在Linux中使用java -jar xxx.jar部署SpringBoot项目时,由于在项目中指定了主机文件存放路径映射,可以直接访问服务器的文件. 但是最近入坑Docker,将Spr ...

  6. 【运维】阿里云宝塔面板部署JavaWeb项目

    本文摘要 · 前几年买了阿里云的ECS服务器,当时配置宝塔面板都是找朋友帮我弄的,去年一个项目给某公司做官网,涉及到域名解析的事情,最近开发项目又涉及到部署PHP项目.部署JavaWeb项目的工作.抽 ...

  7. nginx怎么部署php项目,nginx怎么正确部署前端项目

    目的: nginx部署打包成为dist的前端项目 (学习视频分享:php视频教程) 相关知识:docker 安装与使用 docker pull nginx docker run --restart=o ...

  8. 利用Jenkins的Pipeline实现集群自动化部署SpringBoot项目

    2019独角兽企业重金招聘Python工程师标准>>> 环境准备 Git: 安装部署使用略. Jenkins: 2.46.2版本安装部署略(修改jenkins执行用户为root,省得 ...

  9. scrapyd部署爬虫项目到LINUX服务器

    1,首先把scrapy爬虫项目上传到服务器 我的服务器架设在公司内网里.所以在这里使用WinSCP作为上传工具. 2,修改项目的配置文件scrapy.cfg 给爬虫项目指定分组,具体方法是在deplo ...

最新文章

  1. nuxt渲染html文件,Nuxt页面级缓存
  2. 参数估计_MCMC-模型参数估计
  3. android的快速开发框架,FastAndroid
  4. 什么是Hack技术?
  5. python语言表白语句简单_简短的表白语句
  6. Cygwin的安装,卸载,以及安装gdb
  7. 目标检测系列(五)——Faster R-CNN译文
  8. Java Lambda语法替代
  9. layui-弹出层中如何关闭窗口
  10. 【GPU加速系列】PyCUDA(一):上手简单操作
  11. 如何在繁忙的工作中锻炼身体?
  12. 联想电脑linux显卡驱动,如何安装从联想官网下载的显卡驱动
  13. 如何进行IP子网划分
  14. 对接金蝶云星空审批流
  15. PS快捷键大全,记住这些就够了!
  16. 最近计算机速度测试情况,WiFi速度测试测试测试互联网速度多少兆字节
  17. 《第一桶金怎么赚——淘宝开店创业致富一册通》一一1.1 创业者需具备的素质...
  18. python图片转文字easyocr_Python OpenCV读取png图像转成jpg图像存储
  19. 干货分享|PRD 模板
  20. PS软件操作应用—文字特效

热门文章

  1. Python Flask实现修改和删除数据
  2. 浮点类型误区 “!=”
  3. C#比较两个日期的大小两种案例解析
  4. 深度学习《BiGAN》
  5. 漫步线性代数二十五——特征值和特征向量
  6. OpenFeign, Zuul, Gateway相互不兼容的问题总结
  7. 以企业面试讲解sql语句
  8. 内参、外参、畸变参数三种参数与相机的标定方法与相机坐标系的理解
  9. 设计模式学习笔记——建造者(Builder)模式
  10. redis入门——服务器篇