PHP4 and PHP5 per VirtualHost on the same Apache 2 webserver

I assume you have a working Apache 2 installation with PHP4 modules installed, if not run the following and you will have:


sudo apt-get install apache2 apache2-mod-php4

Note: you can also have PHP5 installed as module and PHP4 as CGI, everything works the same way with swapping the versions in commands.

First of all you will need the php5-cgi package, and enable the Actions module:


sudo apt-get install php5-cgi
a2enmod actions

Add a ScriptAlias directive to your apache2.conf - if you have not done this already - like this:


ScriptAlias /cgi-bin /cgi-bin

Now create the /cgi-bin directory and symlink the php5-cgi binary to /cgi-bin/php5-cgi:


mkdir /cgi-bin
ln -s /usr/bin/php5-cgi /cgi-bin/php5-cgi

Finally in every VirtualHost where you need PHP5 support put these lines:


AddHandler php5-script .php
Action php5-script /cgi-bin/php5-cgi

All you have to do is restart the apache to take changes effect and you’re done.

Posted in: Uncategorized by kakaopor 1 Comment , , , , ,

I have forgot the password of MySQL’s admin user – how to recover?

If you have accidentaly locked out yourself, or just forgot your password for the admin (root) user of the MySQL, here is a quick-and-dirty solution.

First you have to shut down the MySQL server, next you need to start it in safe mode with no priviliges table loaded, update the password to a new one, and restart the database server just as before.

Step by step

  1. Stop the database server:
    $ sudo /etc/init.d/mysql stop
    Stopping MySQL database server: mysqld.
  2. Start in safe mode in the background (remember the PID! (29789 in my case as you can see)):
    $ sudo mysqld_safe --skip-grant-tables &
    [1] 29752
    Starting mysqld daemon with databases from /var/lib/mysql
    mysqld_safe[29789]: started
  3. Now you can log in with the root user without password.
    $ mysql -u root
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 39
    Server version: 5.0.51a-6 (Debian)

    Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

  4. Set a new password, flush the privileges, and quit:
    mysql> UPDATE mysql.user SET password=PASSWORD('your-new-password') WHERE User='root';
    Query OK, 0 rows affected (0.00 sec)
    Rows matched: 3 Changed: 3 Warnings: 0

    mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.00 sec)

    mysql> QUIT
    Bye

  5. Now shut down the mysqld_safe what you have used (kill its PID):
    $ sudo kill 29752
    STOPPING server from pid file /var/run/mysqld/mysqld.pid
    mysqld_safe[29869]: ended
    [1]+ Done sudo mysqld_safe --skip-grant-tables
  6. And you can start your mysql server normally again:
    $ sudo /etc/init.d/mysql start
    Starting MySQL database server: mysqld.


Original source is the Locked Out of MySQL topic on CentOS.org.

Posted in: Uncategorized by kakaopor No Comments , , ,

early-ssh updated to v0.2 (for Debian as well:)

I have updated the early-ssh to version 0.2. This includes just a few bugfixes and new features, including scp support.

You can download the new version from http://dev.kakaopor.hu/early-ssh/

Posted in: Uncategorized by kakaopor 3 Comments , ,

How to unlock crypto root partition in Debian Linux over SSH (and more)

Early-ssh is a simple initramfs-tools hook script which provides an SSH server at boottime (in the initramfs) before the root filesystem gets mounted, so you will be able to do a numerous things, such as:

  • unlocking crypto devices – even your root can be an encrypted filesystem
  • assembling/altering mdadm RAID arrays
  • checking the root filesystem in read-write mode, taking action in case of errors
  • and so on… (if you have anything you wish to see here, please share it in a comment)

You can download the source code, and debian package here:
http://dev.kakaopor.hu/early-ssh/

Posted in: Uncategorized by kakaopor 3 Comments , ,

Minimal things needed for SSH login on Debian Linux

I was unable to find a place where all these things are collected, so I have decided I will write it down here.

So I am currently working on a little project where I need to have SSH access during the boot (on the initrd system). The following things are needed to create a working – as far as I know – minimal SSH server:

  • ifconfig – to configure the network interface
  • route – to configure the routing
  • Dropbear SSH server – a very small, and fully functional SSH server, client, keygen
  • /etc/login.defs
  • /etc/passwd, /etc/shadow, /etc/groups – for the authentication
  • /lib/libnss_files* – for the authentication processing
  • /etc/nsswitch.conf with the following content:

    passwd: files
    group: files
    shadow: files
  • /dev/pts – with devpts mounted (mount -t devpts none /dev/pts) for the terminals

On some systems the Dropbear needs a “better entropy device” than /dev/random, so we should symlink /dev/urandom to /dev/random.

And that’s all, everything should be fine now, and should run. I think I will write an another post with the whole “early ssh” thing soon, but I still need testing, and have to clean up my code somewhat.

Posted in: Uncategorized by kakaopor 1 Comment , ,

How to repair an SQLite database

Today I have faced with a crashed SQLite database. Actually, I am not totally sure it was crashed, but the sqlite process had not shut down properly, and (after this) to select anything from it has taken more than an hour, anyway it was damn slow, and has eaten a lot of CPU time, and has created a huge journal file on every select. Then I got the idea, why not dump it and restore to another file? So I tried the following:


# echo ".dump" | sqlite old.db | sqlite new.db

(Here we give the command “.dump” to the SQLite with the old DB, and we redirect the output (the SQL dump itself) to another SQLite process with the new DB. It is the same as dumping to a file, and then restoring it, but it is much faster, and does not need a (probably) big dump file.)

Then the database had become 1.7GB from the original 2.7GB, so it had a lot of overhead before, and it is really fast now.

Posted in: Uncategorized by kakaopor 8 Comments , ,

Busybox fdisk segmentation fault error

Today I have run into an error with fdisk under busybox. I am currently building a really small system with basic stuffs, and I need to run fdisk in the initramfs. Unfortunately when I try to run fdisk interactively, I get the following error:


fdisk[...]: segfault at 8117dc4 ip 080ff478 sp bffee994 error 7 in fdisk[8048000+df000]
Segmentation fault

It seems this is a bug in the input handling, or maybe I made something wrong. Anyway, the following is working fine:


# cat | fdisk /dev/...

I will take a look on this in the source and update this post if i will have enough time.

Posted in: Uncategorized by kakaopor 1 Comment ,

Captchaz – a free captcha generator php class

I have “released” the first version of my own Captcha generator for PHP.

You can download it (for free of course) on these links:

If you have any comments, questions or anything contact me by commenting to this post, or by filling the contact form on the captchaz page.

Have fun with it!

Posted in: Uncategorized by kakaopor No Comments , ,

First post

This is my first Wordpress post ever. I will write some random things here what I meet, experience, try, make and so on. So some really random things will be here – if I have any interesting subject and enough time.

Well, I hope this won’t be too boring.

(That was really lame. I hope the upcoming posts will be better. Or just less lame.)

Posted in: Uncategorized by kakaopor No Comments
i
north-supercharged