使用uWSGI+Nginx运行Flask-Twip

 Feb. 2, 2013, 2:25 a.m.   2 comments    Twitter twip Flask uWsgi

几个月前给服务器重新安装了系统,顺便从系统中移除了php,算是彻底告别php了~而之前使用php最多的程序莫过于Twip了,现在移除了php,就只好用Flask-Twip来代替Twip。

有过之前用uWSGI运行Flask应用的经验(本博客就是使用uWSGI运行的Flask程序),配置Flask-Twip也就不算那么困难了,在这里我就简单记录一下搭建的过程吧。

安装Python2.7

服务器上自带的Python版本为2.6,但是Flask-Twip要求Python2.7,所以需要在服务器上安装Python2.7,如果已经有可用的Python2.7则可以无视此步。

为了便于以后的管理,我选择pythonbrew来管理Python版本。

安装pythonbrew

curl -kL http://xrl.us/pythonbrewinstall | bash

使用pythonbrew安装Python2.7.3

pythonbrew install 2.7.3

切换到Python2.7.3

pythonbrew use 2.7.3

安装uWSGI

使用pip:

pip install uwsgi

安装Flask-Twip

Flask-Twip是作为Flask的一个插件来安装的,安装依然只需要使用pip:

pip install Flask-Twip

配置Flask-Twip

由于 @yegle 湿兄并没有在examples中提供uWSGI运行的示例,所以只好自己动手,按照uWSGI运行的方式改写了示例程序,并且将其打包 twip.tar.gz

只需将其解压到网站的目录,比如/home/www

tar zxvf twip.tar.gz -C /home/www

然后修改配置文件settings.py,填写好在dev.twitter.com申请到的TWITTER_CONSUMER_KEYTWITTER_CONSUMER_SECRET,至于SECRET_KEY嘛,就随便填好了~

运行uWSGI

我写了个uWSGI运行Flask程序的脚本server(在twip.tar.gz中),只需要给其增加可执行权限:

chmod +x server

执行./server start就可以启动uWSGI,同理,执行./server restart./server stop可以重启和停止uWSGI。

查看log文件/tmp/uwsgi-twip.log,如果没有任何错误,就说明uWSGI已经成功运行。

配置Nginx

光有uWSGI是不能够运行Flask-Twip的,我们还需要Nginx作为Web Server,只需要修改Nginx的配置文件,增加一个server,如下所示:

server
    {
        listen 80;
        server_name www.example.com;
        location /
            {
                include     uwsgi_params;
                uwsgi_pass  unix:/tmp/uwsgi-twip.sock;
            }
        location ^~ /twip/static/ 
            {
                alias /home/www/twip/static/;
            }
    }

重启Nginx,如果一切顺利的话,就可以在 http://www.example.com/twip/ 看到熟悉的Twip界面了~


Dray

Dray June 17, 2013, 2:25 p.m. Reply

我碰到一个问题,就是当授权完一个帐号后,要想授权第二个帐号活着重新授权,就必须重启 uwsgi server ,请问你有碰到这种给问题吗?要怎么解决?

Chon

Chon June 22, 2013, 11:05 p.m. Reply

我遇到的问题是,第二个帐号在授权完成后会直接跳转到首页而不显示API地址,不知道你说的是不是这个问题?
我暂时还没有找到解决的方案,因为还不能确定是Flask-Twip的问题还是uWSGI的问题。