2016-01-22 22 views
5

Ho problemi nell'impostare le autorizzazioni per una cartella Web su Elastic Beanstalk. Eseguo più contenitori utilizzando le immagini personalizzate della finestra mobile in un'istanza: apache-php, mysql, memcached, ecc. Per il contenitore "apache-php" mappo una cartella con la mia applicazione yii2 su/var/www/html /.Come impostare le autorizzazioni di cartella per un contenitore particolare su Elastic Beanstalk

Quando eseguo manualmente un bundle e faccio upload/deploy tramite la console Elastic Beanstalk ho sicuramente i permessi giusti per la cartella e tutto funziona correttamente.

Ora, quando distribuisco l'app utilizzando "eb deploy", vengono eliminate tutte le autorizzazioni e viene visualizzato un errore del server e "La directory non è scrivibile dal processo Web:/var/www/html/backend/web/attività "nei registri.

È possibile connettersi tramite ssh e impostare manualmente le autorizzazioni necessarie, ma sicuramente non è conveniente, poiché è necessario eseguire ogni volta che viene ridistribuita l'app.

Quindi, le mie domande è qual è il modo migliore per impostare automaticamente i permessi per una determinata cartella in un particolare contenitore su Elastic Beanstalk?

Forse, posso usare .ebextensions, ma non ho trovato come eseguire "container_commands" per un contenitore particolare.

risposta

9

AWS EB distribuzione inizia la tua applicazione in /var/app/ondeck

  1. Durante la distribuzione di pianta di fagioli elastica, la vostra applicazione viene prima decompresso in /var/app/ondeck/
    • Molto probabilmente, la vostra cartella locale di essere schierato non dispone delle autorizzazioni che si desidera su di essi.
  2. Se è necessario apportare modifiche all'app o alla shell, durante la distribuzione, .ebextensions/*.config è il posto giusto per farlo.

comandi container devono essere eseguiti a quel percorso

Ma tenere a mente, che questi comandi verrà eseguito ogni volta che si distribuisce, sia necessario o no, a meno che non si utilizza un metodo per testare per la pre-config.

container_commands: 
    08user_config: 
    test: test ! -f /opt/elasticbeanstalk/.preconfig-complete 
    command: | 
     echo "jail-me" > /home/ec2-user/.userfile 
    09writable_dirs: 
    command: | 
     chmod -R 770 /var/app/ondeck/backend/web/assets 
     chmod -R 770 /var/app/ondeck/[path] 
    99complete: 
    command: | 
     touch /opt/elasticbeanstalk/.preconfig-complete 

files: 
    "/etc/profile.d/myalias.sh": 
    mode: "000644" 
    owner: root 
    group: root 
    content: | 
     alias webroot='cd /var/www/html/backend/web; ls -al --color;' 
     echo " ========== " 
     echo " The whole point of Elastic Beanstalk is that you shouldn't need to SSH into the server. " 
     echo " ========== " 
+1

Hi @Tony, la prego di verificare come posso ottenere l'errore, mentre io sto cercando 'comandi: 03_attachment_directory_permission: comando: chmod 777/var/app/OnDeck/manellen/biglietteria/allegati /' e restituisce l'errore 'perché: (ElasticBeanstalk :: ExternalInvocationError)' nel file di registro – Manellen

+0

@Manellen, non si dovrebbero usare commenti per porre domande. Questa domanda [è già stata fatta e ha risposto] (https://stackoverflow.com/questions/40357270/running-a-script-from-ebextensions-folder-in-aws-elastic-beanstalk) e in genere è causata dal tentativo per accedere ai file su percorsi che non esistono ancora. I.E .: '/ home' non esiste ancora quando l'app è in fase di distribuzione. Il file creato in questa risposta '/ etc/profile.d/myalias.sh' non esiste. Tutto viene preparato in '/ var/app/ondeck'. –

-1

Sì, dovresti usare ebextensions.

Creare una cartella nella root di origine dell'app denominata .ebextensions. Creare un file con estensione .config, dire 01-folder-permissions.config. I file vengono elaborati in ordine lessicografico del loro nome.

Contenuto del file può essere:

container_commands: 
    change_permissions: 
     command: chmod 777 /var/www/some-folder 

Sostituire con la cartella e le autorizzazioni del caso. Leggi i comandi del contenitore here.

+0

'/ var/www' non esiste ancora quando vengono eseguiti i comandi contenitore. –

+6

chmod 777 è danneggiato. Mai 777. Da nessuna parte. È il jackpot dell'hacker. –