概要
本文主要是叙述用uwsgi作为web服务运行flask开发的网站。本人查阅网上很多资料。跟着他们的步骤做,总是出现各种问题。折腾好久后,终于能正常运行了。故记录下来,供自己和他人查阅。
开发环境
centos7 64bit 云服务器,python 3.5 , uwsgi 2.0
因为博主用flask开发的web使用的python3.5 ,所以,就在云服务器上安装了3.5.如果你的项目是其他版本python开发的,请安装对应的版本。这里不多加叙述安装问题。
安装uwsgi
因为我的python版本是3.5的。所以一下所有关于python的操作指令都是python3 和pip3.这个如果你的不是,请对应自己的来改。比如你的是python 2.7版本的,你的python指令的开头应该是python或者python2,安装包指令应该是pip2或者pip
有很多方式提供安装,比如yum 安装,手动下载安装包,编译安装,已经pip安装。这里我们选择pip安装。这种方式感觉更靠谱。因为我用yum install uwsgi指令安装,最后uwsgi指定的python版本是我的旧版本2.7.而不是最新的3.5。所以卸载 了,又重新采用了pip安装
安装uwsgi的指令如下:
pip3 install uwsgi
建立软连接
因为我的python3.5是手动下载安装的。所以上一步安装uwsgi,安装成功后,只在我指定的安装目录下。而这个目录下,没有设置环境变量。所以我再shell上输入uwsgi,是不被识别的。为了解决这个问题,我需要建立一个软连接,然后将软连接文件放在环境变量中有的路径下。比如/usr/bin下。
ln -s /usr/python3.5/bin/uwsgi /usr/bin/uwsgi
*如果你安装完后,在shell上面,输入uwsgi已经能够被识别了,那么上面的指令你可以不用操作了。
安装一些依赖包
有些资料上面写着
yum install build-essential
yum install python-dev
这两条指令,但是这两条指令,在centos上是不叫这个名字的。所以会发现安装不成功。
以下是正确的安装指令:
安装build-essential需要下面的指令:
yum groupinstall "Development Tools"
yum install -y gcc
yum install g++
yum kernel-devel
因为centos上面没有python-dev的包,而是要安装Python-devel
yum install Python-devel
flask程序包的目录结构
app是一个包,里面只有一个view.py文件和__init__文件.初始化文件是空的。下面贴出view.py文件的内容
# encoding: utf-8
#!/usr/bin/ python3
'''
@author: rabbit
@contact: 739462304@qq.com
@time: 2017/11/27 14:09
@desc:
'''
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=5000)
manager.py的作用只是作为一个脚本启动入口,通过它启动flaskweb网站。比如你输入
python3 manage.py runserver --host 0.0.0.0
manager.py 内容也贴出来给大家
# encoding: utf-8
#!/usr/bin/env python
'''
@author: rabbit
@contact: 739462304@qq.com
@time: 2017/11/27 14:15
@desc:
'''
from flask_script import Manager, Shell
from app.view import app
manager=Manager(app)
def make_shell_context():
return dict(app=app)
manager.add_command("shell",Shell(make_context=make_shell_context))
@manager.command
def deploy():
'''run deployment tasks'''
pass
if __name__=='__main__':
manager.run()
使用ini文件配置uwsgi,使网站运行起来
我们可以看到项目里面有个叫config.ini文件,这个是我后期加到项目里的。不是该网站程序所自带的。
我们可以vim 去编辑这个config.ini并保存它。指令如下:
先创建一个新的文件,名字叫config.ini
vim config.ini
也给出文件内容,方便大家复制粘贴
[uwsgi]
#uwsgi启动时,所使用的地址和端口(这个是http协议的)
http=0.0.0.0:5000
#uwsgi 启动时所使用的地址与端口(这个是socke协议)
socket=0.0.0.0:8001
#指向网站目录
chdir=/root/deployTest
#python 启动程序文件
wsgi-file=manage.py
#python 程序内用以启动的application 变量名
callable=app
#处理器数
processes=4
#线程数
threads=2
#状态检测地址
stats=127.0.0.1:9191
对上面的内容我稍微解释一下。因为本人当初看别人写的这个地方的 配置,说的太模糊了。一直运行不起来,也不晓得是uwsgi没有安装好,还是这个配置文件的问题。搞的很头疼。简要说明如下:
chdir=/root/deloyTest
这个一定要指定到你的项目的目录中
callable=app
这个最难理解。因为当时项目最开始建立了一个叫app的文件夹,同时也建立了一个app.py的文件。app.py文件里面又有一个变量叫app。所以看到有的资料这么写,我很懵逼。最后我才把项目的app.py改成了view.py.经过本人测试。这个app的意思是对应view.py文件里面的flask变量名app.如果view.py里面的变量名改成了application。那么这个配置文件里面也要把app换成application.
启动uwsgi 挂起网站
一起准备妥当,只差最后临门一脚了
指令如下:
正常运行,界面如上。
浏览器输入网址,应该就能得到我们网站的界面了。
截图如下:
最后祝你成功!