The answers to the following question are from real pro pharo developers.
Anyone here run a web app using plain ZnServer (or subclasses) on a cheap VPS (i.e., $10/month DO droplet or equivalent). What are your experiences?, suggestions.
I am planning a web app with just plain ZnServer, SQLite3, ATS or equivalent.
That is certainly possible and works well. I would recommend an instance with 1GB RAM, that leaves you some headroom.
Deploying web applications is of course a broad subject, much of the required knowledge is not Pharo specific, but needed anyway.
The last chapter in the Pharo Enterprise book (https://books.pharo.org/enterprise-pharo/) is a good starting point (Deployment). But there are other and different approaches.
A plain HTTP demo instance running on a DO instance can be found here: http://zn.stfx.eu/welcome
For production use you should front with NGINX or something similar to add HTTPS.
May people on this mailing list deploy Pharo server applications, we have tens of them in day to day production doing real work.
Good luck on your journey, you know where to ask questions.
Yeap, not much more to add than what Sven said. What’s important to
mention is that they are really stable.
I’ve been running Pharo servers in DO droplets of all sizes, without
issues (some running for months), I only had to upscale one droplet to
more memory, and it was because of a leak I introduced with PGSQL
connections, otherwise, they’re pretty lightweight for today’s
standards and a normal workload.
I have deployments with nginx and Pharo images as upstreams, and I
have one with Docker swarm and Traefik doing the load balancing among
different Pharo workers and acting as the HTTPS endpoint. I’m removing
this option though and moving back to nginx only.
What I never tried was to host a docker container running Pharo, in
some Docker hosting. It might be the best option as a quick start, but
after doing the math, it’s always more expensive than a Droplet.
Esteban A. Maringolo
Yes, very stable. I’ve had a DigitalOcean droplet running for 6 years
that was holding various false starts. To my surprise, one (never
“shipped”) website was still running (Pharo-3.?, mongodb, Bootstrap
css). I’d been poking the site every once in a while, and found that
the Bootstrap UI steadily degraded, because I’d pointed the site’s
.css at some non-fixed version from some CDN server (so that .css must
have changed over the years). The uptime on the machine was over 1000
days, and there have been many emails over the years about network,
hardware, etc. changes. After years of unattended reboots, some relic
was still up.
Anyhow, that instance is now deleted, probably soon to be joined by a
more recent setup where I started with the DO 1-click docker droplet.
This setup was useful to learn about docker, and I might go back to it
in the future. Given Estaban’s comments in this thread, I decided to
do a bare nginx + Pharo image deployment (which is similar to the now
deleted 6 year instance described above, which had Apache2 instead of
nginx). I will have the mongo server on a separate machine, but have
not decided whether to use the DO offering of a managed mongo server.
It’s still a work in progress, and other’s experiences are of
Thanks for reading.