2013-06-10 12 views
7

AS titolo,
mio IDE è IntelliJ IDEA 12.1.4,
Che toolkit o plug-in ho bisogno di essere in grado di distribuire applicazione web clojure su Amazon EC2?Come distribuire un'applicazione web clojure per Amazon EC2 (AWS Elastic Beanstalk + Leiningen + Compojure + Ring + Tomcat)

Esistono collegamenti o riferimenti o soluzioni passo-passo? grazie

+2

Si potrebbe dare un'occhiata a [** Pallet **] (http://palletops.com/doc/first-steps/), supporta AWS EC2. * "Pallet è una piattaforma per l'automazione agile e programmatica dell'infrastruttura nel cloud, su rack di server o direttamente su macchine virtuali." * –

+0

Inoltre, è necessario consultare https://github.com/weavejester/lein-beanstalk. È un'ottima libreria che ti offre un processo di implementazione con un solo clic se utilizzi AWS Elastic Beanstalk. – hsestupin

risposta

13

Se si sta solo distribuendo un file di guerra senza altra infrastruttura personalizzata, utilizzare EC2 direttamente è eccessivo e il beanstalk elastico farà ciò che è necessario molto più facilmente. Se stai crescendo qualcosa di più grande e vuoi una distribuzione con un clic, il pallet è un ottimo strumento.

C'è molto in Pallet ed è un'ottima libreria per scrivere programmi incredibilmente piccoli per fare questo genere di cose (e molto altro ancora). Prenditi un po 'di tempo per capire i concetti di "nodo", "gruppo", "converge", ecc., E darti un sacco di pazienza. Una volta che vai con il pallet, ti sembra magico.

Il punto di partenza è con la guida introduttiva del pallet. passa attraverso l'esempio di Hello World che assicurerà che il tuo account aws sia impostato e che le chiavi siano dove devono essere. Quindi puoi leggere un po 'di codice del clojure che crea un'istanza con l'ultima versione della tua webapp su di esso.

Avrete bisogno di:

  • pallet 0.8 e superiori
  • pallet java cassa spec
  • un gruppo che installa java e copia il file sulla guerra.
  • il plugin per pallet lein è bello anche se non richiesto
  • molta pazienza per mettere le cose a posto.

un abbozzo di una specifica per questo gruppo sarebbe guardare un po 'come

(def java-server 
    (java/server-spec 
    {:vendor :oracle 
    :components #{:jdk} 
    :version [7]})) 

(def webserver 
(node-spec 
    :image {:os-family :ubuntu} 
    :hardware {:min-cores 1 :min-ram (* 2 1024)} 
    :phases {:configure 
      (plan-fn 
       (package-manager :update) 
       (package "tomcat7") 
      (remote-file "/var/lib/tomcat7/webapps/myapp.war" 
       :local-file "target/myApp.war" 
       :owner "tomcat7" 
       :group "tomcat7" 
       :mode 755)) 

(def web-group 
(group-spec 
    "my-websertvers" 
    webserver 
    :extends [java-server])) 

si sarebbe quindi chiamare converge con web-gruppo per creare o aggiornare i server.

e si prega di saltare su #pallet su freenode, dove le persone amichevoli (io stesso incluso tra ~ 10: 00 e ~ 18: 00 USA-ovest) sono desiderose di aiutare.

Problemi correlati