我正在使用Laravel和Firebird 2.5创建一个应用程序,并希望在DigitalOcean服务器结构上运行它。我们有2台服务器用于应用程序,一台用于Web服务(我们称之为www),另一台用于数据库服务。我用Mysql做了一个成功的设置,它运行良好,但我们都知道Firebird是一个粗略的。所以这就是我们到目前为止所做的: 在www和Firebird 2.5 SuperServer中安装LEMP堆栈。正如我所说的这些是数字海洋服务器,它们都运行Ubuntu 14.04。 我们在两台服务器之间创建了一个SSH隧道,结构如下:
ssh -L 9500:127.0.0.1:3050 username@db_server_ip_address (Private address)
但是当我们尝试使用数据库服务器连接www上的应用程序时出现以下错误:
不可用的数据库
在Laravel配置文件中使用了以下设置:
DB_HOST=127.0.0.1
DB_DATABASE=/home/username/database.gdb
DB_USERNAME=username
DB_PASSWORD=password
凭据是正确的,我们可以在远程(db)服务器上使用它。
您认为可能是什么问题?是SSH隧道吗?
答案 0 :(得分:2)
警告:我没有那么多使用SSH,并且从未使用过SSH隧道,我的回答是基于查看文档。
ssh -L 9500:127.0.0.1:3050
没有按照您的想法行事:
指定将本地(客户端)主机上给定TCP端口或Unix套接字的连接转发到远程端的给定主机和端口或Unix套接字。这可以通过分配套接字来侦听本地端的TCP 端口,可选地绑定到指定的 bind_address 或Unix套接字。只要连接到本地端口或套接字,就会通过安全通道转发连接,并建立与主机端口 hostport 或Unix套接字的连接 remote_socket ,来自远程机器。
(来自ssh(1))
换句话说,据我所知,正确的命令是:
ssh -L 9500:<ip-address of the Firebird server>:3050
第二个问题似乎是您的Laravel配置没有指定端口,因此它可能仍在尝试连接到端口3050(Firebird默认端口),而不是您配置的端口9500。我不了解Laravel,但属性DB_PORT=9500
似乎合乎逻辑(但这些属性可能特定于您自己的部署,在这种情况下您可能需要做更多的工作)。