美文网首页
简单的方法部署Flask + uwsgi + nginx到ubu

简单的方法部署Flask + uwsgi + nginx到ubu

作者: peter16_ | 来源:发表于2017-01-13 11:15 被阅读0次

    在网上搜索了一下发现有些方法因为版本过时的原因已经不适用了,在这简单记录一下我自己的部署过程。
    腾讯云服务器 Ubuntu 16.04 LTS
    初学web开发不久,如果有错误的地方请各位聚聚指正

    1) 安装 nginx

    首先安装nginx,在ubuntu终端执行:

    ubuntu@VM-252-231-ubuntu:~$ sudo apt install nginx

    安装成功后,访问云服务器域名或者ip应该就会出现nginx的默认页面了。

    2) 安装 uwsgi

    如果要使用虚拟环境,假设你的虚拟环境目录在项目文件夹下面,并且各个需要安装的包都已经安装好了,名字为venv:
    首先安装 python-dev
    ubuntu@VM-252-231-ubuntu:~$ sudo apt install python-dev

    然后激活虚拟环境:

    ubuntu@VM-252-231-ubuntu:~$ source venv/bin/activate```
    
    我这里的项目名字是 N ,虚拟环境激活后就可以开始安装uwsgi了
    针对pip安装速度慢的问题,可以加上 -i 参数,指定使用国内的豆瓣镜像
    
    `(venv) ubuntu@VM-252-231-ubuntu:~/N$ pip install uwsgi -i https://pypi.douban.com/simple`
    
    ##### 3) 配置 uwsgi
    安装好以后就可以开始配置uwsgi了,我的 uwsgi 配置文件放在了 项目文件夹下面,这里把配置内容贴上来:
    
    

    [uwsgi]
    master = true
    home = venv

    Flask 应用实例所在的模块

    wsgi-file = manage.py

    Flask 应用实例的名字

    callable = app
    socket = 127.0.0.1:5000
    stats = 127.0.0.1:9191

    根据你系统 CPU 的核心数决定

    processes = 4
    threads = 4
    buffer-size = 32768```

    我的配置文件的名字就是uwsgi.ini,启动uwsgi的命令为:
    (venv) ubuntu@VM-252-231-ubuntu:~/N$ uwsgi uwsgi.ini

    启动成功会出现提示信息:

    *** Operational MODE: preforking+threaded ***
    WSGI app 0 (mountpoint='') ready in 2 seconds on interpreter 0x154fed0 pid: 3423 (default app)
    *** uWSGI is running in multiple interpreter mode ***
    spawned uWSGI master process (pid: 3423)
    spawned uWSGI worker 1 (pid: 3428, cores: 4)
    spawned uWSGI worker 2 (pid: 3429, cores: 4)
    spawned uWSGI worker 3 (pid: 3430, cores: 4)
    spawned uWSGI worker 4 (pid: 3431, cores: 4)
    *** Stats server enabled on 0.0.0.0:9191 fd: 15 ***```
    
    ###### 注: 如果关闭了终端窗口后需要手动停止后台运行的 uwsgi 的话,可以使用下面的方法
    先找到 uwsgi 主进程的 id :
    `buntu@VM-252-231-ubuntu:~$ N ps -ef | grep uwsgi`
    根据返回的信息可以看到这里主进程的 id 为 119911
    

    tete 119911 117227 8 12:01 pts/20 00:00:01 uwsgi uwsgi.ini
    tete 119916 119911 0 12:01 pts/20 00:00:00 uwsgi uwsgi.ini
    tete 119917 119911 0 12:01 pts/20 00:00:00 uwsgi uwsgi.ini
    tete 119918 119911 0 12:01 pts/20 00:00:00 uwsgi uwsgi.ini
    tete 119922 119911 0 12:01 pts/20 00:00:00 uwsgi uwsgi.ini
    tete 119987 119933 0 12:01 pts/0 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn uwsgi```
    给这个进程发送 SIGQUIT 就可以关闭 uwsgi 了:
    buntu@VM-252-231-ubuntu:~$ kill -s SIGQUIT 119911

    4) 配置 nginx

    现在uwsgi这个 Web Server 已经启动起来了,接下来设置 nginx 。最简单的办法就是直接编辑 /etc/nginx/sites-enabled/default 这个文件,删除里面所有内容,替换成下面的内容:

    server {
        listen 80 default_server;
        listen [::]:80 default_server;
    
        root /path/to/your/project;
        index index.html index.htm index.nginx-debian.html;
    
        server_name _;
    
            location / {
                uwsgi_pass 127.0.0.1:5000;
                include uwsgi_params;
    }
    }```
    
    服务静态文件这个暂时不讨论了,重新载入配置,就成功了
    `ubuntu@VM-252-231-ubuntu:~$ sudo /etc/init.d/nginx reload`

    相关文章

      网友评论

          本文标题:简单的方法部署Flask + uwsgi + nginx到ubu

          本文链接:https://www.haomeiwen.com/subject/vgzjbttx.html