Apache w/ PHP and MySQL Support (MIPSel)
BurnHard, frontalot, Cathedrow & Ralf from linkstationwiki.org
Installing Apache w/ PHP and MySQL Support.
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.
- Download the latest recommended release of MySQL from http://www.mysql.com (4.1.20, at the time of this edit).
wget http://www.mirrorservice.org/sites/ftp.mysql.com/Downloads/MySQL-4.1/mysql-4.1.20.tar.gz tar -zxvf mysql-4.1.20.tar.gz cd mysql-4.1.20
(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 make install
cp support-files/my-small.cnf /etc/my.cnf
- [Ralf] there are more sample configuration files which you can try, e.g. my-small.cnf. Read the beginning of the files for a description
cd /mnt/hda/opt/mysql bin/mysql_install_db --user=mysql
This 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):
/mnt/hda/misc/mysql-4.1.20 cp support-files/mysql.server /etc/init.d chmod 755 /etc/init.d/mysql.server
You can now start your MySQL daemon as follows:
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 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.36, at the time of this edit).
wget http://apache.rmplc.co.uk/httpd/apache_1.3.36.tar.gz tar -zxvf apache_1.3.36.tar.gz cd apache_1.3.36
./configure --prefix=/mnt/hda/opt/apache --enable-module=so make make install
You should get this message -
+--------------------------------------------------------+ | You now have successfully built and installed the | | Apache 1.3 HTTP server. To verify that Apache actually | | works correctly you now should first check the | | (initially created or preserved) configuration files | | | | /mnt/hda/opt/apache/conf/httpd.conf | | | and then you should be able to immediately fire up | | Apache the first time by running: | | | | /mnt/hda/opt/apache/bin/apachectl start | | | Thanks for using Apache. The Apache Group | | http://www.apache.org/ | +--------------------------------------------------------+
You will, at the very least, need to change your port to 81 (or some other port).
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.
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' command below. If you installed the above packages to an alternate location you will need to update the paths in the proper attribute.
Download the latest version of PHP4 from http://www.php.net (4.4.2, at the time of this edit).
It may download as a file called 'mirror' if so
mv mirror php-4.4.2.tar.bz2
bunzip2 php-4.4.2.tar.bz2 tar -xvf php-4.4.2.tar cd php-4.4.2
This is all one command and should be input on one line
./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
make make install
Copy over the default config file. If you altered the "--with-config-file-path" attribute, above, 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 apache's conf file 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:
AddType application/x-httpd-php .php .phtml 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