linux⑥项目部署

Posted lw1095950124

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux⑥项目部署相关的知识,希望对你有一定的参考价值。

目录

  • 一.负载均衡
  •  二.项目部署
  • 三.配置 supervisro 工具

 


一.负载均衡

技术图片
    1.准备三台机器,准备3台虚拟机,或者和俩同桌交流一下
        
        192.168.226.128  是nginx资源服务器,返回页面的
        192.168.226.129   用作nginx负载均衡服务器
        192.168.226.130   也用作nginx资源服务器
        
    2.分别配置三台机器
    确保 128和130这2台机器,能正确的资源返回即可
    这三个机器,都是通过修改nginx.conf来实现效果的
    128此时返回 超哥 一米五的 页面
    130返回  
    129配置反向代理 
    
    
    3.配置关键点
    129(反向代理)负载均衡配置修改nginx.conf
技术图片

  1.轮询方式

技术图片

 

   2.加权轮询

技术图片

 

   3.哈希方式

  对ip地址进行哈希,适当分配

技术图片

 

 

 二.项目部署

  1.背景

  ①django的启动方式 python3 manage.py runserver

    为什么不能在生产环境用?

django只是一个web逻辑框架,它通过python3 manage.py runserver命令启动的socket服务端
是借助python内置的wsgi框架 wsgiref框架实现的
它是一个单机模块,单进程模块,性能很低

 

   ②为什么要用nginx  和uwsgi?

技术图片
nginx  可以解决uwsgi的静态文件问题,并且支持高并发请求,
还能限流,保障后台服务器安全等等 为什么要用uwsgi 因为uwsgi支持多进程 多线程的方式,性能很高,启动django性能更好,
但是uwsgi不解析django的静态文件 我们以后会收集所有的django项目静态文件,丢给nginx去处理
技术图片

 

   2.准备 uwsgi  工作

  ①下载 uwsgi

pip3 install uwsgi

 

   ②最开始的使用uwsgi命令启动django项目

技术图片

uwsgi --http :8000 --module Crm_Project.wsgi --http指定http协议启动在 8088端口 --module 找到项目第二层的目录,里面的wsgi.py文件



 uwsgi支持热加载的启动方式命令如下

  uwsgi --http :8000 --module Crm_Project.wsgi --py-autoreload=1

 

 

  如果你想启动一个http页面,提供测试访问,就用--http参数

 

  如果你结合了nginx反向代理,必须用--socket参数 
  uwsgi --socket :8000 --module Crm_Project.wsgi

 

技术图片

 

     ③ 引入配置文件 uwsgi.ini

  1).放置位置无要求,可放在项目目录下,

 

  2).内容如下

技术图片
[uwsgi]
# Django-related settings
# the base directory (full path)
#填写项目的绝对路径(第一层路径)
chdir           = /root/login
# Django‘s wsgi file
#填写crm第二层目录下的wsgi.py文件的路径
module          = login.wsgi
# the virtualenv (full path)
#填写虚拟环境的绝对路径
home            = /root/Envs/mycrm

# process-related settings
# master
master          = true
# maximum number of worker processes
#基于uwsgi的多进程,根据cpu来优化 
processes       = 4
# the socket (use the full path to be safe

#如果你用了nginx反向代理,就填写socket参数

socket          = 0.0.0.0:8000

#如果你没用nginx,想直接通过浏览器测试后端,使用http 
#http = 0.0.0.0:8000

# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true
技术图片

 

  ④ 配置好文件后,启动

uwsgi --ini  uwsgi.ini

注意,启动的位置要在该目录下

 

  3.静态文件的准备

  ①编辑项目的 settings.py 文件

技术图片

 

   ②执行命令,收集crm 所有的静态文件

python3 manage.py collectstatic

 

 

   ③查看 /opt/crmstatic  下静态文件是否已存在

 

 

  4.nginx的配置文件  nginx.conf

  ①

技术图片

 

 

技术图片
        #当用户访问 www.s18dnf.com的时候,就进入这个虚拟主机
        location / {
        uwsgi_pass  0.0.0.0:8000;
        include uwsgi_params;
        }

        #这个location是解决crm的静态文件的问题的
        location /static  {
#alias参数 就是将/static转化为/opt/crmstatic ,也就找到了我们所有的静态文件
        alias /opt/crmstatic;
        }        
技术图片

 

       ② 重启  

nginx  -s reload

 

 

三.配置 supervisro 工具

       注意要退出虚拟环境

 

 

技术图片
1.安装easy_install 
    pip3是python3的软件包管理工具
    easy_install 是python2的软件包管理工具
    
    yum install python-setuptools

    2.安装supervisor
    easy_install supervisor
    
    3.创建supervisor的配置文件
    
    echo_supervisord_conf >  /etc/supervisor.conf 

    4.修改supervisor的配置文件,添加启动uwsgi的命令
    
    supervisor其实就是帮咱们执行了,需要手动执行的命令而已 
    vim /etc/supervisor.conf
    写入如下内容,在最底部写
[program:s18crm]
command=/opt/python36/bin/uwsgi  --ini /root/login/uwsgi.ini
stopasgroup=true
killasgroup=true
技术图片

 

    5.测试用supervisor启动uwsgi ,注意要确保此时uwsgi已经退出

    
supervisord -c  /etc/supervisor.conf   #这是启动supervisor服务端命令

supervisorctl -c /etc/supervisor.conf     #这是supervisor客户端管理命令

    6.学习supervisor的命令
    
    status s18crm #查看状态
    start s18crm  #启动任务
    stop  s18crm #停止任务
    
    start all  
    stop  all  #启停所有的任务
技术图片

 

以上是关于linux⑥项目部署的主要内容,如果未能解决你的问题,请参考以下文章

在线报表设计实战系列 – ⑥矩表高级应用

Linux嵌入式驱动学习之路⑥u-boot启动内核

爬虫24-scrapy框架部署

Linux嵌入式驱动学习之路⑥u-boot移植

导致资产预编译在heroku部署上失败的代码片段

java项目怎么部署到linux服务器啊?