【发布时间】:2019-09-11 01:14:41
【问题描述】:
我正在使用弹性 beanstalk 来部署我的 laravel 应用程序。除了我的图像之外,一切都运行良好,因为我需要创建一个带有存储的符号链接才能公开访问它。
附注在我的本地工作正常
我的 .ebextensions 文件如下 -
commands:
composer_update:
command: export COMPOSER_HOME=/root && /usr/bin/composer.phar self-update
option_settings:
- namespace: aws:elasticbeanstalk:application:environment
option_name: COMPOSER_HOME
value: /root
container_commands:
01-install_dependencies:
command: "php /usr/bin/composer.phar install"
cwd: "/var/app/ondeck"
02_storage_sym_link:
command: "php artisan storage:link"
cwd: "/var/app/ondeck"
leader_only: true
以下是我的 ec2 实例的日志,用于确认该命令运行正常且链接已成功创建。
[2019-04-21T15:47:16.899Z] INFO [21538] - [Application update symlink alt2@208/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_Synchro/Test for Command 02_storage_sym_link] : Starting activity...
[2019-04-21T15:47:16.903Z] INFO [21538] - [Application update symlink alt2@208/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_Synchro/Test for Command 02_storage_sym_link] : Completed activity. Result:
Completed successfully.
[2019-04-21T15:47:16.903Z] INFO [21538] - [Application update symlink alt2@208/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_Synchro/Command 02_storage_sym_link] : Starting activity...
[2019-04-21T15:47:17.014Z] INFO [21538] - [Application update symlink alt2@208/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_Synchro/Command 02_storage_sym_link] : Completed activity. Result:
The [public/storage] directory has been linked.
我得到的错误如下,这使得图像无法供公众访问。
Forbidden
You don't have permission to access /storage/blog/images/8Yhb4OZJQIKwlMGaGE803niTxyjfzNSVTj2BiPaP.gif on this server.
感谢任何帮助引导我走上正确道路的人。干杯!
编辑 1:
container_commands:
01-install_dependencies:
command: "php /usr/bin/composer.phar install"
cwd: "/var/app/ondeck"
02_storage_sym_link:
command: "ln -s storage/app/public public/storage"
cwd: "/var/app/ondeck"
03_give_ec2_user_perm_1:
command: "sudo chown -R ec2-user /var/app/current"
03_give_ec2_user_perm_2:
command: "sudo chmod -R 777 /var/app/current"
尝试手动创建符号链接并授予 ec2 用户权限。 但还是没有运气:(
【问题讨论】:
-
您是否要检索上传的图片?
-
是的,我是。我的最终目标是创建一个与存储文件夹的符号链接,以便我可以公开访问我视图中的这些图像。
-
检查我的答案,这可能会给你一些想法,我以前曾经遇到过,我通过参考文档解决了它,我也添加了链接。
-
@thebrownkid 在 beanstalk 中,您不能更好地使用 S3 来存储文件以及用于存储和图像支持的项目。
-
@PranavanSp 感谢您提出替代解决方法。它完成了工作! 我没有解决 beanstalk 上的 webapp 用户权限问题,而是使用 S3 进行存储。它完成了工作,所以我现在可以跳过符号链接问题。 仍然对我们如何解决与 beanstalk 上的符号链接权限相关的问题感到好奇。如果您对此有任何经验,请分享。
标签: laravel amazon-web-services laravel-5 amazon-ec2 amazon-elastic-beanstalk