系统:debian-7.0-x86
python版本:2.7.3

python

退出python编辑状态:

exit()

后续,主要是按照教程来做网上的教程来做,但有部分是不一样的。
https://www.oschina.net/translate/serving-flask-with-nginx-on-ubuntu

安装setuptools

wget https://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
tar zxvf setuptools-0.6c11.tar.gz
cd setuptools-0.6c11
python setup.py install

安装pipvirtualenv

sudo easy_install pip
sudo pip install virtualenv

升级已有的包,确保系统上有uWSGI所需的编译器和工具:

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install build-essential python python-dev

安装UWSGI

pip install uwsgi

lnmp一键安装脚本安装 nginx、php、数据库、phpmyamdin、ftp。
https://blog.linuxeye.cn/31.html

通过lnmp自带的添加域名功能,进行绑定路径(后续会有很多地方用到这个路径):

/data/wwwroot/pyte

安装Flask

创建并激活一个虚拟环境,在其中安装Flask

cd /data/wwwroot/pyte
virtualenv venv
. venv/bin/activate
pip install flask

使用下面的代码创建hello.py文件:

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello World!"
if __name__ == "__main__":
    app.run(host='0.0.0.0', port=8080)

执行刚创建的脚本:

python hello.py

新建uWSGI配置文件

创建一个新的uWSGI配置文件/data/wwwroot/pyte/pyte_uwsgi.ini:

[uwsgi]
#应用程序的文件夹路径 application's base folder
base = /data/wwwroot/pyte
#pyton模块导入 python module to import
app = hello
module = %(app)
home = %(base)/venv
pythonpath = %(base)
#socket文件的路径 socket file's location
socket = /data/wwwroot/pyte/%n.sock
#pchmod-socket的权限 ermissions for the socket file
chmod-socket    = 666
#the variable that holds a flask application inside the module imported at line #6
callable = app
#日志文件的路径 location of log files
logto = /var/log/uwsgi/%n.log

注意,本文中全部以pyte作为flask的应用文件夹,大家可自由替换。
创建一个新文件夹存放uWSGI日志,更改文件夹的所有权(因为我装了ftp,而且ftp账号的用户组是www:www,所以文件权限也是给了www:www):

sudo mkdir -p /var/log/uwsgi
sudo chown -R www:www /var/log/uwsgi

配置网站的nginx配置文件:
(我已经通过lnmp添加了域名配置文件)在网站的配置文件中添加以下代码/usr/local/nginx/conf/pyte.conf

location / {
    try_files $uri @yourapplication;
    }
  location @yourapplication {
        include uwsgi_params;
        uwsgi_pass unix:/data/wwwroot/pyte/pyte_uwsgi.sock;
    }

配置uWSGI Emperor

uWSGI Emperor是用来管理uwsgi后台运行的。
创建一个初始配置来运行emperor,文件路径/etc/init/uwsgi.conf,文件代码如下:

description "uWSGI"
start on runlevel [2345]
stop on runlevel [06]
respawn
env UWSGI=/usr/local/bin/uwsgi
env LOGTO=/var/log/uwsgi/emperor.log
exec $UWSGI --master --emperor /etc/uwsgi/vassals --die-on-term --uid www --gid www --logto $LOGTO

最后一行运行uWSGI守护进程并让它到/etc/uwsgi/vassals文件夹查找配置文件。创建这个文件夹,在其中建立一个到链到我们刚创建配置文件的符号链接。

sudo mkdir /etc/uwsgi && sudo mkdir /etc/uwsgi/vassals
sudo ln -s /data/wwwroot/pyte/pyte_uwsgi.ini /etc/uwsgi/vassals

同时,最后一行说明用来运行守护进程的用户是www。为简单起见,将这个用户设置成应用和日志文件夹的所有者。

sudo chown -R www:www /data/wwwroot/pyte
sudo chown -R www:www /var/log/uwsgi/

运行uWSGI:

sudo start uwsgi

或者

service uwsgi start

目前,过程到此就告一段落,后续还会在记录。

标签: none

添加新评论