Как установить Drush (и не сойти с ума)

Главные вкладки

Аватар пользователя Valeratal Valeratal 3 ноября 2016 в 22:47

Как известно, для 8-ки нужен уже новый драш, 8-й, например

Инструкция вроде проста
http://docs.drush.org/en/master/install-alternative/
1. Install Composer globally.
2. Add composer's bin directory to the system path by placing export PATH="$HOME/.composer/vendor/bin:$PATH" into your ~/.bash_profile (Mac OS users) or into your ~/.bashrc (Linux users).
3. Install latest stable Drush: composer global require drush/drush.
4. Verify that Drush works: drush status

Приступаю. Сижу в папке root
1. Ставлю композер
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === 'aa96f26c2b67226a324c27919f1eb05f21c248b987e6195cad9690d5c1ff713d53020a02ac8c217dbf90a7eacc9d141d') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Вроде поставился
Драшу нужно композер глобальный
Прописываю по мануалу
mv composer.phar /usr/local/bin/composer

2. Добавляю этот текст в файлик .bashrc PATH="$HOME/.composer/vendor/bin:$PATH" Файлик лежит в этой же папке (root)

Пункт 3 прописываю
composer global require drush/drush
Вроде все пучком
Выводится сообщения
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Using version ^8.1 for drush/drush
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update (это потому что я уже третий раз пробую)
Generating autoload files

Пункт 4, проверяю статус
root@hr-portal:~# drush status

Выводится сообщение
Unable to load autoload.php. Run composer install to fetch dependencies and write this file (http://docs.drush.org/en/master/install-alternative/). Or if you prefer, use the drush.phar which already has dependencies included (http://docs.drush.org/en/master/install).

Вот тут у меня и затык. Ведь файл "автолоад" генерировался. Куда же он делся?

Комментарии

Аватар пользователя multpix multpix 4 ноября 2016 в 7:44

не нужно от root его использовать!!!
это делают от рут, просто чтобы положить его в место доступное в переменной $PATH всех пользователей системы:
sudo mv composer.phar /usr/local/bin/composer

как пример, на шаред можно от обычного пользователя (того кто деплоит друпал) инсталить локально
https://getcomposer.org/download/
загрузить компосер, установить в куда-угодно, например в свой ~/bin (или ~/.bin)
php composer-setup.php --install-dir=bin
добавить свой ~/bin к своей переменной окружения $PATH в файле ~/.bashrc, и перечтя конфиг - проверить

source ~/.bashrc
composer

Дале, можно с composer инсталить drush или в свой дом.каталог, или в корень друпал как зависимость
а что-бы обращаться к нему по имени из любых мест - путь его расположения должен быть доступен в $PATH

https://habrahabr.ru/post/145946/
https://habrahabr.ru/post/313298/

Аватар пользователя bsyomov bsyomov 9 ноября 2016 в 15:50

Какая связь логическая между sudo, debian и не применимостью этого метода?
apt-get install sudo и настройка sudoers по вкусу, если у вас его нет. Т.к. это правильнее, чем заходить на сервер под рутом.
Ну и никто не мешает, просто выполнить команды из под рута отбросив sudo, если уж на то пошло.

Хотя в debian есть drush в репозиториях, хоть и не свежий, и установка из репозитория, будет правильнее с точки зрения обслуживания системы.

Аватар пользователя Valeratal Valeratal 4 ноября 2016 в 11:38

Спасибо
Дальше вроде все как должно быть

root@hr-portal:~# composer global require drush/drush
Changed current directory to /root/.composer
Do not run Composer as root/super user! See https://getcomposer.org/root for det ails

Using version ^8.1 for drush/drush
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files

Проверяю статус
root@hr-portal:~# drush status
Unable to load autoload.php. Run composer install to fetch dependencies and write this file (http://docs.drush.org/en/master/install-alternative/). Or if you prefer, use the drush.phar which already has dependencies included (http://docs.drush.org/en/master/install).

Вот что ему не так? ведь он сгенерировал автолоад-файл

Аватар пользователя multpix multpix 4 ноября 2016 в 12:39

вот не надо под рут!
))

su имя_пользователя
cd

так снизим привилегии до простого пользователя и зайдем в его дом.директорию
дале проверить работу введя
composer

composer -это просто пакет-менеджер для php - установщик зависимостей.
с его помощью - устанавливать и обновлять drush

и тут, если drush нужен предустановленный всем,
надо думать - куда его поставить, чтоб удобно обновлять, а жесткую ссылку на /usr/bin/drush делать

Аватар пользователя Valeratal Valeratal 4 ноября 2016 в 13:08

вот не надо под рут!

