FAQ
I want to deploy a small web app - serving mostly static content. I'm using
Luminus (http://www.luminusweb.net/) - which is quite neat in the way it
builds itself from well-known components.

I'm having trouble deciding how to deploy it. I want some automation while
deploying upgrades, and would like it to be light-weight. Jetty, http-kit,
or immutant?
(I tried immutant - but it seems to be taking up too much memory for my
comfort, on my modest server.)

Jetty and http-kit - I would like to hear about how I can deploy them as
nice system daemons, with monitoring etc. so that they can be brought up
automatically if something goes wrong. I'm also unable to find out how I
can do a re-deploy without restarting.

Any help or pointers appreciated!

Thanks,
jaju

--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Search Discussions

  • Ravindra Jaju at Jun 29, 2013 at 2:51 pm
    Oops - I meant to sent this to our local clojure group.

    But thankfully, it still went to a relevant group rather than a completely
    wrong one!

    On Sat, Jun 29, 2013 at 8:17 PM, Ravindra Jaju wrote:

    I want to deploy a small web app - serving mostly static content. I'm
    using Luminus (http://www.luminusweb.net/) - which is quite neat in the
    way it builds itself from well-known components.

    I'm having trouble deciding how to deploy it. I want some automation while
    deploying upgrades, and would like it to be light-weight. Jetty, http-kit,
    or immutant?
    (I tried immutant - but it seems to be taking up too much memory for my
    comfort, on my modest server.)

    Jetty and http-kit - I would like to hear about how I can deploy them as
    nice system daemons, with monitoring etc. so that they can be brought up
    automatically if something goes wrong. I'm also unable to find out how I
    can do a re-deploy without restarting.

    Any help or pointers appreciated!

    Thanks,
    jaju
    --
    --
    You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clojure@googlegroups.com
    Note that posts from new members are moderated - please be patient with your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscribe@googlegroups.com
    For more options, visit this group at
    http://groups.google.com/group/clojure?hl=en
    ---
    You received this message because you are subscribed to the Google Groups "Clojure" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Daniel Pittman at Jun 29, 2013 at 3:41 pm

    On Sat, Jun 29, 2013 at 7:47 AM, Ravindra Jaju wrote:
    I want to deploy a small web app - serving mostly static content. I'm using
    Luminus (http://www.luminusweb.net/) - which is quite neat in the way it
    builds itself from well-known components.

    I'm having trouble deciding how to deploy it. I want some automation while
    deploying upgrades, and would like it to be light-weight. Jetty, http-kit,
    or immutant?
    (I tried immutant - but it seems to be taking up too much memory for my
    comfort, on my modest server.)

    Jetty and http-kit - I would like to hear about how I can deploy them as
    nice system daemons, with monitoring etc. so that they can be brought up
    automatically if something goes wrong. I'm also unable to find out how I can
    do a re-deploy without restarting.
    If you are looking for advanced features like hot redeploy, you
    probably want to consider if you really are after a "small" solution
    or not -- if you can't tolerate that small downtime, are you sure you
    won't need the clustering, XA transaction capabilities, and other
    advanced features that a toolkit like immutant brings to the table
    soon?

    Regardless, you could use the `ring.reload` middleware in production,
    or bring your own solution to the table for code reloading and use a
    var as your ring handler to allow dynamic change. (eg: in cgrand's
    moustache, `(app #'my-handler-function)` allows redefining the handler
    fn at runtime, transparently.)

    Given either of those solutions you can then use jetty, netty,
    http-kit, or anything else. Personally, though, if you really want
    automated deployment and zero-downtime upgrades, I would totally look
    to a full blown - and heavy - stack. :)

    --
    Daniel Pittman
    ♲ Made with 100 percent post-consumer electrons

    --
    --
    You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clojure@googlegroups.com
    Note that posts from new members are moderated - please be patient with your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscribe@googlegroups.com
    For more options, visit this group at
    http://groups.google.com/group/clojure?hl=en
    ---
    You received this message because you are subscribed to the Google Groups "Clojure" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.
  • James Reeves at Jun 29, 2013 at 5:07 pm
    If you just want to deploy your application, and don't particularly care
    about having control over your system architecture, you might want to
    consider a platform like Heroku.

    Otherwise, a common solution, and one I'd personally recommend, is to have
    a standalone app executed via Upstart, running behind an nginx proxy.

    Upstart allows you to run a process as a daemon, and it can do useful
    things like automatically restart a process if it unexpectedly terminates.
    Upstart is by no means the only program that does this, but it's the one
    Ubuntu uses and is therefore stable and well-tested.

    A HTTP proxy server like nginx is useful for buffering against restarts and
    application failures. You can configure nginx to buffer a request while
    your server restarts, or to distribute request over a cluster of processes,
    or to cache static content.

    You could create the standalone app manually, with a -main function that
    calls run-jetty, or use the lein-ring plugin and the "lein ring uberjar"
    command to do it for you.

    - James

    On 29 June 2013 15:47, Ravindra Jaju wrote:

    I want to deploy a small web app - serving mostly static content. I'm
    using Luminus (http://www.luminusweb.net/) - which is quite neat in the
    way it builds itself from well-known components.

    I'm having trouble deciding how to deploy it. I want some automation while
    deploying upgrades, and would like it to be light-weight. Jetty, http-kit,
    or immutant?
    (I tried immutant - but it seems to be taking up too much memory for my
    comfort, on my modest server.)

    Jetty and http-kit - I would like to hear about how I can deploy them as
    nice system daemons, with monitoring etc. so that they can be brought up
    automatically if something goes wrong. I'm also unable to find out how I
    can do a re-deploy without restarting.

    Any help or pointers appreciated!

    Thanks,
    jaju

    --
    --
    You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clojure@googlegroups.com
    Note that posts from new members are moderated - please be patient with
    your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscribe@googlegroups.com
    For more options, visit this group at
    http://groups.google.com/group/clojure?hl=en
    ---
    You received this message because you are subscribed to the Google Groups
    "Clojure" group.
    To unsubscribe from this group and stop receiving emails from it, send an
    email to clojure+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.

    --
    --
    You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clojure@googlegroups.com
    Note that posts from new members are moderated - please be patient with your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscribe@googlegroups.com
    For more options, visit this group at
    http://groups.google.com/group/clojure?hl=en
    ---
    You received this message because you are subscribed to the Google Groups "Clojure" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Ravindra Jaju at Jun 29, 2013 at 5:59 pm
    Thank you Daniel and James. I appreciate the detailed response and advice.

    I'll make myself more clear and specify what I have in mind. I don't want
    hot-deploys, for sure. :) I erred when I mentioned "without restarting" -
    that certainly changes quite a few things!

    Here's what I have in mind for my app as well as the deployment design. Its
    main goals are primarily to (1) Get more familiar with clojure dev since I
    enjoy it, (2) host my personal blog (mostly markdown, processed at runtime
    or pre-preprocessed), and (3) some dynamic content.
    nginx | --------> | static content - markdown, possibly preprocessed -
    with markdown-clj | ------> | clojure app for some dynamic content |

    I've only started using luminus, and it serves markdown by processing it at
    runtime, which makes my content serving dependent on the app-server. I have
    the option of pre-processing markdown and serving it completely statically
    with nginx. Until then, I'm okay right now using the app to serve it.

    It is at this point where I need advice. I currently only know of running
    the clojure app via "lein ring server" (or equivalent) from the
    command-line - no scripts which can run it like those init scripts with
    start/stop/reload support. nginx runs fine as a daemon, but I need to
    figure out the java side.

    1] Upstart is good - so, I will need to figure out the equivalent on Fedora
    (which is what I use - primarily because I'm too familiar with it and have
    been an RH/Fedora guy since about ~1995). Essentially, a daemon monitor
    which will restart in case of failures. I've been somewhat rusty with the
    recent releases of all Linux-es from the systems admin point of view.
    2] Is there a suggested way to manage the java process - especially
    starting and stopping? I'm okay with a few seconds of downtime, and I can
    write scripts to do this myself, but don't want to reinvent the wheel if
    there are already some tools/scripts/practices which make it
    straightforward. I'm especially looking for current practices with folks
    who use clojure with jetty/http-kit like servers, and not jboss et al. :)

    Best regards,
    jaju


    On Sat, Jun 29, 2013 at 10:36 PM, James Reeves wrote:

    If you just want to deploy your application, and don't particularly care
    about having control over your system architecture, you might want to
    consider a platform like Heroku.

    Otherwise, a common solution, and one I'd personally recommend, is to have
    a standalone app executed via Upstart, running behind an nginx proxy.

    Upstart allows you to run a process as a daemon, and it can do useful
    things like automatically restart a process if it unexpectedly terminates.
    Upstart is by no means the only program that does this, but it's the one
    Ubuntu uses and is therefore stable and well-tested.

    A HTTP proxy server like nginx is useful for buffering against restarts
    and application failures. You can configure nginx to buffer a request while
    your server restarts, or to distribute request over a cluster of processes,
    or to cache static content.

    You could create the standalone app manually, with a -main function that
    calls run-jetty, or use the lein-ring plugin and the "lein ring uberjar"
    command to do it for you.

    - James

    On 29 June 2013 15:47, Ravindra Jaju wrote:

    I want to deploy a small web app - serving mostly static content. I'm
    using Luminus (http://www.luminusweb.net/) - which is quite neat in the
    way it builds itself from well-known components.

    I'm having trouble deciding how to deploy it. I want some automation
    while deploying upgrades, and would like it to be light-weight. Jetty,
    http-kit, or immutant?
    (I tried immutant - but it seems to be taking up too much memory for my
    comfort, on my modest server.)

    Jetty and http-kit - I would like to hear about how I can deploy them as
    nice system daemons, with monitoring etc. so that they can be brought up
    automatically if something goes wrong. I'm also unable to find out how I
    can do a re-deploy without restarting.

    Any help or pointers appreciated!

    Thanks,
    jaju

    --
    --
    You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clojure@googlegroups.com
    Note that posts from new members are moderated - please be patient with
    your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscribe@googlegroups.com
    For more options, visit this group at
    http://groups.google.com/group/clojure?hl=en
    ---
    You received this message because you are subscribed to the Google Groups
    "Clojure" group.
    To unsubscribe from this group and stop receiving emails from it, send an
    email to clojure+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.

    --
    --
    You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clojure@googlegroups.com
    Note that posts from new members are moderated - please be patient with
    your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscribe@googlegroups.com
    For more options, visit this group at
    http://groups.google.com/group/clojure?hl=en
    ---
    You received this message because you are subscribed to the Google Groups
    "Clojure" group.
    To unsubscribe from this group and stop receiving emails from it, send an
    email to clojure+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.

    --
    --
    You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clojure@googlegroups.com
    Note that posts from new members are moderated - please be patient with your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscribe@googlegroups.com
    For more options, visit this group at
    http://groups.google.com/group/clojure?hl=en
    ---
    You received this message because you are subscribed to the Google Groups "Clojure" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.
  • James Reeves at Jun 29, 2013 at 8:31 pm

    On 29 June 2013 18:59, Ravindra Jaju wrote:

    1] Upstart is good - so, I will need to figure out the equivalent on
    Fedora (which is what I use - primarily because I'm too familiar with it
    and have been an RH/Fedora guy since about ~1995). Essentially, a daemon
    monitor which will restart in case of failures. I've been somewhat rusty
    with the recent releases of all Linux-es from the systems admin point of
    view.
    Since Fedora 9, Upstart has been the default on that as well, so you're in
    luck :)

    2] Is there a suggested way to manage the java process - especially
    starting and stopping? I'm okay with a few seconds of downtime, and I can
    write scripts to do this myself, but don't want to reinvent the wheel if
    there are already some tools/scripts/practices which make it
    straightforward. I'm especially looking for current practices with folks
    who use clojure with jetty/http-kit like servers, and not jboss et al. :)
    Upstart will handle the starting and stopping. It'll just run a script to
    start, and terminate the process to stop. You can avoid any downtime by
    configuring nginx buffer requests; if your application is unavailable,
    nginx will keep retrying until a timeout. From your user's point of view,
    one request will take a few seconds longer, but there won't be any
    downtime. And if you have more than one application process, you can
    restart the processes one at a time, and avoid any sort of delay.

    If you're interested, I could be persuaded to write a blog post on it. :)

    - James

    --
    --
    You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clojure@googlegroups.com
    Note that posts from new members are moderated - please be patient with your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscribe@googlegroups.com
    For more options, visit this group at
    http://groups.google.com/group/clojure?hl=en
    ---
    You received this message because you are subscribed to the Google Groups "Clojure" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Maciej Mazur at Jun 29, 2013 at 11:15 pm

    On Sat, 29 Jun 2013 21:31:22 +0100, James Reeves wrote:
    On 29 June 2013 18:59, Ravindra Jaju wrote:

    1] Upstart is good - so, I will need to figure out the equivalent on
    Fedora (which is what I use - primarily because I'm too familiar with
    it and have been an RH/Fedora guy since about ~1995). Essentially, a
    daemon monitor which will restart in case of failures. I've been
    somewhat rusty with the recent releases of all Linux-es from the
    systems admin point of view.
    Since Fedora 9, Upstart has been the default on that as well, so you're
    in luck :)
    Actually Upstart has been replaced by systemd since Fedora 15

    Maciej Mazur
  • James Reeves at Jun 29, 2013 at 11:43 pm

    On 30 June 2013 00:12, Maciej Mazur wrote:
    On Sat, 29 Jun 2013 21:31:22 +0100, James Reeves wrote:

    Since Fedora 9, Upstart has been the default on that as well, so you're
    in luck :)
    Actually Upstart has been replaced by systemd since Fedora 15
    Oops! Sorry for the misinformation. I'm clearly not up to date with Fedora.

    - James

    --
    --
    You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clojure@googlegroups.com
    Note that posts from new members are moderated - please be patient with your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscribe@googlegroups.com
    For more options, visit this group at
    http://groups.google.com/group/clojure?hl=en
    ---
    You received this message because you are subscribed to the Google Groups "Clojure" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Nick Gonzalez at Jun 30, 2013 at 12:44 am
    I'm a big fan of http-kit. Lightweight, easy to use, and responsive.

    --
    --
    You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clojure@googlegroups.com
    Note that posts from new members are moderated - please be patient with your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscribe@googlegroups.com
    For more options, visit this group at
    http://groups.google.com/group/clojure?hl=en
    ---
    You received this message because you are subscribed to the Google Groups "Clojure" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Philip Potter at Jun 30, 2013 at 7:24 am
    I think systemd will also handle process monitoring. You could also use
    runit, which runs in user space so you can use it on any distro.
    On Jun 30, 2013 12:15 AM, "Maciej Mazur" wrote:
    On Sat, 29 Jun 2013 21:31:22 +0100, James Reeves wrote:
    On 29 June 2013 18:59, Ravindra Jaju wrote:

    1] Upstart is good - so, I will need to figure out the equivalent on
    Fedora (which is what I use - primarily because I'm too familiar with
    it and have been an RH/Fedora guy since about ~1995). Essentially, a
    daemon monitor which will restart in case of failures. I've been
    somewhat rusty with the recent releases of all Linux-es from the
    systems admin point of view.
    Since Fedora 9, Upstart has been the default on that as well, so you're
    in luck :)
    Actually Upstart has been replaced by systemd since Fedora 15

    Maciej Mazur
    --
    --
    You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clojure@googlegroups.com
    Note that posts from new members are moderated - please be patient with your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscribe@googlegroups.com
    For more options, visit this group at
    http://groups.google.com/group/clojure?hl=en
    ---
    You received this message because you are subscribed to the Google Groups "Clojure" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Philip Potter at Jun 30, 2013 at 7:33 am
    The app server and process monitoring questions have been covered
    elsethread. There hasn't been much talk about the static content.

    I'd say there are two main strategies available here:

    a. set appropriate caching headers on your static pages & use a caching
    proxy such as varnish
    b. precompile your assets and serve them straight from disk using nginx's
    try_files directive

    Option a is probably easier to get going with, and for a personal blog
    probably good enough. For option b, I'd use sprockets if I were in the ruby
    world, but I'm not sure what clojure libraries are in this space.

    Phil
    On Jun 29, 2013 6:59 PM, "Ravindra Jaju" wrote:

    Thank you Daniel and James. I appreciate the detailed response and advice.

    I'll make myself more clear and specify what I have in mind. I don't want
    hot-deploys, for sure. :) I erred when I mentioned "without restarting" -
    that certainly changes quite a few things!

    Here's what I have in mind for my app as well as the deployment design.
    Its main goals are primarily to (1) Get more familiar with clojure dev
    since I enjoy it, (2) host my personal blog (mostly markdown, processed at
    runtime or pre-preprocessed), and (3) some dynamic content.
    nginx | --------> | static content - markdown, possibly preprocessed -
    with markdown-clj | ------> | clojure app for some dynamic content |

    I've only started using luminus, and it serves markdown by processing it
    at runtime, which makes my content serving dependent on the app-server. I
    have the option of pre-processing markdown and serving it completely
    statically with nginx. Until then, I'm okay right now using the app to
    serve it.

    It is at this point where I need advice. I currently only know of running
    the clojure app via "lein ring server" (or equivalent) from the
    command-line - no scripts which can run it like those init scripts with
    start/stop/reload support. nginx runs fine as a daemon, but I need to
    figure out the java side.

    1] Upstart is good - so, I will need to figure out the equivalent on
    Fedora (which is what I use - primarily because I'm too familiar with it
    and have been an RH/Fedora guy since about ~1995). Essentially, a daemon
    monitor which will restart in case of failures. I've been somewhat rusty
    with the recent releases of all Linux-es from the systems admin point of
    view.
    2] Is there a suggested way to manage the java process - especially
    starting and stopping? I'm okay with a few seconds of downtime, and I can
    write scripts to do this myself, but don't want to reinvent the wheel if
    there are already some tools/scripts/practices which make it
    straightforward. I'm especially looking for current practices with folks
    who use clojure with jetty/http-kit like servers, and not jboss et al. :)

    Best regards,
    jaju


    On Sat, Jun 29, 2013 at 10:36 PM, James Reeves wrote:

    If you just want to deploy your application, and don't particularly care
    about having control over your system architecture, you might want to
    consider a platform like Heroku.

    Otherwise, a common solution, and one I'd personally recommend, is to
    have a standalone app executed via Upstart, running behind an nginx proxy.

    Upstart allows you to run a process as a daemon, and it can do useful
    things like automatically restart a process if it unexpectedly terminates.
    Upstart is by no means the only program that does this, but it's the one
    Ubuntu uses and is therefore stable and well-tested.

    A HTTP proxy server like nginx is useful for buffering against restarts
    and application failures. You can configure nginx to buffer a request while
    your server restarts, or to distribute request over a cluster of processes,
    or to cache static content.

    You could create the standalone app manually, with a -main function that
    calls run-jetty, or use the lein-ring plugin and the "lein ring uberjar"
    command to do it for you.

    - James

    On 29 June 2013 15:47, Ravindra Jaju wrote:

    I want to deploy a small web app - serving mostly static content. I'm
    using Luminus (http://www.luminusweb.net/) - which is quite neat in the
    way it builds itself from well-known components.

    I'm having trouble deciding how to deploy it. I want some automation
    while deploying upgrades, and would like it to be light-weight. Jetty,
    http-kit, or immutant?
    (I tried immutant - but it seems to be taking up too much memory for my
    comfort, on my modest server.)

    Jetty and http-kit - I would like to hear about how I can deploy them as
    nice system daemons, with monitoring etc. so that they can be brought up
    automatically if something goes wrong. I'm also unable to find out how I
    can do a re-deploy without restarting.

    Any help or pointers appreciated!

    Thanks,
    jaju

    --
    --
    You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clojure@googlegroups.com
    Note that posts from new members are moderated - please be patient with
    your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscribe@googlegroups.com
    For more options, visit this group at
    http://groups.google.com/group/clojure?hl=en
    ---
    You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To unsubscribe from this group and stop receiving emails from it, send
    an email to clojure+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.

    --
    --
    You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clojure@googlegroups.com
    Note that posts from new members are moderated - please be patient with
    your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscribe@googlegroups.com
    For more options, visit this group at
    http://groups.google.com/group/clojure?hl=en
    ---
    You received this message because you are subscribed to the Google Groups
    "Clojure" group.
    To unsubscribe from this group and stop receiving emails from it, send an
    email to clojure+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.

    --
    --
    You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clojure@googlegroups.com
    Note that posts from new members are moderated - please be patient with
    your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscribe@googlegroups.com
    For more options, visit this group at
    http://groups.google.com/group/clojure?hl=en
    ---
    You received this message because you are subscribed to the Google Groups
    "Clojure" group.
    To unsubscribe from this group and stop receiving emails from it, send an
    email to clojure+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.

    --
    --
    You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clojure@googlegroups.com
    Note that posts from new members are moderated - please be patient with your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscribe@googlegroups.com
    For more options, visit this group at
    http://groups.google.com/group/clojure?hl=en
    ---
    You received this message because you are subscribed to the Google Groups "Clojure" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Baishampayan Ghose at Jun 29, 2013 at 6:09 pm
    Pick http-kit, create a uberjar with lein and deploy via Upstart etc. It
    works like a charm. Jetty is quite good too. ~BG

    Sent from phone. Please excuse brevity.
    On 29 Jun 2013 20:17, "Ravindra Jaju" wrote:

    I want to deploy a small web app - serving mostly static content. I'm
    using Luminus (http://www.luminusweb.net/) - which is quite neat in the
    way it builds itself from well-known components.

    I'm having trouble deciding how to deploy it. I want some automation while
    deploying upgrades, and would like it to be light-weight. Jetty, http-kit,
    or immutant?
    (I tried immutant - but it seems to be taking up too much memory for my
    comfort, on my modest server.)

    Jetty and http-kit - I would like to hear about how I can deploy them as
    nice system daemons, with monitoring etc. so that they can be brought up
    automatically if something goes wrong. I'm also unable to find out how I
    can do a re-deploy without restarting.

    Any help or pointers appreciated!

    Thanks,
    jaju

    --
    --
    You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clojure@googlegroups.com
    Note that posts from new members are moderated - please be patient with
    your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscribe@googlegroups.com
    For more options, visit this group at
    http://groups.google.com/group/clojure?hl=en
    ---
    You received this message because you are subscribed to the Google Groups
    "Clojure" group.
    To unsubscribe from this group and stop receiving emails from it, send an
    email to clojure+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.

    --
    --
    You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clojure@googlegroups.com
    Note that posts from new members are moderated - please be patient with your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscribe@googlegroups.com
    For more options, visit this group at
    http://groups.google.com/group/clojure?hl=en
    ---
    You received this message because you are subscribed to the Google Groups "Clojure" group.
    To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscribe@googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupclojure @
categoriesclojure
postedJun 29, '13 at 2:47p
activeJun 30, '13 at 7:33a
posts12
users7
websiteclojure.org
irc#clojure

People

Translate

site design / logo © 2022 Grokbase