Подключение БД Firebird через SSH

Я создаю приложение с Laravel и Firebird 2.5 и хочу запустить его на структуре сервера DigitalOcean. У нас есть 2 сервера для приложения, один для веб-сервисов (назовем его www) и один для сервисов баз данных. Я успешно выполнил настройку Mysql, и она хорошо работает, но мы все знаем, что Firebird — грубая. Итак, вот что мы сделали до сих пор:
Установите стек LEMP в www и Firebird 2.5 SuperServer. Как я уже сказал, это цифровые серверы Ocean, на обоих работает 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

Учетные данные верны, мы можем использовать их на удаленном (дБ) сервере.

Как вы думаете, в чем может быть проблема? Это SSH туннелирование?

1

Решение

Предупреждение: я не так часто использую 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 кажется логичным (но, возможно, эти свойства специфичны для вашего собственного развертывания, в этом случае вам может потребоваться проделать дополнительную работу).

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]