2016-04-04 26 views
0

我試圖在AWS Elastic Beanstalk上部署Laravel 5.2應用程序。一切正常,除了SESSIONS。在將它部署到Beanstalk之前,我一直在EC2上開發應用程序,並且我沒有遇到任何會話問題。對於SESSION_DRIVER env選項,我試過數據庫,cookie和文件。他們都在EC2上工作,但他們都沒有在Elastic Beanstalk上工作。使用AWS Elastic的Laravel 5.2中的會話Elastic Beanstalk不支持SESSION_DRIVER作爲cookie,文件或數據庫

谷歌搜索和搜索很多後,我發現了關於粘滯會話。這是您需要在彈性beanstalk的負載平衡器上啓用的設置。這在彈性beanstalk的配置儀表板中可用。

所以,我啓用了粘滯會話,通過選擇這兩個選項,從下拉菜單中使用負載平衡器生成的會話和使用應用生成的會話選項。仍然會議不起作用。

我一直在尋找其他解決方案,但所有路線指向粘滯會話。

有其他人遇到過這個問題嗎?如果是這樣,你是如何解決它的?任何幫助將不勝感激。

+0

您可以闡明的一點是,您是否在EC2實例之上使用Elastic Load Balancer。 –

+0

@tedmiston不,我之前沒有使用Load Balancer。我相信這個問題存在於負載平衡器沒有保持會話狀態的情況下,EC2實例 – nikisfree

+0

我也這麼認爲。我沒有和Laravel一起工作,但是我遇到了Django會話和ELB類似的問題。你是否只嘗試使用應用生成的會話? IIRC粘性會議解決了我們的問題,但這是一段時間。也許使用shell中的'aws elb describe-load-balancers'可以幫助調試這個級別的問題。 http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-sticky-sessions.html#enable-sticky-sessions-application –

回答

1

在與AWS Support交談時,他們提出了以下工作解決方案。

  1. 在Web應用程序根目錄,創建一個文件夾,名爲.ebextensions
  2. 打開任何文本編輯器並粘貼以下政策

    Resources: 
    AWSEBLoadBalancer: 
    Type: AWS::ElasticLoadBalancing::LoadBalancer 
    Properties: 
        Listeners: 
        - InstancePort: 80 
         InstanceProtocol: HTTP 
         LoadBalancerPort: 80 
         PolicyNames: 
         - CookiePolicy 
         Protocol: HTTP 
        AppCookieStickinessPolicy: 
        - CookieName: laravel_session 
         PolicyName: CookiePolicy 
    
  3. 保存此文件中的.ebextensions您在步驟1中創建的文件夾。

  4. 將應用程序重新部署到您的beanstalk。會話現在應該可以工作