可选背景:您好,我对google云上的服务还很陌生……嗯,一般来说,web开发(假设到目前为止,我在rails框架上的培训还不到60个小时,我根本不习惯MVC或使用数据库“好运小子”,我知道)我的任务是将运行在heroku上的rails应用部署到google app engine。应用程序“构建”(在使用gcloud app deploy之后),但它不会连接到任何数据库一些我认为应该有的文件不见了。即config/database.yml文件。
我认为用教程学习如何将谷歌上的数据库连接到已经存在的Rails应用程序是有意义的。我知道rails通常只是自动为您设置一个sqllite系统但我如何编写自己的database.yml文件才能在google app engine上工作呢稍后,我如何从以前的数据库中导入所有信息…问题
问题从这里开始,因此,我开始遵循这个关于google云shell的教程:
第一页:https://cloud.google.com/ruby/getting-started/tutorial-app我从这里开始。
第二页:https://cloud.google.com/ruby/getting-started/using-structured-data来到这里,我决定选择PostgreSQL
第3页:https://cloud.google.com/ruby/getting-started/deploy-postgres遇到一个错误,它告诉我调用$: rake db:migrate
以下是错误消息:
:~/projects/bookshelfapp/getting started ruby/2-postgresql$rake db:create无法连接到服务器:连接超时
服务器是否在主机“35.193.145.252”上运行并接受端口5432上的TCP/IP连接?“。”
我没有连接到数据库吗?我正在查看database.yml文件。
以下是我应该遵循的格式:
postgresql_settings: &postgresql_settings
adapter: postgresql
encoding: unicode
pool: 5
username: postgres
password: secret123
host: 173.194.230.44
database: bookshelf
我的数据库.yml文件如下:
postgresql_settings: &postgresql_settings
adapter: postgresql
encoding: unicode
pool: 5
username: postgres
password: [my password is here]
host: 35.193.145.252
database: bookshelf
development:
<<: *postgresql_settings
production:
<<: *postgresql_settings
test:
adapter: sqlite3
pool: 5
timeout: 5000
database: db/test.sqlite3
这里是我找到用户名和密码的地方:
username and password page
我为主机选择了这个IP地址:
IP address page
我的生活怎么了我没有给虚拟机分配静态IP地址,但我真的不明白为什么要这样做。
有人能给我些建议吗我花了很多时间回到最初的步骤,试图找出我可能错了的地方,但我的经验不足并没有提供太多的解决方案即使是从概念上更好地理解这个问题的途径也可能有帮助。我不确定我是否不知道如何使用一些工具,或者我是否缺少一个大的概念,我以前从来没有做过这样的事情。
这个问题似乎与过去的下列问题相似,但我不确定它们与我的问题有多匹配:
question 1
question 2
question 3
question 4
最佳答案
如果出现此错误,则表示托管数据库的虚拟机未被正确访问。
当您使用SSH访问使用启动程序创建的PostgreSQL实例时,将指示连接到数据库所需的IP地址(请检查Bitnami徽标下显示的IP地址)。
您还必须open the server port for remote access,在本例中为5432,可以使用以下命令:
sudo ufw allow 5432
如果虚拟机中没有安装ufw,请使用
apt-get
获取它。之后,restart the server应用更改,以防:
sudo /opt/bitnami/ctlscript.sh restart
此外,教程中指出的防火墙规则还没有准备好,您必须删除
target-tags
部分这样,您就可以连接到PostgreSQL数据库并继续本教程。