• flask+uswgi+nginx+python3.6的venv发布网站ubuntu14.04


    ---------------------------nginx---------------

    sudo apt-get install nginx


    sudo apt-get remove nginx nginx-common # 卸载删除除了配置文件以外的所有文件。

    sudo apt-get purge nginx nginx-common # 卸载所有东东,包括删除配置文件。

    server {
    listen 80;
    server_name ip或域名;
    charset utf-8;
    rewrite_log on;

    location / {

    include uwsgi_params;
    uwsgi_pass unix:/home/ubuntu/project/project.sock;
    }
    }
    -------------------------python and flask------------------------------
    ubuntu14.04 默认安装的是python3.4,也可以手工编译升级成python3.6参见本人的升级python版本文章。

    sudo apt-get install python3.6-venv

    mkdir project

    cd project

    pyhon3 -m venv venv 创建虚拟环境

    . venv/bin/activate

    pip install --upgrade pip

    pip freeze > requirements.txt

    pip install -r requirements.txt

    pip install uwsgi

    deactivate

    -------------------------------uwsgi配置 ------------------------------

    uwsgi.ini文件内容如下:

    chdir = /deploy/project_dir

    module = module_filename:create_app()    #  module_filename.py文件中定义了工厂方法create_app()方法,当然也可以使用定义全局app用下面的两行代替 参考:http://flask.pocoo.org/docs/1.0/cli/#application-discovery

    # wsgi-file = manage.py
    # callable = app

    master = true
    processes = 2

    threads = 2
    http = ip:port   # 如果使用url直接在浏览器中访问uwsgi则需要设置成http协议,如果是Nginx和uwsgi通信则可以设置成socket协议如:socket = /var/www/project/uwsgi.sock
    chmod-socket= 666
    logfile-chmod= 644
    daemonize=%(chdir)/uwsgi.log

    可以使用uwsgi --http ip:5000 --module 'module_filename:create_app()'来测试一下,成功后再运行uwsgi --ini uwsgi.ini

    ----------------------supervisor-----------------
    sudo apt-get install supervisor 以这种方式安装后自动设置为开机启动。

    supervisord配置文件在: /etc/supervisor/supervisord.conf

    然后 program 的配置文件命名规则推荐:app_name.conf,放在/etc/supervisor/conf.d/下面
    ; ================================
    ; uwsgi supervisor
    ; ================================
    [program:app_lesson] # project_name为项目名称
    command = /home/ubuntu/lesson/venv/bin/uwsgi --ini /home/ubuntu/lesson/uwsgi.ini
    stopsignal=QUIT
    autostart=true
    autorestart=true
    stdout_logfile=/var/log/uwsgi/supervisor_flask.log # 运行日志
    stderr_logfile=/var/log/uwsgi/supervisor_flask_err.log # 错误日志

    supervisorctl 是 supervisord 的命令行客户端工具,使用的配置和 supervisord 一样

    sudo supervisord -c supervisord.conf # 指定配置文件启动supervisord

    sudo supervisorctl 进入 supervisorctl 的 shell 交互界面
    help # 查看帮助
    status # 查看程序状态
    stop program_name # 关闭 指定的程序
    start program_name # 启动 指定的程序
    restart program_name # 重启 指定的程序
    tail -f program_name # 查看 该程序的日志
    update # 重启配置文件修改过的程序(修改了配置,通过这个命令加载新的配置)

    sudo chmod 777 /run
    sudo chmod 777 /var/log
    sudo touch /var/run/supervisor.sock
    sudo chmod 777 /var/run/supervisor.sock

    sudo service supervisor restart

    ------------------------------------------------------------------------------------

    ps -ef|grep uwsgi| grep -v grep|cut -c 7-15|xargs sudo kill -9

    如果出错,则查看/var/log/nginx/error.log,根据错误信息来处理。

     总结: stack is : the web client <-> the web server <-> the socket <-> uWSGI <-> Python

  • 相关阅读:
    会议记录
    周总结
    团队博客
    周总结
    移动端疫情展示
    代码规范
    阅读笔记2
    解决 import numpy as np ModuleNotFoundError: No module named 'numpy'错误
    周总结
    爬取最新疫情数据
  • 原文地址:https://www.cnblogs.com/zxpo/p/3810526.html
Copyright © 2020-2023  润新知