(Re)discover new LUN in linux without rebooting

Note to self… Has 1 disk (/dev/sda) and want to “find” newly added disk (/dev/sdb) without reboot:

echo 'scsi add-single-device 0 0 1 0' > /proc/scsi/scsi

The first “0” is the controller, next “0” is the SCSI channel, the “1” is the target ID, and the last “0” the H-LUN.

After repartitioning with fdisk, the kernel remembers the old partition table, so remove the device and add it again to refresh it:

echo 'scsi remove-single-device 0 0 1 0' > /proc/scsi/scsi
echo 'scsi add-single-device 0 0 1 0' > /proc/scsi/scsi

Sigh. Linux is simply better than Windows… (?)

I gave up developing for android with titanium on a windows7 virtual machine in virtualbox on CentOS5.

Decided to go with a native linux development environment. (of course!). How could I have been so stupid to even consider Windows in the first place? I have no idea. Temporary confusion, perhaps. Anyhow…

As much as I hate binary distributions and Debian’s geeky I-know-whats-best-for-you-but-I-pretend-I-give-you-total-control-and-freedom philosophy which often makes more harm than good; I still do my Android development on a Binary Linux Distribution: Ubuntu 11.04 Natty Narwahl.

Why?

Well, when using third-party linux binaries in a binary distribution, you are pretty much dancing by their command. If they ship a binary that was linked against a very new glibc and libstdc++, which they often are, and were in the case of Titanium Developer (is a piece of junk, I hate it more and more each day), you have to have a binary distribution that matches that version. In case of Titanium Developer, CentOS5.6 is too old. You have to use a recent Fedora or Ubuntu to get the libraries you need. CentOS and all other RPM-based binary distributions will simply break (of course) if you try to force in a libc from another distro, or even build your own, as no utilities are linked against it.

I’m still “new” to ubuntu. Still preferring Gentoo, but I’m at work, and I can’t have too much downtime on my workstation, so I left CentOS for Ubuntu, simply because I need something that just works. (I have Windows on my Laptop, for Outlook and Excel).

Sigh. I miss Gentoo, but Ubuntu will do, I’m sure.

Howto enable Permalinks in WordPress on LAMP

In my last post about setting up WordPress on a LAMP, I omitted how to successfully enable permalinks, something you of course want to have on your blog.

Permalinks in WordPress is a way to have pretty URL:s to your posts to make it easy to link directly to them, and give them a human-readable format.

For it to work in a LAMP environment, you need to have mod_rewrite enabled in apache, and the tricky part when it comes to WordPress, is to enable mod_rewrite on the directory where your blog resides.

Most linux distros default to rather sane settings, and typically have something like this in them:

    <Directory "/var/www/html">
        Options FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>

that means (if /var/www/html is your DocumentRoot), that WordPress’ way of using .htaccess to control the rewriting with mod_rewrite, will not work as intended (due to the AllowOverride None directive).

The fix is easy. Just add something like this to your apache config:

<Directory "/var/www/html/wordpress">
    AllowOverride All
</Directory>

And you’ll be all set! (replace /var/www/html/wordpress above with the directory where you have wordpress installed. The same directory where wordpress created the .htaccess file when you enabled permalinks)

Step-by-step guide to set up wordpress on an existing LAMP system

0. If you get permission denied on the shell commands, try prefixing them with “sudo ”

1. Log in as root in mysql:

lamp$ mysql -u root -p

2. Create a database and MySQL user dedicated to wordpress:

mysql> CREATE DATABASE blogdb CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER 'blogger'@'localhost' IDENTIFIED BY 'b1ogpw';
Query OK, 0 rows affected (0.05 sec)

mysql> GRANT ALL PRIVILEGES ON blogdb.* TO 'blogger'@'localhost';
Query OK, 0 rows affected (0.63 sec)

3. download and unpack wordpress into a directory served by apache:

lamp$ cd /var/www/html
lamp$ wget http://wordpress.org/latest.tar.gz
lamp$ tar zxf latest.tar.gz
lamp$ rm latest.tar.gz
lamp$ cd wordpress

4. configure wordpress with the database details and secret keys (edit all occurrences of the word “here”). Use the online generator to get good values for the secret keys:

lamp$ vi wp-config-sample.php
lamp$ mv wp-config-sample.php wp-config.php

5. run the wordpress installation script from a web browser. The URL will be like this:

http://your-lamp/wordpress/wp-admin/install.php

6. Add the name for your blog, a user name (admin), password, your email address, and click the “Install WordPress” button att the bottom.

7. Done! Now log in, delete the sample post and sample page, and start customising your wordpress site.

Good luck!