|
|
Apache Web Server for Windows | The World's Most Secure Web Server |
Windows XP Home Edition no longer includes nor will it run
any Microsoft web server. Alas, the world will not end! The most
widely used web server in the world (Apache) actually runs well under
Windows XP. There are some added benefits as well. The last Apache web
server to be hacked was about five years ago! And you now will be able to
run identical web applications on every UNIX, Linux, and Windows 2000 and
XP system you own. This document provides a simplified explanation of how
to install, configure, and get Apache 1.3 running under Windows XP in less
than 30 minutes. If you'd rather do it the hard way, here's the official
Apache documentation. To
begin, download the software from here.
There is no software license fee for Apache. | |
PHP for Windows | The Best HyperText Preprocessor on the Planet |
If you liked Microsoft's Active Server Pages (ASP) and Visual Basic
(VB), then you'll love PHP. Think of it as a hypertext preprocessor on
steroids! In addition to being a full-featured programming language, PHP
can also be used to seamlessly integrate almost any data base into your
web pages. And PHP natively handles file uploads and the generation of
images, sound, Acrobat documents, and just about anything else you can
dream up. Once Apache is installed, you're ready to load PHP4. Begin by
downloading the software from here. A Windows
HTML Help File version of the PHP4 Manual is also available here. There is no
software license fee for PHP. | |
MySQL for Windows | SQL Data Base Apps in Minutes, Not Months |
Yes, you can integrate Oracle and Informix databases and any other
data base that is ODBC compliant into your web pages with PHP. But, for
quick and dirty projects, nothing comes close to MySQL for ease of
development and performance. In fact, PHP natively supports MySQL, and a
web-based front-end processor to build MySQL applications is available for
download here. Take
a look at this sample PHP/MySQL
application template which can be used to display any data base in
about 10 minutes. Some day you may need to actually review the MySQL documentation. To
begin, read our quick deployment guide after downloading MySQL for Windows
from here.
There is no software license fee for
MySQL. |
|
|
Installation | Getting Started |
Download the Apache software
onto your XP machine. Make sure the Admin Services window is
closed before beginning the install. The Apache installation
software is compressed into a single .msi file. Using Windows Explorer,
locate the downloaded .msi file and double-click on it to begin the
installation. Accept all of the defaults. Fill in a name for your domain
and server. Choose "Run as a Service" when prompted. This will
automatically load Apache each time you boot up the XP machine. If warned
that IP is not configured properly, ignore the warning if you are sure
that your XP system has IP connectivity. | |
Web Browser Test | Is Apache Running? |
Check to be sure the Apache server is running by opening a web
browser and entering the following address:
http://localhost/. If the default Apache page displays,
proceed to Configuring Apache below. Your page display should look
like this. If the page does not
display, see Troubleshooting below. | |
Troubleshooting | What Went Wrong? |
On some XP systems, Apache fails to install itself as a service.
This means the server does not start up automatically. First, we will make
certain that you have not implemented the XP firewall feature which blocks
incoming web access. Then we will check to see if Apache was installed as
a service. If not, we will need to be sure Apache will start from the
command prompt. Then we will manually install it as a Windows service.
To verify that you are not blocking Internet web traffic with XP's firewall feature, click Start, Control Panel, Switch to Classic View, Network Connections, Local Area Connection, Properties, and Advanced. If the Internet Connection Firewall box is checked, either uncheck it or click on the Settings button and check the Web Server box to allow incoming web traffic. To determine whether Apache loaded as a service, choose Start, Control Panel, Switch to Classic View (if not already there), Administrative Tools, Services. Scroll down the alphabetical list looking for an Apache entry. If it's there but doesn't show as Running, click on the Apache entry, and then click Start. If it shows Running, repeat the web browser test above. Otherwise we will start Apache from a command prompt to be sure the software installed properly. To start Apache manually, move to the following diectory (if you accepted the default installation directory when you installed the software): C:\Program Files\Apache Group\Apache\. Then type apache to start the web server. If it shows Running then all is well. Press CTRL-C to stop the server. Now install Apache as a service by typing the following command: apache -i -n apache. A message should display indicating that Apache was installed as a service. Now return to the Admin Services window, check for Apache again and Start the service. Then perform the web browser test again. All should be working at this point. Reboot your XP system just to be certain. | |
Configuring Apache | C:\Program Files\Apache Group\Apache\conf\httpd.conf |
Configuring Apache for Windows is handled identically to other
versions of Apache. The main configuration file is httpd.conf which is
stored in the directory shown above. Complete documentation on
configuration options is available on Apache's web site. Out of the
box, Apache is configured to operate reliably with PHP and
MySQL. |
|
|
Installation | Getting Started |
Download and unzip the PHP software into a
new C:\PHP directory on your XP machine. Be careful to preserve the
directory structure in the archive. Assuming you have installed Apache as a Windows Service, add the following two lines to the very end of the Apache configuration file (httpd.conf) as outlined in Configuring Apache above: LoadModule php4_module c:/php/sapi/php4apache.dll AddType application/x-httpd-php .php While you are editing the httpd.conf file, go to the top of the file and search for DirectoryIndex. Replace the existing line with the following entry: DirectoryIndex index.html index.php Download the PHP.INI file from here and save it to your Windows directory, usually c:\WINDOWS on XP systems. Review the settings in the file and change the SMTP server address and email address to meet your needs. Copy the file C:\PHP\php4ts.dll to the Windows system directory which is \windows\system32 for most XP systems. Now restart the Apache web server by issuing the following commands at command prompt: NET STOP APACHE NET START APACHE Complete documentation on installation of PHP Advanced Features is available in the install.txt file located in C:\PHP after installation. | |
Web Browser Test | Is PHP Running? |
To test whether PHP is functioning properly, create a
TEST.PHP file using Notepad with the following text on a single
line: <?php phpinfo(); ?> Save the TEST.PHP text file to the following directory (assuming you accepted the default Apache directory during your install of Apache): C:\Program Files\ApacheGroup\Apache\htdocs Using a web browser, enter the following address: http://localhost/test.php. Your browser should display a detailed listing of all the Apache and PHP settings on your system. To see a sample display, click here. | |
Activating PHP Extensions | Bringing PHP Up to Warp Speed |
The real power of PHP lies in the dozens of library extensions
available for your use. By way of example only, these add-on libraries
give PHP direct access to POP3, IMAP, Oracle, Informix, dBASE, other ODBC,
and Notes databases as well as the ability to generate and display PDF,
XML, ZIP, LDAP, and image files. There also is support for CyberCash
payment systems and calendar and language functions of every imaginable
kind. To use any or all of these functions, they first must be activated
in the PHP.INI file. Some also require moving certain .DLL support files
into the Windows search path. To save you some time, the PHP.INI file
(downloaded above as part of the installation) activates some of these
libraries. If, however, you wish to use OpenSSL, PDF, LDAP, IMAP, or POP3
functions, the following steps are required. See the Function Reference
under Contents in the PHP Help File for a
complete listing of other available libraries. 1. Unremark the desired function in the PHP.INI file in your C:\WINDOWS directory by deleting the semicolon at the beginning of the appropriate line. Search for extension=php_ in the file to find the extension section. Verify that there also is a line in your PHP.INI file which reads extension_dir = c:\php\extensions. Save the modified file. 2. Copy all of the files from C:\PHP\DLLS to your Windows System directory (usually C:\Windows\System32 on XP machines). 3. Stop and restart the Apache web server: NET STOP APACHE then NET START APACHE. 4. Rerun the PHP test outlined above: http://localhost/test.php. The various functions you activated should now display as enabled. |
|
|
Installation | Getting Started |
Create the following directories if they do not already exist:
C:\MYSQL, C:\MYSQL\data, C:\MYSQL\ibdata,
C:\MYSQL\iblogs, and C:\MYSQL\temp. Download and unzip the MySQL software into a temporary directory on your XP machine: C:\MYSQL\Temp. Begin the MySQL installation by running Setup.exe from the temporary folder you created. Download the sample MY.INI configuration file into your Windows directory, usually C:\WINDOWS on XP systems. This default configuration will enable use of InnoDB transaction tables to improve performance. Two 2GB files are created as your maximum file storage space. If this doesn't meet your needs, edit the MY.INI file. | |
MySQL Test | Is MySQL Running? |
Now we are ready to test MySQL start up. From a command prompt,
move to the C:\MYSQL\BIN folder. Issue the following command:
mysqld-max --standalone. You should see a series of InnoDB messages
indicating that the 2GB files are being created. This is
normal. Once you are certain that MySQL can be started from the command prompt, you will need to install it to automatically start as a Windows service. Shut down the MySQL server if it is running: mysqladmin -u root shutdown. Issue the following command from the C:\MySQL\BIN folder after making certain that you have closed the Admin Services window (if open): mysqld-max-nt --install. Check to make sure MySQL is running as a Windows service. Choose Start, Control Panel, Switch to Classic View (if not already there), Administrative Tools, Services. Click Start if the MySQL entry does not display as Running. | |
Administering MySQL | phpMyAdmin |
Once Apache, PHP, and MySQL all are running, you are ready to
install the phpMyAdmin software. Download and unzip the phpMyAdmin
software into a folder (which you must create) below the root web
hosting directory. Make sure you preserve the directory structure in the
archive when you unzip the files. Here's the folder to create:
C:\Program Files\Apache Group\Apache\htdocs\PHP Test access to the software by using a web browser to access http://localhost/php/. Don't forget the trailing slash or the page won't load! Once you are sure the software works reliably, you need to lock it down so that anyone with a web browser can't access and reconfigure your MySQL databases. Using Notepad, create a file named .htaccess with the following entries and copy it to the PHP folder created above: AuthName "Enter password" AuthType Basic AuthUserFile C:/Program Files/Apache Group/Apache/bin/.htpasswd require valid-user Move to the C:\Program Files\Apache Group\Apache\bin directory, and run the password creation program: htpasswd. The syntax for the program will be displayed. Here's an example which will be needed to create the .htpasswd file and get you started: htpasswd -c .htpasswd johndoe. This will create the .htpasswd file with an entry for johndoe. You will be prompted to enter a password for the user. To add an additional user, issue the following command: htpasswd -b .htpasswd marydoe voodoo. This will add a new marydoe user with a password of voodoo. Edit Apache's config file using Notepad: C:\Program Files\Apache Group\Apache\conf\httpd.conf. Search for the line AllowOverride None and change it to read AllowOverride All. This permits directory-by-directory management of password access to web files. If you forget this step, .htaccess files will be ignored. Stop and restart Apache (NET STOP APACHE then NET START APACHE). Then test file access again by closing and reopening a web browser to access http://localhost/php/. You should be prompted for a username and password before phpMyAdmin displays. If not, check syntax and the locations of the files created above. | |
MySQL Security | Lock It Down! |
In true Microsoft tradition, MySQL for Windows installs out of the
box wide open. This means any user anywhere with the IP address of your XP
machine can access, change, and destroy all MySQL databases without your
knowledge. Apache and XP usernames and passwords have no effect on MySQL
access! For some, this situation may not be entirely desirable. The
default MySQL configuration establishes two users (root and everyone else)
and two accounts for each (localhost and everywhere else). Assuming your
MySQL server is in a safe place, leaving localhost access available
without a password is helpful since PHP always makes its access this way.
Thus, all you really need to do to secure MySQL is create passwords for
the non-local accounts of root and everybody else ... and then keep an eye
on your XP machine, of course. Keep reading to learn how to do that. If
you want a more elaborate password system or wish to set up special
security on specific databases, then consult and RTFM. To set a password for non-local account access by root and everybody else to "voodoo," change to the C:\MySQL\BIN directory and issue the command: mysql -u root mysql. At the MYSQL prompt, type the following commands making sure you end the first two commands with a semicolon: update user set password=PASSWORD('voodoo') where host='%'; flush privileges; \Q Just to be on the safe side, stop and restart the MySQL server: NET STOP MYSQL then NET START MYSQL. |
Visit our other web sites or send comments and suggestions to Ward Mundy |