centos7+Anaconda+uWSGI+nginx部署Flask(懒人版)

Anaconda

Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。

下载安装

官方下载地址:https://repo.anaconda.com/archive/ (下载速度太慢,建议用下面的地址)
清华大学镜像站下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

下载
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2019.03-Linux-x86_64.sh 

centos安装新版本到了Unpacking payload就卡着不动,建议下19.03之前的版本

安装
sh Anaconda3-2019.03-Linux-x86_64.sh 

选择默认路径安装(/root/anaconda3),建议不要改动

创建python虚拟环境

激活anaconda
source anaconda3/bin/activate
安装virtualenv
pip install virtualenv
创建目录
mkdir ~/myProject
cd ~/myProject
创建虚拟环境目录
virtualenv venv
激活新创建的虚拟环境:
source venv/bin/activate

测试运行

安装Flask
pip install flask
创建一个py文件
vim ~/myProject/app.py
复制下列代码进去
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
    return 'hello world!'
if __name__ == '__main__':
    app.run(host='0.0.0.0')
回到命令行,运行
python app.py

最后浏览器访问测试(不要忘了开放防火墙)

uWSGI

uWSGI的功能是把HTTP协议转化成语言支持的网络协议供python使用。

安装

pip install uwsgi

配置

项目跟目录下创建配置文件
vim uwsgi.ini
复制下列代码进去
[uwsgi]
socket = 127.0.0.1:5000
chdir = /root/myProject # 项目文件存放位置
wsgi-file = app.py # app初始化文件
callable = app # Flask对象

运行

项目根目录下运行
uwsgi --ini uwsgi.ini #根目录下执行
#uwsgi -d --ini uwsgi.ini 后台运行
#pkill -f uwsgi -9 杀掉进程

此时运行可能会报错

1、error while loading shared libraries:xxx

解决办法:从anaconda3里面把缺少的文件复制到/lib64下面。
例如,启动uwsgi时报错为:
uwsgi: error while loading shared libraries: libicui18n.so.58
表示缺少了libicui18n.so.58

cp /root/anaconda3/lib/libicui18n.so.58 /lib64
2、uwsgi: /lib64/./libstdc++.so.6: version `CXXABI_xxx’ not found

解决方法:用anaconda3中libstdc++.so.6.0.25替换原来的libstdc++.so.6

cd /lib64 #进入目录
rm -rf libstdc++.so.6  #删除原文件
cp /root/anaconda3/lib/libstdc++.so.6.0.25 /lib64 #复制
ln -s libstdc++.so.6.0.25 libstdc++.so.6 #创建替换链接

成功运行后退出继续配置nginx

nginx

nginx接收到浏览器发送过来的HTTP请求,将包进行解析。如果是静态文件请求就直接访问用户给nginx配置的静态文件目录,直接返回用户请求的静态文件。如果不是静态文件,而是一个动态的请求,那么nginx就将请求转发给uWSGI。

安装

yum -y install nginx

配置

创建配置文件
vim /etc/nginx/conf.d/myProject.conf
复制下列代码进去
server 
{
	listen 80;
	server_name x.x.x.x;	# 服务器IP地址或是域名
	location / 
	{
		include uwsgi_params;
		uwsgi_pass  127.0.0.1:5000;	# 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理
		uwsgi_param UWSGI_PYHOME /root/myProject/venv;	# 指向虚拟环境目录
		uwsgi_param UWSGI_CHDIR  /root/myProject/;			# 指向网站根目录
		uwsgi_param UWSGI_SCRIPT app:app;		# 指定启动程序及Flask对象
	}
}

运行

systemctl start nginx
systemctl enable nginx ##设置开机自启动

最后浏览器访问测试,完成!

参考:
https://blog.csdn.net/qq_42766994/article/details/100067426

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值