#symfony #deployment #symfony4 #ovh
#symfony #развертывание #symfony4 #ovh
Вопрос:
Для приложения Symfony 4 я выбрал тарифный план Web Cloud от хостинг-провайдера OVH.
Для развертывания я решил использовать EasyDeployBundle, который выглядит очень многообещающим. Это мой конфигурационный файл:
<?php
use EasyCorpBundleEasyDeployBundleDeployerDefaultDeployer;
return new class extends DefaultDeployer
{
public function configure()
{
return $this->getConfigBuilder()
->server('ovh')
->deployDir('directory/path/at/server')
->repositoryUrl('git@github.com:foo/bar.git')
->repositoryBranch('master')
;
}
}
У меня есть .ssh/config
файл со следующей записью:
Host ovh
Hostname sshcloud.foobar.hosting.ovh.net
Port 12345
User foobar
Примечание: все значения являются фиктивными, просто для иллюстрации.
Когда я запускаю:
php bin/console deploy --dry-run -v
все идет нормально, но когда я действительно пытаюсь развернуть, я получаю следующую ошибку:
Команда «ssh ovh ‘which /usr/local/bin/composer'» не удалась.
Проблема в том, что у меня нет доступа на запись к каталогу /usr/local/bin/
на сервере. Оно composer.phar
находится в моем домашнем каталоге, и я не могу переместить его в указанное место назначения.
Есть ли какая-либо возможность указать EasyDeployBundle
поиск composer
в другом каталоге?
Ответ №1:
Я действительно должен прочитать руководства, в частности, когда я связываю их в своем вопросе.
Существует метод remoteComposerBinaryPath
, который принимает пользовательский путь к composer
. Я изменил метод configure
следующим образом:
public function configure()
{
return $this->getConfigBuilder()
->server('ovh')
->deployDir('directory/path/at/server')
->repositoryUrl('git@github.com:foo/bar.git')
->repositoryBranch('master')
->remoteComposerBinaryPath('composer.phar')
;
}
На сервере я создал .bashrc
в своей домашней папке и добавил строку:
export PATH=$PATH:/home/foobar
и теперь развертывание преодолевает это препятствие.
Теперь у меня есть еще одна проблема, но, по крайней мере, эта решена, и, возможно, ответ может помочь и другим людям.