Criollo is meant to run on OS X. I have no plans for the near future to make it run on Linux. That being said, there seems to be a sustained effort from the community to port OS X APIs to Linux. As this becomes mature I will look into it.
Deploying to the Server
The final product will always be an application bundle, which can be simply deployed to the target server as any other application would be.
A more elegant solution would be deploying from source, using a git hook on the target machine. A deployment script is coming.
(to be continued)
Integrating with launchd
Launchd is OS X’s builtin process manager. Wikipedia defines it as
a unified, open-source service management framework for starting, stopping and managing daemons, applications, processes, and scripts. Written and designed by Dave Zarzycki at Apple, it was introduced with Mac OS X Tiger and is licensed under the Apache License.
The only thing that you need to make your Criollo application start and stop on launchd commands is to create a
launchd.plist file and place it in
Here is an example file for the HelloWorld project described above is this:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Disabled</key> <false/> <key>KeepAlive</key> <true/> <key>Label</key> <string>io.criollo.HelloWorld</string> <key>ProgramArguments</key> <array> <string>/WebApplications/HelloWorld.app/Contents/MacOS/HelloWorld</string> </array> <key>RunAtLoad</key> <true/> <key>ServiceDescription</key> <string>A simple "Hello World" serving app</string> <key>StandardErrorPath</key> <string>/var/log/io.criollo.HelloWorld.log</string> <key>StandardOutPath</key> <string>/var/log/io.criollo.HelloWorld.log</string> </dict> </plist>
The example above assumes the app will be deployed at
Read more about launchd plists in the
launchd.plist(5) man page.
Starting and Stopping
You can then start and stop the app using
launchctl as follows.
sudo launchctl load /Library/LaunchDaemons/io.criollo.HelloWorld.plist sudo launchctl unload /Library/LaunchDaemons/io.criollo.HelloWorld.plist
Read more about launchctl in the
launchctl(1) man page.