4 ms·
>Python/Ruby/Java/node ... all PITAs to production-deploy thanks to poor documentation/tutorials I don't get it. I am not a professional programmer or devops a
by vdaniuk 12y ago
>Python/Ruby/Java/node ... all PITAs to production-deploy thanks to poor documentation/tutorials
I don't get it. I am not a professional programmer or devops and I was able to deploy multiple servers for ruby(rails on webrick, puma and unicorn) and node apps without any significant problems. Over time, I used do/linode prebuilt images, stock ubuntu server, docker containers with and without nginx and did not spend much time or effort in any configuration.
There are multiple easy "git push" heroku-like paas alternatives, docker is available on most popular iaas platforms.
Can you elaborate what exactly cooperation from http servers do you need to deploy ruby/python?
- jerrac 12y agoWe're deploying several tomcat apps at work. Each of them have to have apache in front to proxy from 80/443 to 8080/8443. We tried to get jcvs(or whatever it's called) working, and it did not work. Thus, deploying java apps is a pain. Seriously, do they expect me to ask my users to add the port number to the url? We love GitLab at work as well. But a few years ago it was real pain to set up. Mainly due to having to figure out how to get the correct Ruby version installed. GitLab fixed this issue with documentation describing exactly what version to compile, and how to compile it. The fact remains, though, that I'm not using Ruby from the distro repos, and thus, if a major security issue arises, I won't get automatic updates. If it was more than one server, I'd not be happy... I once deployed a python app. Then tried to deploy it again, and could not figure out what the heck I did the first time. I still have no idea how to do so. And I never did find a decent tutorial on the subject. So, ultimately, I prefer PHP. You install mod_php, php, configure your vhost, and drop your files in the correct directory. Done. As for how experienced I am, I run 50+ vmware vm's, most of which run different applications than the others. Thus, I've had to deploy many different applications over the years. PHP apps are always the easiest.
- vdaniuk 12y agoOkay, I don't know much about Java, its vast and sparsely connected ecosystem scares me and I am not going that way yet. But how "install mod_php, php, configure your vhost, and drop your files in the correct directory" is easier than "sudo apt-get install node, drop files in the correct directory, run node app.js"? Your example requires two distinct entities written in different languages using differerent config formats: apache server and php code to run. Node requires node runtime that doesn't have to be configured and a node app. Also if you are not ok with configuring apache to forward ports, why ios it ok to configure your vhosts? PHP apps may be the easiest but deploying single server php apps it is insignificantly easier than deploying single server javascript apps.
- lmz 12y agoThe vhost does not really need to be configured if you have just one of them. I'm sure the default apache config handles that just fine (listening on any address port 80). Also for "run node app.js" don't forget "add a script that runs 'node app.js' at server startup".
- jerrac 12y agoI think Kibana 4 is a node app, right? Like lmz says, you have to write a script to tell it to start at boot. I ended up using Monit for that, but if I didn't know about Monit, I'd end up having to write a custom init script. Oh, and Tomcat apps can end up like that as well... Also, if I didn't want to configure a vhost, I don't need to. Just "apt-get install libapachemodphp(always forget the real package name...); copy app to /var/www;" Done. Apache is even automatically told to start at boot.
- sytse 12y agoYou are totally right that GitLab used to be hard to install, it took about 10 pages of commands https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/inst... Since a year we have Omnibus packages that solve that problem completely. It takes two minutes to install or update. For more information please see https://about.gitlab.com/downloads/ https://about.gitlab.com/downloads/
- dheera 12y agoDeploying Python on my school's web hosting service involved writing this horrendous mess of a .fcgi file: https://github.com/dheera/web-sustainabilitysummit/blob/master/index.fcgi https://github.com/dheera/web-sustainabilitysummit/blob/mast... Deploying Python+uwsgi+nginx on AWS involved another mess of a setup, wiresharking to figure what the hell port uwsgi was running on (the first tutorial I read had a typo ...), and a mess of pythonpath variables. Including requiring both pythonpath = /usr/lib/python3/dist-packages pythonpath = /usr/lib/python3.4/dist-packages in order to function (like, WTF) Not to mention I had to know to include the python3 plugin plugins = http,python3 No tutorial told me that the 'python' plugin couldn't handle python 3.x. Yep, definitely not newbie-friendly ... Can't servers just have an auto-configure command? I'll just drop a Flask app in /var/www. uwsgi should detect that it's Python, try to execute it as python2 and python3 (or just read the damn shebang lines and use the correct plugin) and just use whichever doesn't give errors. The server should just figure out what ports things are running on, where plugins are located. Auto-scan the newly dropped code for all import lines, search the file system for the right paths, and cache the result; if it still fails, try to just pip install it, and if pip fails, try to apt-get install python-* it. Save the final auto-configuration result. Manual configuration will always be an option, but in 99.9% of applications most of this deployment process seems pretty easy to automate.