2017-01-06 3 views
2

У меня проблемы с развертыванием с Deployer 4.0.2, и я нуждаюсь в помощи кого-то более опытного, чем я в этом.Deployer - нет tty настоящего и нет программы прошивки - Как развернуть с Deployer

Я хочу развернуть хранилище шахты на сервере Ubuntu 16.04.

Я использую laravel homestead как среду разработки, где я также установил развертыватель. Оттуда я ssh на мой удаленный сервер.

Я смог развернуть свой код с пользователем root, пока не ударил RuntimeException, который прервал мое развертывание.

Do not run Composer as root/super user! See https://getcomposer.org/root for details 

Это заставило меня создать другого пользователя с именем george, которого я дал суперпользователя права. Я скопировал свой открытый ключ с моей локальной машины на вновь созданный файл ~/.ssh/authorized_keys, который дал мне разрешение на доступ к серверу через ssh.

Но когда я бегу dep deploy с новым пользователем:

server('production', '138.68.99.157') 
    ->user('george') 
    ->identityFile() 
    ->set('deploy_path', '/var/www/test'); 

Я получаю другой RuntimeException:

Host key verification failed. 
fatal: Could not read from remote repository. 
Please make sure you have the correct access rights 
and the repository exists. 

Теперь он выглядит как новый пользователь george не может получить доступ к ключу ~/.ssh/id_rsa.pub. Поэтому я копирую их из корневой папки в свою домашнюю папку, а также добавляю открытый ключ в настройках SSH Github.

cp root/.ssh/id_rsa.pub home/george/.ssh/id_rsa.pub 
cp root/.ssh/id_rsa home/george/.ssh/id_rsa 

Только для получения такой же ошибки, как раньше.

В конце концов мне пришлось добавить GitHub в мой список разрешенных хостов:

ssh-keyscan -H github.com >> ~/.ssh/known_hosts 

только, чтобы получить следующий RuntimeException

[RuntimeException] 
sudo: no tty present and no askpass program specified 

мне удалось прокомментировать этот код в deploy.php

// desc('Restart PHP-FPM service'); 
// task('php-fpm:restart', function() { 
//  // The user must have rights for restart service 
//  // /etc/sudoers: username ALL=NOPASSWD:/bin/systemctl restart php-fpm.service 
//  run('sudo systemctl restart php-fpm.service'); 
// }); 
// after('deploy:symlink', 'php-fpm:restart'); 

Чтобы завершить процесс развертывания, и теперь я спрашиваю я сам, если php-fpm действительно необходимо, для продолжения отладки этого инструмента развертывания? Или я могу жить без него?

И если мне это нужно, может кто-нибудь помочь мне понять, для чего он нужен? И, может быть, роскошь также обеспечивает решение RuntimeException?

ответ

1

Попробуйте это:

->identityFile('~/.ssh/id_rsa.pub', '~/.ssh/id_rsa', 'pass phrase') 

Это не работает для меня - нет необходимости в программе askpass.
Это помогает быть явным в моем опыте.

Что касается вашей задачи перезапуска phpfm .. Я этого раньше не видел. Не нужно.:)

EDIT:

Что вы предоставите пароль, вероятно, является хорошим признаком того, что вы должны реорганизовать ваш Deployer код немного, если вы держать его под контролем источника.

Я загружаю данные о конкретном объекте из файла YAML, который я не, подчиняясь исходному контролю.

Первый бит моей stage.yml:

# Site Configuration 
# ------------- 
prod_1: 
    host: hostname 
    user: username 
    identity_file: 
     public_key: /home/user/.ssh/key.pub 
     private_key: /home/user/.ssh/key 
     password: "password" 
    stage: production 
    repository: https://github.com/user/repository.git 
    deploy_path: /var/www 
    app: 
     debug: false 
     stage: 'prod' 

И потом, в моем deploy.php:

if (!file_exists (__DIR__ . '/deployer/stage/servers.yml')) { 
    die('Please create "' . __DIR__ . '/deployer/stage/servers.yml" before continuing.' . "\n"); 
} 
serverList(__DIR__ . '/deployer/stage/servers.yml'); 
set('repository', '{{repository}}'); 

set('default_stage', 'production'); 

Обратите внимание, что, когда вы используете serverList, он заменяет установку сервера в deploy.php

 Смежные вопросы

  • Нет связанных вопросов^_^