У меня весь сервер в распоряжении. На сервере заведено несколько юзеров и 10-ок сайтов. У каждого юзера 1-3 сайта
На сервер я захожу через путти, по SSH, захожу через рут. Предлагаете мне каким-то образом перелогиниваться в юзера и этих юзеров каждый раз менять, если я хочу обновить все сайты? Smile

По команде композер показывается логотип и текст

Composer version 1.2.2 2016-11-03 17:43:15

Usage:
command [options] [arguments]

Options:
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
--profile Display timing and memory usage information
--no-plugins Whether to disable plugins.
-d, --working-dir=WORKING-DIR If specified, use the given directory as working directory.
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
about Short information about Composer
archive Create an archive of this composer package
browse Opens the package's repository URL or homepage in your browser.
clear-cache Clears composer's internal package cache.
clearcache Clears composer's internal package cache.
config Set config options
create-project Create new project from a package into given directory.
depends Shows which packages cause the given package to be installed
diagnose Diagnoses the system to identify common errors.
dump-autoload Dumps the autoloader
dumpautoload Dumps the autoloader
exec Execute a vendored binary/script
global Allows running commands in the global composer dir ($COMPOSER_HOME).
help Displays help for a command
home Opens the package's repository URL or homepage in your browser.
info Show information about packages
init Creates a basic composer.json file in current directory.
install Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json.
licenses Show information about licenses of dependencies
list Lists commands
outdated Shows a list of installed packages that have updates available, including their latest version.
prohibits Shows which packages prevent the given package from being installed
remove Removes a package from the require or require-dev
require Adds required packages to your composer.json and installs them
run-script Run the scripts defined in composer.json.
search Search for packages
self-update Updates composer.phar to the latest version.
selfupdate Updates composer.phar to the latest version.
show Show information about packages
status Show a list of locally modified packages
suggests Show package suggestions
update Updates your dependencies to the latest version according to composer.json, and updates the composer.lock file.
validate Validates a composer.json and composer.lock
why Shows which packages cause the given package to be installed
why-not Shows which packages prevent the given package from being installed

Аватар пользователя Mihail.space Mihail.space 4 ноября 2016 в 13:56

Заведите пользователя который будет обслуживать сервер, но не добавляйте его в sudo, он должен быть обычным юзером. И получайте через него права рута с помощью su
Когда вы зайдете по ssh под этим пользователем, то после набора su вам надо будет ввести пароль root пользователя, который по идее должны знать только вы, сам доступ рута через ssh заблокируйте в файле sshd_config по пути /etc/ssh/sshd_config
изменив PermitRootLogin yes на PermitRootLogin no
То есть у вас на сервере вообще не должно быть привелигированных пользователей на случай взлома, кроме рута, которому доступ будет запрещен, но как получить его права написано выше.
Если вам надо будет что -то грузить в директорию рута, когда будете получать его права, то cd ~

Аватар пользователя multpix multpix 4 ноября 2016 в 20:15
1

Просто попробуй понять, это *nix - а не то, что ты хочешь, ждешь, или предполагаешь - просто система со своими сложившимися принципами,
и мы ее просто используем, один раз настраиваем - демонов, нужные утилиты, конфиги, и используем,
время от времени - подстраиваем, если надо что-то еще, и используем дальше.

Имея с одной стороны сонмы разработчиков - а с другой - сонмы пользователей - для достижения понимания
система следует неким принципам, соглашениям по конфигурации, стремиться к стандартизации
- если хочешь вникнуть начни с POSIX, FHS
- если не хочешь - не вникай, но просто следуй - иначе не получиться, ведь ты этим принципам следуешь всегда даже не подозревая про это,
сами производители софта - способствуют этому начиная еще с архитектуры своих продуктов.

Ведь ты знаешь - что бывает когда друпал используют через задницу,
подозреваешь о неэффективности попыток сходить по большому на потолок,
вот и с ПДД - тоже самое,
и с системным администрированием *nix - не иначе.
Просто играй по правилам))
Если есть стандарты - придерживайся.

Сис.администрирование и пользовательское использование - это две ОТДЕЛЬНЫЕ вселенные в *nix системе.
На это рассчитывают те, кто пишет софт, который ты используешь.

Что composer, что drush несмотря на то, что выполняют админ задачи - являются пользовательскими скриптами.

Но следуя принципу DRY - ты как владелец системы, можешь дать пользователям единый набор предустановленных утилит,
чтобы каждый не парился воспроизводить у себя в дом каталоге одно и то-же.

В твоем конкретном случае это значит, что ты сооружаешь workflow для drupal(или просто php)-ориентированных пользователей.

