新手问题 关于在 OpenShift 上部署的 Sinatra 使用 MySQL 的问题

qqwerr · 2013年08月31日 · 最后由 13865247893 回复于 2016年05月19日 · 3319 次阅读

本人是 Ruby 新手,想通过在 openshift 上部署 sinatra 来慢慢学习,感觉 ror 实在是繁杂故先选择了感觉轻量级的 sinatra,数据库也是了解了大概,希望大大能帮助我><,下面是问题:

我是根据这个教程在 openshift 部署个类似于这个 blog 的程序,在本地运行时无问题,但是通过 git 部署到 openshift 上后,在服务器上添加进数据库的 bolg 会在之后的 git push 后恢复为本地的测试用数据库 (即 blog.db),后发现似乎是 push 的时候将 db 文件一并 push 到了 openshift 上,突然意识到似乎不可将数据库存放在 git 中

之后我又尝试使用 MySQL 当做数据库,因搜索不到 sinatra 相关教程,根据了openshift quickstart guide

依次改动/增加了

rhc cartridge add -a railsapp -c mysql-5.1
.openshift/action_hooks/deploy file
config/database.yml
Gemfile add gem 'mysql'

本地运行正常但部署后还是失败了😰 显示为

Ruby (Rack) application could not be started
There appears to be a database problem.
Your application's database configuration file might be written incorrectly. Please check it and fix any errors.
The database server may not be running. Please check whether it's running, and start it if it isn't.
Error message:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) (Mysql::Error)

.... 折腾了两三天了还是没有什么头绪.. 希望有人能指点一二,谢谢!

#1 楼 @bhuztez 之前是会错意了。。以为能自动读取本程序的相关信息。。 但是修改过 database.yml 和 deploy 文件后提交后变为了 Internal Server Error 错误。。 会不会是 deploy 文件的问题? 现贴在下方,希望能帮忙看看,部分*号代替了

set -e

if [ -z "127.2.8.*" ]
then
    echo 1>&2
    echo "Could not find mysql database.  Please run:" 1>&2
    echo "rhc cartridge add -a sinatra -c mysql-5.1" 1>&2
    echo "then make a sample commit (add whitespace somewhere) and re-push" 1>&2
    echo 1>&2
fi

if [ -z "127.2.8.*" ]
then
    exit 5
fi

pushd /var/lib/openshift/*******/app-root/runtime/repo/ > /dev/null
bundle exec rake db:migrate RAILS_ENV="production"
popd > /dev/null

把/var/lib/mysql/目录下的 mysql.sock 文件删除然后在重启数据库试试

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