部署

根据和代码/系统的紧密程度,我们可以简单地把部署分为应用级和系统级。 应用级通常提供把 HTTP 请求递交给应用,而系统级和运维的关系更为紧密。

下面是一个非常常见的 Python 应用部署架构:

  • nginx :静态文件服务;SSL 负载转移;反向代理;
  • Memcached / Redis :缓存;
  • Celery :运行后台任务;
  • Redis / RabbitMQ :任务队列(通常对接 Celery);
  • [uWSGI] / [Gunicorn] :WSGI 服务器;

web 应用服务器

uWSGI

uWSGI 是一个主要以 C 语言实现的高性能服务器,性能优异、配置灵活,可以使用 C、C++ 甚至 Objective-C 编写插件。

uWSGI 并不仅仅是一个 WSGI 服务器,它也可以用作 Ruby Rack 应用或者 Perl PSGI 应用的后端服务器。

Gunicorn

Gunicorn 是一个类 Unix 系统上一个 Python 实现的 WSGI 服务器,性能很高使用也很简单。

作为 WSGI 服务器,Guicorn 拥有很好的性能,但是它并不擅长静态文件处理,因此在实际部署中常常隐藏于 Nginx 之后,由 Nginx 提供静态文件服务,动态请求则通过反向代理发送给 Gunicorn。

Tornado

Nginx/Apache

服务器部署

Python 应用部署的常用工具有 FabricSaltStackAnsiblePuppet,前三者都是 Python 应用,Puppet 这是 Ruby 便携的服务器部署工具,除 Fabric 是完全开源外,后三者背后都有商业公司, 提供应用的商业版本或者应用之外的企业服务。

Fabric

Fabric 是一个基于 SSH 的命令式部署工具,通过编写 fabfile 来扩展和定制 Fabric 的功能。不得不说,对于复杂的部署环境来说,Fabric 的部署方式已经有些落后,但是对于少量、 简单的服务环境,Fabric 使用起来简单、方便。

Ansible

Ansible 同样是基于 SSH 的服务器运维工具。

results matching ""

    No results matching ""