部署python应用(python 应用)

部署python应用(python 应用)所需工具:

本文目录一览:

如何部署简单python + flask应用

所需工具:

python3.4

flask

nginx

gunicorn

supervisor

系统环境:

Ubuntu 14.04LTS

我们先写一个最基本的flask应用:

demo.py

from flask import Flask

app = Flask(**name**)

@app.route(‘\’)

def index():

return ‘Hello World.’

if __name__ == __main__:

app.run()

运行这个py文件,打开浏览器访问127.0.0.1:5000就能看到显示Hello World的页面 .

如果让这个flask引用监听来自公网ip的请求,理论上你跑此程序的机器就相当于一个服务器了,然而这个服务器并不完美,所以我们需要nginx和gunicorn来增加它的功能,让它真刀真枪上生产环境的时候能按要求运行。

flask自带的WSGI框架性能很差劲,只能适用于开发环境调试使用。我们用专业一点的gunicorn(还有很多其他优秀的框架)替代flask自带的WSGI框架。

配置完后,通过命令’/usr/local/bin/gunicorn -b127.0.0.1:5000‘启动应用。打开浏览器访问127.0.0.1:5000,同样能够得到返回页面

然而gunicorn也仅仅是一个python的WSGI框架而已,要让它真正处理来自互联网的各类访问功能还是有点欠缺,这时候就需要用到大名鼎鼎的nginx 服务器来替gunicorn遮风挡雨了。

Ubuntu下安装nginx可以用命令

sudo apt-get install nginx

安装后需要进行下配置:

cd /etc/nginx/sites-available

sudo vi test (test为配置名称,可以根据自己项目进行命名)

test文件的配置为:

server {

listen 80; # 监听80端口

location / {

proxy_pass ; # 代理本机127.0.0.1:5000的服务

}

location /static {

alias /home/ubuntu/myproject/myblog/app/static; # 负载均衡

}

}

cd ..

cd sites-enable

sudo ln -s ../sites-available/lwhile . (创建软链接,别漏掉最后的.)

sudo service nginx reload

sudo service nginx restart

这样nginx的基本配置文件就写好了 接下来我们配置进程管理工具supervisor supervisor可以在后面启动你的python进程,这样很方便

1.cd /etc/supervisor/conf.d

2.sudo vi test.conf (test为文件名)

[program:test]

command = /usr/local/bin/gunicorn -b127.0.0.1:5000 /home/ubuntu/myproject/test.py

3.sudo supervisorctl

4.reload

5.start test

如果一切正常,做完这所有步骤之后,现在公网的ip访问你的主机,就可以打开你的flask应用了

如何创建部署WSGI类型的Python应用

1.因为这是部署Python开发环境,所以安装pip可以简化一些软件的安装过程。(PIP对应Lua的luarocks)

sudo apt-get install python-pip

安装三个Python框架

sudo pip install flask

sudo pip install django==1.5.1

sudo pip install tornado==3.1.1

2.安装Gunicorn,这是运行Python的WSGI HTTP服务。

sudo pip install gunicorn

3.Virtualenv, 安装这个是因为,在部署Django的时候,使用了不同的版本。

sudo pip install virtualenv

第二部分:创建部署应用。

1.创建一个WSGI类型的Tornado应用。

import tornado.web

import tornado.wsgi

class MainHandler(tornado.web.RequestHandler):

def get(self):

self.write(“My source code in the MoPaas server by python Tornado!”)

settings = {

“debug” : True,

“static_path”: “static”,

}

#####

urls = [

(r”/”, MainHandler),

]

app = tornado.wsgi.WSGIApplication(urls, **settings)

启动这个服务:

gunicorn -w 4 torapp:app -b 0.0.0.0:8888

2.创建一个Flask应用。

from flask import Flask

app = Flask(__name__)

@app.route(“/”)

def hello():

return “My source code in the MoPaas server by python Tornado!”

if __name__ == “__main__”:

app.run()

启动这个服务:

gunicorn -w 4 server:app -b 0.0.0.0:8888

3.创建Django应用。

Django是一个比较大的WEB应用,创建各部署的过程,稍微复杂一些。

创建工程

django-admin.py startproject hotdoc

创建应用

python manage.py startapp verp

创建数据库表

python manage.py syncdb

启动工程

gunicorn hotdoc.wsgi:application -b 0.0.0.0:8888

