Алис для vendor/drush/drush/drush. Как создать?

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

Аватар пользователя VasyOK VasyOK 2 сентября 2023 в 14:08

Приветствую специалистов по разработке. Возможно обсуждали, но уже не помню где.

Команды Драша на сервере запускаю так:
vendor/drush/drush/drush cr
Подскажите: как алиас сделать, чтобы можно было запускать
drush cr

Нашел файл /root/.bashrc

Добавил в конец
alias drush='~/vendor/bin/drush'

Теперь при запуске команд drush выдает:
-bash: /root/vendor/bin/drush: No such file or directory

Или мне .bashrc для каждого сайта создавать?

Комментарии

Аватар пользователя bsyomov bsyomov 2 сентября 2023 в 15:31

VasyOK wrote: Или мне .bashrc для каждого сайта создавать?

Для каждого пользователя, скорее... Smile

На самом деле, просто не под рутом это надо сделать, а под пользователем, который работает с сайтом, и соответственно не в /root/.bashrc, а в таком же файле в домашней папке этого пользователя.

Ну и по ошибке выше: Символ ~ раскрывается в домашнюю папку текущего пользователя. А drush-то наверняка не в /root, а в домашней папке какого-то другого пользователя. Ну и из под рута запускать ни drush, ни composer не стоит. Вообще не надо из-под рута работать по хорошему, только что-то делать такое, что не сделать иначе.

Аватар пользователя VasyOK VasyOK 2 сентября 2023 в 16:40

drush от для каждого сайта композером устновлен и находится в /vendor/bin/drush каждого сайта.
Отдельно на сервер я drush не ставил.

find / -name .bashrc
выдало

/root/.bashrc
/var/lib/docker/overlay2/abrakadabra/diff/home/wodby/.bashrc
/etc/skel/.bashrc

т.е. создавать .bashrc в папке пользователя? Че ж оно под рутом не работает?

Аватар пользователя bsyomov bsyomov 5 сентября 2023 в 20:12

Какая-то каша. /vendor/bin/drush это абсолютный путь, он может быть только один и явно странный.
Под каким пользователем ведётся разработка?
Чтобы было удобнее, можно делать отдельных пользователей для отдельных сайтов, например.

Аватар пользователя VasyOK VasyOK 6 сентября 2023 в 11:30

Я единственный пользователь. Под рутом.
Читал тут:
https://www.skillmaticace.com/blog/how-use-drush-instead-vendor-bin-drus...

Alternatively you can open [dot]bashrc file with your favorite editor and add the line alias drush='~/vendor/bin/drush' under 'User specific aliases and functions', save and close the file.

Аватар пользователя jura12 jura12 2 сентября 2023 в 17:59

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

Аватар пользователя avtomoda avtomoda 6 сентября 2023 в 14:54

Для использования Drush при установке нескольких сайтов удобно использовать Drush Launcer - https://github.com/drush-ops/drush-launcher
Работает до 12 версии Drush
На git в файле redmi.md подробно описано как установить.
Если необходимо использовать с Drush 12 - то использую alias для каждого сайта.
Для того что бы, корректно работала команда updb - добавить $PATH в alias.
Сложности возникают когда еще в системе разработки используются различные версии php (многое зависит от операционки в которой ведется разработка и способа установки версий php).
При вызове updb вызывается текущая версии php работающая в системе. Если для нужного сайта указа другая версия php - вызовет конфликт.
Лично я сделал так:
mkdir /usr/local/drush_versions_php/php8.1
ln -s /usr/bin/php8.1 /usr/local/drush_versions_php/php8.1/php
Далее в системе от пользователя от которого авторизуетесь создать файл .bash_aliases (возможно он у Вас уже есть)
В данном файле добавить alias для желаемого сайта:
alias drush_e="PATH=/usr/local/drush_versions_php/php8.1:$PATH /var/www/test_site/vendor/bin/drush"
То есть сначала добавляем в переменную среду $PATH нужную версию php и адрес на запуск drush
Обратить внимание на добавление $PATH - важно указать не саму символическую ссылку, а выбрать путь к этой ссылке. Это очень важный момент, что бы все запустилось.

Аватар пользователя gun_dose gun_dose 6 сентября 2023 в 17:03
1

Проще создать в корне проекта шелл файл или makefile, в котором будет записан весь процесс деплоя, чтобы просто запускать одну команду вместо нескольких. И там уже пофиг, насколько длинным будет путь к drush, один раз записал и запускай потом, например, командой make update.

Аватар пользователя VasyOK VasyOK 9 ноября 2023 в 16:50

Форумчане, у меня несколько иная проблема с Драшем вырисовалась.

при попытке его запуска пишет
-bash: ./vendor/bin/drush: Permission denied

Что делать?

Ubuntu+nginx

Аватар пользователя VasyOK VasyOK 9 ноября 2023 в 19:32

Вроде от рута
composer - работает
drush - нет

Как точно узнать: я реально там root или мне просто имя такое дали? Хотя nginx, mariadb и все остальное я ж установил под этим именем...

Аватар пользователя VasyOK VasyOK 10 ноября 2023 в 11:35

Спасибо, marassa ! Пнули в нужном направлении.

root@SERVER:/var/www/sitename.com# ls -l ./vendor/drush/drush/drush
-rw-r--r-- 1 www-data www-data 58 Sep 8 07:42 ./vendor/drush/drush/drush

Удалил композером Драш и поставил вновь - заработало.
root@SERVER:/var/www/sitename.com# ls -l ./vendor/drush/drush/drush
-rwxr-xr-x 1 root root 58 Oct 31 09:18 ./vendor/drush/drush/drush

А почему нельзя на сервере под Рутом сидеть если кроме меня ну 1 человек что-то знает?

Аватар пользователя gun_dose gun_dose 10 ноября 2023 в 11:51

Сидеть надо под тем юзером, от имени которого работает веб-сервер. Иначе если модули поставить под другим юзером, веб-сервер может не иметь доступа к файлам с кодом.

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

Аватар пользователя VasyOK VasyOK 10 ноября 2023 в 13:30

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

Аватар пользователя gun_dose gun_dose 10 ноября 2023 в 15:07
1

Это сейчас у тебя на сайте ничего нет. А если взломают, то появится. В лучшем случае майнер, в худшем начнут рассылать всякий спам или захостят на твоём сервере ещё кучу сайтов с чем-нибудь незаконным. Полный контроль над операционной системой означает, что они смогут всё, что угодно устанавливать или удалять, добавлять и изменять юзеров, менять доступы и т.д. Я имею в виду устанавливать не на сайт, а на сервер.

Вариантов взлома куча. Начиная от всяких друпалгедонов, заканчивая тем, что уведут твою почту, залогинятся на сайт под админом, поставят через админку что-нибудь вроде devel php и выполнят нужный код через функцию shell_exec.

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