Skip to content

chrishan17/tornado-to-heroku

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 

Repository files navigation

如何将tornado应用部署至Heroku

Heroku

1. 使用前提:

必须翻墙!

  • Heroku在翻墙后才能使用。

安装***git***

安装***virtualenv***

  • 创建独立的Python环境,多个Python应用互不影响。
  • 你可以先下载Pip,Python的软件安装管理包,然后pip install virtualenv

需要一个Heroku account:

2. 下载Heroku Toolbelt并登录

  • Toolbelt下载对应系统的Heroku Toolbelt,以便你在终端里使用heroku命令行。
  • 下载并安装好后,打开终端登录:
    • 输入heroku login, 然后输入你的邮箱和密码

3. 把tornado app上传至___Heroku___的步骤**:**

1.从***Github上下载tornado heroku***样例

$ curl -L 'https://github.com/mikedory/Tornado-Heroku-Quickstart/tarball/master' | tar zx && cd mikedory-Tornado-Heroku-Quickstart-*

2.修改样例的main.py及对应的templates, static文件

  • main.py

      #!/usr/bin/env python
      import os.path
      import tornado.escape
      import tornado.httpserver
      import tornado.ioloop
      import tornado.options
      import tornado.web
    
      # import and define tornado-y things
      from tornado.options import define
      define("port", default=5000, help="run on the given port", type=int)
    
    
      # application settings and handle mapping info
      class Application(tornado.web.Application):
          def __init__(self):
              handlers = [
                  (r"/([^/]+)?", MainHandler)
              ]
              settings = dict(
                  template_path=os.path.join(os.path.dirname(__file__), "templates"),
                  static_path=os.path.join(os.path.dirname(__file__), "static"),
                  debug=True,
              )
              tornado.web.Application.__init__(self, handlers, **settings)
    
    
      # the main page
      class MainHandler(tornado.web.RequestHandler):
          def get(self, q):
              if 'GOOGLEANALYTICSID' in os.environ:
                  google_analytics_id = os.environ['GOOGLEANALYTICSID']
              else:
                  google_analytics_id = False
    
              self.render(
                  "main.html",
                  page_title='Heroku Funtimes',
                  page_heading='Hi!',
                  google_analytics_id=google_analytics_id,
              )
    
    
      # RAMMING SPEEEEEEED!
      def main():
          tornado.options.parse_command_line()
          ***http_server = tornado.httpserver.HTTPServer(Application())
          http_server.listen(tornado.options.options.port)
    
          # start it up
          tornado.ioloop.IOLoop.instance().start()
    
    
      if __name__ == "__main__":
          main()
    
  • 修改相应的Application类和MainHandler类并替换原static和templates文件夹中的css, js, html文件

3.建立Python虚拟环境

$ virtualenv venv --distribute
$ source venv/bin/activate

4.创建***Procfile***纯文本(用sublime text或其他编辑器)

  • Procfile
    web: python main.py --port=$PORT

5.保存该appgit

$ git init
$ git add .
$ git commit -m "init"

6.部署appHeroku

  • 创建app在Heroku储存的空间
    $ heroku create appName
  • 将git中的app推向Heroku
    $ git push heroku master

7.在浏览器中打开该app

$heroku open

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published