Но тут имеет смысл сказать, что если composer удобно установить глобально - и все используют,
то drush - нужно или инсталить все актуальные версии, те вызывать потом drush7, drush8 - или отдать установку на усмотрение пользователя.
Ибо drush, как и ядро дру, и весь, контриб, и все что доступно из composer - им же и ставиться/обновляется.
Без всяких проблем.
Представь что composer это своеобразный apt для php пакетов))

Установка - ты просто скачиваешь файл со оф.страницы, делаешь исполняемым и кладешь в /usr/bin
Оф. установочная инструкция и скрипт предлагают ряд проверок - но принцип я описал выше.
Тут рут права нужны только что-бы произвести запись в /usr/bin

Дальше - мы просто его ИСПОЛЬЗУЕМ,
и как тебе пишут его разработчики в выводе - не надо даже пытаться использовать его под рутом.

Сделай себе пользователя обычного - такого как те, что работают на сервере с сайтами.
От него входи в систему и им проверяй какое ты создал workflow для своих соседей по системе, все - ли работает удобно ли, че еще надо.
Если надо чего до-установить - ты делаешь su - админишь, делаешь exit - проверяешь.

Но заходишь под обычным, настроив раз вход по ключу чтоб не вбивать каждый раз пароль
(и пользоваться всеми прелестями scp, git push, и прочими межхостовыми требующими авторизации - без головняков).
А при первом входе - настроив вход по ключу и отправив свои ключи - ты запрещаешь удаленный вход руту.
Все очень просто.

Не надо работать под рутом никогда, ибо просто: нет никакой необходимости работать под рутом.
Это как скакать в новых джинсах на коняке без седла - только два вопроса - накой, и - ой че это с джинсой)))

Аватар пользователя Valeratal Valeratal 4 ноября 2016 в 17:34
То есть у вас на сервере вообще не должно быть привелигированных пользователей на случай взлома, кроме рута
 которому доступ будет запрещен, но как получить его права написано выше

а что помешают злодею сделать точно также как и я, набрать все эти su?

p.s. судо у меня работать не будет, у меня дебиан

Аватар пользователя Valeratal Valeratal 4 ноября 2016 в 17:44

Если он будет знать пароль рута, то ничего.

хм, а как он узнает его, если я хожу под рутом? Сядет рядом за столом и подглядывать будет?

Лан, вопрос секурности он интересный, но сейчас я пытаюсь поставить драш. А он не ставится

Аватар пользователя Studio VIZA Studio VIZA 4 ноября 2016 в 18:11

Valeratal wrote:

А он не ставится

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

Аватар пользователя Mihail.space Mihail.space 4 ноября 2016 в 18:14

да что то аномалия. сейчас попробовал по своему мануалу поставить. шляпа. а букавально пару недель назад по нему на vps драш поставил оч быстро.
сейчас на свежем дебиане jessie как автор и писал все генерится, но драш не работает.
почему не работает, стало понятно. не создаются в домашней директории .drush и .composer и есно терминал не понимает чего от него хотят. разбираюсь

Аватар пользователя Valeratal Valeratal 4 ноября 2016 в 18:30

В общем сейчас у меня есть в папке root, папка ".compser" (странно, ведь я переносил композер командой mv composer.phar /usr/local/bin/composer)
В папке vendor есть также папка с драшем (несколько файликов) и несколько других папок. И, внимание!, есть файл autoload.php

Что ему не так, не понимаю

в папке "/usr/local/bin" есть файлик ".composer", походу это "хардлинк"

Аватар пользователя Mihail.space Mihail.space 4 ноября 2016 в 18:38
1

зашел на vps
drush status

anyuser@kubanga:~$ drush status
 PHP executable         :  /usr/bin/php                    
 PHP configuration      :  /etc/php/7.0/cli/php.ini        
 PHP OS                 :  Linux                          
 Drush script           :  /home/anyuser/.composer/vendor/dru
                           sh/drush/drush.php              
 Drush version          :  8.1.5                          
 Drush temp directory   :  /tmp          

Ставлю на новый локальный дебиан, он ставит по пути в /home/anyuser/.config/composer, что нечто другое от ожидаемого

Аватар пользователя Valeratal Valeratal 7 ноября 2016 в 12:18

Попробывал удалить композер путем удаления файлов. Но нэт. Композер так просто не удалить Smile

Попробывал поставить еще раз композер, и еще раз просто драш простым путем
http://docs.drush.org/en/master/install/

Судо у меня нет, поэтому команду
sudo mv drush /usr/local/bin я набирал просто "mv drush /usr/local/bin"

Затем набрал drush init, драш прописал свои тексты "баш"

В папке /usr/local/bin сейчас лежат
*.composer
*.drush

Воодушевленный иду и пробую запустить драш уже в папке сайта. Но не тут-то было

