Open bcail opened 5 years ago
We also have a Docker image in use at Wellcome (see https://github.com/wellcometrust/storage-service in the loris
directory, although I hope to move it out into its own repo soon).
I would start with a good spring clean of the docs (as well as those issues, we have a bunch of undocumented settings) – most people won't want a development environment if they just want to use a vanilla Loris, and will at least try the installation on their own setup.
Then at the end of those docs, we point to existing installations – including a repo that contains a new development image that we've created, and other setups that are in public GitHub repos.
I have a todo note to tidy up the docs with some of the stuff I found setting it up for Wellcome; I might roll in some other minor fixes at the same time.
I'd point to https://github.com/loris-imageserver/loris/issues/315 as well.
I'm working on a Ruby app which creates IIIF manifests that point to Loris, so I've got Debian packages and IIIF on my mind again.
With my Ruby app, I actually turn it into a Ruby Gem then run gem2deb on it. The libraries get installed to the system Ruby path, and the executable (a FCGI handler) gets put into /usr/bin.
After the Debian package is installed, then I use Ansible to create the configuration file and the Apache configuration file.
Loris could use a similar approach.
However... I suppose Loris is a more complex app than my Ruby FCGI handler.
And most people will probably want an out-of-the-box solution. I'm tempted to look at how larger Python web apps get deployed, especially with Debian packages (if you haven't noticed I'm a huge advocate of packages heh).
I've been thinking about this a lot over the years, and I think (web) application deployments for scripting languages are hard. https://wiki.debian.org/DjangoPackagingDraft would be just one example of people trying to find a tried and true way of packaging these kinds of apps.
You know in comparison to say a Java app where you can just drop in a WAR file, although even though you often have to do additional setup with something like Ansible in a production environment.
I think maybe replacing the following: self.make_directories() self.__write_wsgi() self.copy_index_and_favicon() self.__update_and_deploy_config()
With a separate script might be a good idea or putting in some sample/example files and letting the administrator handle it from there.
For people who want out of the box solutions, they could look to Docker or Debian packages. And power users could run setup.py to get the bin and lib, and then use their own means to create the other configuration and directories.
The installation process/documentation has some issues, as we can see from Issues #434, #435, #424, #420, #412, #404 (and maybe others).
We have the loris-docker repo, but it's for development, and not well-maintained.
There is also another docker image, but it's also not very current and is for development.
Here's a set of scripts I worked on, for installing Loris on EL7, but I haven't been keeping up with it.
@alexwlchan and others, should we have at least one docker repo, or set of scripts for installing, that we maintain here in the loris-imageserver org? If we do that, even if it's for the development setup, we could still mention production-install tips (like how to use apache or Passenger for serving WSGI apps) Then we could point to that example repo in the Loris README, and maybe simplify the install documentation (and even setup.py).
Thoughts?