Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 部署后运行Elastic Beanstalk命令_Symfony_Amazon Web Services_Command_Amazon Elastic Beanstalk - Fatal编程技术网

Symfony 部署后运行Elastic Beanstalk命令

Symfony 部署后运行Elastic Beanstalk命令,symfony,amazon-web-services,command,amazon-elastic-beanstalk,Symfony,Amazon Web Services,Command,Amazon Elastic Beanstalk,我在AWS上部署Symfony应用程序。我用弹性豆茎。 在部署过程之后,我想运行一些symfony命令:清除缓存、更新数据库 所以我创建了.ebextention,里面有.config commands: 01updateComposer: command: export COMPOSER_HOME=/root && /usr/bin/composer.phar self-update 1.0.0-alpha11 cache: command: sudo

我在AWS上部署Symfony应用程序。我用弹性豆茎。 在部署过程之后,我想运行一些symfony命令:清除缓存、更新数据库

所以我创建了.ebextention,里面有.config

commands:
  01updateComposer:
    command: export COMPOSER_HOME=/root && /usr/bin/composer.phar self-update 1.0.0-alpha11
  cache:
    command: sudo php /var/www/html/bin/console cahce:clear --env=prod

option_settings:
  - namespace: aws:elasticbeanstalk:application:environment
    option_name: COMPOSER_HOME
    value: /root
但我的
cache
命令不起作用,或者它在错误的时刻起作用

有人能帮我吗

更新: 实际上我更新了配置文件。 现在我在/tmp中看到end.txt、collect.txt、dump.txt。他们很好。 但我没有在现场修改。例如,没有资产负债表。看起来命令在错误的时刻运行

commands:
  01updateComposer:
    command: export COMPOSER_HOME=/root && /usr/bin/composer.phar self-update 1.0.0-alpha11
  collect:
    command: sudo php /var/www/html/bin/console collect --nb=1 --env=prod >> /tmp/collect.txt
  assetic:
    command: sudo php /var/www/html/bin/console assets:install --symlink --env=prod >> /tmp/dump.txt
  dump:
    command: sudo php /var/www/html/bin/console assetic:dump --env=prod >> /tmp/dump.txt
  end:
    command: touch /tmp/end.txt

option_settings:
  - namespace: aws:elasticbeanstalk:application:environment
    option_name: COMPOSER_HOME
    value: /root
我还使用了container_命令代替命令。这确实帮助了我


p.s.我只有一个EC2实例。所以这不能是wront实例。

我在日志记录方面也有类似的问题,我认为您需要将其放在container_commands部分,而不是commands部分

container_commands:
  01updateComposer:
    command: export COMPOSER_HOME=/root && /usr/bin/composer.phar self-update 1.0.0-alpha11
  02collect:
    command: sudo php /var/www/html/bin/console collect --nb=1 --env=prod >> /tmp/collect.txt
  03assetic:
    command: sudo php /var/www/html/bin/console assets:install --symlink --env=prod >> /tmp/dump.txt
  04dump:
    command: sudo php /var/www/html/bin/console assetic:dump --env=prod >> /tmp/dump.txt
  05end:
    command: touch /tmp/end.txt

option_settings:
  - namespace: aws:elasticbeanstalk:application:environment
    option_name: COMPOSER_HOME
    value: /root

您可以查看有关我的问题和解决方案的更多详细信息。

如果查看
/var/log/eb activity.log
文件,您将看到所有操作的执行顺序。特别是,您将在部署中看到整个项目被移动到文件夹中的一刻:

[2021-03-05T19:24:43.872Z] INFO  [17486] - [Application update app-1ee2-210305_192347@12/AppDeployStage1/AppDeployEnactHook/01_flip.sh] : Completed activity. Result:
  ++ /opt/elasticbeanstalk/bin/get-config container -k app_staging_dir
  + EB_APP_STAGING_DIR=/var/app/ondeck
  ++ /opt/elasticbeanstalk/bin/get-config container -k app_deploy_dir
  + EB_APP_DEPLOY_DIR=/var/app/current
  + '[' -d /var/app/current ']'
  + mv /var/app/current /var/app/current.old
  + mv /var/app/ondeck /var/app/current
  + nohup rm -rf /var/app/current.old
某些命令(如
php-artisan-view:cache
)需要在项目移动后运行,否则它们将无法正常工作

为此,您可以使用(注意:仅适用于Amazon Linux,而不是新的基于nginx的Amazon Linux 2)

在以后的
.config
文件中,您只需添加如下内容:

files:
   "/opt/elasticbeanstalk/hooks/appdeploy/post/99_z_post_deploy.sh":
      mode: "000755"
      owner: root
      group: root
      content: |
        #!/usr/bin/env bash
        echo "Running post.sh script"
        # Turn on maintenance mode
        #php /var/app/current/artisan down || true

        # Run database migrations
        php /var/app/current/artisan migrate --force
这将在“appdeploy”阶段的“post”阶段执行
“/opt/elasticbeanstalk/hooks/appdeploy/post/99_z_post_deploy.sh”
行下的任何命令。99_uu将把它带到最后(一切按字母顺序执行)

同样,您可以在
eb activity.log
文件中查看它的执行位置。上面的示例将执行shell脚本“post.sh”

对于AmazonLinux2,您需要使用


这一切都有点晚了,但希望能有所帮助。这也是我在写这个答案时发现的一个不错的指南:。这可能会有进一步的帮助。

share logs@KushVyas我更新了我的问题。实际上,日志是可以的。我甚至将一些命令保存在/tmp/*.txt文件中。这些命令是按字母顺序执行的,因此上面的命令将以错误的方式执行。请看上面的ahhh@Tom,也许这会对我有所帮助。我将在一个小时内尝试,谢谢你。不,这没有帮助,我认为默认情况下,symfony的elastic beanstalk会在部署结束时启动clear cache。我找不到任何解决办法。也许我会回到这个问题,当我在AWS技术上变得更强一点的时候。