From aa7ecb02afb34eb30eec7bfcf166159af7c03107 Mon Sep 17 00:00:00 2001 From: AJ ONeal <aj@daplie.com> Date: Wed, 26 Apr 2017 13:44:32 -0600 Subject: [PATCH] update macOS launchd example (#1600) * update to match same paths as systemd * update to match new launchd plist * generated from scratch with LaunchControl, flawless Had some issues with the previous go and found LaunchControl which made it easy to generate a perfectly correct launchd conf * Update README.md --- dist/init/mac-launchd/README.md | 40 ++++++++-- .../mac-launchd/com.caddyserver.web.plist | 80 ++++++++++++------- 2 files changed, 86 insertions(+), 34 deletions(-) diff --git a/dist/init/mac-launchd/README.md b/dist/init/mac-launchd/README.md index 168356775..8fbd0d9c5 100644 --- a/dist/init/mac-launchd/README.md +++ b/dist/init/mac-launchd/README.md @@ -1,12 +1,42 @@ launchd service for macOS ========================= -This is a sample file for a *launchd* service on Mac. -Edit the paths and email in the plist file to match your info. +This is a working sample file for a *launchd* service on Mac, which should be placed here: + +```bash +/Library/LaunchDaemons/com.caddyserver.web.plist +``` + +To create the proper directories as used in the example file: + +```bash +sudo mkdir -p /etc/caddy /etc/ssl/caddy /var/log/caddy /usr/local/bin /var/tmp /srv/www/localhost +sudo touch /etc/caddy/Caddyfile +sudo chown root:wheel -R /usr/local/bin/caddy /Library/LaunchDaemons/ +sudo chown _www:_www -R /etc/caddy /etc/ssl/caddy /var/log/caddy +sudo chmod 0750 /etc/ssl/caddy +``` + +Create a simple web page and Caddyfile + +```bash +sudo bash -c 'echo "Hello, World!" > /srv/www/localhost/index.html' +sudo bash -c 'echo "http://localhost { + root /srv/www/localhost +}" >> /etc/caddy/Caddyfile' +``` Start and Stop the Caddy launchd service using the following commands: - $ launchctl load ~/Library/LaunchAgents/com.caddyserver.web.plist - $ launchctl unload ~/Library/LaunchAgents/com.caddyserver.web.plist +```bash +launchctl load /Library/LaunchDaemons/com.caddyserver.web.plist +launchctl unload /Library/LaunchDaemons/com.caddyserver.web.plist +``` -More information can be found in this blogpost: [Running Caddy as a service on macOS X server](https://denbeke.be/blog/software/running-caddy-as-a-service-on-macos-os-x-server/) \ No newline at end of file +To start on every boot use the `-w` flag (to write): + +```bash +launchctl load -w /Library/LaunchAgents/com.caddyserver.web.plist +``` + +More information can be found in this blogpost: [Running Caddy as a service on macOS X server](https://denbeke.be/blog/software/running-caddy-as-a-service-on-macos-os-x-server/) diff --git a/dist/init/mac-launchd/com.caddyserver.web.plist b/dist/init/mac-launchd/com.caddyserver.web.plist index 517c3702e..980bfb2a1 100644 --- a/dist/init/mac-launchd/com.caddyserver.web.plist +++ b/dist/init/mac-launchd/com.caddyserver.web.plist @@ -1,31 +1,53 @@ <?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> - <dict> - <key>Label</key> - <string>com.caddyserver.web</string> - <key>EnvironmentVariables</key> - <dict> - <key>HOME</key> - <string>/Users/mathias</string> - </dict> - <key>ProgramArguments</key> - <array> - <string>sh</string> - <string>-c</string> - <string>ulimit -n 8192; cd /Users/mathias/Sites; ./caddy -agree -email my_email@domain.com -conf=/Users/mathias/Sites/Caddyfile</string> - </array> - <key>UserName</key> - <string>www</string> - <key>RunAtLoad</key> - <true/> - <key>KeepAlive</key> - <true/> - <key>WorkingDirectory</key> - <string>/Users/mathias/Sites</string> - <key>StandardOutPath</key> - <string>/Users/mathias/Sites/caddy.log</string> - <key>StandardErrorPath</key> - <string>/Users/mathias/Sites/caddy_error.log</string> - </dict> -</plist> \ No newline at end of file +<dict> + <key>Label</key> + <string>Caddy</string> + <key>ProgramArguments</key> + <array> + <string>/usr/local/bin/caddy</string> + <string>-agree</string> + <string>-conf</string> + <string>/etc/caddy/Caddyfile</string> + <string>-root</string> + <string>/var/tmp</string> + </array> + <key>EnvironmentVariables</key> + <dict> + <key>CADDYPATH</key> + <string>/etc/ssl/caddy</string> + </dict> + + <key>UserName</key> + <string>root</string> + <key>GroupName</key> + <string>wheel</string> + <key>InitGroups</key> + <true/> + + <key>RunAtLoad</key> + <true/> + <key>KeepAlive</key> + <dict> + <key>Crashed</key> + <true/> + </dict> + + <key>SoftResourceLimits</key> + <dict> + <key>NumberOfFiles</key> + <integer>8192</integer> + </dict> + <key>HardResourceLimits</key> + <dict/> + + <key>WorkingDirectory</key> + <string>/etc/ssl/caddy</string> + + <key>StandardErrorPath</key> + <string>/var/log/caddy/error.log</string> + <key>StandardOutPath</key> + <string>/var/log/caddy/info.log</string> +</dict> +</plist>