[TOC]
## Python 在好雨云
好雨云使得在云中部署和扩展Python应用程序变得容易。无论你喜欢Django或Flask等框架,好雨云都可以使用 - 让你用你喜欢的工具去构建你想要的应用。
### **语言识别**
默认通过`requirements.txt`在根目录中存在文件将应用程序识别为Python应用程序。对于您自己的应用程序,您可以通过运行`pip freeze > requirements.txt` 命令生成 `requirements.txt` 文件.
演示应用程序(python-demo)已经有一个`requirements.txt`,它看起来像这样:
```
Flask==0.12.1
Jinja2==2.9.6
Werkzeug==0.12.1
gunicorn==19.7.1
```
该`requirements.txt`文件列出应用程序依赖关系及其版本。部署应用程序时,云帮会读取此文件,并使用该pip install -r requirements.txt命令安装适当的Python依赖关系。
>[info] 说明:若程序没有依赖关系,可使`requirements.txt`为空文件。
### **版本选择**
新创建的 Python 应用默认使用 2.7.13 版本,你也可以通过在根目录下增加一个 `runtime.txt` 文件来指定版本:
$ cat runtime.txt
python-3.4.3
#### **推荐的python版本**
* Python-2.7.9~Python-2.7.13
* Python-3.4.3,Python-3.5.2,Python-3.6.0,Python-3.6.1
当然您也可以指定`(2.4.4 - 3.6.1)`之间的版本,但不支持如下几个特殊的版本`Python-3.4.5 Python-3.4.6 Python-3.5.3`。
### **工具库**
系统使用以下的库来管理和解决 Python 依赖,用户不可以自定义它们:
* setuptools 35.0.2
* pip 9.0.1
### **构建(build)**
系统会在您代码部署的环境运行以下命令来解决依赖:
$ pip install -r requirements.txt --allow-all-external
### **启动命令**
需要用户手工在代码根目录创建 `Procfile` 文件来指定启动应用的命令,该文件是普通的文本文件,类似的内容如下:
web: gunicorn hello:app --log-file - --access-logfile - --error-logfile -
**`说明`**
> * web : 定义该应用的服务类型为web 平台会自动将该应用添加到全局负载均衡中。后续会添加其他类型的应用。
>* gunicorn : Python WSGI HTTP Server for UNIX 详细设置文档参见 命令行参
### **Django 静态文件支持**
由于 [Django](https://www.djangoproject.com/) 的静态文件支持(CSS、图片等)不是很容易配置而且不方便调试,这里给出一个示例:
**settings.py**
~~~
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.7/howto/static-files/
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = 'staticfiles'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
~~~
默认情况下系统会在构建 Django 应用时自动执行以下命令尝试检测(--dry-run)静态文件配置是否正确:
$ python manage.py collectstatic --dry-run --noinput
如果此命令没有出错,将执行真正的命令拷贝静态文件到 STATIC_ROOT 目录:
$ python manage.py collectstatic --noinput
用户可以手工禁用上述特性,只需要在应用的环境变量里配置 DISABLE_COLLECTSTATIC 的值为 1。
### **Whitenoise**
默认情况下,Django 在生产模式下不支持托管静态文件,我们推荐在生产环境下使用 [Whitenoise](https://pypi.io/project/whitenoise/)
项目托管静态文件作为最佳实践,以下是具体的安装和配置方式:
>参考文档: 具体细节请查看 Django 文档的 [Managing static files](https://docs.djangoproject.com/en/1.7/howto/static-files/) 和
[Deploying static files](https://docs.djangoproject.com/en/1.7/howto/static-files/) 章节。
#### **安装 Whitenoise**
$ pip install whitenoise
...
$ pip freeze > requirements.txt
**settings.py**
# Simplified static file serving.
# https://warehouse.python.org/project/whitenoise/
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
**wsgi.py**
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
application = get_wsgi_application()
application = DjangoWhiteNoise(application)
- 介绍
- 从这里开始
- 注册
- 登陆
- 云帮界面
- 功能介绍
- 新增应用
- 从镜像
- 从源码
- 应用市场
- 应用框架
- 我的应用
- 界面介绍
- 应用控制台
- 概览
- 依赖
- 监控
- 日志
- 设置
- 费用
- 端口
- 存储
- 扩容
- 总览
- 团队
- 财务中心
- 帐户充值
- 应用扣费
- 批量续费
- 语言支持
- 概述
- Java
- java-maven
- java-war
- java-jar
- web程序部署
- 使用Webapp Runner部署
- 使用Jetty Runner部署
- 示例代码
- gradle
- Scala
- play
- Ruby
- 语言支持
- ruby应用部署
- Rails 应用概述
- 部署Rails3.x应用
- 使用Puma 部署 Rails 应用
- 示例代码
- Python
- 语言支持
- Web框架支持
- 示例代码
- PHP
- 平台特性
- 语言支持
- 运行环境设置与调优
- 部署ThinkPHP框架程序
- 示例代码
- Go
- 语言支持
- 部署Beego等框架程序
- 示例代码
- Node.JS
- 语言支持
- 示例代码
- Html
- 语言支持
- 示例代码
- Dockerfile
- 语言支持
- 示例代码
- 相关文档
- Procfile
- Cron计划任务
- 参考知识
- 好雨Gogs使用说明
- Artifactory对接本地仓库
- 好雨如何对接Git Server
- Git使用技巧
- 服务框架支持
- dubbo
- springcloud
- 技术支持