Размещение приложения Symfony 4 с помощью EasyDeployBundle на сервере без /usr/local/bin/composer

#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
  

и теперь развертывание преодолевает это препятствие.

Теперь у меня есть еще одна проблема, но, по крайней мере, эта решена, и, возможно, ответ может помочь и другим людям.