8000 部署到 heroku · 19wu/19wu Wiki · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Ian Yang edited this page Jul 21, 2013 · 13 revisions

部署步骤

  • http://heroku.com 上注册账号

  • 安装 heroku toolbelt

  • 在终端上登录 heroku,只需要验证一次,除非换机器,换帐号都不需要再登录。

    heroku login
    

    如果 ssh key 换了,需要重新添加

    heroku keys:add
    
  • clone 19wu 后

    cd 19wu
    heroku create
    

    这一步会提示一个 URL,也可以自己指定

    heroku create doitian-19wu
    

    这样会得到一个 http://doitian-19wu.herokuapp.com 的 URL

  • 为 heroku 添加一个专门部署的 branch。因为需要添加配置文件

    git checkout -b deploy
    cp config/settings.yml.example config/settings.yml
    git add --force config/settings.yml
    git commit -m 'Commit settings.yml for heroku'
    

    可以根据需要,更改 settings.yml 并提交。注意,因为可能包含帐号等私密信息, 请不要把此 deploy branch push 到任何公开的 git 仓库中。

  • 把 branch push 到 heroku

    git push -u heroku deploy:master
    

    成功后创建数据库

    heroku run rake db:setup
    

    访问 create 的时候给出的地址就可以了

  • 以后部署时,先将改动 merge 到 deploy,然后再 push 到 heroku

    git checkout deploy
    git merge master
    git push
    

    如果需要 migrate

    heroku run rake db:migrate        
    
  • 如果是 Rails 4 参考下面小节中如果修改 Gemfile。

查找问题

  • 使用 heroku logs 查看 Rails log
  • 使用 heroku run rails console 开启一个 Rails Console

设置邮箱

再次提醒:文件包含密码,不要把包含 settings.yml 的 branch push 到任何公共 repo 中。

查看最新的 config/settings.yml.example 的注释

以 gmail 为例,注册完 gmail 帐号后,打开 config/settings.yml 中相应的注释部 分并修改用户名和密码, Google Apps 帐号还需要修改 domain

...

    smtp_settings:
      # Gmail example
      port: 587
      address: 'smtp.gmail.com'
      domain: 'gmail.com'
      user_name: '19wu.mailer@gmail.com'
      password: 'secret'
      authentication: 'plain'
      enable_starttls_auto: true

...

QQ Mail SMTP, mailgun free plan 都可以用来为 staging 环境发送邮件,修改相应的 认识信息即可。

接着修改邮件中链接地址的 host

...
    # host: '19wu.herokuapp.com'
    host: 'your-heroku-app-name.herokuapp.com'
...

Commit 后注册个新帐号测试邮件发送。如果之前已经注册但是还没激活,可以通过登录页 面的 "没有收到确认指令" 发送确认邮件。如果之前已经注册并且激活,可能通过密码重 置功能来测试邮件的发送功能。

如果项目已经启用 Delayed Job,邮件会压积到 queue 里,参考下一节如何在 heroku 中支持 Delayed Job。

Delayed Job

免费的 heroku 只提供一个 process,用来跑 web server,就没办法后台运行 delayed job workers。有三个选择:

开启更多 Dynos

登录 https://dashboard.heroku.com/apps

选择 app 并配置 resources。多开一个 Dynos 一个月需要 34.5 刀

禁用 Delayed Job

添加环境变量:

heroku config:add DISABLE_DELAYED_JOB=1

手动运行

自己定时在本地运行

heroku run script/delayed_job run

来一次性执行所有积压的 jobs

Rails 4

在上面提到的提交 config/settings.yml 的基础下,部署 Rails 4 还需要在 deploy 分支编辑 Gemfile。这些已经在 Gemfile 中了,不过是注释状态。

  • 添加 ruby '2.0.0' 让 heroku 使用 ruby 2.0 (参考 heroku 文档 ruby versions )
  • 添加 gem 'rails_12factor', group: :production (参考 heroku 文档 rails4 )

运行 bundle install 后,提交 GemfileGemfile.lock 到 deploy 分支后就可以 push 到 heroku 了。

0