Для приложения Symfony 4 я выбрал план Web Cloud от хостинг-провайдера ОВХ.
Для развертывания я решил использовать EasyDeployBundle, который выглядит очень многообещающе. Это мой файл конфигурации:
<?php
use EasyCorp\Bundle\EasyDeployBundle\Deployer\DefaultDeployer;
return new class extends DefaultDeployer
{
public function configure()
{
return $this->getConfigBuilder()
->server('ovh')
->deployDir('directory/path/at/server')
->repositoryUrl('[email protected]: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
все идет нормально, но когда я на самом деле пытаюсь развернуть, я получаю следующую ошибку:
The command "ssh ovh 'which /usr/local/bin/composer'" failed.
Проблема в том, что у меня нет прав на запись в каталог /usr/local/bin/
на сервере. composer.phar
находится в моем домашнем каталоге, и я не могу переместить его в указанное место назначения.
Есть ли возможность указать EasyDeployBundle
искать composer
в другом каталоге?
Я действительно должен читать руководства, в частности, когда я связываю их в своем вопросе.
Существует метод remoteComposerBinaryPath
, который принимает пользовательский путь к composer
. Я изменил метод configure
следующим образом:
public function configure()
{
return $this->getConfigBuilder()
->server('ovh')
->deployDir('directory/path/at/server')
->repositoryUrl('[email protected]:foo/bar.git')
->repositoryBranch('master')
->remoteComposerBinaryPath('composer.phar')
;
}
На сервере я создал .bashrc
в своей домашней папке и добавил строку:
export PATH=$PATH:/home/foobar
и теперь развертывание преодолевает это препятствие.
У меня теперь другая проблема, но, по крайней мере, эта проблема решена, и, возможно, ответ может помочь и другим людям.