root@hr-portal:/var/www/kpd/data/www/good-sp.ru# drush up
PHP Warning: pcntl_exec(): Error has occurred: (errno 13) Permission denied in phar:///usr/local/bin/drush/includes/startup.inc on line 415
Error has occurred executing the Drush script found at /var/www/kpd/data/www/good-sp.ru/drush
(errno 13) Permission denied

Пробую запустит драш статус
root@hr-portal:/var/www/kpd/data/www/good-sp.ru# drush status
PHP Warning: pcntl_exec(): Error has occurred: (errno 13) Permission denied in phar:///usr/local/bin/drush/includes/startup.inc on line 415
Error has occurred executing the Drush script found at /var/www/kpd/data/www/good-sp.ru/drush
(errno 13) Permission denied
root@hr-portal:/var/www/kpd/data/www/good-sp.ru#

В общем, теперь что-то с правами. Офигительно ведь. Руту прав не хватает Smile

Аватар пользователя Valeratal Valeratal 7 ноября 2016 в 12:23

драш статус из дириктории узр-локал-бин
root@hr-portal:/usr/local/bin# drush status
PHP configuration : /etc/php5/cli/php.ini
PHP OS : Linux
Drush script : /usr/local/bin/drush
Drush version : 8.1.7
Drush temp directory : /tmp
Drush configuration :
Drush alias files :

Аватар пользователя multpix multpix 7 ноября 2016 в 16:04

Valeratal wrote:

Может надо ...

Просто не работать под рутом,
неужели не хватило траблов, чтоб понять это простое правило?

Я вообще удивлен - как можно с такой настойчивостью создавать себе проблемы на ровном месте...

Studio VIZA wrote:


https://www.lullabot.com/articles/goodbye-drush-make-hello-composer
http://drupal-composer.org/

Аватар пользователя Valeratal Valeratal 7 ноября 2016 в 18:40

Просто не работать под рутом, неужели не хватило траблов, чтоб понять это простое правило?
Угу, расскажите теперь ,как вернуть систему в исходное состояние, чтобы пробовать не из под рута?

https://www.linode.com/docs/websites/cms/drush-drupal

у меня не работает sudo, хотя можно без судо, я все равно под рутом

Аватар пользователя multpix multpix 7 ноября 2016 в 20:53

Убрать то, что копировалось в /usr/bin или /usr/local/bin
Где лежит - можно посмотреть:

whereis composer
whereis drush

Убрать все что собиралось в /root
Перейти в простого пользователя (к примеру создать нового deployer)

su deployer
cd
mkdir -p SRC/bin
cd SRC
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === 'aa96f26c2b67226a324c27919f1eb05f21c248b987e6195cad9690d5c1ff713d53020a02ac8c217dbf90a7eacc9d141d') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
chmod +x bin/composer
# Проверить
./bin/composer
# Положить в /usr/local/bin чтоб использовать всем
su root
mv bin/composer /usr/local/bin/composer
# Проверить обычным пользователем
su deployer (или просто exit - ведь в root пришли из deployer)
whereis composer
composer

Там-же, в SRC

composer require drush/drush
# проверить
./vendor/drush/drush/drush status
su root
sudo mv ./vendor/drush /usr/local/bin/drush
exit #Вышли из root
whereis drush
drush status

Но я пользуюсь drush из локального .composer, просто добавив его в $PATH
Может будет проще sudo поставить, чем su/exit каждый раз...

Аватар пользователя Valeratal Valeratal 7 ноября 2016 в 21:46

Спасибо, пробую вашим путем
затык

