Python 应用部署指南¶
入门指南¶
准备工作¶
首先,我们从 github 上 clone 一个 Python 应用示例程序。
$ git clone https://github.com/sinacloud/python-getting-started.git
$ cd python-getting-started
$ ls
Procfile README.md main.py requirements.txt runtime.txt
这个示例程序是一个使用 Tornado 框架写的 HTTP Web 服务器,我们依次来看下每个文件的作用,首先,main.py 文件,这个是应用主要的代码。
# ...
class MainHandler(tornado.web.RequestHandler):
@gen.coroutine
def get(self):
http_client = AsyncHTTPClient()
response = yield http_client.fetch("http://www.sinacloud.com")
self.set_header('content-type', 'text/plain')
self.write('Hello, World! ' + response.body[:100])
application = tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
tornado.options.parse_command_line()
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(5050 or os.environ['PORT'])
tornado.ioloop.IOLoop.current().start()
这段程序就是设置了一些 HTTP Handler,最后启动一个 Web 服务器,监听在环境变量 PORT
指定的端口上。
上面程序依赖于 tornado
这个包, requirements.txt
这个文件里列出了这些依赖。
tornado==4.2.1
最后, runtime.txt
文件里指定了使用的 Python 版本, Procfile
里指定了怎么启动这个 server。
web: python main.py
部署应用¶
应用创建完后,会显示你的应用的 git 仓库地址以及如何将代码提交到该 git 仓库,按照说明提交代码。
$ git remote add sinacloud https://git.sinacloud.com/helloworld
$ git push sinacloud master
...
remote: Exporting git code...
remote: Uploading...
-----> Xxx app detected
-----> Creating runtime environment
...
remote: Deploy and waiting for app to be ready .....
To https://git.sinacloud.com/ymp9vm2385
+ 74d7d50...470cb46 master -> master
部署的时候,git 会显示当前的进度,如果部署失败,会提示相应的错误信息(比如 package.json 格式问题等)。
部署完成后,我们就可以通过 http://helloworld.applinzi.com 来访问我们的应用了。
容器管理¶
在应用页面的左侧导航栏选择[容器管理],在这个页面可以管理您刚才部署的容器实例,并查看容器的实时运行状态信息。
构建和运行说明¶
如何识别应用是 Python 应用?¶
容器云通过判断你的应用根目录下是否存在 requirements.txt
文件来判断你的应用是否是 Python 应用,所以,即使你的应用没有任何第三方依赖,你仍然需要在根目录下创建一个空的 requirements.txt
文件。
指定 Python 版本¶
如果你想要指定你想要使用的 Python 版本,你可以通过在你的应用的根目录下创建一个 runtime.txt
文件,在里面写上你要使用的 Python 版本。例如:
$ cat runtime.txt
python-3.6.6
我们建议你始终明确指定你要使用的 Python 版本为你本地测试时使用的版本。
以下是当前支持的 Python 版本列表:
- pypy3-2.4.0
- pypy3-5.5.0
- pypy3-5.7.1
- pypy3-5.8.0
- pypy-5.3.1
- pypy-5.6.0
- pypy-5.7.0
- pypy-5.7.1
- pypy-5.8.0
- python-2.4.6
- python-2.5.5
- python-2.6.9
- python-2.7.9 ~ python-2.7.15
- python-3.4.9
- python-3.5.2 python-3.5.3 python-3.5.6
- python-3.6.0 ~ python-3.6.8
- python-3.7.0 ~ python-3.7.2
第三方依赖¶
容器云在构建应用的时候会执行下面的命令来安装所有的第三方依赖包,所以你不用将这些第三方依赖包提交入你的代码仓库中,你只需要在 requirements.txt
文件中指定你有哪些依赖即可。
$ pip install -r requirements.txt --allow-all-external
系统依赖¶
容器云在构建应用的时候会执行下面的命令来安装系统包,所以您只需要在 sinacloud-packages.txt
文件中指定您有哪些依赖包即可。
# cat sinacloud-packages.txt
curl
wget
vim
# apt-get install -y curl wget vim
注解
第三方依赖包来源于 http://archive.ubuntu.com/ubuntu/ ,请确保依赖包正确性。