Разрешение PHP-FPM + Laravel + Nginx + Ubuntu

Я пытался найти этот вопрос раньше, но, похоже, нигде не было подробного объяснения, в основном только такие проблемы, как app/storage разрешение не было установлено, поэтому веб-сервер может записывать файл, но моя проблема кажется более масштабной и фундаментальной, я надеюсь, что кто-то сможет подробно объяснить, как это следует настроить, желательно без необходимости устанавливать разрешение 777,

Так что мой стек Убунту 14.04, PHP 5.6 с PHP-FPM потому что я использую nginx 1.4.6 и я использую Ларавел 4.2 в качестве рамки, ау и еще один использую Гит как мой инструмент управления версиями. Итак, что необходимо сделать шаг за шагом, чтобы сделать следующее:

  1. Установка начального проекта, Git и Nginx:

    Насколько я знаю, Nginx настроен на использование имени пользователя www-data по умолчанию верно? Означает ли это, что я должен назначить своего пользователя, например, kevin в группу www-data? Когда я инициализирую git, создаю проект с помощью composer, настраиваю открытый / закрытый ключ SSH, нужно ли мне принадлежать к группе www-data или я должен быть sudo или что? На моем рабочем сервере я попытался использовать sudo для того, чтобы все как-то настроить, было бы проще сделать все вышеперечисленное, но лучше ли это?

  2. Изготовление app/storage Доступно для записи для веб-сервера:

    Я думаю, что это второй и самый важный для Laravel, потому что, если это не сработает, Laravel не будет работать, я знаю, что эта папка должна быть доступна для записи веб-сервером (nginx), поэтому мне нужно установить это sudo chown -R www-data:www-data app/storage а также sudo chmod -R 664 app/storage право? Но почему-то это, кажется, не работает постоянно, потому что во время моей разработки иногда это говорит о том, что кэш представления не может быть записан в app/storage папка, поэтому в конце я должен установить его 777 или же 775 если мне повезет

  3. Общая папка или место моих активов

    Здесь у меня тоже есть некоторое несоответствие, я настроил его в конце 777 чтобы обеспечить доступ ко всем моим файлам Nginx. Иногда Nginx скажет мне, что какое-то изображение в моей папке активов, кажется, запрещено, и он вернет HTTP 200, только если я либо установил в 777 или измените группу на www-data:www-dataНужно ли менять разрешение или группу для каждого изображения, которое я создал из Gimp, Photoshop, или когда я загружал из Dropbox или из своего электронного письма, когда мой графический дизайнер разрабатывает новые иконки?

  4. Файл загружен

    Таким образом, где-то в какое-то время люди смогут загружать, например, свое изображение профиля, или когда я публикую блог, я могу загрузить изображение, это означает, что в какой-то момент скрипт загрузки файла переместит файл из /tmp папка в мой public может потребоваться только запись в подкаталог public или, может быть, иногда нужно создать папку на основе определенного id и переместить файл в каталог, в большинстве случаев я получаю сообщение об ошибке, что каталог кажется недоступным для записи, или некоторая ошибка разрешения как таковая во время выполнения сценария. Значит ли это, что Процесс PHP должен быть запущен с определенным разрешением тоже? Или это означает, что каталог должен иметь определенное разрешение? Связана ли эта проблема с Сервис Nginx или это относится к Процесс PHP?

    У меня есть опыт использования таких пакетов, как roumen/sitemap или же jlapp/swaggervelкажется, они используют один и тот же фасад File, но почему-то у них нет проблем с разрешением, я пытаюсь повторить поведение их кода, но столкнулся с проблемой, описанной выше.

  5. Очередь, Artisan, другой исполняемый скрипт на основе командной строки

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

Спасибо, если кто-то может мне это объяснить. Я думаю, что если я это выясню, я создам запись в блоге или что-то в этом роде, оцените это, ребята! : D

6

Решение

  1. Обычно я меняю все файлы и папки на www-data с помощью sudo chgrp -R www-data laravel-folder, Таким образом, я все еще владелец, и у веб-сервера есть групповые разрешения.

  2. Когда www-данные имеют групповое владение, sudo chmod -R g+w app/storage позволяет веб-серверу записывать в подпапку хранилища. Или в качестве альтернативы вы можете сделать sudo chmod -R 775 app/storage, Не используйте 777, нет необходимости разрешать всем писать в ваши папки.

  3. Для всех новых активов я всегда коллективно меняю групповую собственность. Или, если есть новые файлы во многих местах, просто снова сделайте sudo chgrp -R www-data laravel-folder, Одна команда и все имеет правильную групповую собственность.
    Нет необходимости изменять разрешения по умолчанию для public папка (755). Nginx не будет сохранять файлы там.

  4. Все файлы, отправленные пользователями, должны находиться в storage, Вы можете создать подпапку для аватаров, другую для других пользовательских файлов. Вот почему эта папка называется storage (Само за себя). Он может быть записан веб-сервером, поэтому nginx может создавать там файлы / папки.

  5. Когда вы настраиваете права доступа / владение группой, как я описал выше, не должно быть проблем с командами ремесленника или CLI.

Я предлагаю вам прочитать это Как установить Laravel с веб-сервером Nginx в Ubuntu 14.04 статья.

10

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

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

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