Flask+uwsgi+Nginx+Centos 的部署

一、云服务器与云主机

1、常用云服务器的选择

 
阿里云 : https://free.aliyun.com/ 

2、什么是云服务器?

云服务器(Elastic Compute Service, ECS)是一种简单高效、安全可靠、处理能力可弹性伸缩的计算服务。其管理方式比物理服务器更简单高效。用户无需提前购买硬件,即可迅速创建或释放任意多台云服务器。

云服务器帮助我们快速构建更稳定、安全的应用,降低开发运维的难度和整体IT成本。

云服务器的业内名称其实叫做计算单元。所谓计算单元,就是说这个服务器只能算是一个人的大脑,相当于普通电脑的CPU,里面的资源都是有限的。你要获得更好的性能,解决办法一是升级云服务器,二是将其它耗费计算单元资源的软件部署在对应的云服务上。例如数据库有专门的云数据库服务、静态网页和图片有专门的文件存储服务。

而且云服务器不是说就便宜了,相反会比一般的VPS都贵。为什么?因为它相对于来说,扩展比较方便。云服务器是网站做大了、有很高收入的时候一个不错的选择。

云服务器是云计算服务的重要组成部分,是面向各类互联网用户提供综合业务能力的服务平台。平台整合了传统意义上的互联网应用三大核心要素:计算存储网络,面向用户提供公用化的互联网基础设施服务。

云服务器服务包括两个核心产品:

面向中小企业用户与高端用户的云服务器租用服务;

面向大中型互联网用户的弹性计算平台服务。

云服务器平台的每个集群节点被部署在互联网的骨干数据中心,可独立提供计算、存储、在线备份、托管、带宽等互联网基础设施服务。

云服务器的优势:

传统服务器业务

云服务器租用服务

投入成本

高额的综合信息化成本投入

按需付费,有效降低综合成本

产品性能

难以确保获得持续可控的产品性能

硬件资源的隔离+独享带宽

管理能力

日趋复杂的业务管理难度

集中化的远程管理平台+多级业务备份

扩展能力

服务环境缺乏灵活的业务弹性

快速的业务部署与配置、规模的弹性扩展能力

 

3、云服器与云共享主机的区别

云服务器: 一台独立的服务器, 硬件资源是独立的。
云共享主机 : 在云服务器上通过技术可以分割出很多虚拟主机出来,共享服务器的硬件资源。
云服务对外访问 : 服务器 + 域名 + 备案
远程数据库
 
安装
 
yum install mariadb-server -y
systemctl start mariadb
systemctl enable mariadb
用户远程登录授权
当远程访问 mysql 数据库时,一般的思路为,使用增加权限的语句,并且不要忘记刷新权限,如下
所示:
 
> grant all privileges on *.* to 'root@%' identified by 'westos'; 
> flush privileges;

4、Flask+uwsgi+Nginx+Centos部署

 
 
主机选择
云主机 / 虚拟机 : Centos/RedHat 7
版本控制工具
Git 安装与项目下载
 
yum install git -y 
# 项目存放目录, 可自定义。 
mkdir -p /data/www/ 
de /data/www/ 
git clone https://github.com/lvah/TodoList.git

依赖包安装(配置虚拟环境与安装第三方模块)

source venv/bin/activate 
pip install -r requirements.txt

五、UWSGI基础知识与配置启动

1、uWSGIuwsgiWSGI

uWSGI 是一个 web 服务器,它实现了 WSGI 协议、 uwsgi 协议、 http 协议等。 (C 语言开发 )
uwsgi 是一种线路协议而不是通信协议,常用于在 uWSGI 服务器与其他网络服务器的数据通信。
WSGI 是一种 Web 服务器网关接口。它是一个 Web 服务器( uWSGI 等服务器)与 web 应用(如用
Django/Flask 框架写的程序)通信的一种协议。
 

 

2、uwsgi配置

配置 uwsgi 配置文件
 
# 配置文件位置: /data/www/TodoProject/uwsgi.ini
[uwsgi] # 源码目录 
chdir = /data/www/TodoProject 
# Python虚拟环境 home = /data/www/TodoProject/venv 
module = manage 
callable = app
master = true processes = 4 
# 启动的端口号 
http = 0.0.0.0:5000 
# socket存放文件 
socket = /data/www/logs/todo.sock 
chmod-socket = 777 
logfile-chmod = 644 
buffer-size = 65535 
# pid存放文件 
pidfile = /data/www/logs/todo.pid 
daemonize = /data/www/logs/todo.log 
static-map = /static = /data/www/TodoProject/app/static
启动 uwsgi 服务
 
uwsgi --ini uwsgi.ini
重新 / 关闭加载 uwsgi 配置
 
uwsgi --reload /data/www/logs/todo.pid 
uwsgi --stop /data/www/logs/todo.pid

六、Nginx

1、什么是Nginx?

Nginx 是一个 Web 服务器和反向代理服务器,用于 HTTP HTTPS SMTP POP3 IMAP 协议。 采
单线程 来异步非阻塞处理请求 (epoll) 实现高并发功能。目前使用的最多的 Web 服务器或者代理服务
器,像淘宝、新浪、网易、迅雷等都在使用。
Nginx 的优势 :
跨平台、配置简单。
非阻塞、高并发连接。处理 2-3 万并发连接数,官方监测能支持 5 万并发
内存消耗小, 开启 10 Nginx 才占 150M 内存。
成本低廉,且开源。
稳定性高,宕机的概率非常小。

2、Nginx安装

添加 Nginx
 
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7- 0.el7.ngx.noarch.rpm
安装软件
 
yum install nginx -y

3、Nginx常用命令

 
查看 Nginx 版本 
nginx -v 
# 检查 Nginx 配置文件是否正确 
nginx -t 
# 启动 Nginx 
systemctl start nginx | nginx 
# 停止 Nginx 
systemctl stop nginx | nginx -s stop 
# 重新加载 Nginx配置 
systemctl reload nginx | nginx -s reload 
# 重新加载指定配置文件 
nginx -c conf.d/todo.conf

4、Nginx配置文件

 

 

编辑配置文件 /etc/nginx/conf.d/todo.conf
 
 
# 配置虚拟主机 
server { 
    # 监听端口 
    listen 80 default_server; 
    # 允许域名 
    server_name www.todo.com; 
    # 使用alias路径替换location路径 
    location /static { 
        alias /data/www/TodoProject/app/static; 
    }
    location / { 
        # 使用try_files判断uri是否带有文件名或者目录名,如果没有跳转到其他代理服务器
        try_files $uri @todoApp; 
    }
    location @todoApp { 
        # 包含uwsgi的请求参数 
        include uwsgi_params; 
        # 转发请求给uwsgi 
        uwsgi_pass unix:/data/www/logs/todo.sock; 
    } 
}

5、效果展示

用户访问云主机的 IP , 即可登录、注册等, 访问 TodoList 项目的所有路由。
 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值