Archive for the 'Linux' Category


Managing DNS and the hosts file on your Mac OS X system

Subtitle: Working with /etc/hosts and lookupd for Mac OS X

If you are a developer looking to test web sites on your Mac or maybe you have different DNS for different locations (office, home, client, airport, etc…), you may need to temporarily override the authoratative DNS for a host.


First, open up the /etc/hosts file as root. In a Terminal (Applications > Utilities > Terminal) …

% sudo vi /etc/hosts

Then go to to the bottom of the file and make an entry. The format is IP, followed by whitespace (tabs are nice) and then a list of space-separated domains. Don’t forget the “www” version if you need it.

# IP Address  Host

Then, voila, your computer will think that site is found at the IP you specified.

What? Didn’t work? You need to clear your DNS cache:

(For Mac OS 10.4 …)

% lookupd -flushcache

Later, when you’re done fooling your machine, do the same thing again and just comment out or delete your

(For Mac OS 10.5 …)

% dscacheutil -flushcache

entry and flush your DNS again.


Open Season for Open Source

A recession is no time to pay through the nose for software. So in these tough economic times, with proprietary software vendors increasing the licensing fees and locking in their customers, open source is king.

The idea behind open source is simple: find a relevant solution that already exists, use that as a starting point and customize from there. After all, most of what you’re looking for (e-commerce, CRM, content management, social networking, blogging) has already been done. Thousands. Of. Times.

But the strength of open source is also a challenge—in an infinite sea of alternatives, how do you find what you’re looking for?

That’s where an open source guru like Caxy comes in. We’ve vetted hundreds of options, learning firsthand which ones work and which don’t. So when a client comes to us with just about any request—the latest content management interface, for example, or a more flexible e-commerce system—we instantly pull up the top 1% of open source material and go from there.

Here’s an example. One of our University clients needed websites for each of its four locations, but only budgeted for two. So we found the open source software that best matched what they needed (with features like photo galleries, updatable calendar and contact forms) and developed one site for them. When they signed off on that, we took that same system—sans licensing fees—and duplicated it to create the other three sites. We could have done 30 more sites, with barely a change in the cost of implementing the software.

But back to the economy. The last time things took a downturn (2001-02), Linux established itself as a widely-accepted enterprise operating system, and vendors who got on board early reaped the benefits. This time around there’s a bigger focus on databases and higher-level software apps, but the principle is the same: don’t start from scratch. Depending on the scope of your project, a head start can mean real savings. Sure, saving $10k on a million dollar job isn’t a big deal, but saving $10k on a $50k is a real dent.

So if you’re on a project that’s not a brand new, earth-shattering, clouds-parting genesis of a concept, find yourself an open source specialist whose budget goes to customizing, not software. We happen to know a good place to start.

Caxy is a custom development shop specializing in open source technology, notably interactive PHP and Flash. Founded in 1999 on the mean streets of Chicago, our master coding ninjas are currently conquering CodeIgniter, Drupal, Wordpress, ExpressionEngine, SugarCRM, jQuery, prototype & more.

Rackspace is proud to name Caxy VIP Partner of the Month for December.


Setting up PEAR on a Linux web server (CentOS)

Installing pear lets you take advantages of some really interesting way to extend PHP. This should be a fairly simple install, so we hope this helps.

First shell into your machine. This is a personal preference, but if you don’t have an “installs” directory, your home directory can get messy. Let’s cd into it.

% cd installs

Now get the pear code:

% wget

What? No wget? Install wget and come back.

The following is at the top of the file that wget just downloaded, but they don’t seem to mention it, so we will. Just run this file as a php script from the command line.

% php -q go-pear

The only thing you need to change is the install path. The default is where you are now. Use /usr/local.

For some reason the default looks like this:

Below is a suggested file layout for your new PEAR installation.  To
change individual locations, type the number in front of the
directory.  Type 'all' to change all of them or simply press Enter to
accept these locations.

1. Installation prefix ($prefix) : /Users/mlavista
2. Temporary files directory     : $prefix/temp
3. Binaries directory            : $prefix/bin
4. PHP code directory ($php_dir) : $prefix/PEAR
5. Documentation base directory  : $php_dir/docs
6. Data base directory           : $php_dir/data
7. Tests base directory          : $php_dir/tests

1-7, 'all' or Enter to continue:

Type “1″ to change the path. Go with /usr/local/ and hit enter

The rest is all defaults and let it install.

To test, when you’re done check to see if it’s in your path:

% which pear

You should be all set. To install something

% pear install NAME_OF_MODULE

Getting authorized_keys to work | Logging in without a password in Linux

So many of the posts out there about this seem to leave us hanging. This post outlines how to log in to Linux without a password and addresses some of the gotchas that seem to creep up along the way. We manage enough servers that it’s nice to be able to get in and around quickly.

I’ll try to outline the way to do it and then address some of the gotchas that come up.

Make yourself a private key on the machine you’ll be coming *from*. This is how to do it using a Mac or Linux. Windows people, I wish you luck with something like cygwin or using your SSH program to do this. If you’re using Linux servers, maybe you can do this on the main machine you log in to, then go from there as your “home base.”

Open up your shell.

% ssh-keygen -t rsa

Just hit enter for the passphrase (that kind of defeats the purpose of what we’re doing). The default is to put the file it makes in your $HOME directory. (echo $HOME). For this example, I’m assuming that’s what you did.

If it didn’t exist already, this will have created a directory called .ssh in your home directory and created 2 files inside it:

-rw-------   1 myuser  myuser   1671 May 24  2007 id_rsa
-rw-r--r--   1 myuser  myuser    400 May 24  2007

You need to copy the contents of the to your clipboard.

% cat

Copy it. It should looks something like this (not my actual key, of course)

ssh-rsa kjakjhasdhjfjkahsgdfhjkgasdjkhgfajkshdgfhjags834yg
fhgasdcvjhasgdfjhkqg34jhkqgwejkhfgaskjhdgfkjhasgdfkjhagsd== myuser@Zap.local

Now ssh to the machine you want to log in to automatically.

% ssh

Enter your password as normal. Once logged in, let’s check to see if you have an ssh directory.

% ls -la

If you see .ssh, cd into it. Otherwise mkdir .ssh and cd into it. Now we just need to add your key to your authorized_keys file. This next command will either add to what you have already or create it if it doesn’t exist.

% cat >> authorized_keys

Now paste the key you copied above. Hit enter to get to a new line and then Ctrl-D to stop editing.

To make sure that there aren’t any issues with permissions, make sure that only this user can read the file.

% chmod 600 authorized_keys

Now let’s make sure that this directory has similar permissions. Go back up a directory and fix the permissions

% cd ../
% chmod 700 .ssh

That should do it. Try opening up a new shell window and log in.

% ssh

That should get you in without having to enter a password.

Extra credit: I think it’s helpful to make sure you have hosts mapped in your /etc/hosts file (Mac / Linux) if the IP or host you’re using doesn’t have a convenient name for you. Windows XP users, this is conveniently located in your c:\Windows\system32\drivers\etc\hosts file. Of course, other systems vary.

In that file, just make an entry like this          server5

And save it. On a Linux system you may need to restart the network to have it take effect.

% /etc/rc.d/init.d/network restart

Now you can just ssh to the name

% ssh server5

Need to troubleshoot? See what /var/log/secure says about it.