部署 每次部署到服务器后数据库和表就没了,gitignore 文件写了 db/*.sqlite3

tyaccp_guojian · 2013年09月19日 · 最后由 cqcn1991 回复于 2013年09月25日 · 2185 次阅读

如题,会是哪里的问题呢?

数据库想部署到服务器的话,似乎不应该在 .gitignore 里写才对吧

数据库不想部署到服务器,

#2 楼 @tyaccp_guojian 那部署之后 rake db:create migrate 了吗……

db 文件放在另外的文件夹里,不要放在部署的路径里,部署完毕建立符号链接

@messiahxu 这个我知道,但是下次部署的时候数据库又没了

@leomayleomay 第一次搞服务器,您说详细点好吗?

你用的什么数据库啊?难道是生产环境用 sqlite3?

@tyaccp_guojian 我猜你是用 Capistrano 做部署,每次部署都会清空部署路径里面所有的文件,然后从你的 git repo 拉取最新的代码,因为你的 db 文件没有在 repo 里面,所以每次清空以后,再次拉取的时候,db 文件就会丢失,正确的做法是把 db 文件放在其他的目录,拉取代码完成以后,建立符号链接指向 db 文件

这里有个 SO 的链接,你看下,http://stackoverflow.com/questions/11006525/capistrano-creating-new-db-for-every-deployment

@leomayleomay 请问 after "deploy:create_symlink", "customs:symlink" 这句里面的 create_symlink 是什么?我的部署脚本里面没有这个任务

@tyaccp_guojian 你应该看一下 cap 默认 task 会执行哪些操作;把各个 release 版本公用的常规配置文件移动至 shared 目录下,然后每次部署时建立 symlink 指向 current 目录

放在 shared 下面,会链过去的

namespace :customs do
  desc 'Create database symlink'
  task :symlink do
    run "ln -nfs #{shared_path}/db/production.sqlite3 #{release_path}/db/production.sqlite3"
  end
end

after "deploy:create_symlink", "customs:symlink"

加了这个好了,谢谢大家!

#10 楼 @serco 前辈,这几天就来上海了。能联系到不?拿到了同济专硕的推荐名额,准备来见见你啊哈哈

需要 登录 后方可回复, 如果你还没有账号请 注册新账号