Apache VirtualHost on Ubuntu

Here’s a quickie tutorial on how to add Virtual Hosts to Apache on Ubuntu. This tutorial assumes that you have a basic understanding of Apache configuration and that your Apache is installed and able to serve websites.

  1. cd /etc/apache2/sites-available
  2. sudo vim yourdomain.com.conf and enter your VirtualHost directive. Below I’ve put the most basic example, see Apache docs for details and additional features:
    <VirtualHost *>
      ServerName yourdomain.com
      DocumentRoot /home/youruser/public_html
    </VirtualHost>

    Save & exit.
  3. sudo vim /etc/hosts and add your new domain to the 127.0.0.1 localhost line so it looks like this:
    127.0.0.1 localhost yourdomain.com
    Save & exit.
  4. Enable your new virtualhost:
    sudo a2ensite yourdomain.com.conf
  5. Reload the Apache configuration:
    sudo /etc/init.d/apache2 reload

That’s it! Repeat for each of your VirtualHosts.

—————-
Now playing: Alèmayèhu Eshèté – Tchero Adari Nègn
via FoxyTunes

Installing Ubuntu Server on a Dell Inspiron 530

I recently purchased a cheapie Dell Inspiron 530 to use as a new local devbox with the intent of installing Fedora 7 on it (the machine came with Ubuntu Desktop pre-installed). Foolish me, I just assumed that if Ubuntu was compatible with the hardware, then Fedora surely would be as well. WRONG. Fedora was unable to detect/install both the SATA controller and the integrated ethernet port. After a few hours trying to get Fedora to install, I decided to give up and give Ubuntu Server a try. Of course it wasn’t easy, so here are some of my notes in getting Ubuntu Server installed onto the Dell Inspiron 530.

I wanted to keep it simple so I just installed all of the defaults presented by the installer, including the LAMP package. Everything installed fine, however, the Integrated Network card was not detected/installed, so here’s how to get it up and running by compiling and installing the driver.

  1. First we need to install some prerequisites that are required in order to compile the driver. Make sure your Ubuntu Server CD is in the CD drive and run the following:
    sudo apt-get install linux-headers-2.6.20-15-server
    sudo apt-get install gcc
  2. Download the ethernet driver from Intel. The one I used is e1000-7.6.5.tar.gz. If you can’t find it at Intel, just Google the filename and I’m sure you’ll be able to find it somewhere.
  3. Burn the driver to a CD, mount it on your Ubuntu machine, and copy it to a local dir:
    sudo mkdir /mnt/cdrom
    sudo mount /dev/cdrom /mnt/cdrom
    sudo cp /mnt/cdrom/e1000-7.6.5.tar.gz /usr/src
  4. Compile and install the driver:
    cd /usr/src
    tar xfvz e1000-7.6.5.tar.gz
    cd e1000-7.6.5/src
    sudo make install
    sudo modprobe e1000
  5. Now configure your network card:
    sudo vim /etc/network/interfaces and your file should look like this (substitute your IP of choice):
    # This file describes the network interfaces available on your system
    # and how to activate them. For more information, see interfaces(5).
     
    # The loopback network interface
    auto lo
    iface lo inet loopback
     
    # This is a list of hotpluggable network interfaces.
    # They will be activated automatically by the hotplug subsystem.
    mapping hotplug
    script grep
    map eth0
     
    # The primary network interface
    auto eth0
    iface eth0 inet static
    address 192.168.1.66
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
  6. Setup your DNS servers:
    sudo vim /etc/resolv.conf and it should look like this (I am using OpenDNS here but you can substitute your own):
    nameserver 208.67.222.222
    nameserver 208.67.220.220
  7. Restart the network:
    sudo /etc/init.d/networking restart
  8. Upgrade your system for good measure:
    sudo apt-get upgrade

That should be enough to get your Ubuntu Server up and running on the Dell Inspiron 530 with full network connectivity. Once you’re up and running, here are some other tweaks I did, although some of these may be personal preference.

  1. I don’t like Ubuntu’s sudo setup (I prefer log in in as root when needed). Out of the box the root account is disabled and your default account is given admin rights to run commands via sudo. To get around this, simply reset root’s password:
    sudo passwd root
    Now you will be able to su - and log in as root directly.
  2. Install SSH
    sudo apt-get install ssh
  3. Disable root login to SSH:
    sudo vim /etc/ssh/sshd_config and set the following:
    PermitRootLogin no
  4. Change the MySQL root password:
    mysqladmin -u root password "newpassword"
  5. Enable Apache’s mod_rewrite:
    sudo a2enmod rewrite
    sudo /etc/init.d/apache2 force-reload
  6. Install some other useful goodies:
    sudo apt-get install vim
    sudo apt-get install php5-mcrypt
    sudo apt-get install php5-curl
    sudo apt-get install php5-gd
    sudo apt-get install php-pear
    sudo pear upgrade-all
    sudo pear install mdb2
    sudo pear install pear/MDB2#mysqli

