Linux deployer 发布代码,提示文件权限问题
背景
发布代码用的是 deployer 用户, id deployer 得到 uid=1001(deployer) gid=1001(deployer) groups=1001(deployer)
web程序用的是 www 用户, id www 得到 uid=1000(www) gid=1000(www) groups=1000(www)
deploye.php 配置文件,设置了 shared_dirs,并且包含 storage/framework/cache 与 storage/framework/sessions 目录
laravel 项目
问题
使用 deployer 发布代码,发布的时候一直报如下错误
The command "cd /var/www/hupun/releases/5 && (setfacl -L -R -m u:"www":rwX -m u:`whoami`:rwX storage/framework)" failed.
Exit Code: 1 (General error)
Host Name: 47.xx.xx.xx
================
setfacl: storage/framework/sessions/3Q2JPjObrrRGMMh3QUbuQereFpigjMIQ8gdPP9Pr: Operation not permitted
setfacl: storage/framework/cache/data/ee/2f/ee2f842aa7bb1f53edf3a2ed2c09a1807ffa6c90: Operation not permitted
分析
项目配置文件中,CACHE_DRIVER 与 SESSION_DRIVER 选项设置的值为 file,那么就会使用本地文件来保存会话与缓存。
web程序的执行是 www 用户,项目的发布是deployer 用户,他们归属不同的组。
错误文件,是 web 运行时产生的,归属于www用户www组。发布项目时,deployer 操作了不属于他的文件,提示权限不足,就引发了发布代码失败的结果
解决
方法一:这是最好的办法,修改 CACHE_DRIVER 与 SESSION_DRIVER 配置的值为 redis,前提是已经配置了 redis
方法二:删除提示权限错误的文件,然后就可以发布代码了。但是这里有一个问题,那就是页面中已经登入的用户,会掉线,甚至还有更多不可预知的问题
————————————————
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/8825.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~