This is a very quick-and-dirty how-to for installing MySQL and an SSL/PHP4-enabled Apache webserver on a generic Linux system (I happen to use RedHat 7.1, but I don't think anything here is so unusual it won't work as written on other distributions).
I designed this webpage so that you can hopefully just copy/paste each line/block of commands into your shell session and it will "just work" for you, thus avoiding typing. Text in red is a literal Linux commandline, and should be typed or pasted exactly as written.
Some people have reported problems with the later steps of this procedure if too many lines are cut-and-pasted at once (some directories aren't generated properly, etc). To ensure proper operation, please do the commands one line at a time and wait for the command to complete before executing the next step.
NOTE: If version numbers for some applications are changed when you run this, please use common sense and fix them yourself. Also, if the wget commands for specific files don't work, please go to the appropriate website and download the tarball yourself through whatever mechanism each site provides.
If you find discrepancies in my procedure, or have some other questions, please email me. I will do my best to help you out, but I can't make any promises!
At the time of updating this (27 February 2002) the current versions of all these pieces are:
cd /usr/local/src
wget http://www.php.net/distributions/php-4.1.2.tar.gz
wget http://httpd.apache.org/dist/httpd/apache_1.3.23.tar.gz
wget ftp://ftp.mysql.com/MySQL-3.23/mysql-3.23.49.tar.gz
wget http://www.modssl.org/source/mod_ssl-2.8.7-1.3.23.tar.gz
wget http://www.openssl.org/source/openssl-0.9.6c.tar.gz
tar zxvf php-4.1.2.tar.gz
tar zxvf apache_1.3.23.tar.gz
tar zxvf mysql-3.23.49.tar.gz
tar zxvf mod_ssl-2.8.7-1.3.23.tar.gz
tar zxvf openssl-0.9.6c.tar.gz
/usr/local/src/php-4.1.2
/apache_1.3.23
/mysql-3.23.49
/openssl-0.9.6c
/mod_ssl-2.8.7-1.3.23
groupadd mysql
useradd -g mysql mysql
cd /usr/local/src/mysql-3.23.49
./configure --prefix=/usr/local/mysql \
--localstatedir=/usr/local/mysql/data \
--disable-maintainer-mode \
--with-mysqld-user=mysql \
--enable-large-files \
--without-comment \
--without-debug \
--without-docs \
--without-bench
make
make install
./scripts/mysql_install_db
chown -R root:mysql /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/data
echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
ldconfig -v | grep libmysqlclient
This next line adds the MySQL startup command into
your rc.local file so that MySQL starts automatically everytime
your server comes up.
echo "/usr/local/mysql/bin/safe_mysqld --user=mysql &" >> /etc/rc.d/rc.local
cd /usr/local/mysql/bin
./safe_mysqld --user=mysql &
./mysqladmin version
./mysqladmin -u root password new-password
cd /usr/local/src/openssl-0.9.6c
./config --prefix=/usr/local/openssl
make
make test
make install
cd /usr/local/src/mod_ssl-2.8.7-1.3.23
./configure --with-apache=../apache_1.3.23
**** This didn't work for Apache 2 because I think the mod_ssl is already
in it so I skipped this bit
cd /usr/local/src/apache_1.3.23
SSL_BASE=../openssl-0.9.6c ./configure --prefix=/usr/local/apache \
--enable-module=ssl \ the apache 2 command is --enable-modules <-- s!!!
--enable-module=so \ I put a few more args in and didn't pass ssl base to
./configure
--enable-ssl=/usr/local/openssl-0.9.6c
make
make certificate
make install
cd /usr/local/src/php-4.1.2
CFLAGS='-O2 -I/usr/local/src/openssl-0.9.6c' ./configure \
--with-apxs=/usr/local/apache/bin/apxs \
--with-mysql=/usr/local/mysql \
--enable-track-vars \
--with-xml
make
make install
cp php.ini-dist /usr/local/lib/php.ini
cd /usr/local/apache/conf
vi httpd.conf
Set up the Apache config file in accordance with Apache instructions (beyond the scope of this HOWTO).
Remove the # at the beginning of the lines which read
#AddType application/x-httpd-php .php
#AddType application/x-httpd-php-source .phps
Add index.php to the list of valid Directory Index files:
<IfModule mod_dir.c>
DirectoryIndex index.php
index.htm index.html
</IfModule>
/usr/local/apache/bin/apachectl startssl