-
Notifications
You must be signed in to change notification settings - Fork 53
Deployment
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.
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)
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 /Library/LaunchDaemons/
.
Here is an example file for the HelloWorld project described above is this:
io.criollo.HelloWorld.plist
<?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 /WebApplications/HelloWorld.app
.
Read more about launchd plists in the launchd.plist(5)
man page.
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.