Composer successfully installed to: /var/www/deployer/data/SRC/composer.phar
Use it: php composer.phar
deployer@hr-portal:~/SRC$ php -r "unlink('composer-setup.php');"
deployer@hr-portal:~/SRC$ chmod +x bin/composer
chmod: cannot access `bin/composer': No such file or directory
deployer@hr-portal:~/SRC$
Аватар пользователя multpix multpix 8 ноября 2016 в 1:25

Ху ли GUN wrote:

cd же - вот от сих и работает, судя по тексту - права на запись есть, а потом убить SRC))

Valeratal wrote:

composer.phar

mv composer.phar composer
а дальше по тексту - исполняемым, проверить, и в общий /usr/local/bin

Но это я не дописал ключей, сорян, бывают и хуже очипятки))
команда сборки:
php composer-setup.php --install-dir=bin --filename=composer

Аватар пользователя Valeratal Valeratal 8 ноября 2016 в 10:13

спасибо!

whereis composer
не признается (может потому что "анлинк" вызывал)

хотя композер и лежит в папке деплоера

то есть, есть
/var/www/deployer/data/.composer (внутри 2 key)
и
/var/www/deployer/data/SRC/composer.phar
/var/www/deployer/data/SRC/bin

Куда чмод применять?

Аватар пользователя multpix multpix 8 ноября 2016 в 10:38
# файл composer.phar - то что нужно, делаем исполняемым
chmod +x /var/www/deployer/data/SRC/composer.phar
# попробовать как работает
cd /var/www/deployer/data/SRC/
./composer.phar
# поднять привилегии до рут и перенести в /usr/local/bin
mv composer.phar /usr/local/bin/composer
# выйти из root
# проверить что виден простому пользователю
whereis composer
# проверить как работает
composer

После каталог SRC можно удалить
Каталог .composer у обычного пользователя это:
для собираемых composer-ом пакетов которые нужны для всех проектов этого пользователя.

так, чтоб не ставить(и обновлять) drush в каждый проект проект пользователя -
ставим глобально ( но это в пределах этого пользователя, а глобально - читай: глобально для всех проектов пользователя)
и в ~/.bashrc добавляем этот путь в переменную $PATH
export PATH="$HOME/.composer/vendor/bin:$PATH"
Можешь глянуть что у тебя в PATH
env | grep PATH

Аватар пользователя Valeratal Valeratal 8 ноября 2016 в 11:35

чет у меня теперь
не
/var/www/deployer/data/SRC/composer.phar
а
/var/www/deployer/data/SRC/*composer
(Наверно потому, что я набирал команду хулигана - mv composer.phar composer)

И команда
chmod +x /var/www/deployer/data/SRC/composer.phar
не находит файл

Аватар пользователя multpix multpix 8 ноября 2016 в 11:52

повторение - мать учения)
все стереть

cd ~
curl -sS https://getcomposer.org/installer | php
# в текущем каталоге появился composer.phar
# делаем исполняемым
chmod +x composer.phar
# проверяем
./composer.phar
# заходим в root и переносим с новым именем
su root
mv composer.phar /usr/bin/composer
# выходим из root
exit
# проверяем видимость
whereis composer
# проверяем работу
composer
Аватар пользователя Valeratal Valeratal 8 ноября 2016 в 12:14

спасибо
повторение сработало, композер есть
deployer@hr-portal:~$ whereis composer
composer: /usr/bin/composer

Теперь надо драш ставить

Ставить так?

composer require drush/drush
# проверить
./vendor/drush/drush/drush status
su root
sudo mv ./vendor/drush /usr/local/bin/drush
exit #Вышли из root
whereis drush
drush status
Аватар пользователя multpix multpix 8 ноября 2016 в 12:36

Так не будет работать,
чтоб так работало надо из vendor в /usr/local/bin весь каталог drush перетащить (так потом чистить проще будет),
но я не считаю это хорошим решением.

Пусть каждый пользователь у себя использует,
им нужно только чтоб vendor/bin был в PATH
т.е в его .bashrc

export PATH="$HOME/.composer/vendor/bin:$PATH"
# И не забываем про
source .bashrc
# После его редактирования

Ведь сегодня нужен drush7 завтра drush8, потом drupal-console...
пользователю проще делать:
composer global require drupal/console:@stable
и использовать

кстати книга по drupal-colsole на gitbook:
https://www.google.com.ua/search?q=gitbook+drupal-console

Аватар пользователя Valeratal Valeratal 8 ноября 2016 в 13:09

у меня нет других пользователей, драшем пользуюсь только я. Причем пользуюсь рутом (один фиг по ссх захожу рутом)
Лично мне проще просто заходить под рутом и драшить все свои 10 сайтов, не переключаясь в разных пользователей

драш ставить в любом случае?
composer require drush/drush
ставить его из под юзера?

Аватар пользователя multpix multpix 8 ноября 2016 в 14:47

Так все проще,
под рутом делай только админ задачи для системы, обновить и тп.,
а все остальное - это зона действия простого пользователя,
тогда и composer нет смысла в /usl/local/bin
так проще будет обновлять.

и сами сайты обслуживать из простого пользователя (а это ведь соответствующие права на ФС) ,
и drush ставить ему-же.

Аватар пользователя Valeratal Valeratal 8 ноября 2016 в 14:29

а вот это я не понял
composer global require drupal/console:@stable
зачем мне "консоль", когда есть драш. Зачем плодить сущности
Да, консоль возможно инструмент более широкого назначения. Но, тема у нас "как поставить драш", Я бы вообще один драш поставил, без композера

Аватар пользователя multpix multpix 8 ноября 2016 в 14:51

это пример был,
с composer можно очень просто ставить и обновлять много вещей, не только drush но и drupal с модулями.

composer search имя_пакета

Аватар пользователя Valeratal Valeratal 8 ноября 2016 в 15:31

ну да, можно обновить драшем, а можно композером, а можно друпал-консолью
Расплодили дублирующие функции, Зачем - хз.

(И мну еще предлагается этим голову забивать) Smile

я вот еще драш не поставил, сижу думаю как лучше, глобально или для всех юзеров (И в чем разница) Smile

Аватар пользователя Studio VIZA Studio VIZA 8 ноября 2016 в 16:25

Valeratal wrote:

сижу думаю как лучше, глобально или для всех юзеров (И в чем разница) Smile

Рут может создавать юзеров, юзеры могут создавать сайты. Рут не может создавать сайты, нежели только под юзером, утрирую канешн.
Когда работы по драшу завершены у рута, приступаем к работам по устройству драша у юзеров. Можно это делать не у всех подряд, а токмо у нужных.
В итоге при наборе в консоли компа сайт.ru@юзертакойто дожен последовать запрос пароля и вход в директорию акка пользователя, потом в директорию сайта и далее команда драш полное и беспрекословное обновление сайта.
Потом идём на страницу отчётов сайта и смотрим логическое завершение месячной установки драша на хостинг.
Великолепная возможность усложнить себе жизнь.
У кого много сериалов и ужасная лень, всячески рекомендую.
Если работаете в техподдержке, там да, драш неоценим.

Аватар пользователя Valeratal Valeratal 8 ноября 2016 в 17:37

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

все юзеры это я сам их создал. Я один (совсем один, один-одинешенька) работаю над этими сайтами. Юзеры созданы чисто для удобства (для потенциальной передачи прав на фтп, например)

Поэтому, драш мне нужен. Нет, точнее - драш нужен мне. И никому более на моем сервере. Я не хостер. Я простой недо-друпалер

Че, как ставить в итоге драш. Глобально? Чтоб рутом драшить все сайты

Аватар пользователя Valeratal Valeratal 8 ноября 2016 в 18:41

и потом у Вас от вашего юзера не будет хватать прав на какие-либо действия над этим файлом?

юзеры работают только с папкой files, с которой драш не работает. Драш обновляет ядро, модули с дру-орг

Аватар пользователя chimir chimir 9 ноября 2016 в 2:33

Valeratal wrote:

«а так не проще -http://www.drush.org/en/stable/install/»
не, там по мануалу используется sudo, а у меня дебиан

я ставил так

Скачиваем последнюю стабильную версию:

wget http://files.drush.org/drush.phar

Проверяем установку:

php drush.phar core-status

Переименовываем drush.phar в drush и перемещаем в папку bin(на самом деле не важно куда его поместить).

chmod +x drush.phar
mv drush.phar bin/drush
Аватар пользователя Valeratal Valeratal 9 ноября 2016 в 13:48

 Вы пришли за советом, Вам сказали, как правильней и для чего делается так.

Вы задали вопрос
Но что будет если Ваш драш от рута внесёт изменения в фс сайта, и потом у Вас от вашего юзера не будет хватать прав на какие-либо действия над этим файлом?

Я ответил, что ничего не будет. Потому что драшем я просто обновляю сайт. И кастомные темы драш тоже не трогает при драш-апе. Зачем придумывать потенциальные проблемы там, где их нет

Поверьте, нюансов множество. И Вы столкнётесь с каждым из них в своё время))) Пока у Вас была задача просто поставить драш)))

Проблемы будет решать по мере поступления. Есть немалая вероятность, что я не доживу до каких-то потенциальных проблем
Вы пишите как дедуля на завалинке, учя молодежи тому, чему ей нахрен не надо.
Не столкнусь я с проблемой нехватки юзеру прав из-за драша. Потому что я и рут и все эти пользователи.

Я кстати спросил, чем отличается установка драша глобального от "Для всех юзеров"
Ответ не получил. Хотя вот это как раз тема про "потенциальные проблемы"

chimir #
я попробую

Аватар пользователя multpix multpix 9 ноября 2016 в 13:59

Если drush работает от имени пользователя root,
а сам php от имени простого пользователя (или апача в случае mod)- тут рано или поздно будут проблемы.
Да и в общих случаях: пользовательские действия с root привилегиями == проблемы.

Поэтому и говорил - у какого пользователя во владении фс с кодом и файлами сайта,
под ним и для него настраивать workflow.
а что в нем будет - личное дело каждого (будет ли это drush, console, git, etc),
но работая с php сейчас: composer - strongly must have.

Ведь сам же не стал использовать apt для установки drush,
хотел погибче - бери погибче, но нужно вникнуть, и это не сложно,
а иначе - это только тогда, когда владельцу поф на пользователей его сайта.

Аватар пользователя multpix multpix 9 ноября 2016 в 14:05

Valeratal wrote:

Глобально для пользователя - путь установки присутствует в его $PATH
Глобально для все пользователей - путь установки присутствует в общедоступном $PATH
Локально - в рамках одного проекта (cм. dir vendor)

Я ужо думал ты все сделал и забыл))

Аватар пользователя Valeratal Valeratal 9 ноября 2016 в 14:30

Учить Вас - пустая трата времени, жизнь научит.

Да, я действительно не просил учить меня жить.

Если drush работает от имени пользователя root,
а сам php от имени простого пользователя (или апача в случае mod)- тут рано или поздно будут проблемы.

5 лет делал драш ап от рута. Проблем не было. Может и не будет? Smile
Как там говорит котенок по имени "гав" - пойду искать неприятности? Smile

 у какого пользователя во владении фс с кодом и файлами сайта,
под ним и для него настраивать workflow.

Тогда зачем Вам все эти пользователи?

У меня пользователи номинальные. Их не существует как физлиц.Об этом я уже писал. Разделению воркфлоу для каждого пользователя - это логика хостера (и правильная логика), а не одинокого друпалера-любителя.

Ведь сам же не стал использовать apt для установки drush

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

Композер маст-хэв когда Вы каждый день ставить 10-ки ядреных друпалов или там модулей, тем. А не когда (как я) раз в месяц при выходе крит. обновления, драш-апите 10 сайтов

Глобально для пользователя - путь установки присутствует в его $PATH
Глобально для все пользователей - путь установки присутствует в общедоступном $PATH
Локально - в рамках одного проекта (cм. dir vendor)

Я ужо думал ты все сделал и забыл))

Понял, спасибо. Нет, еще не сделал. Работа отвлекала, да новая "кодла" Smile

Аватар пользователя Valeratal Valeratal 9 ноября 2016 в 16:36
Переименовываем drush.phar в drush и перемещаем в папку bin(на самом деле не важно куда его поместить).

chmod +x drush.phar
mv drush.phar bin/drush

Пробовал и рутом и юзером

нифига
deployer@hr-portal:~$ php drush.phar core-status
PHP configuration : /etc/php5/cli/php.ini
PHP OS : Linux
Drush script : /var/www/deployer/data/drush.phar
Drush version : 8.1.7
Drush temp directory : /tmp
Drush configuration :
Drush alias files :

deployer@hr-portal:~$ chmod +x drush.phar
deployer@hr-portal:~$ mv drush.phar bin/drush
mv: cannot move `drush.phar' to `bin/drush': No such file or directory
deployer@hr-portal:~$

