树莓派虚拟环境部署flask:python3.7+Ngnix+Gunicorn+virtualenv

树莓派虚拟环境部署flask:python3.7+Ngnix+Gunicorn+virtualenv

自己的树莓派3B+吃灰很久了,它做个小服务器还是可以的,查阅了许多资料,最终确定python3.7+Ngnix+Gunicorn+flask的方案。

网上有的说树莓派3B+不能用64G的卡,实测能用,只不过在用sdCardFormatter格式化的时候,需要一个比较靠谱的读卡器。mac系统用sdCardFormatter格式化sd卡,用BalenaEtcher写入树莓派系统。用最新的系统就行,默认已经装好了python3.7.3.

网上一些方案用uwsgi,但是我自己在配置的时候频繁出现Operational MODE: preforking+threaded错误和no app loaded. going in full dynamic mode,大意是容器里面是空的,无论如何改变.ini配置,就是无法运行,所以放弃了uwsgi。

开始的时候特别想不用虚拟环境,嫌麻烦,但是最终还是用了虚拟环境,不得不说:真香!在普通用户权限下根本无法pip包,提示网络错误。但是在虚拟环境下,很正常地下载,不清楚为什么,反正管用。

接下来简述一下步骤。

  1. 安装树莓派,树莓派设置中将SSH服务打开。并在自己的电脑准备工具,我用ZenTermlite和FileZilla传文件,为了方便,把树莓派的python命令默认改为启动python3,要不好像是默认python2.7的。
  2. 安装Ngnix+Gunicorn+virtualenv,最开始我pip安不上包,所以都是用的离线的tar.gz安装的。在本机上下载解压,再ftp传到树莓派的home/pi/Downloads文件夹下,再cd到该文件夹,python setup.py install。
  3. 安装flask包。我是在home/pi/flask文件夹下建的flask项目。在本机建好项目后,把flask项目的app.py拷贝到flask文件夹中,并python app.py,在树莓派上访问127.0.0.1:8080,确定这个项目能跑起来,注意flask内的app.run(debug=True, host='0.0.0.0', port=8080)。因为之前用的是5000,无论如何都无法再外网访问,所以换了个端口8080。
  4. 设置虚拟环境。虚拟环境可以理解为项目里面的一个“环境设置”。flask文件夹就是项目地址,flask文件夹下面的venv就是这个项目运行需要的环境。常见命令如下:
mkdir venv    #创建venv的项目文件夹
cd venv        #进入venv文件夹
virtualenv venv  #创建虚拟环境
source venv/bin/activate  #激活虚拟环境,此时最左边应该会有env的显示字样
deactivate  #退出虚拟环境

我是将venv文件夹放在flask项目文件夹内。

接下来的Ngnix和Gunicorn都在激活虚拟环境时进行。

  1. 开启Ngnix。

配置命令:sudo nano /etc/nginx/sites-available/default

server {
        listen 80;
        server_name raspberry;
        location / {
                        proxy_pass http://127.0.0.1:8080;
                        proxy_set_header Host $host;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                }

}

启动Ngnix服务:sudo /etc/init.d/nginx start

重启Ngnix:sudo service nginx restart

配置Gunicorn。在虚拟环境中gunicorn -w 4 -b 127.0.0.1:8080 app:app 这时候局域网机器访问其ip地址就可以看到flask项目设置的主页了。

  1. 配置树莓派启动时就开启各种服务:su root命令启用root账户,

sudo nano /home/pi/flask/flaskS.sh添加执行的命令内容如下:

sudo /etc/init.d/nginx start
cd /home/pi/flask
gunicorn -w 4 -b 127.0.0.1:8080 app:app

上面的命令是模仿pi用户登入时,写的命令,也就是执行一遍这个脚本,就能启动flask服务了。

然后编辑启动文件

sudo nano /etc/rc.local 

在文件的 exit 0 之前,添加执行sh文件的脚本:

su pi -c "exec /home/pi/flask/flaskS.sh "    

这句至关重要。su pi -c会登入pi账户并执行sh脚本,之后会切换为原来的用户。

root用户命令行shutdown -r now,回车之后重启。非root用户sudo reboot重启树莓派。再在浏览器中输入树莓派的ip地址,就能看到flask项目的主页了。

个人注意要点:虚拟环境设置,和开机启动。

 

 

参考资料:

https://blog.csdn.net/weixin_40680506/article/details/108184577

https://www.cnblogs.com/Ray-liang/p/4837850.html

https://blog.csdn.net/luhuibo318/article/details/102688154

https://zhuanlan.zhihu.com/p/72610135?utm_source=qq

https://blog.csdn.net/weixin_40973138/article/details/84192345

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

limaning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值