zoukankan      html  css  js  c++  java
  • linux服务部署tengine+django+mysql

    # 云服务器演示

    由于云服务器下载太慢了,所以改用本机下载,xshell连接到云服务器通过rz命令上传文件方式。

    上传文件:

    linux服务器使用rz命令前提是安装了包:
    
      yum install lrzsz -y
    
    使用方式:
    
    rz : 本地上传文件至服务器
    
      格式:rz
    
    sz :服务器内容下载到本地
    
      格式:sz 服务器文件路径

    python3.6安装步骤:

    1. 先下载好python3.6安装包,上传至服务器一个目录下
    
    2. 安装依赖文件
    yum install -y 
    gcc patch libffi-devel python-devel  zlib-devel bzip2-devel 
    openssl-devel ncurses-devel sqlite-devel readline-devel 
    tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
    
    3. 解压python包
    tar -zxvf Python-3.6.6.tgz
    cd Python-3.6.6
    
    4. 指定安装路径(在python解压路径下)
    ./configure --prefix=/opt/python36
    
    5. 编译 安装
    make && make install
    
    6. 添加环境变量
    echo PATH=/opt/python36/bin:$PATH >> /etc/profile
    source /etc/profile

     python虚拟环境:

     # 目的是:一个机器部署多个项目时候,不会由于模块版本不同出现问题

    1.  手动先安装virtualenv(不要高版本)
    pip3 install --upgrade virtualenv==16.7.9
    
    2. 安装virtualenvwrapper模块
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenvwrapper
    
    3. 配置环境
    vim ~/.bashrc
    
    最底下添加的内容:
    export WORKON_HOME=/opt/env # 环境的存放目录
    export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'  # 干净隔绝的环境,创建时侯自动加的参数
    export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3  # python解释器
    source /opt/python36/bin/virtualenvwrapper.sh # 一般安装好是这个位置,执行安装脚本
    
    4. 环境生效
    source ~/.bashrc

    遇到的问题:

    1.virtualenv: error: unrecognized arguments: --no-site-packages

    原因:由于版本太高,安装指定版本解决

    python虚拟环境的操作命令

    创建环境:
    mkvirtualenv 环境名称
    
    显示存在的虚拟环境
    lsvirtualenv
    
    激活进入现有环境:
    workon 已存在的环境名
    
    从虚拟环境中退出:
    deactivate
    
    删除环境:
    rmvirtualenv 环境名称
    
    直接进入当前激活环境的python目录中:
    cdvirtualenv 
    
    直接进入当前激活环境的python目录的第三方目录中:
    cdsitepackages
    
    
    显示当前激活环境的python目录的第三方目录的内容:
    lssitepackages

    mysql部署:

    https://www.cnblogs.com/zezhou/p/11523472.html

    tengine基本安装:

    1. 解压包
    cd /opt/
    tar xvf tengine-2.3.2.tar.gz   # 这个包我已经下载好了,在opt目录下
    
    2. 安装依赖
    yum install pcre pcre-devel openssl openssl-devel -y
    
    3. 添加用户
    useradd nginx -s /sbin/nologin -M
    
    4. 配置tengine
    cd /opt/tengine-2.3.2
    ./configure --user=nginx --group=nginx --prefix=/opt/tengine2.3.2 --with-http_stub_status_module --with-http_ssl_module
    
    5. 编译 安装
    make && make install
    
    6. 创建软连接(方便些,也可不搞)
    ln -s /opt/tengine2.3.2/ /opt/tengine
    
    7. 启动服务
    /opt/tengine/sbin/nginx -t    # 检查语法
    /opt/tengine/sbin/nginx       # 启动
    /opt/tengine/sbin/nginx -s reload # 平滑加载
    # 查看服务 netstat -lntup|grep nginx

    8. 阿里云配置安全组

    tengine配置:

    vim /opt/tengine/conf/nginx.conf

    # 仅是摘出了server
    
    server{
        listen 80;
        server_name 0.0.0.0;
        # 返回登录页面
        location /login/ {
            # 使用alias,表示用户/login/请求过来,我到alias指定的目录,返回index指定的页面
            # alias参数,拼接方式是 alias目录 + index指定的html名称
            # root参数,拼接方式是 root目录 + 请求路径 + index指定的html名称
            # 注意:alias后面需要/符号
            alias /python_project/collection_info/templates/;
            index login.html;
        }
        # 返回静态页面
        location /manager/index/ {
            alias /python_project/collection_info/templates/;
            index manager_page.html;
        }
        # 返回静态文件
        # 这时候使用root就没啥问题
        # root路径 + url请求路径 = 返回文件
        location /static/ {
            root /python_project/collection_info/; 
        }
    
        # / 是通配符,优先级最低,表示其他都不匹配时候走这个
        location / {
            # 给后端,通过uwsgi发送给django处理
            include uwsgi_params;
            # 由于我是一个服务器部署的所有服务,所以用的回环地址
            uwsgi_pass 127.0.0.1:8000;
        }
    }

    # nginx的根路径匹配,待续

    配置uwsgi启动django项目:

    传统wsgi只是单进程的,不能利用多核,uwsgi可以缓解些。

    使用uwsgi达到启动django项目的目的,并且还可以和nginx结合使用!

    uwsgi安装(进入虚拟环境里搞):

    pip3 install -i https://pypi.douban.com/simple uwsgi

    uwsgi配置文件:

    vim /python_project/collection_info/uwsgi.ini

    [uwsgi]
    
    ; 监听的端口,当没有nginx时候使用这个
    ;http = 127.0.0.1:8000
    ; 代理静态资源:路径映射,没nginx时候要配置的
    ; static-map = /static=/python_project/collection_info/static/
    
    
    ; 指定和nginx进行套接字通信的方式:端口或文件
    socket = 127.0.0.1:8000
    socket = /python_project/collection_info/collection_info.sock
    
    ; 项目所在目录,和manage.py同级
    chdir = /python_project/collection_info/
    
    ; python虚拟环境所在目录
    home=/opt/env/collection_info
    PYTHONHOME = /opt/env/collection_info/bin/
    
    ; 主应用中的wsgi文件
    wsgi-file = collection_info/wsgi.py
    
    ; 启动一个master进程,来管理其余的子进程
    master=True
    
    ;开俩进程
    processes = 2
    ;开四个线程
    threads = 4
    
    ; 保存主进程的pid,用来控制uwsgi服务
    pidfile=/python_project/collection_info/uwsgi.pid
    ; 启动项目  uwsgi uwsgi.ini
    ; uwsgi --stop/reload xxx.pid  停止/重启uwsgi
    
    ; django的运行日志保存的文件路径
    daemonize=/python_project/collection_info/log/uwsgi.log
    
    ; 设置每个工作进程处理请求的上限,达到上限时,将回收(重启)该进程。可以预防内存泄漏
    max-requests=5000
    
    ; 服务停止时自动移除unix Socket和pid文件
    vacuum=true

    uwsgi命令:

    uwsgi --ini /python_project/collection_info/uwsgi.ini    # uwsgi启动jdango项目

    uwsgi --stop /python_project/collection_info/uwsgi.pid    # 停掉项目

  • 相关阅读:
    WPF中更改键盘默认指令小结
    WPF自己喜欢用的数据验证方式
    重写Windows基类,自定义WPF窗口,实现改回车键为TAB
    用CSS控制表格的框格线
    获取当前鼠标的坐标
    SQL 中的转义字符
    資料站點
    jquery 弹出浮层(div) + 遮蔽层
    Jquery放大镜插件[JMagazine]使用参数简介
    邏輯題 交通事故篇
  • 原文地址:https://www.cnblogs.com/zezhou/p/12442751.html
Copyright © 2011-2022 走看看