On our installation, the sources for
Apache, SSL, and PHP are all under /https. Apache binaries
are under /usr/local/apache. HTML *and* PHP files must go under
/usr/local/apache/htdocs. CGI-BIN scripts need to go under
/usr/local/apache/cgi-bin.
Note: This may not be the most efficient way of installing
apache-ssl-php, but it *works*
1. Obtaining all necessary code (links go to download from this server, or use URL if available):
2. gzip them all:
$ gzip -d -c apache_1.3.20.tar.gz | tar xvf - $ gzip -d -c mod_ssl-2.8.4-1.3.20.tar.gz | tar xvf - $ gzip -d -c openssl-0.9.6a.tar.gz | tar xvf - $ gzip -d -c php-4.0.6.tar.gz | tar xvf - | 3. Configuration for SSL:
$ cd openssl-0.9.6a $ ./config $ make $ cd ../mod_ssl-2.8.4-1.3.20 $ ./configure --with-apache=../apache_1.3.20 --with-ssl=../openssl-0.9.6a --prefix=/usr/local/apache $ cd ..
| The '--with-apxs' makes this into a module that can be included or excluded
in the Apache httpd.conf file. The other '--' directives are just capabilities to
include in the PHP binary image. Run './configure --help' in the PHP source directory
for a list of all the capabilities you can include.
Note that with-mysql is on by default. So you always have MySQL support in there.
An excellent reference for available configuration options is
http://www.php.net/manual/en/install.configure.php. The 'CFLAGS' part is needed
because the SSL inclusion enables the Apache Extended API (EAPI). This means
that EAPI must also be enabled for PHP.
4. Configuration of Apache:
The '--activate-module' compiles the ssl capability into the Apache image.
The '--enable-module=so' makes sure that mod_so is compiled in. That's the
DSO (Dynamic Server Objects) capability that allows Apache to load modules
at start-up time if a corresponding 'LoadModule' command is included in
httpd.conf. See further below for an example dynamically includes PHP:
$ cd apache_1.3.20 $ ./configure --activate-module=src/modules/ssl/libssl.a --enable-module=so $ make
| The following SSL certificate creation only needs to be done once.
If you recompile Apache, you just have to ./configure, make, and make install.
This begins the step in which you must fill in your certificate information.
Warning: I don't really know what
I'm doing on this step. All I know is that it will work.
Signature Algorithm ((R)SA or (D)SA) [R]:make[1]: r
1. Country Name (2 letter code) [XY]: US
2. State or Province Name (full name) [Snake Desert]: California
3. Locality Name (eg, city) [Snake Town]: San Francisco
4. Organization Name (eg, company) [Snake Oil, Ltd]: Server, Inc.
5. Organizational Unit Name (eg, section) [Certificate Authority]: Department
6. Common Name (eg, CA name) [Snake Oil CA]: Server, Inc.
7. Email Address (eg, name@FQDN) [ca@snakeoil.dom]: webmaster@domain.com
8. Certificate Validity (days) [365]: 365
Certificate Version (1 or 3) [3]: 1
Encrypt the private key now? [Y/n]: n
|
5. Configuration for PHP4:
$ cd php-4.0.6 $ CFLAGS="-DEAPI -fPIC" ./configure --with-apxs=/usr/local/apache/bin/apxs $ make $ make install
| If you do want to re-configure and re-compile, do a 'make clean' first, and delete
file config.cache in the PHP src dir
$ cp php.ini-dist /usr/local/lib/php.ini $ cd .. | 6. Edit httpd.conf (with pico):
Your httpd.conf file is in /usr/local/apache/conf
| $ pico /usr/local/apache/conf/httpd.conf | Add the following lines in the file:
LoadModule php4_module libexec/libphp4.so Addtype application/x-httpd-php .php Addtype application/x-httpd-php .html Addtype application/x-httpd-php-source .phps | Since any HTML is also legal php, we suggest you add the third line listed above.
This way, you won't have to give your files a .php extension.
7. Managing HTTPD:
It's easiest not to run httpd explicitly, but to use 'apachectl' instead.
/usr/local/apache/bin/apachectl start (to start httpd without SSL)
/usr/local/apache/bin/apachectl startssl (to start httpd with SSL)
/usr/local/apache/bin/apachectl restart (to cause httpd to re-read httpd.conf)
/usr/local/apache/bin/apachectl stop (to bring httpd down)
If you know how to put /usr/local/apache/bin/ into your path, it'll save you time.
| 8. Tricks:
To find out what's included in the PHP installation, and which environment
variables are available in PHP scripts, make a file that includes the line
<? phpinfo() ?>. Then load that from a browser. It'll tell you all.
|