需要在修改工程目录下的settings.py

在INSTALLED_APPS中加入, verup和gunicorn:

INSTALLED_APPS = (

‘django.contrib.admin’,

‘django.contrib.auth’,

‘django.contrib.contenttypes’,

‘django.contrib.sessions’,

‘django.contrib.messages’,

‘django.contrib.staticfiles’,

‘verup’,

‘gunicorn’

以上,本地开发环境是没问题的。

这些步骤也可以用virtualenv新创建一个虚拟环境完成,本地创建virtualenv可以

目前在WEB IDE上没有测试通过,理论上说,如果coding的WEB IDE是基于Docker

的,virtualevn也应该好用。

mkdir ~/environments/

virtualenv ~/environments/tutorial/

cd ~/environments/tutorial/bin

source bin/activate

目前的Paas平台上的Python服务就是WSGI形式的应用,比如SAE和Mopaas,

不同的是,在SAE上有些现成的例子。Mopaas需要自己从头写,这三个例子

在Mopaas生产环境下都运行测试通过。在coding.net的WEB IDE也可成功运

行。

部署python应用(python 应用)

如何部署python3 的应用

mod_python,这是apache内置的模块,很严重的依赖于mod_python编译使用的python版本,和apache配套使用,不推荐

cgi,这个太old,不推荐,而且nginx不支持cgi方式,只能用lighttpd或者apache

fastcgi ,这个是目前流行最广的做法,通过flup模块来支持的,在nginx里对应的配置指令是 fastcgi_pass

spawn-fcgi,这个是fastcgi多进程管理程序,lighttpd安装包附带的,和

flup效果一样,区别是flup是

python代码级引入,spawn-fcgi是外部程序。spawn-fcgi用途很广,可以支持任意语言开发的代

码,php,python,perl,只要你代码实现了fastcgi接口,它都可以帮你管理你的进程

scgi,全名是Simple Common Gateway Interface,也是cgi的替代版本,scgi协议很简单,我觉得和fastcgi差不多,只是没有怎么推广开来,nginx对应的配置指令是scgi_pass,你想用就用,flup也支持。

http,nginx使用proxy_pass转发,这个要求后端appplication必须内置一个能处理高并发的http server,在python的web框架当中,只能选择tornado.

python程序员喜欢发明轮子,tornado除了是一个web framework之外,它还可以单独提供高性能http

server,所以,如果你采用其他python框架写代码,比如说bottle,也一样可以通过import

tornado 来启动一个高性能的http

server,同样的可以采用http协议和nginx一起来部署。扩展开来,python包里面能处理高并发的http

server还有很多,比如说gevent,也可以被其他框架引用来支持http方式部署。

现实当中,用java来做web程序,通常就用http和nginx配合,应用服务器选择tomcat或者jetty

uwsgi,包括4部分组成,

nginx从0.8.4开始内置支持uwsgi协议,uwsgi协议非常简单,一个4个字节header+一个body,body可以是很多协议的

包,比如说http,cgi等(通过header里面字段标示),我曾经做个一个小规模的性能对比测试,结果表明,uwsgi和fastcgi相比,性能

没有太明显的优势,也可能是数据集较小的原因

uwsgi的特点在于自带的进程控制程序.它是用c语言编写,使用natvie函数,其实和spawn-fcgi/php-fpm类似。所以uwsgi可以支持多种应用框架,包括(python,lua,ruby,erlang,go)等等

uwsgi协议

web server内置支持协议模块

application服务器协议支持模块

进程控制程序

Gunicorn,和uwsgi类似的工具,从rails的部署工具(Unicorn)移植过来的。但是它使用的协议是 WSGI,全称是Python Web Server Gateway Interface ,这是python2.5时定义的官方标准(PEP 333 ),根红苗正,而且部署比较简单, 上有详细教程

mod_wsgi,apache的一个module,也是支持WSGI协议,

如何在服务器上部署python

使用pip或easy_install可以管理和安装python的package包,实际上它们都是从pypi服务器中搜索和下载package的。目前在pypi服务器上,有超过三万多个package,同时还允许我们将自己的代码也上传发布到服务器上。这样,世界上的所有人都能使用pip或easy_install来下载使用我们的代码了。

具体步骤如下:

首先创建项目文件和setup文件。

目录文件结构如下:

project/

simpletest/

__init__.py

test.py

setup.py

假设项目文件只有一个simpletest包,里面有一个test.py文件。

创建的setup.py文件格式大致如下,其中,install_requires字段可以列出依赖的包信息,用户使用pip或easy_install安装时会自动下载依赖的包。详细的格式参考文档。

from setuptools import setup, find_packages

setup(

name = ‘simpletest’,

version = ‘0.0.1’,

keywords = (‘simple’, ‘test’),

description = ‘just a simple test’,

license = ‘MIT License’,

install_requires = [‘simplejson=1.1’],

author = ‘yjx’,

author_email = ‘not@all.com’,

packages = find_packages(),

platforms = ‘any’,

)

然后将代码打包。

打包只需要执行python

setup.py xxx命令即可,其中xxx是打包格式的选项,如下:

# 以下所有生成文件将在当前路径下 dist 目录中

python setup.py bdist_egg # 生成easy_install支持的格式

python setup.py sdist # 生成pip支持的格式,下文以此为例

发布到pypi。

发布到pypi首先需要注册一个账号,然后进行如下两步:

注册package。输入python setup.py register。

上传文件。输入python setup.py sdist upload。

安装测试

上传成功后,就可以使用pip来下载安装了。

另外,pypi还有一个测试服务器,可以在这个测试服务器上做测试,测试的时候需要给命令指定额外的”-r”或”-i”选项,如python

setup.py register -r “”,python

setup.py sdist upload -r “”,pip

install -i “” simpletest。

发布到测试服务器的时候,建议在linux或cygwin中发布,如果是在windows中,参考文档,需要生成.pypirc文件

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/23217.html

(0)
上一篇 2023-11-27
下一篇 2023-11-27

相关推荐

  • redis深入学习

    redis深入学习Redis持久化 官方文档: https://redis.io/topics/persistence Redis用户认证 redis默认开启了保护模式,只允许本地回环地址登录并访问数据库 禁止prot

    2022-12-29
    146
  • MySQL快速回顾:数据库和表操作「建议收藏」

    MySQL快速回顾:数据库和表操作「建议收藏」前提要述:参考书籍《MySQL必知必会》 利用空闲时间快速回顾一些数据库基础。 4.1 连接 在最初安装MySQL,可能会要求你输入一个管理登录(通常为root)和一个口令(密码)。 连接MySQL需

    2023-01-22
    155
  • python爬虫什么教程最好(python爬虫怎么学)

    python爬虫什么教程最好(python爬虫怎么学)Python爬虫入门看什么书好呢?我为你推荐一本书,手把手教你学Python。

    2023-11-18
    136
  • 安装Scrapy的步骤

    安装Scrapy的步骤Scrapy是一个纯Python的开源爬虫框架,可用于抓取网站数据。Scrapy是一个高度定制化的爬虫工具,可以自由设置各种参数,满足各种需求。如果您想学习Python爬虫,那么Scrapy是一个值得学习的爬虫框架。

    2024-04-21
    68
  • 如何通过 ShardingSphere-Proxy 落地分表分库?

    如何通过 ShardingSphere-Proxy 落地分表分库?参考:Sharding-Proxy的基本功能使用 1. 环境准备 MySql 5.7 apache-shardingsphere-4.1.1-sharding-proxy-bin.tar.gz jdk

    2023-04-10
    236
  • Docker Redis 5.0 集群(cluster)搭建「终于解决」

    Docker Redis 5.0 集群(cluster)搭建「终于解决」一、准备工具 安装docker(来自官网) (1) 安装所需的软件包 $ sudo yum install -y yum-utils device-mapper-persistent-data …

    2023-02-26
    151
  • 如何退出conda环境?

    如何退出conda环境?Conda是一个流行的包管理器和环境管理系统,用于安装和管理软件包以及创建和维护多个环境。在使用Conda时,需要从一个环境(例如base环境)进入到其他环境,也需要从其他环境退出。然而,有关如何退出Conda环境的正确方法还在很多人的使用中存在疑惑,在本文中我们将详细介绍如何正确地退出Conda环境。

    2024-09-21
    15
  • Python re库安装教程

    Python re库安装教程Python是一种简单易学的语言,它在数据分析、网络爬虫等领域得到了广泛的应用。正则表达式(Regular Expression,简称RE),是Python中处理字符串的常用工具之一。本篇文章将介绍如何在Python中安装re库并使用它来处理字符串。

    2024-07-19
    42

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注