Apache w/ PHP and MySQL Support (MIPSel)

From NAS-Central Buffalo - The Linkstation Wiki
Revision as of 08:23, 13 July 2006 by (Talk) (Apache 1.3.xx)

Jump to: navigation, search
Originally by Nick and edited by ...
BurnHard, frontalot, Cathedrow & Ralf from linkstationwiki.org

Installing Apache w/ PHP and MySQL Support.

Opening Comments

Apache, along with PHP and MySQL, is very straight forward to install on a stock LinkStation 2 with the OpenLink firmware installed. If you have experience with building these packages, or compiling in general, it is a snap. If you have little or no experience in such matter, just follow the guide -- everything is reversible.

If you have not already done so, visit the Openlink section and follow the instructions for installing the telnet enabled firmware. You will also need to download and install the [MIPSel Tools] before continuing.

A Remark on "--prefix"

The prefix argument, which you will see in every section below, allows you to install Unix packages to alternate locations. This is very important is the case of the LinkStation since all three packages take over 75 megs to install. You will not be able to install these packages to your root partition and doing so would be very bad.

I chose to create an "opt" directory under "/mnt/hda" to install each of these packages too, using a separate directory for each. This was done to keep the packages separated and easy to manage in the future. You may, of course, alter your install locations in any way but, if you are new to this, I suggest following my example.

It's also a good idea to create a directory to download stuff when using wget, lets use /mnt/hda/misc


Begin with MySQL. If you do not wish to compile MySQL support into your system, please skip to the next section.

cd /mnt/hda/misc
  • Download the latest recommended release of MySQL from http://www.mysql.com (4.1.13, at the time of this writing).
wget http://www.mirrorservice.org/sites/ftp.mysql.com/Downloads/MySQL-4.1/mysql-4.1.20.tar.gz
tar -zxvf mysql-xxx' (replacing xxx with your MySQL version number)
cd mysql-xxx' (replacing xxx with your MySQL version number)
groupadd mysql 

(Not sure if this is necessary, just following instructions from dev.mysql.com)

  • [Ralf] without this MySQL will try to run as root, but you need several special settings for this - better stick to the extra mysql user
useradd -g mysql mysql

./configure --prefix=/mnt/hda/opt/mysql --with-readline
make install
cp support-files/my-medium.cnf /etc/my.cnf
  • [Ralf] there are more sample configuration files which you can try, e.g. my-small.cfg. Read the beginning of the files for a description
cd /mnt/hda/opt/mysql
bin/mysql_install_db --user=mysql

creates databases

chown -R root  .
chown -R mysql var
chgrp -R mysql .

[Ralf] MySQL 5 seems to require the following extra actions:

  • Create a MySQL password file:
libexec/mysqlmanager --passwd --user mysql >> /etc/mysqlmanager.passwd
  • At the following prompt enter

You should now have a fully functioning version of MySQL on your LinkStation. Now we can set up the server to start like any other service.

Go back to where you have build MySQL (also see above):

cp support-files/mysql.server /etc/init.d
chmod 755 /etc/init.d/mysql.server

You can now start your MySQL daemon as follows:

/etc/init.d/mysql.server start

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands:

/mnt/hda/opt/mysql/bin/mysqladmin -u root password 'new-password'
/mnt/hda/opt/mysql/bin/mysqladmin -u root -h 'servername' password 'new-password'

Start up and shutdown at boot

ln -s /etc/init.d/mysql.server /etc/rc.d/rc2.d/S99mysql.server
ln -s /etc/init.d/mysql.server /etc/rc.d/rc6.d/K92mysql.server
ln -s /etc/init.d/mysql.server /etc/rc.d/rc0.d/K92mysql.server

Important Memory Usage Note: MySQL takes just under 25% of the LinkStation's total available memory when running. This should be taken into serious consideration if you choose to install MySQL support with your web server.

  • TODO: Need to get the server running automatically at boot.

[Ralf] Here is how to start MySQL 5 automatically at boot. I guess it works quite similar with MySQL 4.X.

cd /etc/rc.d
ln -s ../init.d/mysql.server  rc2.d/S99mysql
ln -s ../init.d/mysql.server  rc2.d/K99mysql

Apache 1.3.xx

Apache itself is the next install. If you are not planning on installing PHP, you may ignore the "--enable-module=so" attribute below.

I decided to install Apache 1.3 because that is what my web host uses. Installing Apache 2 would be very similar and the following instructions can be easily adapted by reading the INSTALL document in the Apache 2 tarball.

Download the latest version of Apache 1.3 from http://www.apache.org (1.3.33, at the time of this writing).

wget http://apache.rmplc.co.uk/httpd/apache_1.3.36.tar.gz
tar -zxvf apache-xxx' (replacing xxx with your Apache version number)
cd apache-xxx' (replacing xxx with your Apache version number)

./configure --prefix=/mnt/hda/opt/apache --enable-module=so
make install

You will, at the very least, need to change your port to 81 (or some other port).

vi /mnt/hda/opt/apache/conf/httpd.conf

Search for '80' -- change it to '81' (or some other port).

I also suggest changing the root directory to the files to "/mnt/hda/share/www" so you can have easy access to them over the Samba share. Search for 'DocumentRoot' and change the first reference (roughly line 288) to the above path. Search again and you will find another reference to change (around line 313).

Finally, start the server.

/mnt/hda/opt/apache/bin/apachectl start

Copy that start up script to /etc/init.d and include in startup shutdown

cp /mnt/hda/opt/apache/bin/apachectl /etc/init.d
ln -s /etc/init.d/apachectl /etc/rc.d/rc2.d/S99apachectl
ln -s /etc/init.d/apachectl /etc/rc.d/rc6.d/K92apachectl
ln -s /etc/init.d/apachectl /etc/rc.d/rc0.d/K92apachectl
  • TODO: Flush out the config file editing instructions.


Last we will set up PHP. I decided to install the latest version of PHP4 because, again, this is what my web host uses. You may decide to install PHP5, which would requires only 1 slightly different step below.

Pay special attention to the 'configure' (step 6) command below. If you installed the above packages to an alternate location you will need to update the paths in the proper attribute.

  1. Download the latest version of PHP4 from http://www.php.net (4.4.0, at the time of this writing).
  2. Copy the archive to your LinkStation as you would any other file, into your share folder.
  3. Log into your LinkStation and 'cd /mnt/hda/share'
  4. Execute 'tar -zxvf php-xxx' (replacing xxx with your PHP version number)
  5. Execute 'cd php-xxx' (replacing xxx with your PHP version number)
  6. ./configure --prefix=/mnt/hda/opt/php4 --with-mysql=/mnt/hda/opt/mysql --with-apxs=/mnt/hda/opt/apache/bin/apxs --with-config-file-path=/mnt/hda/opt/php4/lib
  7. make
  8. make install

Copy over the default config file. If you altered the "--with-config-file-path" attribute, in step 6, you will need to change the below command to copy to the appropriate path.

  • cp php.ini-dist /mnt/hda/opt/php4/lib

Open up '/mnt/hda/opt/apache/conf/httpd.conf' and verify that the following line is included:

  • LoadModule php4_module libexec/libphp4.so (for PHP4)
  • LoadModule php4_module libexec/libphp5.so (for PHP5)

If it is not, add it. Also add the following two lines just below the LoadModule command:

  1. AddType application/x-httpd-php .php .phtml
  2. AddType application/x-httpd-php-source .phps

Restart Apache and PHP should now be working.

  • TODO: More information on configuration of PHP
  • TODO: Information on adding additional modules to PHP