Вот bash-скрипт:
#!/bin/bash
echo "$NODE_ENV"
(
echo $USER;
echo $PATH;
cd /opt/chat-staging/;
git pull;
NODE_ENV=staging;
echo "Set NODE_ENV to $NODE_ENV";
node leaderboard.js & node app.js;
echo "Started leaderboard.js";
echo "Started app.js";
)
echo "NODE_ENV is now $NODE_ENV"
Вот PHP-скрипт:
<?php
exec('/bin/bash /opt/chat-staging/start_app.sh 2>&1', &$output, &$return_var);
print_r($output);
print $return_var;
?>
Я настроил его как хук после фиксации github, но это вывод:
Массив ([0] => [1] => www-data [2] => /usr/bin [3] => /usr/lib/git-core/git-sh-setup: 90: sed: не найден [4] => базовое имя: ошибка записи: Broken pipe [5] => /usr/lib/git-core/git-sh-setup: 212: uname: not found [6] => Проверка ключа хоста не удалась [7 ] => fatal: Удаленная сторона неожиданно зависла [8] => Установить NODE_ENV в промежуточную [9] => /opt/chat-staging/start_app.sh: строка 11: узел: команда не найдена [10] => / opt/chat-staging/start_app.sh: строка 11: узел: команда не найдена [11] => Запущена таблица лидеров.js [12] => Запущена app.js [13] => NODE_ENV сейчас) 0
/opt/chat-staging/ принадлежит «www-pub»; в /etc/groups у меня есть "www-pub:x:1000:www-data,root".
Так почему это не работает? У меня даже есть ключ RSA в /var/www/.ssh/id_rsa, а открытый ключ добавлен в качестве ключа развертывания GitHub.
ИЗМЕНИТЬ, ДОПОЛНЕНИЕ
Я добавил git remote-v; к сценарию, прямо перед «git pull».
root@li70-243:/opt/chat-staging# su - www-data
$ bash /opt/chat-staging/start_app.sh
origin [email protected]:zackster/CompassionPit--Node-.git (fetch)
origin [email protected]:zackster/CompassionPit--Node-.git (push)
Already up-to-date.
Принимая во внимание, что я все еще вижу вывод PHP, например...
Array ( [0] => origin [email protected]:zackster/CompassionPit--Node-.git (fetch) [1] => origin [email protected]:zackster/CompassionPit--Node-.git (push) [2] => мастер [3] => * репутация [4] => /usr/lib/git-core/git-sh-setup: 90: sed: не найдено [5] => базовое имя: ошибка записи: Broken pipe [6] => /usr/lib/git-core/git-sh-setup: 212: uname: not found [7] => /usr/lib/git-core/git-pull: 244: sed: not found [8] => Ваша конфигурация указывает на слияние с ref 'reputation' [9] => с удаленного сервера, но такой ref не был получен.