-
Notifications
You must be signed in to change notification settings - Fork 238
部署到 heroku
-
在 http://heroku.com 上注册账号
-
在终端上登录 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。
免费的 heroku 只提供一个 process,用来跑 web server,就没办法后台运行 delayed job workers。有三个选择:
登录 https://dashboard.heroku.com/apps
选择 app 并配置 resources。多开一个 Dynos 一个月需要 34.5 刀
添加环境变量:
heroku config:add DISABLE_DELAYED_JOB=1
自己定时在本地运行
heroku run script/delayed_job run
来一次性执行所有积压的 jobs
在上面提到的提交 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
后,提交 Gemfile
和 Gemfile.lock
到 deploy 分支后就可以 push 到 heroku 了。