Ignition Projects Directory in Linux

Our team has been using multiple project directories to develop in Windows, as explained in Change Ignition Project Location, and it has been very helpful when working on projects for multiple servers. Just point -Dignition.projects.dir to the source directory you want to work on, and restart Ignition. But something isn't working when we follow these steps in a Linux environment.

A new member of our team is trying to get this working on his Ubuntu VM. He set up his source directory and populated it with the projects needed for one of our systems from our git repository. But when he set -Dignition.projects.dir in his ignition.conf to this directory, he got the following error in the wrapper.log after restart.

INFO | jvm 1 | 2023/08/10 15:40:30 | W [g.ProjectManager ] [19:40:30]: ?:?: Not a directory: "/home/john.doe/source/ignition/PhoenixMobileStack", using default projects dir

The additional parameters in his ignition.conf are:

wrapper.java.additional.1=-Ddata.dir=data
wrapper.java.additional.2=-Dedition=
wrapper.java.additional.3=-Dignition.projects.scanFrequency=30
wrapper.java.additional.4=-Dignition.projects.allowunsignedmodules=true
wrapper.java.additional.5=-Dignition.projects.dir="/home/john.doe/source/ignition/PhoenixMobileStack"

We've tried setting the permissions to 777 for the whole path from source/ on down, and have also tried moving his source directory into /usr/local/bin/ignition/data/projects, and configuring the projects directory there. But it still won't recognize it as a directory.

Is there an extra step or parameter that Ignition would require to make this work in a Linux environment? Or is there something we're missing in how to set the path in the configuration file?

Why the quotes?

1 Like

We've always used the quotes to set the projects.dir in our Windows development setup. Is that only necessary because of the "C:/" in the Windows path?

Maybe? You're going through two layers of escaping here (the service wrapper reads the ignition.conf file as a Properties file, then, in some manner, passes the arguments through to the JVM as command line arguments). I'm pretty sure you only need them on Windows because of the backslashes (note the explainer in Properties.load); I'm reasonably sure you could either use forward slashes or doubled-up backslashes.

In any event, none of that should be necessary on a Unix-ey system with forward slashes for file paths.

1 Like

Thank you! I've always used quotes and forward slashes to get it to work in Windows.

wrapper.java.additional.5=-Dignition.projects.dir="C:/Source/Ignition/prod/some-server-name"

One of my co-workers just suggested that the quotes could be handy if you're ever dealing with a Windows path that has a space in one of the directory names. (And it's probably set to be more tolerant of unnecessary escaping from Windows.)