Как запустить пакет из PHP-скрипта

Я пишу webhook для автоматической публикации сайта, когда я нажимаю на GitHub. Часть процесса требует, чтобы я создал сайт с

bundle exec middleman build --clean

Я пытаюсь вызвать это с помощью сценария PHP, сценария, вызываемого веб-крючком GitHub, поэтому пользователь www-data, Независимо от того, что я пытаюсь, однако, я получаю сообщение об ошибке bundle не может быть найден.

Как я могу запустить bundle команда из сценария PHP?

0

Решение

Я смог понять это. Сперва я установлен рвм в качестве многопользовательской установки, чтобы обеспечить www-data аккаунт может получить к нему доступ.

$ curl -sSL https://get.rvm.io | sudo bash -s stable

Установите желаемую версию ruby, в моем случае 2.3.1, затем установите rvm для ее использования:

$ rvm install 2.3.1
$ rvm use 2.3.1

Бежать gem установить любые драгоценные камни, которые необходимы. Поскольку rvm является многопользовательской установкой, эти драгоценные камни хранятся в системе, а не в вашем конкретном пользователе.

$ gem install packagename

Я не знаю, если это необходимо, но я бы закрыл сессию SSH и снова открыл ее. rvm портит переменные окружения, поэтому безопаснее, чем потом сожалеть.

Бежать env распечатать все переменные среды. printenv также работает, если env не по какой-то причине. Вы получите большой список всего, что вам нужно, вам нужны только рубины. Не копируйте / вставляйте эти значения, это примеры, которые я извлек из своей системы. Ваш будет другим!

PATH=/usr/local/rvm/gems/ruby-2.3.1/bin:/usr/local/rvm/gems/ruby-2.3.1@global/bin:/usr/local/rvm/rubies/ruby-2.3.1/bin:/usr/local/rvm/bin:/home/steven/bin:/home/steven/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
rvm_bin_path=/usr/local/rvm/bin
GEM_HOME=/usr/local/rvm/gems/ruby-2.3.1
IRBRC=/usr/local/rvm/rubies/ruby-2.3.1/.irbrc
MY_RUBY_HOME=/usr/local/rvm/rubies/ruby-2.3.1
rvm_path=/usr/local/rvm
rvm_prefix=/usr/local
rvm_ruby_string=ruby-2.3.1
GEM_PATH=/usr/local/rvm/gems/ruby-2.3.1:/usr/local/rvm/gems/ruby-2.3.1@global
RUBY_VERSION=ruby-2.3.1

Теперь нам нужен PHP для распознавания этих переменных. Вам нужно будет найти нужный файл в вашей системе, что может быть сложно. У меня нет способа узнать, какой из них правильный, я использовал метод проб и ошибок.

Файл в моей системе /etc/php/5.6/fpm/pool.d/www.conf, добавлять все переменных среды, которые вы ранее захватили в этот файл в следующем формате. Обратите внимание, что вам нужно PATH и здесь!

env[rvm_path] = /usr/local/rvm
env[rvm_prefix] = /usr/local

Теперь перезагрузите php-fpm, Название вашего сервиса может отличаться от моего; Я использую 5.6 сборки из Ондрей / PHP.

Ubuntu 15.04 и новее (systemd):

$ sudo systemctl restart php5.6-fpm

Ubuntu 14.10 и новее:

$ sudo service php5.6-fpm restart

Наконец, в самом скрипте вам нужно cd в каталог вы работаете bundle команда от. Мой короткий сценарий таков:

cd /opt/slate
/usr/bin/git reset --hard
/usr/bin/git pull
bundle exec middleman build --clean
cp -R /opt/slate/build/* /var/www/docs

Работает для меня!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]