—————-
Now playing: Apparat – Steinholz (Monolake Remix)
via FoxyTunes

Trillian: AIM Error Code: 10054

After a recent automatic update of Trillian, I was unable to connect to AIM. The console stated:

Error Code: 10054

After searching around and trying a bunch of things, I was unable to re-connect until I found the following in the Trillian Technical Support Forum:

  1. Click Trillian > Connections > Manage My Connections.
  2. Select your AIM account, click Change button.
  3. Under the Connection tab in the Server section, click Reset, then Save Settings.
  4. Click Trillian > Trillian Preferences > Plugins.
  5. Disable AIM & ICQ by unchecking it.
  6. Re-enable AIM & ICQ by checking it.
  7. Click Close.
  8. Click Trillian > Connections > Global Reconnect.

This worked for me and I was able to connect to AIM once again.

PHP & imagettftext with Webcore TrueType fonts.

If you’re trying to write some text using PHP/GD & the imagettftext() function, you will of course need some TrueType fonts to work with. I’ve found a great set of fonts available for free: Webcore. Webcore contains all the fonts web designers constantly use, things like Arial, Tahoma, Verdana, Georgia, etc..

To install, simply download to your server and install the RPM (Fedora):
shell> wget http://avi.alkalay.net/software/webcore-fonts/webcore-fonts-3.0-1.noarch.rpm
shell> rpm -i webcore-fonts-3.0-1.noarch.rpm

These fonts will now be available to you in /usr/share/fonts/webcore/.

Make sure you specify the full path when calling imagettftext(), eg:
<?php
 
// Set the content-type
header("Content-type: image/png");
 
// Replace path by your own font path
$font = '/usr/share/fonts/webcore/arial.ttf';
 
// Create the image
$im = imagecreatetruecolor(400, 30);
 
// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);
 
// The text to draw
$text = 'Hello world!';
 
// Add some text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);
 
// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);
?>

Your mileage may vary if you are using a different distribution, but the docs state that this RPM should work on other distros.

iPhone haters: Quit calculating Total Cost of Ownership (TCO)

One argument I see people using against the iPhone is the cost. Granted, $499-$599 is a bit pricey, but what really gets me angry is when people use the flawed argument that the total cost of owning an iPhone is “$2,600-$3,200” if you factor in the cost of the service contract. While that may be true, so what? Lets use some analogies:

  • That new car you bought wasn’t $20,000, it was $200,000. You forgot to factor in the cost of fuel and insurance over the life of the car!
  • That new computer you bought wasn’t $999, it was $10,000. You forgot to factor in the price of your ISP and electrical bills!
  • That new flat-screen TV you just bought wasn’t $1,200, it was $8,000. You forgot to factor in the price of your cable box and service over the next 2 years!
  • You really should stop drinking beer, it’ll cost you $5,000 over the next couple years!

See how ridiculous those arguments sound? Arguing that the iPhone will cost $3k is just as ridiculous. While the claim may be true, no one truly considers ancillary costs when making a purchase like this. It’s a disingenuous and dishonest argument used by people who are trying to find fault with this wonderful new device.

Not to mention the fact that no one is producing similar costs for rival phones in their arguments. I wonder what the TCO for a Crackberry is? I’d like to see that number compared to the iPhone’s. Maybe then we can start a decent dialogue about the iPhone vs. its rivals when it comes to cost.

Helpful World of Warcraft Macros: Priest

Below you will find a collection of my favorite Priest macros for World of Warcraft. You may want to adjust the strings or ranks of spells to your liking. Some of these may look messy because they’ve been condensed to fit into the 255 character limit.

Resurrection

This will send a message to your /raid, /party, or /say channel when you are resurrecting a dead comrade:
#showtooltip Resurrection
/run if GetNumRaidMembers()>0 then chan="RAID" elseif GetNumPartyMembers()>0 then chan="PARTY" else chan="SAY" end
/run SendChatMessage(">>> Rezzing "..UnitName("target").." <<<",chan)
/cast Resurrection

Shackle Undead

This macro will first shackle your current target and set that target to be your focus target. This will allow you to reshackle a mob without having to retarget it. Right or shift clicking will allow you to shackle your current target. The macro will also interupt any spells currently being cast when triggered. It also will yell out what you are shackling so that party members won’t break your shackles. (Taken from Wowwiki)
#showtooltip Shackle Undead
/stopcasting
/clearfocus [button:2] [target=focus,dead] [target=focus,noexists]
/focus [target=focus,noexists]
/stopmacro [target=focus,noharm]
/yell >>> SHACKLING %f <<<
/cast [target=focus] Shackle Undead