Change to the directory that you have stored the source files in, for example # cd /tmp/download/ Extract the files using the following command: # gunzip c mysql3.22.xx.tar.gz | tar xvf
Trang 1Let’s begin! Become root by using su.
$ su
and enter the user root’s password Change to the directory that you have stored the source
files in, for example
# cd /tmp/download/
Extract the files using the following command:
# gunzip c mysql3.22.xx.tar.gz | tar xvf
-Change to the new directory This was created by tar during the extraction, like this:
# cd mysql-3.22.xx
Now you can start configuring the MySQL server You can specify many options with the
configurecommand Type configure helpto see all options The configurescript will
check for your compiler and a number of other things If you have any errors, you can check
the config.cachefile to see them
# /configure prefix=/usr/local/mysql
After you are done with configure, you can make the actual binaries by executing the
follow-ing line (this will take a while):
# make
Now you are ready to install all the binaries Run the following lines to install the binaries to
the directory you specified with the configure prefixoption
# make install
Now it’s time to create the mysqltables, which are used to define the permissions Make sure
you replace new-passwordwith something of your choice; otherwise,new-passwordwill be
your root password
# scripts/mysql_install_db
# cd /usr/local/mysql/bin
# /safe_mysqld &
# /mysqladmin -u root password ‘new-password’
You can verify that MySQL is working by running some simple tests The output should be
similar to what is shown here:
# /usr/local/mysql/bin/mysqlshow -p
A I
Trang 2Enter password:
+ -+
| Databases |
+ -+
| mysql |
+ -+
When you install MySQL, it will automatically create two databases One is the mysql table, which controls users, hosts, and DB permissions in the actual server The other is a test DB You can check your database via the command line like this: # mysql -u root -p Enter password: mysql> show databases; + -+
| Database |
+ -+
| mysql |
| test |
+ -+
2 rows in set (0.00 sec) Now it’s time to install PHP You should still be acting as root, if not suback to root PHP requires that you have Apache preconfigured so that it knows where everything is You will come back to this later in the section when you set up the Apache server Change back to the directory where you have the sources # cd /tmp/download # gunzip c apache_1.3.x.tar.gz | tar xf -# cd apache_1.3.x # /configure prefix=/usr/local/apache # cd
Okay, now you can start setting up PHP Extract the source files and change to its directory:
# gunzip c php4.0.x.tar.gz | tar xvf
-# cd php-4.0.x
Again there are many options with PHP’s configurecommand Use configure helpto determine what you want to add In this case, we want to add support for MySQL, Apache, PDFLib, cURL, and PSPELL
Note that the following is all one command We can put it all on one line, or as we have here, use the continuation character, backslash (\), to allow us to type one command across multiple lines to improve readability
Trang 3# /configure with-mysql=/usr/local/mysql \
with-xml with-apache= /apache_1.3.x \ with-curl=/usr/local/curl \
with-pspell=/usr/local/pspell \ enable-shared-pdflib enable-track-vars
Next, make and install the binaries:
# make
# make install
Copy the inifile to the libdirectory:
# cp php.ini-dist /usr/local/lib/php.ini
You can edit the PHP file to set PHP options You could, for example, increase the max_
execution_timein PHP by inserting the following line in yourphp.inifile
max_execution_time = 60;
Apache and mod_SSL
Time to configure and install mod_SSL and Apache If you are in the United States, you will
need the rsaref-2.0 files Unfortunately, because this file is no longer distributed by RSA, it
does not have a stable home page You will need to use a search engine such as Lycos
http://ftpsearch.lycos.com
or Google
http://www.google.com
to search for the file rsaref20.tar.Z Make sure you get the UNIX distribution
Create the rsarefdirectory where you will extract the files Note that this assumes you have
downloaded to the tempdirectory where you are
# mkdir rsaref-2.0
# cd rsaref-2.0
# gunzip c /rsaref20.tar.Z | tar xvf
-Now configure and build the OpenSSL Library If inside the USA, you have to build OpenSSL
in conjunction with the RSAref library
# cd rsaref-2.0
# cp -rp install/unix local
# cd local
# make
# mv rsaref.a librsaref.a
# cd /
A I
Trang 4It’s time to set up OpenSSL This is what you will use to create temporary certificates and CSR files The prefixspecifies the main installation directory
Only include the -L`pwd`/ /rsaref-2.0/local/rsaref -fPIC’ line if you are in the USA.
NOTE
# gunzip c openssl0.9.x.tar.gz | tar xvf
-# cd openssl-0.9.x
# /config prefix=/usr/local/ssl \ -L`pwd`/ /rsaref-2.0/local/rsaref -fPIC
Now make it, test it, and install it:
# make
# make test
# make install
# cd
We will configure the mod_SSL module and then specify it to be a loadable module with the Apache configuration
# gunzip c mod_ssl2.6.x.tar.gz |tar xvf
-# cd mod_ssl-2.5.x-1.3.x
# /configure with-apache= /apache_1.3.x
# cd
Note that we can add more Apache modules to the Apache source tree The optional
enable-shared=ssloption enables the building of mod_SSL as a DSO ‘libssl.so’ Read the INSTALL and htdocs/manual/dso.html documents in the Apache source tree for more informa-tion about DSO support in Apache We strongly advise ISPs and package maintainers to use the DSO facility for maximum flexibility with mod_SSL Notice, however, that Apache does not support DSO on all platforms
# cd apache_1.3.x
# SSL_BASE= /openssl-0.9.x \ RSA_BASE= /rsaref-2.0/local \ /configure \
enable-module=ssl \ activate-module=src/modules/php4/libphp4.a \ enable-module=php4 \
prefix=/usr/local/apache \ enable-shared=ssl
[ you can add more options here ]
Trang 5(You could alternatively set SSL_BASEand RSA_BASEas environment variables if you prefer.)
Finally you can makeApache and the certificates, and then install them
# make
If you have done everything right, you will a message similar to the following:
+ -+
| Before you install the package you now should prepare the SSL |
| certificate system by running the ‘make certificate’ command |
| For different situations the following variants are provided: |
| |
| % make certificate TYPE=dummy (dummy self-signed Snake Oil cert) | | % make certificate TYPE=test (test cert signed by Snake Oil CA) | | % make certificate TYPE=custom (custom cert signed by own CA) |
| % make certificate TYPE=existing (existing cert) |
| CRT=/path/to/your.crt [KEY=/path/to/your.key] |
| Use TYPE=dummy when you’re a vendor package maintainer, |
| the TYPE=test when you’re an admin but want to do tests only, |
| the TYPE=custom when you’re an admin willing to run a real server |
| and TYPE=existing when you’re an admin who upgrades a server |
| (The default is TYPE=test) |
| |
| Additionally add ALGO=RSA (default) or ALGO=DSA to select |
| the signature algorithm used for the generated certificate |
| Use ‘make certificate VIEW=1’ to display the generated data |
| Thanks for using Apache & mod_ssl Ralf S Engelschall |
| rse@engelschall.com - www.engelschall.com |
+ -+
Now you can create a custom certificate This option will prompt you for location, company, and a couple of other things # make certificate TYPE=custom Now install Apache: # make install If everything went well, the message that you should see is something similar to this: + -+
| 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 |
| |
| /usr/local/apache/conf/httpd.conf |
| and then you should be able to immediately fire up |
A I
Trang 6| Apache the first time by running: |
| |
| /usr/local/apache/bin/apachectl start |
| Or when you want to run it with SSL enabled use: |
| |
| /usr/local/apache/bin/apachectl startssl |
| Thanks for using Apache The Apache Group |
| http://www.apache.org/ |
+ -+
Now it’s time to see whether Apache and PHP are working However, we need to edit the
httpd.confof srm.confto add the PHP type to the configuration
Look at the httpd.confand uncomment the following lines If you have followed the previous instructions, your httpd.conffile will be located in the /usr/local/apache/confdirectory The file has the addtypefor PHP 4 commented out You should uncomment it at this time
httpd.conf File—Snippets
>
> # And for PHP 4.x, use:
> # -> AddType application/x-httpd-php php -> AddType application/x-httpd-php-source phps
>
>
Now we are ready to start the Apache server to see whether it worked First, we will start the server without the SSL support to see whether it comes up We will check for PHP support, and then we will stop the server and start it with the SSL support enabled and see whether we got everything working
The configtestwill check whether the entire configuration is set up properly:
# cd /usr/local/apache/bin
# /apachectl configtest Syntax OK
# /apachectl start /apachectl start: httpd started
If it worked correctly, you will see something similar to Figure A.1 when you connect to the server with a Web browser
Trang 7F IGURE A.1
The default test page provided by Apache.
Is PHP Support Working?
Now we will test for PHP support Create a file with the name of test.phpwith the following
code in it The file needs to be located in document root path, which should be set up by
default to /usr/local/apache/htdocs Note that this is dependent on the directory prefix that
we chose initially However, this could be changed in the httpd.conf
<? phpinfo() ?>
The output screen should look like Figure A.2
A I
You can connect to the server with a domain name or using the actual IP address of
the computer Check both cases, to ensure that everything is working properly.
Note
Trang 8F IGURE A.2
The function phpinfo() provides useful configuration information.
Is SSL Working?
Okay, now we are ready to test for SSL First, stop the server, and restart with the SSL option enabled:
# /usr/local/apache/bin/apachectl stop
# /usr/local/apache/bin/apachectl startssl
Test to see whether it works, by connecting to the server with a Web browser and selecting the
httpsprotocol, like this:
https://yourserver.yourdomain.com
or
http://yoursever.yourdomain.com:443
Try your server’s IP address also, like this:
https://xxx.xxx.xxx.xxx
or
http://xxx.xxx.xxx.xxx:443
If it worked, the server will send the certificate to the browser to establish a secure connection This will make the browser prompt you for accepting the self-signed certificate If it were a
Trang 9certificate from VeriSign or Thawte, the browser would not prompt you because their
certifi-cates come from a trusted Certification Authority (CA) In our case, we created and signed our
own certificates We didn’t want to purchase one right away We wanted to ensure that we
could get everything working properly, first
If you are using Internet Explorer or Netscape, you will see a padlock symbol in the status bar
This tells you that a secure connection has been established The icon used by Netscape is
shown in Figure A.3
A I
F IGURE A.3
Web browsers display an icon to indicate the page you are viewing came via an SSL connection.
Installing Apache, PHP, and MySQL Under
Windows
With Windows the installation process is a little bit different because PHP is set up either as a
CGI (php.exe) script or as a ISAPI (php4isapi.dll) module However, Apache and MySQL are
installed in a similar fashion to the way they are installed under UNIX Make sure you have the
latest operating system service patches applied to the machine before you begin the Windows
installation
You should start by downloading all the latest source files to a temporary directory with ample
space For our installation we will use C:\TEMP\DOWNLOADas our temp directory
Installing MySQL Under Windows
Let’s begin by setting up MySQL Because you have already downloaded all sources, begin by
unzipping the files to the temp directory and run the Setup.exe program Note, that the default
directory where MySQL will install itself will be the C:\mysqldirectory You can move it to a
different directory if needed, after it’s fully installed
If you do move MySQL, you must tell mysqldwhere everything is by supplying options to
mysqld Use C:\mysql\bin\mysqld helpto display all options For example, if you have
moved the MySQL distribution to ‘D:\programs\mysql’, you must start mysqldwith
‘D:\programs\mysql\bin\mysqld basedir D:\programs\mysql’
With the newest versions of MySQL, you can create a ‘C:\my.cnf’file that holds any default
option for the MySQL server Copy the file ‘C:\mysql\my-xxxxx.cnf’to ‘C:\my.cnf’and
edit it to suit your custom setup
Trang 10Windows 95/98
The Windows 95/98 version of MySQL comes with two different MySQL servers:
• mysqld: Compiled with full debugging and automatic memory allocation with checking
• mysqld-opt: Optimized for a Pentium processor Both will work on any current Intel X386 or later processors
You can start the mysqldserver from a Windows prompt by typing the following:
C:\mysql\bin\mysqld-opt
This starts the MySQL server in the background If the server doesn’t start, check whether or not the ‘\mysql\mysql.err’file contains any errors indicating what could be wrong You can shut down the MySQL server by executing
C:\mysql\bin\mysqladmin -u root shutdown
Windows NT/Win2000
There are some minor differences depending on whether you run MySQL on NT or Windows
2000 In the NT/Win2000 setup, the name of the server is mysqld-nt, and it will normally be installed as a service You can install the server as a service like this:
C:\mysql\bin\mysqld-nt -install
Now you can start and stop the MySQL server as a service with
NET START mysql NET STOP mysql
Use mysql and not mysql-nt here.
Note
After the server is installed, it must be started using Services Control Manager (SCM) utility (found in Control Panel) or by using the NET START MySQLcommand The SCM is shown in
Figure A.4 If any options are desired, they must be specified as startup parameters in the
SCM utility before you start the MySQL service When it is running,mysqld-ntcan be stopped using mysqladmin, or from the SCM utility, or by using the command NET STOP MySQL