Ubantu18.04环境安装uwsgi并运行flask应用
安装ubantu18.04
网上关于如何安装ubantu系统的文章多如牛毛,尚未安装ubantu系统的可自行安装。在这里贴上一篇如何在windows下彻底删除ubantu系统的文章,供无法忍受因为安装软件失败而导致系统文件混乱的同学参考。link
安装uwsgi
在ubantu18.04下使用pip安装uwsgi时需要注意的一点是,gcc编译器的版本至少要低于gcc-5。至少在我的电脑的gcc为5.5版本时没有安装成功,换到gcc-4.7时安装成功了。
对于如何使用指定版本的gcc编译器可参阅相关文章。步骤为:删除原有的gcc链接,然后新建一个gcc链接指向所需要的gcc版本。
sudo apt-get install gcc-4.7 # 安装gcc-4.7版本
sudo rm -rf /usr/bin/gcc # 删除原有的gcc链接
sudo ln -s /usr/bin/gcc-4.7 us/bin/gcc # 建立新的gcc链接指向gcc-4.7版本
上述操作完成后,可通过下面的指令来查看gcc链接
ls -l /usr/bin | grep gcc # 查看当前gcc的指向
在使用linux命令的时候需要注意的一点是当前命令是在那个目录下使用的。对于一些linux命令而言,需要到指定目录下执行。
运行uwsgi服务器
运行一个uwsgi服务器有两种办法,一种是直接在uwsgi命令中添加参数来运行uwsgi服务器;另一种是通过uwsgi加上配置文件来运行服务器。对于我而言,我只关心第二种。由于本人才疏学浅,直使用到了如下几个uwsgi配置参数。
uwsgi.ini文件。文件所在的完整路径是/usr/wty/PycharmProjects/ProjectName/uwsgi.ini
[uwsgi] # 这是uwsgi配置文件的格式,照着写就行了
http=127.0.0.1:5000 # 这是ip地址和端口号。这个一般人都能理解。
# 常用到的还有socket,这种情况常见的是Nginx+uWSGI配合使用。由于我只用到uWSGI所以我用了http
processes=8 # 进程数
threads=1 # 线程数
master=true # 主进程,相关的含义可自行查阅文献,我也说不清
callable=app # flask中app的名字。好多网上的文章,不知道怎么回事,没有把这个东西是说清楚。对于我这种
# 比较笨的初学者而言,简直就是.....。刚开始时,始终搞不明白这到底是文件名,还是什么鬼。
# 无数次失败之后,总算弄明白了这个参数就是使用
# app = Flask(__name__, instance_relative_config=True)这条语句创建得到的app变量名。
# 如果不指定或者名字不对,会导致uWSGI服务器提示没有application被加载
chdir=/home/wty/PycharmProjects/ProjectName # 项目所在路径
#env=/home/wty/PycharmProjects/ProjectName/venv # 虚拟环境所在路径,但是我没用到。
wsgi-file=/home/wty/PycharmProjects/ProjectName/runserver.py # 这个参数一般是这条
# app = Flask(__name__, instance_relative_config=True)
# 语句所在的python文件的路径。 通常与callable的参数相对应。
memory-report=true # 根据参数名称大概能猜到是什么意思,
# 但是该参数对服务器性能有什么影响,暂时不清楚。
buffer-size=32768 # 根据名称也大概能知道什么意思,但是该参数对
# 服务器性能有什么影响,暂时不清楚。
daemonize = /home/wty/PycharmProjects/ProjectName/uwsgi.log # 日志路径。
配置完uwsgi.ini文件后可通过如下命令运行uWSGI服务器。
uwsgi --ini uwsgi.ini
如果当前终端不在uwsgi所在路径,则需要写入完整的uwsgi.ini文件所在路径。
这里需要注意的一点是,使用启动哪个uwsgi服务器。如果向使用虚拟环境中的uWSGI服务器,则需要在运行上面的命令之前激活虚拟环境。因为我的电脑的虚拟环境所在目录是/home/wty/PycharmProjects/ProjectName/venv。因此我执行如下命令可以激活项目的虚拟环境。
source /home/wty/PycharmProjects/ProjectName/venv/bin/activate
到目前为止,已经完成了ubantu18.04系统下使用uWSGI下部署flask项目。可通过日志/home/wty/PycharmProjects/ProjectName/uwsgi.log 来查看服务器相关的状态。我的日至文件内容为:
总结
看似工作量不多,难度不大。但对于我这种小白,从安装ubantu到安装uwsgi再到部署flask,真的就像是剥了一层皮。在此记录一下,勉励自己。