在服务器上简单的实现了flask+uwsgi+nginx的配置,记录如下
思路:
- 在服务器上安装LNMP包
- 安装uwsgi
- 配置
步骤:
- 安装LNMP包
这个包包含了nginx/mysql这些,直接安上即可,具体就请移步到官网(http://lnmp.org/install.html),跟着教程做吧….(嘿嘿)….
- 安装uwsgi
安装也很简单,直接一个命令就解决了~~
pip install uwsgi
- 配置
1.uwsgi配置:
uwsgi_config.ini,我是放在我的网站文件夹中的(/web/uwsgi_config.ini),想着方便管理一点儿
[uwsgi]
socket = 127.0.0.1:9090
chdir = /home/www/web
wsgi-file = View.py
callable = app
processes = 4
threads = 2
stats = 127.0.0.1:9191
上面便是我的配置,其中socket是用来uwsgi与nginx之间通信的,所以要记住哟,后边儿要用这个,然后chdir是你的项目的文件夹,wsgi-file便是启动文件哟
2.nginx配置:(nginx.conf)
server{
listen 80;
server_name www.example.cc;
location /{
include uwsgi_params;
uwsgi_pass 127.0.0.1:9090;
uwsgi_param UWSGI_PYHOME /home/www/web/venv;
uwsgi_param UWSGI_CHDIR /home/www/web;
uwsgi_param UWSGI_SCRIPT View:app;
}
}
看到这上面这个配置,一下又让我想到了当时自己以为server_name那里自己随便取个就行了….╮(╯▽╰)╭(基础太差…太菜……),在上面这个配置中UWSGI_PYHOME这项如果flask项目没有采用virtualenv貌似就不用写的,自我理解的是这个参数为了让uwsgi在运行flask项目的时候使用虚拟环境中的pyhon来解析~~
nginx.conf这个文件,我也是放在flask项目的根目录,便于管理,因为我配置的这个服务器上已经存在一个项目了,占用着80端口,所以这里又涉及到了nginx多个域名解析的操作,其实很简单,操作如下:
- 在nginx的conf文件夹中新建一个文件夹vhost
mkdir /usr/local/nginx/conf/vhost
- 打开nginx.conf文件,然后在http{}的最后添加’include vhost/*.conf’
vim /usr/local/nginx/conf/nginx.conf
#添加include vhost/*.conf到http,如下:
...
http{
...
include vhost/*.conf;
}
...
- 最好执行如下命令即可完成配置:
sudo ln -s /home/www/web/nginx.conf /usr/local/nginx/conf/vhost
- 以上几个步骤已经能够让服务器跑起来了,只是还需要一个东东才更方便,那便是supervisor,用它来引导uwsgi,它能够让uwsgi随同服务器启动并作为后台服务运行.
安装supervisor
sudo apt-get install supervisor
配置supervisor
[program:manager]
command = /home/www/web/venv/bin/uwsgi /home/www/web/uwsgi_config.ini
directory = /home/www/web
user = root
autostart = true
autorestart = true
stdout_logfile = /home/www/web/logs/uwsgi_supervisor.log
将上边儿这段代码保存为/home/www/web/supervisor.conf(还是保存在了我的网站根目录,接着执行下面命令,将它链接到/etc/supervisor/conf.d文件夹中
sudo ln -s /home/www/web/supervisor.conf /etc/supervisor/conf.d
最后启动supervisor,以及重启nginx
sudo service supervisor start
sudo service nginx restart