Может надо mv drush.phar /bin/drush ?

Пробую еще и так
Запускаю композер из папки юзера деплоер, юзером деплоер

composer require drush/drush
# проверить
./vendor/drush/drush/drush status
su root
sudo mv ./vendor/drush /usr/local/bin/drush
exit #Вышли из root
whereis drush

deployer@hr-portal:~$ whereis drush
drush: /usr/local/bin/drush

deployer@hr-portal:~$ drush status
bash: drush: command not found

Отлично, драш установился, но команды не найдено

Я точно сойду с ума этим драшем Smile

Аватар пользователя bsyomov bsyomov 9 ноября 2016 в 16:49

Либо надо добавить /usr/local/bin в $PATH.
Либо ln /usr/local/bin/drush /usr/bin/drush - это вероятно самый простой способ.
Копировать в /usr/bin не стоит.

Аватар пользователя Valeratal Valeratal 9 ноября 2016 в 17:04

Либо ln /usr/local/bin/drush /usr/bin/drush - это вероятно самый простой способ.

Да он после моей второй попытке уже вроде там

deployer@hr-portal:~$ whereis drush
drush: /usr/local/bin/drush

Видно где-то пути не прописались

Аватар пользователя bsyomov bsyomov 9 ноября 2016 в 18:29

Он у вас в /usr/local/bin, и этого пути нет у вас в PATH, поэтому под пользователем и не вызывается без указания полного пути. При этом, /usr/bin в PATH у вас есть, конечно, и туда и надо проливать drush.

