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    # 停掉项目

  • 相关阅读:
    Unique Binary Search Trees 解答
    Unique Paths II 解答
    Unique Paths 解答
    Maximum Subarray 解答
    Climbing Stairs 解答
    House Robber II 解答
    House Robber 解答
    Valid Palindrome 解答
    Container With Most Water 解答
    Remove Duplicates from Sorted List II 解答
  • 原文地址:https://www.cnblogs.com/zezhou/p/12442751.html
Copyright © 2011-2022 走看看