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

2017-01-13  本文已影响0人  peter16_

在网上搜索了一下发现有些方法因为版本过时的原因已经不适用了,在这简单记录一下我自己的部署过程。
腾讯云服务器 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`
上一篇下一篇

猜你喜欢

热点阅读