gpt4 book ai didi

PHP-FPM + Laravel + Nginx + Ubuntu 权限

转载 作者:可可西里 更新时间:2023-11-01 13:14:31 28 4
gpt4 key购买 nike

这个问题我之前也搜索过,但是好像没有什么地方讲的很透彻,大多只有app/storage之类的问题。权限没有设置所以webserver可以写文件,但我的问题似乎更大更根本,我希望有人能彻底解释这应该如何设置,最好不需要设置权限到777 .

所以我的堆栈是 Ubuntu 14.04 , PHP 5.6 PHP-FPM 因为我使用 nginx 1.4.6 我使用 Laravel 4.2 作为框架,现在还有一个我使用 Git 作为我的版本控制工具。那么什么是必要的逐步允许以下内容:

  • 设置初始项目,Git 和 Nginx:

    据我所知,Nginx 设置为使用用户名 www-data作为默认对吗?这是否意味着我必须分配我的用户,例如kevin到群www-data ?当我初始化git时,使用composer创建项目,设置SSH公钥/私钥,我是否需要属于组www-data或者我必须是sudo或者是什么?在我的生产服务器中,我尝试使用 sudo为了以某种方式设置所有内容,可以更轻松地完成上述所有操作,但这是最佳实践吗?
  • 制作 app/storage网络服务器可写:

    我认为这对 Laravel 来说是第二个也是最重要的,因为除非这有效,否则 Laravel 不会运行,我知道这个文件夹必须可由网络服务器(nginx)写入,所以我需要将其设置为 sudo chown -R www-data:www-data app/storagesudo chmod -R 664 app/storage对?但不知何故,这似乎并不总是有效,因为在我的开发过程中,有时它会告诉我无法将 View 缓存写入 app/storage文件夹,所以最后我必须将它设置为 777775如果我幸运的话。
  • 公共(public)文件夹,或我的 Assets 的位置

    这里我也有一些不一致的地方,我最后设置为777确保 可以访问我的所有文件nginx .有时 nginx 会告诉我 Assets 文件夹中的某些图像似乎被禁止,如果我设置为 777,它只会返回 HTTP 200。或将组更改为 www-data:www-data ,当我的平面设计师设计新图标时,我是否必须更改我从 Gimp、Photoshop 创建的每个图像的权限或组?
  • 文件上传

    所以在某个时候,人们将能够上传例如他们的个人资料图片,或者当我发布博客时我可以上传图片,这意味着在某个时候文件上传脚本会将文件从 /tmp 移动。文件夹到我的 public文件夹,它可能只需要写入 public 中的子目录中或者有时它需要基于某个 id 创建一个文件夹并将文件移动到目录中,大多数时候我会收到一个错误,即该目录似乎不可写或在执行脚本期间出现一些权限错误。这是否意味着 PHP进程也必须获得一定的许可才能运行?还是说目录必须要有一定的权限?这个问题是否与有关? Nginx 服务 或者它与有关吗? PHP进程 ?

    我有使用 roumen/sitemap 等包的经验或 jlapp/swaggervel ,他们似乎使用相同的 Facade File ,但不知何故他们没有任何许可问题,我尝试复制他们的代码行为,但我遇到了上面的问题。
  • 队列、工匠、其他基于命令行的执行脚本

    最后,是基于命令行的执行脚本,这是否与通过与网络服务器交互执行的脚本相同,例如上面的文件上传,还是我需要为其他不一致做准备?

  • 谢谢,如果有人可以向我解释这一点。我想如果我弄明白了,我会写一篇博文什么的,谢谢你们! :D

    最佳答案

  • 我通常做的是将所有文件/文件夹组更改为 www-data 使用 sudo chgrp -R www-data laravel-folder .这样我仍然是所有者并且网络服务器具有组权限。
  • 当 www-data 拥有组所有权时,sudo chmod -R g+w app/storage允许网络服务器写入存储子文件夹。或者你可以做 sudo chmod -R 775 app/storage .不要用777,没必要让每个人都写你的文件夹。
  • 对于所有新 Assets ,我总是集体更改组所有权。或者,如果很多地方有新文件,再做一次sudo chgrp -R www-data laravel-folder .一个命令,一切都有适当的组所有权。public的默认权限无需更改文件夹 (755)。 Nginx 不会在那里保存文件。
  • 用户发送的所有文件应位于storage .您可以为头像创建一个子文件夹,为其他用户文件创建另一个子文件夹。这就是为什么这个文件夹被称为 storage (不言自明)。它可由网络服务器写入,因此 nginx 可以在那里创建文件/文件夹。
  • 当您像我上面描述的那样调整权限/组所有权时,artisan 或 CLI 命令应该没有问题。

  • 我建议你阅读这个 How to Install Laravel with an Nginx Web Server on Ubuntu 14.04文章。

    关于PHP-FPM + Laravel + Nginx + Ubuntu 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28392045/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com