Аватар пользователя Valeratal Valeratal 9 ноября 2016 в 17:44

Занимаетесь тупым копипастом
Бывает еще копипаст умный? Smile копи-паст это скопировать-вставить. Это не шахматы. Тут негде думать по определению

Аватар пользователя bsyomov bsyomov 9 ноября 2016 в 18:33

Естественно бывает. Если вы не просто копипестите, а попутно читаете документацию по предлагаемым командам и понимаете, что и зачем вам предлагают сделать. Ну и уточняет, если нужно.

Аватар пользователя Valeratal Valeratal 9 ноября 2016 в 18:20

Сделал исполняемым
однако, когда захожу в папку сайта и пробую драш ап

root@hr-portal:/var/www/vv-travel/data/www/vv-travel.ru# drush up

Command pm-update needs a higher bootstrap level to run - you will need to invoke drush from a more functional Drupal environment to run this command. [error]

Аватар пользователя Valeratal Valeratal 9 ноября 2016 в 18:31
1

это косяки в 7-ке

А при попытке апнуть 8-ку, пишет что
root@hr-portal:/var/www/kpd/data/www/good-sp.ru# drush up
PHP Warning: pcntl_exec(): Error has occurred: (errno 13) Permission denied in /root/.composer/vendor/drush/drush/includes/startup.inc on line 415
Error has occurred executing the Drush script found at /var/www/kpd/data/www/good-sp.ru/drush
(errno 13) Permission denied

