我正在使用Laravel和Firebird2.5创建一个应用程序,并希望在DigitalOcean服务器结构上运行它。我们有两个服务器用于应用程序,一个用于web服务(让我们称之为www),另一个用于数据库服务。我成功地安装了Mysql,它运行得很好,但我们都知道Firebird是一个粗糙的设置。这就是我们到目前为止所做的工作:在www和Firebird2.5 SuperServer中安装一个LEMP堆栈。正如我所说的,这些都是数字海洋服务器,都运行Ubuntu14.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隧道吗?
发布于 2016-12-09 15:39:14
警告:我没有那么多地使用SSH,也从未使用过SSH隧道,我的回答是基于查看文档。
ssh -L 9500:127.0.0.1:3050不像你想的那样做:
指定到本地(客户端)主机上的给定TCP端口或Unix套接字的连接将转发到给定主机和远程端的Unix套接字。这是通过分配套接字来侦听本地端的TCP端口(可选地绑定到指定的bind_address )或Unix套接字来实现的。每当连接到本地端口或套接字时,连接将通过安全通道转发,并从远程计算机连接到主机端口主机端口或Unix remote_socket。
(来自ssh(1))
换句话说,据我所知,正确的命令是:
ssh -L 9500:<ip-address of the Firebird server>:3050第二个问题似乎是您的Laravel配置没有指定端口,因此它可能仍然试图连接到端口3050 ( Firebird默认端口),而不是您配置的端口9500。我不知道Laravel,但是属性DB_PORT=9500似乎是合乎逻辑的(但是这些属性可能是特定于您自己的部署的,在这种情况下,您可能需要做更多的工作)。
https://stackoverflow.com/questions/41063667
复制相似问题