{"id":1177,"date":"2011-02-03T18:17:34","date_gmt":"2011-02-03T22:17:34","guid":{"rendered":"http:\/\/jeffclarke.us\/blog\/?p=1177"},"modified":"2011-04-20T16:20:23","modified_gmt":"2011-04-20T20:20:23","slug":"a-web-developmen-environment-on-snow-leopard","status":"publish","type":"post","link":"http:\/\/jeffclarke.us\/blog\/2011\/02\/a-web-developmen-environment-on-snow-leopard\/","title":{"rendered":"A Web Development Environment on Snow Leopard"},"content":{"rendered":"<p>This is an update to an earlier post I submitted about <a href=\"http:\/\/jeffclarke.us\/blog\/2009\/06\/a-web-development-server-environment-on-leopard\/\">how to set up a web dev environment on Leopard.\u00a0 A few things have changed from Leopard to Snow Leopard (namely switching to 64 bit code) so it makes sense to refresh this guide.<!--more--><\/a><\/p>\n<p><a href=\"http:\/\/jeffclarke.us\/blog\/2009\/06\/a-web-development-server-environment-on-leopard\/\"> <\/a><\/p>\n<p><a href=\"http:\/\/jeffclarke.us\/blog\/2009\/06\/a-web-development-server-environment-on-leopard\/\">* * * * *<\/a><\/p>\n<p><a href=\"http:\/\/jeffclarke.us\/blog\/2009\/06\/a-web-development-server-environment-on-leopard\/\">If you&#8217;re like me and you&#8217;d tried to have your Leopard PHP-MYSQL build just work on Snow Leopard, I&#8217;m sure you met with the same rude awakening that I did.<\/a><\/p>\n<p><a href=\"http:\/\/jeffclarke.us\/blog\/2009\/06\/a-web-development-server-environment-on-leopard\/\">It didn&#8217;t work.<\/a><\/p>\n<p><a href=\"http:\/\/jeffclarke.us\/blog\/2009\/06\/a-web-development-server-environment-on-leopard\/\"> <\/a><\/p>\n<p><a href=\"http:\/\/jeffclarke.us\/blog\/2009\/06\/a-web-development-server-environment-on-leopard\/\"><\/a><\/p>\n<p><a href=\"http:\/\/jeffclarke.us\/blog\/2009\/06\/a-web-development-server-environment-on-leopard\/\"><\/a><\/p>\n<p><a href=\"http:\/\/jeffclarke.us\/blog\/2009\/06\/a-web-development-server-environment-on-leopard\/\">If you followed my guide for installing <\/a><a href=\"http:\/\/jeffclarke.us\/blog\/2009\/06\/a-web-development-server-environment-on-leopard\/\">LAMP on Leopard<\/a>, you should start by cleaning out MacPorts and starting fresh.<\/p>\n<p>To be certain, you should honestly clean out everything.\u00a0 But before you do, be sure to list out all the ports you currently have installed.\u00a0 Do that like this:<\/p>\n<blockquote>\n<pre><code>sudo port installed<\/code><\/pre>\n<\/blockquote>\n<p>And copy the list of installed ports to a text file. For reference.<\/p>\n<p>Next let&#8217;s do some housecleaning (BE CAREFUL! DON&#8217;T UNINSTALL UNLESS YOU MEAN IT!):<\/p>\n<blockquote>\n<pre><code>sudo port clean --all vile\r\nsudo port -f uninstall installed<\/code><\/pre>\n<\/blockquote>\n<p>Then you can go about re-installing your environment. The guide below is slightly modified to be able to work on Snow Leopard.\u00a0 Enjoy!<\/p>\n<p>* * * * *<\/p>\n<p>I&#8217;ve found a relatively easy way to maintain a flexible, updatable  development under MacOS 10.6 which goes so far as to install my own  components, but not to have to compile them (which I&#8217;ve done several  times and can attest, is a pain).<\/p>\n<p>This setup gives you a great web development environment under  Leopard (geared in my case towards Flash development compatible with the  WordPress platform), which does a better job of playing by the rules  than the default install of a lot of these elements.\u00a0 And with MacPorts,  the whole thing is modular and very easily maintained.<\/p>\n<p>And everything on the list is free and\/or open-source.<\/p>\n<p>* Note that you&#8217;ll need to have administrator privileges on your user account to do this.<\/p>\n<p>** Also note that this is geared towards creating a relatively  unfettered development environment.\u00a0 I don&#8217;t make any considerations  about server security or server optimization for large-scale web  applications.\u00a0 This is really geared towards creating a simple, local  dev environment.<\/p>\n<p><strong>Includes:<\/strong><\/p>\n<ul>\n<li>XCode Tools<\/li>\n<li> MacPorts<\/li>\n<li> Apache2<\/li>\n<li> PHP 5<\/li>\n<li> MySQL 5<\/li>\n<\/ul>\n<p><strong>* optional installs:<\/strong><\/p>\n<ul>\n<li> GIT\/Subversion<\/li>\n<li>GitX\/SCPlugin<\/li>\n<li> Sequel Pro (formerly CocoaMySQL)<\/li>\n<\/ul>\n<p><em>derived from a bunch of sources, including:<\/em><\/p>\n<p><a href=\"http:\/\/seancoates.com\/php-5-2-5-on-leopard\" target=\"_blank\">php-5.2.5 on Leopard<\/a><\/p>\n<p><a href=\"http:\/\/blog.rajatpandit.com\/2009\/03\/12\/using-macport-to-setup-php5-apache2-on-leopard\/\" target=\"_blank\">Using Macport to Setup PHP5 and Apache2 on Leopard\/<\/a><\/p>\n<p><a href=\"http:\/\/matthewcarriere.com\/2008\/04\/02\/installing-mysql-on-mac-os-x-leopard-using-macports\/\" target=\"_blank\">Installing MYSQL on Mac OS X Leopard Using Macports<\/a><\/p>\n<p><strong>Here goes:<\/strong><\/p>\n<p><strong>1. Install XCode Tools:<\/strong><\/p>\n<p><a href=\"http:\/\/developer.apple.com\/technology\/xcode.html\" target=\"_blank\">http:\/\/developer.apple.com\/technology\/xcode.html<\/a><\/p>\n<p>pretty self-explanatory. Install them.\u00a0 You&#8217;ll need them at the very  least for MacPorts.\u00a0 But they come in handy if you ever need to compile  anything.<\/p>\n<p><strong>2. Install MacPorts<\/strong><\/p>\n<p><a href=\"http:\/\/www.macports.org\/install.php\" target=\"_blank\">http:\/\/www.macports.org\/install.php<\/a><\/p>\n<p>MacPorts is a modular install system with easy update \/ swap \/  uninstall capacity.\u00a0 It&#8217;s like Fink (I say, never having used Fink) &#8212;  just an easy way to install a bunch of standard programs.<\/p>\n<p>There are several install options, but the easiest thing to do is just use the disk image here:<\/p>\n<p><a href=\"hhttp:\/\/distfiles.macports.org\/MacPorts\/MacPorts-1.9.2-10.6-SnowLeopard.dmg\" target=\"_blank\">http:\/\/distfiles.macports.org\/MacPorts\/MacPorts-1.9.2-10.6-SnowLeopard.dmg<\/a><\/p>\n<p>Unless you&#8217;re an advanced user I recommend you do that.<\/p>\n<p><strong>3. Update MacPorts<\/strong><\/p>\n<blockquote>\n<pre><code>sudo port -v selfupdate #makes sure ports is up to date\r\nsudo port sync #syncs the local port index with the remote index<\/code><\/pre>\n<\/blockquote>\n<p><strong>4. Install Apache 2<\/strong><\/p>\n<blockquote><p><code>sudo port install apache2 +universal<br \/>\nsudo port load apache2 # set to autorun at boot<\/code><\/p><\/blockquote>\n<p>The standard web server. Standard, because it&#8217;s really stable, fast and flexible.<\/p>\n<p>more info: <a href=\"http:\/\/blog.rajatpandit.com\/2009\/03\/12\/using-macport-to-setup-php5-apache2-on-leopard\/\" target=\"_blank\">http:\/\/blog.rajatpandit.com\/2009\/03\/12\/using-macport-to-setup-php5-apache2-on-leopard\/<\/a><\/p>\n<p>** notes **<\/p>\n<p>You don&#8217;t necessarily need these, but I find it&#8217;s helpful to have some  aliases to address apache &#8212; mostly for start, stop and restart  functionality.\u00a0 You can set these aliases to be whatever you want.\u00a0 Or  ignore them.\u00a0 I just find them helpful.<\/p>\n<blockquote><p><code>alias apache_start=\"sudo \/opt\/local\/apache2\/bin\/apachectl start\"<\/code><\/p>\n<p><code>alias apache_restart=\"sudo \/opt\/local\/apache2\/bin\/apachectl restart\"<\/code><\/p>\n<p><code>alias apache_stop=\"sudo \/opt\/local\/apache2\/bin\/apachectl stop\"<\/code><\/p><\/blockquote>\n<p><strong>5. Install MySQL 5<\/strong><\/p>\n<p>(Note that you might need to <a href=\"#relink-sql-sock\">re-link your MySQL sock<\/a> file before you initialize and setup if this is your first time using MySQL on your system.)<\/p>\n<blockquote><p><code>sudo port install mysql5-server +universal<\/code><\/p>\n<p><code>sudo \/opt\/local\/lib\/mysql5\/bin\/mysql_install_db --user=mysql #initialze mysql<\/code><\/p>\n<p><code>sudo port load mysql5-server #set mysql to autostart at boot<\/code><\/p>\n<p><code> <\/code><code>sudo \/opt\/local\/bin\/mysqld_safe5 #start<\/code><\/p><\/blockquote>\n<p>#create symbolic links to not have to type in mysql5 every time:<\/p>\n<blockquote><p><code>sudo ln -s \/opt\/local\/bin\/mysql5 \/opt\/local\/bin\/mysql<\/code><\/p>\n<p><code> <\/code><code>sudo ln -s \/opt\/local\/bin\/mysqladmin5 \/opt\/local\/bin\/mysqladmin<\/code><\/p><\/blockquote>\n<p>More info: <a href=\"http:\/\/matthewcarriere.com\/2008\/04\/02\/installing-mysql-on-mac-os-x-leopard-using-macports\/\" target=\"_blank\">http:\/\/matthewcarriere.com\/2008\/04\/02\/installing-mysql-on-mac-os-x-leopard-using-macports\/<\/a><\/p>\n<p><strong>6. Install php5 (with apache2, mysql and pear support)<\/strong><\/p>\n<blockquote><p><code>sudo port install php5 +apache2 +mysql5 +pear +universal<\/code><\/p><\/blockquote>\n<p><strong>7. Activate PHP<\/strong><\/p>\n<blockquote><p><code>sudo cp \/opt\/local\/etc\/php5\/php.ini-development  \/opt\/local\/etc\/php5\/php.ini<\/code><\/p>\n<p><code>cd \/opt\/local\/apache2\/modules<\/code><\/p>\n<p><code> <\/code><code>sudo \/opt\/local\/apache2\/bin\/apxs -a -e -n \"php5\" libphp5.so<\/code><\/p><\/blockquote>\n<p><strong>8. Move Snow Leopard&#8217;s standard Apache out of the regular path<\/strong><\/p>\n<blockquote><p><code>sudo mv \/usr\/sbin\/apachectl \/usr\/sbin\/apachectl-leopard<\/code><\/p><\/blockquote>\n<p><strong>9. Move your new Apache into the path<\/strong><\/p>\n<p>(you might not need the first 2 steps, but I&#8217;m working on a totally clean Leopard build, so I don&#8217;t have these directories yet)<\/p>\n<blockquote><p><code>sudo mkdir \/usr\/local<\/code><\/p>\n<p><code>sudo mkdir \/usr\/local\/bin<\/code><\/p>\n<p><code> <\/code><code>sudo ln -s \/opt\/local\/apache2\/bin\/apachectl \/usr\/local\/bin\/apachectl<\/code><\/p><\/blockquote>\n<p><strong>10. Move Leopard&#8217;s bundled PHP out of the way<\/strong><\/p>\n<blockquote><p><code>sudo mv \/usr\/bin\/php \/usr\/bin\/php-leopard<\/code><\/p><\/blockquote>\n<p><strong>11. Do some Apache configuration for PHP:<\/strong><\/p>\n<p>(all of these are modifications to the httpd.conf file located here: \/opt\/local\/apache2\/conf\/httpd.conf)<\/p>\n<p><strong>a. <\/strong>Add index.php to the list of DirectoryIndex:<\/p>\n<blockquote><p><code>&lt;IfModule dir_module&gt;<\/code><\/p>\n<p><code>DirectoryIndex index.html index.php<\/code><\/p>\n<p><code> <\/code><code>&lt;\/IfModule&gt;<\/code><\/p><\/blockquote>\n<p><strong>b.<\/strong> Add handlers for PHP files:<\/p>\n<blockquote><p><code># Add handling for PHP files<\/code><\/p>\n<p><code>&lt;IfModule php5_module&gt;<\/code><\/p>\n<p><code>AddHandler application\/x-httpd-php .php<\/code><\/p>\n<p><code>AddHandler application\/x-httpd-php-source .phps<\/code><\/p>\n<p><code> <\/code><code>&lt;\/IfModule&gt;<\/code><\/p><\/blockquote>\n<p>This block can go anywhere in the httpd.conf &#8212; but it&#8217;s probably best to keep the module handlers in alphabetical order.<\/p>\n<p><strong>c. <\/strong>Restart Apache<\/p>\n<p>If you added the alias to your bash profile, you can now do apache_restart. Otherwise, enter:<\/p>\n<blockquote><p><code>sudo apachectl restart<\/code><\/p><\/blockquote>\n<p><strong>11. Include user Sites directories (enable the following file by un-commenting it):<\/strong><\/p>\n<blockquote><p><code># User home directories<\/code><\/p>\n<p><code> <\/code><code>Include conf\/extra\/httpd-userdir.conf<\/code><\/p><\/blockquote>\n<p><strong>12. Re-link mysql.sock:<a name=\"relink-sql-sock\"><\/a><\/strong><\/p>\n<blockquote><p><code>sudo ln -s \/opt\/local\/var\/run\/mysql5\/mysqld.sock \/tmp\/mysql.sock<\/code><\/p><\/blockquote>\n<p>This step is essential so everyone can agree where MySQL is living on  the system and how to connect to it.\u00a0 Before I did this, Apache and PHP  seemed to be able to access MySQL, and I could access MySQL from the  command line, but programs like SequelPro couldn&#8217;t find the MySQL  socket.\u00a0 This step seems to correct that problem and let everyone play  nicely.<\/p>\n<p><strong><em>** OPTIONAL **<\/em><\/strong><\/p>\n<p>These steps are optional &#8212; certainly not essential, but I find them to be very helpful tools for web development.<\/p>\n<p><strong>13. Install Git\/Subversion (Version Control)<\/strong><\/p>\n<p>I personally have become a huge fan of <a href=\"http:\/\/git-scm.com\/\" target=\"_blank\">Git<\/a>.\u00a0 I want to encourage you to become a fan too if you aren&#8217;t already.<\/p>\n<p>You can install Git using <a href=\"http:\/\/code.google.com\/p\/git-osx-installer\/\" target=\"_blank\">Mac OSX installer.<\/a><\/p>\n<p>Alternatively, if you want to keep with <strong>Subversion<\/strong> (or, say, you need both), do this:<\/p>\n<blockquote><p>sudo port install subversion +universal<\/p><\/blockquote>\n<p>This installs the latest version of Subversion on the system &#8212; which  is then used for SVN access from the command line, from Eclipse, from  SCPlugin, etc.<\/p>\n<p><strong>14. Install GitX\/SCPlugin<\/strong><\/p>\n<p>You&#8217;ll now want a way to interface with your version control system of choice.\u00a0 My favorite interface for Git so far is GitX.\u00a0 It&#8217;s much more for tracking revisions and simple commits than for branches and complex merges.\u00a0 For those you&#8217;ll need the command line.\u00a0 But for simple tracking and commits (what you do from day to day), GitX is for you.\u00a0 <a href=\"http:\/\/gitx.frim.nl\/\" target=\"_blank\">Download GitX here<\/a>.<\/p>\n<p>If, instead\/in addition, you&#8217;re looking for a tool to interact with Subversion, I recommend SCPlugin.<\/p>\n<p><a href=\"http:\/\/scplugin.tigris.org\/\" target=\"_blank\">http:\/\/scplugin.tigris.org\/<\/a><\/p>\n<p>SCPlugin is a great little tool that integrates Subversion access  with the MacOS Finder and lets you do all of your basic SVN commands  from there (checkout, update, revert, etc).\u00a0 It doesn&#8217;t give you deep,  deep access into SVN commands like version checkout or repository  browsing, but for lazy commands like checkout and update, it&#8217;s great.<\/p>\n<p><strong>15. Install CocoaMySQL \/ SequelPro<\/strong><\/p>\n<p><a href=\"http:\/\/sequel-pro.googlecode.com\/files\/CocoaMySQL-pre0.7b6.zip\" target=\"_blank\">CocoaMySQL 0.7b6<\/a><\/p>\n<p><a href=\"http:\/\/www.theonline.org\/cocoamysql\/CocoaMySQL-SBG-v0_7_1.dmg.zip%20%28CocoaMySQL-SBG%200.7.1%29\" target=\"_blank\">CocoaMySQL-SBG 0.7.1<\/a><\/p>\n<p>Of those two I prefer <strong>0.7b6 <\/strong>&#8212; It seems perfectly stable to me.<\/p>\n<p>CocoaMySQL is an awesome little MySQL editor \/ browser based on the  CocoaMySQL codebase.\u00a0 I&#8217;ve been using it for years and I&#8217;ve found it&#8217;s a  lot faster than entering SQL commands in the Terminal or dealing with  PHPMyAdmin (which is super-slow even running locally).<\/p>\n<p>CocoaMySQL lets you manage DBs effortlessly. I find it&#8217;s great for DB  creation (when you&#8217;re still sketching out a project and want to play  around with table structure), and for common tasks like importing and  exporting.<\/p>\n<p>It&#8217;s a native MacOS application, so it&#8217;s really zippy and it lets you  do local and remote DB access.\u00a0 And it plays nice with all of the  components we&#8217;ve installed so far.<\/p>\n<p>I highly recommend it.<\/p>\n<p>The only drawback is that the codebase for CocoaMySQL has been  abandoned.\u00a0 It&#8217;s been picked up by the SequelPro project, but honestly  these guys have a ways to go before their product matches CocoaMySQL  (like &#8212; they still need to add user administration).\u00a0 By the time you  read this maybe they&#8217;ve added some features.\u00a0 If not, I&#8217;d say CocoaMYSQL  still works beautifully &#8212; even though the code has been abandoned.<\/p>\n<p>If you want SequelPro, though, you can get it here:<\/p>\n<p><a href=\"http:\/\/www.sequelpro.com\/\" target=\"_blank\">http:\/\/www.sequelpro.com\/<\/a><\/p>\n<p><strong>16. ADVANCED &#8211; Virtual Hosts<\/strong><\/p>\n<p>I first experimented with Virtual Hosts when I started doing  WordPress development &#8212; mostly because WordPress seems much happier  with shorter real world style urls like:<\/p>\n<p><em>http:\/\/radio.local<\/em><\/p>\n<p>than those you&#8217;d typically see running on your local box:<\/p>\n<p><em>http:\/\/localhost\/~jeff\/projects\/wordpress\/radio-station<\/em><\/p>\n<p>But once I started playing with these, I decided it was MUCH easier  to be able to deal with these super-short urls (think Bit.ly for your  local box) than to have to type in the whole thing.\u00a0 It&#8217;s made my life a  lot simpler, so I figured I&#8217;d pass along the info.<\/p>\n<p>Note that when you choose a host name, you&#8217;ll want to choose one that  doesn&#8217;t exist on the web.\u00a0 You&#8217;re basically overriding your machine&#8217;s  host lookup functionality &#8212; hard coding urls to corresponding locations  on your local disk &#8212; and thereby bypassing DNS lookup.\u00a0 So if you  pathed http:\/\/www.google.com to your local disk, your computer wouldn&#8217;t  be able to find the real google until you undid the Virtual host.\u00a0 So be  careful.<\/p>\n<p>I typically choose a hostname that includes the suffix .local.\u00a0  That&#8217;s never given me any problems (eg. projects.local, flash.local,  radio.local).<\/p>\n<p>Let&#8217;s begin.<\/p>\n<p>You&#8217;ll be dealing with 3 files on this:<\/p>\n<ul>\n<li>httpd.conf<\/li>\n<li>httpd-vhosts.conf<\/li>\n<li>hosts<\/li>\n<\/ul>\n<p>Which, if you followed the steps above, are located at:<\/p>\n<ul>\n<li>\/opt\/local\/apache2\/conf\/httpd.conf<\/li>\n<li>\/opt\/local\/apache2\/conf\/extra\/httpd-vhosts.conf<\/li>\n<li>\/private\/etc\/hosts<\/li>\n<\/ul>\n<p><strong>a. Enable Apache&#8217;s Virtual Host configuration<\/strong><\/p>\n<p>in httpd.conf, uncomment the Virtual Hosts line:<\/p>\n<blockquote><p><code>Include conf\/extra\/httpd-vhosts.conf<\/code><\/p><\/blockquote>\n<p>This will allow you to add hosts to your vhosts configuration file.<\/p>\n<p><strong>b. Add host locations<\/strong><\/p>\n<p>open the vhosts file in your favorite text editor:<\/p>\n<blockquote><p><code>\/opt\/local\/apache2\/conf\/extra\/httpd-vhosts.conf<\/code><\/p><\/blockquote>\n<p>The first thing you&#8217;ll want to do here is comment out the default examples they give you (the ones that include <em>ServerAdmin webmaster@dummy-host.example.com<\/em>).\u00a0 You might want them as a reference, but you don&#8217;t want them to be active.\u00a0 Comment them out.<\/p>\n<p>Next you&#8217;ll add your host.\u00a0 Substitute in values below to correspond to your build and the hostname you choose:<\/p>\n<blockquote><p><code>&lt;VirtualHost *:80&gt;<\/code><\/p>\n<p><code>DocumentRoot \"\/Users\/USERNAME\/PATH\"<\/code><\/p>\n<p><code>ServerName hostname.suffix<\/code><\/p>\n<p><code> <\/code><code>&lt;\/VirtualHost&gt;<\/code><\/p><\/blockquote>\n<p>Typically life is easier if you choose a disk path inside of your  Sites directory.\u00a0 If you don&#8217;t you might need to do some more file  permission configuration.<\/p>\n<p>In my case, the host I added is:<\/p>\n<blockquote><p><code>&lt;VirtualHost *:80&gt;<\/code><\/p>\n<p><code>DocumentRoot \"\/Users\/jeff\/Sites\/projects\"<\/code><\/p>\n<p><code>ServerName projects.local<\/code><\/p>\n<p><code> <\/code><code>&lt;\/VirtualHost&gt;<\/code><\/p><\/blockquote>\n<p>So now Apache knows that when it&#8217;s told to serve any files referenced  by the url projects.local, it&#8217;ll serve them from the path I&#8217;ve given it  in my Sites directory.\u00a0 There are other arguments you can add to the  VirtualHost node, but this is all you need.<\/p>\n<p><strong>c. Add host names to your hosts file<\/strong><\/p>\n<p>Next you need to tell the machine that when you ask for that  particular server name, you want it to ask the local Apache server to  serve it.\u00a0 Editing this file is globally applicable to all browser  applications &#8212; so once you edit this file, programs like Firefox,  Safari, Opera, etc will all serve up your local page instead of looking  the url up with the friendly neighborhood DNS.<\/p>\n<p>Your machine already does this to a certain extent &#8212; for example,  the &#8216;localhost&#8217; prefix is already set up via the hosts file so that the  machine knows to look to the local Apache server, rather than out on the  web.\u00a0 What we&#8217;re doing is adding one or many shortcuts that mimic this  behavior &#8212; but which point to more specific locations on disk.<\/p>\n<p>Open your hosts file:<\/p>\n<blockquote><p><code>\/private\/etc\/hosts<\/code><\/p><\/blockquote>\n<p>and add the line:<\/p>\n<blockquote><p><code>127.0.0.1 \u00a0\u00a0\u00a0 hostname.suffix<\/code><\/p><\/blockquote>\n<p>(so in my case I added):<\/p>\n<blockquote><p><code>127.0.0.1 \u00a0\u00a0\u00a0 projects.local<\/code><\/p><\/blockquote>\n<p>then save the file.<\/p>\n<p><strong>d. Restart Apache<\/strong><\/p>\n<p>Go back to the terminal and restart apache:<\/p>\n<blockquote><p><code>sudo apachectl restart<\/code><\/p><\/blockquote>\n<p>Now you should be all set.\u00a0 Open up your browser and point it towards the virtual host you just made. In our case that&#8217;s:<\/p>\n<p><em>http:\/\/projects.local<\/em><\/p>\n<p>And your browser should serve up that url like magic. ;)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is an update to an earlier post I submitted about how to set up a web dev environment on Leopard.\u00a0 A few things have changed from Leopard to Snow Leopard (namely switching to 64 bit code) so it makes sense to refresh this guide.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[27,5],"tags":[402,472,471,474,404,403,473],"class_list":["post-1177","post","type-post","status-publish","format-standard","hentry","category-computers","category-general-nerdiness","tag-apache","tag-git","tag-macosx-10-6","tag-macports","tag-mysql","tag-php","tag-subversion"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/jeffclarke.us\/blog\/wp-json\/wp\/v2\/posts\/1177","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/jeffclarke.us\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/jeffclarke.us\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/jeffclarke.us\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/jeffclarke.us\/blog\/wp-json\/wp\/v2\/comments?post=1177"}],"version-history":[{"count":20,"href":"http:\/\/jeffclarke.us\/blog\/wp-json\/wp\/v2\/posts\/1177\/revisions"}],"predecessor-version":[{"id":1179,"href":"http:\/\/jeffclarke.us\/blog\/wp-json\/wp\/v2\/posts\/1177\/revisions\/1179"}],"wp:attachment":[{"href":"http:\/\/jeffclarke.us\/blog\/wp-json\/wp\/v2\/media?parent=1177"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/jeffclarke.us\/blog\/wp-json\/wp\/v2\/categories?post=1177"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/jeffclarke.us\/blog\/wp-json\/wp\/v2\/tags?post=1177"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}