How to set up iCal to publish on your Leopard Mac: All work done in Terminal. % is the shell prompt -- don't type it in! 1) % cd /etc/apache2 % sudo cp httpd.conf httpd.predav.conf % sudo vi httpd.conf Add this line below the definition of DocumentRoot: DAVLockDB /Library/WebServer/davlocks/DAVLockDB Add the following in the "Apple specific filesystem protection" area, underneath the <DirectoryMatch>...</DirectoryMatch> block: # WebDAV folder <Directory "/Library/WebServer/Documents/dav"> DAV On AuthName 'WebDAV' AuthType Basic AuthUserFile /etc/apache2/.htpasswd AuthGroupFile /dev/null <LimitExcept GET HEAD OPTIONS> require valid-user </LimitExcept> </Directory> 2) Think of a username you want to use for access to your iCal. Anyone who will subscribe to your calendar will need to know this username and its associated password. So, it is best not to make it *your* login name and password. Maybe a name like 'dav' (no quotes) and a password that is memorable. % ls -la .htpasswd If the file exists do this: % sudo /usr/sbin/htpasswd .htpasswd username If the file did not exist, do this: % sudo /usr/sbin/htpasswd -c .htpasswd username In either case it will prompt for a password. Enter one you can remember. 3) % cd /Library/WebServer % sudo mkdir davlocks % cd Documents % sudo mkdir dav % sudo mkdir dav/iCal 4) Check that the files are writable by the _www group: % cd /Library/WebServer % ls -l drwxrwxr-x 45 root _www 1530 Nov 15 18:49 Documents drwxrwxr-x 4 root _www 136 Nov 16 12:47 davlocks If the group is something else for Documents, do this: % sudo chgrp -R www Documents If the group is something else for davlocks, do this: % sudo chgrp www davlocks After setting the correct group, then check that both are group writable: % ls -l drwxrwxr-x 45 root _www 1530 Nov 15 18:49 Documents ^ drwxrwxr-x 4 root _www 136 Nov 16 12:47 davlocks ^ If you do not see a 'w' in the position marked by the circumflex (^) above, do this: % sudo chmod -R g+w Documents/dav % sudo chmod g+w davlocks Verify that the group is _www and that the directories are writable by group by doing another 'ls -l' command and seeing that there is now a w in the second "rwx" grouping. 5) Check the syntax of the httpd.conf file % apachectl -t It should report "Syntax OK" 6) Tail the server error log: % sudo tail -f /var/log/apache2/error_log Now type Apple-K to clear the terminal window so you are not confused by previously existing error messages in the error_log. You will then only see new messages printed. If the file does not exist, then you have never enabled web sharing. If that is the case, then perform this step (6) after you have performed step 7. 7) Restart the web server by going to System Preferences, click "Sharing". Uncheck "Web Sharing" (if it is checked) and it should stop the web server. If you did uncheck it, and you are tailing the error_log from step 6, you'll see a message like this: [Thu Nov 15 20:42:33 2007] [notice] caught SIGTERM, shutting down Click the checkbox for "Web Sharing" and it should start up the web server. Check that the server starts up OK. It should end in something like this: [Fri Nov 16 12:42:53 2007] [notice] Apache/2.2.6 (Unix) mod_ssl/2.2.6 OpenSSL/0.9.7l DAV/2 PHP/5.2.4 configured -- resuming normal operations If you have an error in your httpd.conf file, it may prevent your web server from starting up. You made a copy of the original, you can compare the two and if necessary, copy the predav version back to httpd.conf and try again. 8) Publish your iCal calendar Start iCal Select a calendar by clicking on it on the left. Right click and select "Publish" or choose "Publish" from the Calendar menu. A dialogue will pop up. Select "a Private Server" for "Publish on" Enter "http://localhost/dav/iCal" for the "Base URL" Enter the user name you specified in step 2 above for the "Login" Enter the password you specified in step 2 above for the "Password" Click the "Publish changes automatically" checkbox Click "Publish" and watch the error log you are tailing from step 6 above If you see an error like this: [Fri Nov 16 12:43:07 2007] [error] [client ::1] Could not open the lock database. [500, #400] [Fri Nov 16 12:43:07 2007] [error] [client ::1] (13)Permission denied: Could not open property database. [500, #1] It means your web server process (httpd) does not have write access to the davlocks directory you created in step 3. Verify that the directory exists and that it is writable by group www (review step 4). If you see an error like this: [Fri Nov 16 12:31:32 2007] [error] [client ::1] (2)No such file or directory: Could not open password file: /etc/apache2/.htpasswd Then either the file doesn't exist or isn't readable. The file was created by /usr/sbin/htpasswd in step 2 above. Make sure the file is there: % cd /etc/apache2 % ls -la .htpasswd -rw-r--r-- 1 root wheel 18 Nov 16 12:42 .htpasswd ^ If you do not see a third 'r' there (where the circumflex is located) you may need to do this: % sudo chmod o+r .htpasswd If the publish operation worked there should be no new messages at all printed to the error_log.