переключаюсь в деплоера
deployer@hr-portal:/var/www/kpd/data/www/good-sp.ru$ drush up
bash: drush: command not found

здрасте приехали.. Опять драш потерялся Smile

p.s. как скучно в винде, выбрал папку и далее-далее-далее Smile
а тут в линухе, борода растет, глаза краснеют. Лепота Smile

Аватар пользователя Valeratal Valeratal 9 ноября 2016 в 22:23

Связанный вопрос
Порекомендовали мне таки под одного юзера завести все сайты
Вот вопрос ,у меня ядренные папки-файлы принадлежат руту (а всякие файлес, сайтес - принадлежат юзеру)

как правильно делать? Оставить как есть или все папки сайта отдать юзеру (если не отдать, то я из под юзера очевидно не смогут драшить)

Аватар пользователя Valeratal Valeratal 9 ноября 2016 в 23:14

владельцем сделать пользователя
это понятно

 в группу включить пользователя от которого работает вебсервер
а вот это уже нет
У меня в группе для каждого сайта указан тот же
ну то есть, если владелец для папок сайта "kpd", то и группа указана "kpd"

Аватар пользователя Valeratal Valeratal 10 ноября 2016 в 9:47

ну вот они работали раньше нормально, до переезда
Когда у каждого пользователя для папок файлес, сайтес - были указан пользователь как владелец и как группа

А теперь, работать так не хочет. Пресеты не создаются для картинок

в журнале
Невозможно установить права на public://styles/large
Невозможно создать заданное изображение в public

p.s. Еще есть вопрос, как у базы сменить владельца. Может из-за этого глюки тоже

Аватар пользователя multpix multpix 10 ноября 2016 в 9:53

multpix wrote:

владельцем сделать пользователя, в группу включить пользователя от которого работает вебсервер

Valeratal wrote:

а вот это уже нет

прошло немного времени

Valeratal wrote:

А теперь, работать так не хочет. Пресеты не создаются для картинок

Валера, вот тебе наглядный пример тобой-же предоставленный
Хозяин барин - делай как хочешь.

Как правильно, тебе говорилось выше,
Но ты, босс, можешь и дальше относиться к этому как пустой болтовне нудных красноглазых линуксоидов))

Аватар пользователя Valeratal Valeratal 10 ноября 2016 в 10:18

Проверил от какого юзера работает пхп

$userinfo = posix_getpwuid(posix_getuid());
echo $userinfo['name'];//выведет имя пользователя, от которого работает PHP

выводит deployer, что собственно и нужно
А вот почему деплоер не может пресеты создавать, вопрос интересный
Невозможно создать заданное изображение в public://styles/thumbnail/public/field/image/ohrannik.jpg.

Аватар пользователя Valeratal Valeratal 10 ноября 2016 в 10:24

Вообще установка драша похожа на такую ситуацию

Жили Вы 10 лет в доме, жили нормально, но завелась мышь. Пробуете поймать - не получается

Лезет на форум домоводов. Дают несколько советов. Мышь не ловится

Затем Вас убеждают в том, что дом просто построен неправильно, а вот если его разобрать и построить иначе, по феншую, тогда (может быть) мышь и не заведется (заблудиться может) Smile

Аватар пользователя Valeratal Valeratal 10 ноября 2016 в 11:36

Что значит "в группу включить пользователя от которого работает вебсервер" - я не понимаю. Где эта "группа" ?
Как туда "включать" ?

Аватар пользователя Egmont Egmont 20 июня 2017 в 21:47

Двое суток и днём и ночью. drush и drupal 8. На vds. вчера удалил vds. Нельзя ставить графику, плохо это.
Что с драшем. (на vds установил Centos 7 и php 70). Вот оно и было. Удалил 70 . Поставил php 56
И заработал drush. (8.1), Ставил composerom. Уже завтра буду ставить сам друпал 8. Тяжело, страшно ? Мне тоже тяжело.
Бывает, что ни тела ни времени не чувствую. Голоден ли, в холоде я ? Вот пока не достигнул цели. С уважением.