【发布时间】:2026-01-03 23:30:01
【问题描述】:
DigitalOcean Ubuntu 14.04 x64 + Rails 4 + Nginx + Unicorn + PostgreSQL + Capistrano 3
我使用此演练部署了我的数字海洋铁路应用程序。
https://gist.github.com/ChuckJHardy/f44dda5f94c6bbdba9a4
说明非常清楚,也很重要,所以我不必偏离演练。
我已经完成了一切,当我跑步时
cap production deploy:check
没有错误。但是当我跑步时
cap production deploy
它崩溃说
INFO [deploy:migrate] Checking changes in /db/migrate
DEBUG [87821ebd] Running /usr/bin/env diff -q /home/deployer/apps/jones_jems/releases/20150506224711/db/migrate /home/deployer/apps/jones_jems/current/db/migrate as deployer@107.170.222.154
DEBUG [87821ebd] Command: diff -q /home/deployer/apps/jones_jems/releases/20150506224711/db/migrate /home/deployer/apps/jones_jems/current/db/migrate
DEBUG [87821ebd] diff:
DEBUG [87821ebd] /home/deployer/apps/jones_jems/current/db/migrate
DEBUG [87821ebd] : No such file or directory
DEBUG [87821ebd]
DEBUG [87821ebd] Finished in 0.085 seconds with exit status 2 (failed).
INFO [deploy:migrate] Run `rake db:migrate`
DEBUG [b41648f9] Running /usr/bin/env if test ! -d /home/deployer/apps/jones_jems/releases/20150506224711; then echo "Directory does not exist '/home/deployer/apps/jones_jems/releases/20150506224711'" 1>&2; false; fi as deployer@107.170.222.154
DEBUG [b41648f9] Command: if test ! -d /home/deployer/apps/jones_jems/releases/20150506224711; then echo "Directory does not exist '/home/deployer/apps/jones_jems/releases/20150506224711'" 1>&2; false; fi
DEBUG [b41648f9] Finished in 0.074 seconds with exit status 0 (successful).
INFO [bde04a76] Running ~/.rvm/bin/rvm default do bundle exec rake db:migrate as deployer@107.170.222.154
DEBUG [bde04a76] Command: cd /home/deployer/apps/jones_jems/releases/20150506224711 && ( RAILS_ENV=production ~/.rvm/bin/rvm default do bundle exec rake db:migrate )
DEBUG [bde04a76] rake aborted!
DEBUG [bde04a76] ActiveRecord::NoDatabaseError: FATAL: database "JonesJems" does not exist
我按照下面列出的创建数据库的演练进行操作
创建 Postgres 用户
sudo -u postgres psql
create user deployer with password 'password';
alter role deployer superuser createrole createdb replication;
create database JonesJems owner deployer;
如果我再次尝试执行此演练,它会说数据库已经存在。
postgres=# create database JonesJems owner deployer;
ERROR: database "jonesjems" already exists
这是我的 rails database.yml 文件
production:
adapter: postgresql
host: 127.0.0.1
port: 5432
encoding: unicode
database: JonesJems
pool: 5
username: <%= ENV['JJ_DB_USER'] %>
password: <%= ENV['JJ_DB_PASSWORD'] %>
环境变量存储在 etc/environment
【问题讨论】:
标签: ruby-on-rails ruby capistrano capistrano3