LINUX.ORG.RU

Поясните пожалуйста, как вы готовите PHP окружение для разработки?

 , ,


0

1

Немного не догоняю? Как вы готовите PHP окружение для разработки? Я допустим привык в python сделать так:

mkdir ~/Documents/Projects/<название проекта>
python3 -m venv ~/.local/share/venvs/<название окружения>
. ~/.local/share/venvs/<название окружения>/bin/activate

В PHP есть ли какие-нибудь более разумные телодвижения чтобы подготовить проект и при этом всё было изолировано от повышенных прав в системе? Я конечно искал другие способы, понял что некоторые используют vagrant в качестве рабочей мастерской. Vagrant не подошел, очень много придется качать, а у меня инет не такой быстрый. XAMPP тоже пробовал, но там нужно обязательно установить с повышенными правами в /opt/xampp. Или я че-то не понимаю как вообще в PHP людят кодят? Открываете проект в редакторе/ide с повышенными правами что ли, или чё то не догоняю? Обьясните пожалуйста?

Ты категорически не догоняешь, объяснять лень. В /opt/xampp ты ставишь xampp. Свой проект можешь складывать куда угодно, хоть в тот же ~/.local/share как ты делаешь с python. XAMPP не нужен, ставь и настраивай то, что тебе нужно (тогда и вопросы такие задавать не будешь). Нужен php — ставишь php, у него есть простой встроенный веб-сервер.

vyazovoi ★★ ()

Открываете проект в редакторе/ide с повышенными правами что ли

Что вы под этим подразумеваете и от чего пришли к выводу, что это может понадобится? Файлы проекта в домашнем каталоге, ide, всякий composer тоже от юзера. Ну и веб-сервер заранее нацеленный на каталог с проектами.

keir ()

Docker - вот пример https://github.com/ElisDN/demo-project-manager

Но вообще зависит от проекта конечно, у меня вот локально крутиться прокси traefik который все бекенды (php, db) и фронтенды (nginx, apache) всех проектов связывает и именует предоставляя удобный доступ, а где они лежат на файловой системе вообще не важно. Раньше так вообще был просто апач настроенный для работы из под обычного пользователя у добную директорию.

Открываете проект в редакторе/ide с повышенными правами что ли

а настроить вебсервер так как вам надо кто за вас будет?

Noob_Linux ★★★ ()

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

И Apache и PHP-FPM можно настроить так, чтобы сам php-код выполнялся с правами конкретного пользователя.

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

vinvlad ()

... правда, открывать php-файлы на чтение для всех - это не правильно с точки зрения безопасности, при деплое могут вылезти проблемы (там пароли могут лежать и прочие приватные данные). Правильнее просто себе группу поменять на ту же www-data.

vinvlad ()

я использую CentOS в VirtualBox. Проект хранится у меня в ~/projects/super_project, который подключается как Shared Folder в /var/www/html

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

r0ck3r ★★★★★ ()
Ответ на: комментарий от dimcoin

Я имел ввиду обычно php проекты размещаются в /var/www/public_html не? С sudo правами?

Не обязательно - где хотите, там и размещайте. Вы для начала определитесь, какой сервис у вас php-скрипты будет выполнять и с какими правами - настроечки посмотрите этого сервиса ). Никто же не запрещает вам открыть себе на запись директорию /var/www/public_html.

Вы вообще с линуксовыми правами доступа к файлам знакомы? Если нет, то почитайте...

vinvlad ()
Ответ на: комментарий от vinvlad

С правами да немного знаком

chmod 755 # и т.д.
chgroup
chown # и т.п.

Но обязательно нужно что что всё это делать? Почему нет такого простого способа изоляции как в питоне? Или в nodejs весь проект можно же хранить где угодно, допустим здесь

~/Documents/Projects/my-koajs-project/
    node_modules/
    ...
    client/
      // и т.д.
    server/
      // и т.д.

Никаких лишних телодвижений с правами в python и nodejs. И я думаю в ruby тоже также. Почему именно в php нужно всё это дело разруливать с правами?

dimcoin ()
Ответ на: комментарий от dimcoin

Почему именно в php нужно всё это дело разруливать с правами?

Потому что, когда вы программируете в nodejs или в питоне, вы веб-сервер у себя на компе «ручками» запускаете под своим логином. А php-шная среда запускается как сервис - при загрузке Linux, и естественно, с конкретной конфигураций, которую надо учитывать. Вы какие-то странные вопросы задаете - а задаете вы их просто потому, что не удосужились хотя бы мало мальски ознакомится с runtime-средой, в которой выполняется php-код. Если бы ознакомились, то и вопросов бы не было.

vinvlad ()
Ответ на: комментарий от dimcoin

На /var/www по умолчанию настроен дефолтный виртуальный хост apache и nginx (и то, не в любом дистрибутиве). Ещё раз, вам нужно разобраться с пользователями и группами, с php и веб-сервером. Докер это не ответ на ваши вопросы, тут до докера ещё рано.

vyazovoi ★★ ()

Я допустим привык в python сделать так:

В этом вашем питоне всё через жопу.

Обьясните пожалуйста?

Объясняю. Где угодно делаешь каталог с проектом. Запускаешь сервер php -S localhost:3000 index.php, ну или настраиваешь nginx чтобы подхватывал виртуальный хост из каталога проекта.

no-such-file ★★★★★ ()
Ответ на: комментарий от dimcoin

Почему именно в php нужно всё это дело разруливать с правами?

Не нужно, кто тебе такой лапши навешал?

обычно php проекты размещаются в /var/www/public_html не? С sudo правами?

Нет.

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

Объясняю. Где угодно делаешь каталог с проектом. Запускаешь сервер php -S localhost:3000 index.php, ...

Не путай TCa такими «советами». Твой встроенный php-сервер на хрен никому не нужен и нигде не используется - даже для разработки. По той простой причине, что на рабочем сервере все это крутится в другой runtime-среде - и именно в этой же среде нужно вести разработку.

vinvlad ()

Вы «прослушали» перепалку школоты, которых овер9000 в мире php. Что характерно, на лоре, где линукс во все поля, советуют виртуалки с вагрантом... И при этом никакого тебе fast-cgi :) хорошо, хоть, кто-то nginx/traefik юзает.

P.S. На мак оси поднятие php 7.2 с fast-cgi в одну команду.

menangen ★★★★★ ()
Ответ на: комментарий от menangen

Вы «прослушали» перепалку школоты, которых овер9000 в мире php...

Немного оффтоп, но... понимаешь, к разряду трепа «школоты» нужно относить тот трёп, который не имеет никакого отношения к открытой теме - это когда человек не вникая в суть темы отправляет пост не для того, чтобы сказать что-то полезное, а просто чтобы выпендриться, типа, «а я вот такое даже слово знаю» :)

... И при этом никакого тебе fast-cgi :) ... На мак оси поднятие php 7.2 с fast-cgi в одну команду

Так это и везде так - ничего особо сложного нет. Только не всем нужен конкретно fast-cgi вариант. Ну какой может быть fast-cgi на public-хостиге? Это только для VPS/VDS и контейнеров.

И не забывай, что кроме php-шного fast-cgi сервиса нужно еще и веб-сервер поднимать и настраивать, что точно не одной командой делается. Собственно, поэтому и популярен тот же vagrant - не надо заморачиваться с конкретными настройками, просто берешь уже настроенную виртуальную машину. Вот только даже в этом случае надо понимать-осознавать, какая тебе конкретно нужна виртуалка - Apache+mod_php или Nginx+php-fpm - и как там всё «крутится».

vinvlad ()

Сделай docker-compose.yml-файл, в котором опиши конфигурацию твоего проекта. Некоторые образы можешь прямо взять, как есть, с Dockerhub, что-то можешь собрать сам. Заходишь в директорию проекта, выполняешь sudo docker-compose up -d - и все, локально окружение развернулось.

С питоном, если на то пошло, обычно делают точно так же нередко вместо virtualenv.

dimuska139 ()

Не понял вопроса.
- обычно VirtualBox ставлю CentOS/Debian, а туда MySQL+Apache+PHP. Зато твори и устанавливай что хочешь. Полноценная изолированная система.
- создаю отдельный виртуальный хост с доменом .test / .localhost / .devel. Также по настроению. Что схавает браузер без танцев. Прописываю на локальной машине в /etc/hosts
- Обязательно ставлю параметр
SuexecUserGroup username groupname
чтобы сайт запускался с правами юзера, а не www-data
Права на директории сайта 750 и 640 на файлы
- подрубаюсь по SFTP от пользователя.
- накатываю на Framework/CMS которую нужно. Если есть вариант через composer - накатываю через него.
- допиливаю сервак до состояния, чтобы инсталятор не ругался.
- PROFIT! Кодим!

Что не так с безопасностью - не понимаю.
Тот же Laravel как правило DocumentRoot имеет SiteDir/public, а сайт лежит в диектории SiteDir. Итого при всём желании из браузера по прямому пути не доступна к примеру директория SiteDir/app или SiteDir/config

Пример простейшего конфига апача.

<VirtualHost *:8080>
    ServerName test.localhost
    ServerAlias www.test.localhost
    ServerAdmin admin@localhost
    AddDefaultCharset UTF-8
    SuexecUserGroup user user
    DocumentRoot "/var/www/test.localhost/public"
    <Directory /var/www/test.localhost>
        AllowOverride All
    </Directory>
</VirtualHost>

Ignatov ★★ ()
Ответ на: комментарий от dimuska139

Если умеешь и знаешь тонкости Docker - может и проще.
Мне проще и быстрее клонировать чистую уже установленную ОСь и доустановить нужный софт.

Да, полностью согласен, что полноценную виртуалку гонять накладнее по ресурсам, чем контейнер. Да и переносить контейнер проще.
Docker - вообще интересная вещь.

Ignatov ★★ ()
Последнее исправление: Ignatov (всего исправлений: 3)
Ответ на: комментарий от dimuska139

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

dimcoin ()