I'm posting this because right now someone is scrounging the internet for 3 hours to find this simple solution, I hope that they find this post sooner rather than later, and can move on to their next project!
*TLDR* Goto /src/clj/myapp/server.clj Edit "3000" to be whatever you want: (defn -main [& args] (let [port (Integer/parseInt (or (env :port) "3000"))] (run-jetty app {:port port :join? false}))) Now Here's the journey of a new user to find this information... Let's say you installed Clojure with: lein new reagent myapp You built out your app, and everything went well! Time to deploy. You may have stumbled upon this DigitalOcean guide, How To Deploy a Clojure Web Application on Ubuntu 14.04 <https://www.digitalocean.com/community/tutorials/how-to-deploy-a-clojure-web-application-on-ubuntu-14-04> It worked mostly, though your app wants to run on port 3000, not 5000. No problem, just changed it in the nginx config 6 server { 7 listen 80; 8 server_name www.myapp.us myapp.us; 9 location / { 10 proxy_pass http://127.0.0.1:3000; 11 proxy_http_version 1.1; 12 proxy_set_header Connection ""; 13 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 14 proxy_set_header Host $http_host; 15 access_log /var/www/myapp/logs/myapp.access.log; 16 error_log /var/www/myapp/logs/myapp.error.log; 17 } 18 } The recommended /etc/supervisor/conf.d/myapp.conf file worked great. Your site is launched and all is well! Okay so with that resounding success you decide you want to launch a second clojure app. First, if you're used to using php and nginx, you might be thinking you may be able to have your app run on the default port buy "look" for another url, maybe it's something you can easily change in the nginx config, or the supervisor config, or maybe the project.clj file. But a search on google seems to be focused on using separate port numbers: How can I run multiple Ring apps on the same server? <http://stackoverflow.com/questions/15732618/how-can-i-run-multiple-ring-apps-on-the-same-server> You don't necessarily think of your app as a "Ring" app - sure it's a library, but isn't this just Clojure? Anyways, this seems to be the solution, but how do we change the port? Searching google some more: Offical Lein Ring Instructions <https://github.com/weavejester/lein-ring> - not helpful How to set ring port based on profile <http://stackoverflow.com/questions/27945399/how-to-set-ring-port-based-on-profile> - something about profiles, not helpful You browser the rest of the front page of google and continue to get posts like this. If you come from a mainstream language like PHP, you're thinking "Hmm, deploying multiple apps is an extremely basic task.. Why do I feel like I'm the first one to ever do it?" Thinking that maybe it's just a standard Java thing, you start searching for "change java jar port". But these all yeild posts that recommend changing the port via commands like this: java -jar jenkins.war --httpPort=9090 None of these will works, but you will have to wait 60 seconds after typing it in each time to find out. Hours have passed. For the first time in your life as a programmer, Google has actually failed you.You are all alone now. Finally, you open the project in an editor you're experienced with - Sublime text - and search the whole project for port. You find the place to change the port at /src/clj/myapp/server.clj ! You are victorious, but you feel let down by Google, and frustrated that the solution was random flailing around. *Epilogue* I really love Clojure. This is the first time, in a bout 10 years I've been this excited about programming. Functional, lisp-like programming feels like an absolute revolution to someone who has only ever experienced, php, ruby, python, and javascript. However, early on in my Clojure journey I've encountered two extremely basic problems where the solutions simply don't seem to be findable on Google! There really is this feeling like, am I the first person to have eve encountered this problem? Am I the only one who is coming to Clojure from building web apps using Laravel (An excellent framework, unfortunately written in php) Maybe there aren't a whole lot of beginners, or maybe some of the beginner written material no longer applies to the new fancy ways to get started. This is concerning. As a newby I want to be able to jump in knowing that the foundation has already been built. As nice as it is to use a command like "lein new reagent myapp" - I don't want to do that if the result is I get a tree of code made for me that most of the community hasn't used yet. What's frustrating is that this folder structure isn't explicitly connected to the project.clj - like there's no way you could study the project.clj and determine that /src/clj/myapp/server.clj is used by anything. It just happens magicaly, the complexity is hidden... Again, I'm really enjoying clojure so far, and I really agree with the creators vision, but I'm concerned whenever really easy tasks take forever to do and seem to have hidden complexity. I'm interested in other peoples thoughts here. Have you felt in a similar way? What am I doing wrong? Thanks! Seth -- 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+unsubscr...@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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.