Remove or add www to URL using Apache mod_rewrite

To avoid a website being considered as "duplicate content" by Google (i.e. the same website appearing under different URLs) it is a good idea to make sure the website doesnt appear as both http://www.example.com and http://example.com. This can be achieved by using the mod_rewrite in Apache using the .htaccess file.

To remove "www" from the URL, i.e. the website’s URL should be http://example.com, your .htaccess should look like this: 

RewriteEngine On
RewriteCond %{HTTP_HOST} !^example\.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

If you instead want to make sure "www" is added, i.e. the website’s URL should be http://www.example.com, your .htaccess should look like this: 

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

 

postfix only listens on localhost (127.0.0.1)

On a newly installed VPS (Parallells Virtuozzo) running Ubuntu 12.04 LTS I also installed postfix as my MTA. However, it turned out that it only listened on localhost. I checked that "inet_interfaces = all" in main.cf and that my /etc/hosts was up to date with my server’s hostname. The reason was that the machine had sendmail preinstalled and running.

A netstat -an gives: 

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN

To the solution to this is: 

sudo /etc/init.d/sendmail stop
sudo update-rc.d -f sendmail remove
sudo /etc/init.d/postfix restart

Now netstat -anp show that postfix listens to all interfaces: 

tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 691/master

 

Avoiding a SSH client connection to timeout

If you’re behind a firewall you sometimes run into a problem where the SSH client connection times out after a period of time (typically when going out for lunch leaving your SSH sessions logged in). The easiest way to solve this is by changing the configuration of the SSH client (it can also be fixed through the server config but since the problem often relates to the firewall protecting the client it is a better solution to fix this in the client). 

Just edit the file ./ssh/config and add the lines: 

Host *
ServerAliveInterval 30

The above assumes the firewall drops inactive connections at an interval > 30 seconds. 

 

How to make a floppy file image and mounting it in Linux

To make a file image of a floppy disk in Linux (like Ubuntu), you need (of course) a computer with a floppy drive (/dev/fd0). Insert the floppy you want to copy to an image file and issue the command:

$ sudo dd bs=512 count=2880 if=/dev/fd0 of=floppy.img 

Block size (bs) and count above is for a 1,44 MB 3.5" floppy disk.

The image file can be copied back to another floppy disk with the command: 

$ sudo dd bs=512 count=2880 if=floppy.img of=/dev/fd0

The image file can also be mounted directly from the image file without the need of a physical floppy disk: 

$ sudo mkdir /media/fd
$ sudo mount -o loop floppy.img /media/fd/

I use the above method to move the content from a number of floppy disks to my hard drives. Computers today are rarely seen with a floppy drive and I wanted to secure the content before it is too late 🙂 

 

HP Compaq 6910p builtin 3G modem driver for Ubuntu

From Ubuntu 11.04 and onward there is no need for a driver to use the builtin 3G (WWAN) modem in the HP Compaq 6910p laptop computer. But by default the modem is soft blocked even though the radio lamp is on. The rfkill utility can be used to enable it:

$ rfkill list
0: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
1: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
2: hp-wifi: Wireless LAN
Soft blocked: no
Hard blocked: no
3: hp-bluetooth: Bluetooth
Soft blocked: no
Hard blocked: no
4: hp-wwan: Wireless WAN
Soft blocked: yes
Hard blocked: no

Enable it with rfkill unblock 4

$ rfkill unblock 4
$ rfkill list
0: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
1: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
2: hp-wifi: Wireless LAN
Soft blocked: no
Hard blocked: no
3: hp-bluetooth: Bluetooth
Soft blocked: no
Hard blocked: no
4: hp-wwan: Wireless WAN
Soft blocked: no
Hard blocked: no

Now click on the network manager icon in the top right bar of the screen and Activate mobile broadband and off you go!

Improving Firefox performance on ASUS EeePC 900

I’ve noticed that a bottleneck in Firefox performance on the ASUS EeePC 900 is writing and reading to the disk cache. It is often I wait for something on a page and I notice that the hard disk light is on indicating read/write.

One way of drastically improving the performance is to move the cache to a ramdisk as the built in flash disk in the EeePC is not the quickest one on the block. This way you might also prolong the life of the flash disk as you decrease the number of read/writes to it. The only drawback with this is that you will loose the cache content between reboots, but I don’t think that is a problem. If you have extended your machine’s ram to 2 GB (se another post about that), you have memory to spend for this, but it will probably work on 1 GB machines too.

If you are running EasyPeasy (probably in other distros too) you already have a ramdisk. Check by starting a terminal and enter the df command. If you see "/dev/shm" you have a ramdisk. Otherwise, you first need to create one (Google might be your friend in this case).

  1. Start Firefox and in the URL-bar, type about:config and press enter. Click yes on the warning about this being very dangerous.
  2. Find the key browser.cache.disk.parent_directory and right click to select Modify. If the key is not present, you right click in the list, select New -> String and type browser.cache.disk.parent_directory
  3. As the value for the key, enter /dev/shm
  4. Pull down the Edit menu and click on Settings
  5. Click on Advanced and select the Network tab
  6. Select the Override automatic cache handling and limit the cache size to for example 100 MB (so the cache won’t eat all your ramdisk).
  7. Close all Firefox and restart it.

In my case, this drastically improved the Firefox performance. 

Copy large amounts of data between servers

There are several methods of moving data between servers in a UNIX/Linux/BSD environment, for example scp, ftp, SMB-shares, NFS-shares or rsync. My experience is that using netcat is one of the faster methods if you have large amount of data to copy.

On the receiving server:

cd /  (or the base directory under which you want to recieve the data)
nc -l 1234 | tar -zxvf -

This will make netcat listen on port 1234 (don’t forget to open the port in the firewall and/or iptables).

On the transmitting server:

tar -zcvf - /data/ | nc -q 1 targethostname 1234  (replace /data/ with the folder you want to copy and targethostname with the hostname or IP-address of the receiving server)

If you have more bandwidth than computing power (i.e. a slow machine) you might want to consider to leave out the "z" in the tar commands on both sides and transfer the data uncompressed.

If you need to move data between physical locations – never underestimate the bandwith of a car loaded with harddisks (quote from a former collegue :)).

 

Ubuntu boot hangs with black screen and blinking cursor

If this happens, check your BIOS setup device boot order. It is possible that some device has been listed before your real boot device.

In my case, my boot SSD drives had been moved below ALL PCI SCSI and there are other drives in the machine which are not bootable causing this problem for me.

 

BIOS setup device boot order

BIOS setup device boot order

Ubuntu boot hangs with black screen after GRUB

It might actually not be hanged, but instead but you might have been kicked into an initramfs shell but it is not displaying on the screen. 

Try to boot in recovery mode or boot on a install CD or USB stick in rescue mode. Edit /etc/default/grub: 

vi /etc/default/grub

Set the following: 

GRUB_TERMINAL=console
GRUB_GFXPAYLOAD_LINUX=text 

If the GRUB timeout is very short it might be a good idea to set it a bit higher so you have a chance to make a selection: 

GRUB_TIMEOUT=10

Save and then execute: 

update-grub

Then reboot the machine and now you may see the emergency shell you are kicked into. Now you can investigate your boot problems further.