old-www/HOWTO/Apache-Compile-HOWTO/prereqs.html

994 lines
15 KiB
HTML
Raw Permalink Blame History

<HTML
><HEAD
><TITLE
>Prerequisites</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="Apache Compile HOWTO"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Introduction"
HREF="intro.html"><LINK
REL="NEXT"
TITLE="Getting, build and install Apache with its basic modules"
HREF="apache.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Apache Compile HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="intro.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="apache.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="PREREQS"
></A
>2. Prerequisites</H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN206"
></A
>2.1. General</H2
><P
></P
><UL
><LI
><P
><SPAN
CLASS="APPLICATION"
>flex</SPAN
> 2.54</P
></LI
><LI
><P
><SPAN
CLASS="APPLICATION"
>bison</SPAN
> 1.28</P
></LI
><LI
><P
><SPAN
CLASS="APPLICATION"
>autoconf</SPAN
> 2.52</P
></LI
><LI
><P
><SPAN
CLASS="APPLICATION"
>automake </SPAN
>1.4</P
></LI
><LI
><P
><SPAN
CLASS="APPLICATION"
>libtool </SPAN
>1.4</P
></LI
><LI
><P
><SPAN
CLASS="APPLICATION"
>yacc</SPAN
> 91.7.30</P
></LI
><LI
><P
><SPAN
CLASS="APPLICATION"
>freetype2</SPAN
>-devel <A
NAME="AEN230"
HREF="#FTN.AEN230"
><SPAN
CLASS="footnote"
>[1]</SPAN
></A
></P
></LI
><LI
><P
><SPAN
CLASS="APPLICATION"
>re2c</SPAN
> <A
NAME="AEN236"
HREF="#FTN.AEN236"
><SPAN
CLASS="footnote"
>[2]</SPAN
></A
></P
><P
></P
></LI
></UL
><P
>To be continued</P
><P
>All major distributions should include this general prerequisites. &#13;</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN241"
></A
>2.2. OpenSSL</H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN243"
></A
>2.2.1. What is <SPAN
CLASS="APPLICATION"
>OpenSSL</SPAN
></H3
><A
NAME="AEN246"
></A
><TABLE
BORDER="0"
WIDTH="100%"
CELLSPACING="0"
CELLPADDING="0"
CLASS="BLOCKQUOTE"
><TR
><TD
WIDTH="10%"
VALIGN="TOP"
>&nbsp;</TD
><TD
WIDTH="80%"
VALIGN="TOP"
><P
>The OpenSSL Project is a collaborative effort to develop a robust, commercial-grade, full-featured,
and Open Source toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1)
protocols as well as a full-strength general purpose cryptography library. The project is managed by a
worldwide community of volunteers that use the Internet to communicate, plan, and develop the OpenSSL toolkit
and its related documentation.</P
><P
>OpenSSL is based on the excellent SSLeay library developed by Eric A. Young and Tim J. Hudson.
The OpenSSL toolkit is licensed under an Apache-style license, which basically means that you are free
to get and use it for commercial and non-commercial purposes subject to some simple license conditions.</P
><P
>From authors points of view, its the basic to build a secure Unix-Server with Opensource Software, its needed
for all major products like mod_ssl, OpenSSH and lot of other stuff that provides encrypted Data-processing</P
></TD
><TD
WIDTH="10%"
VALIGN="TOP"
>&nbsp;</TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="RIGHT"
VALIGN="TOP"
>--<SPAN
CLASS="ATTRIBUTION"
>www.openssl.org</SPAN
></TD
><TD
WIDTH="10%"
>&nbsp;</TD
></TR
></TABLE
><P
>OpenSSL provides the libraries and include-files needed be the products mentioned above and also provides
a Application to build Server and client-Certificates.</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN252"
></A
>2.2.2. Download the source</H3
><P
>Origin-Site
<A
HREF="http://www.openssl.org"
TARGET="_top"
>http://www.openssl.org</A
></P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN256"
></A
>2.2.3. Building and installing</H3
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
>cd /usr/local
tar -xvzf openssl-0.9.7.tar.gz
cd openssl-0.9.7
./config shared
make
make test
make install
echo "/usr/local/ssl/lib" &#62;&#62; /etc/ld.so.conf
ldconfig</PRE
></FONT
></TD
></TR
></TABLE
><DIV
CLASS="TIP"
><P
></P
><TABLE
CLASS="TIP"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TH
ALIGN="LEFT"
VALIGN="CENTER"
><B
>Select your CPU to improve speed</B
></TH
></TR
><TR
><TD
>&nbsp;</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>By default the Makefile generates code for the i486 CPU. You can change this by editing the
<TT
CLASS="FILENAME"
>Makefile</TT
> after running <B
CLASS="COMMAND"
>config </B
><TT
CLASS="OPTION"
>shared</TT
>.
Search for <TT
CLASS="OPTION"
>-m486</TT
> and replace it i.e with <TT
CLASS="OPTION"
>-march=athlon</TT
></P
></TD
></TR
></TABLE
></DIV
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN267"
></A
>2.3. GNU Database System</H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN269"
></A
>2.3.1. What is <SPAN
CLASS="APPLICATION"
>gdbm</SPAN
></H3
><A
NAME="AEN272"
></A
><TABLE
BORDER="0"
WIDTH="100%"
CELLSPACING="0"
CELLPADDING="0"
CLASS="BLOCKQUOTE"
><TR
><TD
WIDTH="10%"
VALIGN="TOP"
>&nbsp;</TD
><TD
WIDTH="80%"
VALIGN="TOP"
><P
>GNU dbm is a set of database routines that use extensible hashing. It works similar to the standard UNIX dbm routines. </P
></TD
><TD
WIDTH="10%"
VALIGN="TOP"
>&nbsp;</TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="RIGHT"
VALIGN="TOP"
>--<SPAN
CLASS="ATTRIBUTION"
>www.gnu.org/software/gdbm</SPAN
></TD
><TD
WIDTH="10%"
>&nbsp;</TD
></TR
></TABLE
><P
>The GNU dbm is a very important application used by almost every distribution. So it is installed by default
on all distributions I tested.</P
><P
>In all probability the needed header files which are mandatory to build Apache with mod_rewrite and PHP are
not installed by default. Please consult your distributions <SPAN
CLASS="ABBREV"
>CD</SPAN
>/<SPAN
CLASS="ABBREV"
>DVD</SPAN
> and install
the devel package (The version can vary):
<TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
>rpm -i gdbm-devel-1.8.0-546</PRE
></FONT
></TD
></TR
></TABLE
>&#13;</P
><P
>This procedure is verified for SuSE and Redhat. Please confirm for other <SPAN
CLASS="ABBREV"
>RPM</SPAN
> based
systems like Mandrake. Debian will follow as soon as possible.</P
><P
>Users of Debian bases systems can install gdbm as follow:</P
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
>apt-get install libgdbmg1-dev</PRE
></FONT
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN284"
></A
>2.3.2. Building and installing by yourself</H3
><P
>In the unlikely case that your distribution does not contain <SPAN
CLASS="APPLICATION"
>gdbm</SPAN
> here the
instructions how to build it.</P
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
>./configure
make
make install
ldconfig</PRE
></FONT
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN289"
></A
>2.4. MySQL</H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN291"
></A
>2.4.1. What is <SPAN
CLASS="APPLICATION"
>MySQL</SPAN
></H3
><P
><SPAN
CLASS="APPLICATION"
>MySQL</SPAN
> is a very fast, powerful and very nice to handle Database.</P
><P
>Especially for webapplications where most access is read and few write,
MySQL is the first choice. The newest
Version is also transaction-capable. If you plan a Webapplication,
that writes a lot of Data into the DB, maybe PostgreSQL is
better suited for your project see <A
HREF="php.html#POSTGRESQL"
>Section 6.2.4</A
> for installation hints</P
><P
>You need the C-<SPAN
CLASS="ABBREV"
>API</SPAN
> from MySQL for compiling <SPAN
CLASS="APPLICATION"
>PHP</SPAN
> if you
wish MySQL-Support in <SPAN
CLASS="ACRONYM"
>PHP</SPAN
>. It is also needed if you want to use
<SPAN
CLASS="APPLICATION"
>mod_authmysql</SPAN
>, See <A
HREF="modules.html#AUTHMYSQL"
>Section 4.3</A
> for more information</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN304"
></A
>2.4.2. Download</H3
><P
>Origin-Site: <A
HREF="http://www.mysql.com/downloads/"
TARGET="_top"
>http://www.mysql.com/downloads/</A
></P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN308"
></A
>2.4.3. Building and installing</H3
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
>cd /usr/local
tar -xvzf mysql-3.23.55.tar.gz
cd mysql-3.23.55
./configure \
--prefix=/usr/local/mysql \
--enable-assembler \
--with-innodb \
--without-debug
make
make install
/usr/local/mysql/bin/mysql_install_db
echo /usr/local/mysql/lib/mysql &#62;&#62; /etc/ld.so.conf
ldconfig</PRE
></FONT
></TD
></TR
></TABLE
><P
>For security-improvement add a MySQL-user on your system <SPAN
CLASS="ABBREV"
>e.g.</SPAN
> <20>mysql<71>.</P
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
>chown -R mysql /usr/local/mysql/var</PRE
></FONT
></TD
></TR
></TABLE
><P
>You may wish to start MySQL automatically at boottime, copy <TT
CLASS="FILENAME"
>/usr/local/mysql/share/mysql/mysql.server</TT
>
to <TT
CLASS="FILENAME"
>/etc/init.d/</TT
> (or wherever your rc-script are located) and create the corresponding symbolic
link in the runlevel directories.
<TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
>cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/
ln -s /etc/init.d/mysql.server /etc/init.d/rc3.d/S20mysql
ln -s /etc/init.d/mysql.server /etc/init.d/rc3.d/K20mysql</PRE
></FONT
></TD
></TR
></TABLE
>&#13;</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN318"
></A
>2.4.4. Securing MySQL</H3
><P
>This part is only optional, and describes how to bind the MySQL daemon to the localhost IP</P
><P
>I suggest to just bind MySQL to the loopback-interface 127.0.0.1. This makes sure nobody can connect to your
MySQL-Daemon via the network. But of course it only makes sense if MySQL runs on the same box like the webserver.</P
><P
>edit <TT
CLASS="FILENAME"
>/etc/init.d/mysql.server</TT
> and edit line 107 as following:</P
><P
>Original line:</P
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
>$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file&#38;</PRE
></FONT
></TD
></TR
></TABLE
><P
>Changed line:</P
><P
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
>$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file \
--bind-address=127.0.0.1&#38; <A
NAME="BIND"
><IMG
SRC="../images/callouts/1.gif"
HSPACE="0"
VSPACE="0"
BORDER="0"
ALT="(1)"></A
></PRE
></FONT
></TD
></TR
></TABLE
></P
><DIV
CLASS="CALLOUTLIST"
><DL
COMPACT="COMPACT"
><DT
><A
HREF="prereqs.html#BIND"
><IMG
SRC="../images/callouts/1.gif"
HSPACE="0"
VSPACE="0"
BORDER="0"
ALT="(1)"></A
></DT
><DD
>Here you can define to which interface MySQL should be bound</DD
></DL
></DIV
><P
>Alternatively you can completely disable the networking functionality of MySQL.</P
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
>$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file \
--skip-networking &#38;</PRE
></FONT
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN335"
></A
>2.5. Building mm</H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN337"
></A
>2.5.1. What is <SPAN
CLASS="APPLICATION"
>mm</SPAN
></H3
><A
NAME="AEN340"
></A
><TABLE
BORDER="0"
WIDTH="100%"
CELLSPACING="0"
CELLPADDING="0"
CLASS="BLOCKQUOTE"
><TR
><TD
WIDTH="10%"
VALIGN="TOP"
>&nbsp;</TD
><TD
WIDTH="80%"
VALIGN="TOP"
><P
>The MM library is a 2-layer abstraction library which simplifies the usage of shared memory between forked
(and this way strongly related) processes under Unix platforms. On the first layer it hides all platform dependent
implementation details (allocation and locking) when dealing with shared memory segments and on the second layer
it provides a high-level malloc(3)-style API for a convenient and well known way to work with data-structures
inside those shared memory segments. </P
></TD
><TD
WIDTH="10%"
VALIGN="TOP"
>&nbsp;</TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="RIGHT"
VALIGN="TOP"
>--<SPAN
CLASS="ATTRIBUTION"
>www.engelschall.com</SPAN
></TD
><TD
WIDTH="10%"
>&nbsp;</TD
></TR
></TABLE
><P
>It is a common library that enables Unix programmers to simplify <SPAN
CLASS="ABBREV"
>shm</SPAN
> (Shared memory)
accesses. It is used by many products, <SPAN
CLASS="ABBREV"
>e.g.</SPAN
>
<SPAN
CLASS="APPLICATION"
>PHP</SPAN
> and <SPAN
CLASS="APPLICATION"
>mod_ssl</SPAN
></P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN348"
></A
>2.5.2. Download</H3
><P
>Origin Site: <A
HREF="ftp://ftp.ossp.org/pkg/lib/mm/mm-1.2.2.tar.gz"
TARGET="_top"
>ftp://ftp.ossp.org/pkg/lib/mm/mm-1.2.2.tar.gz</A
></P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN352"
></A
>2.5.3. Building and installing</H3
><TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
>cd /usr/local
tar -xvzf mm-1.2.2.tar.gz
cd mm-1.2.2
./configure
make
make test
make install
ldconfig</PRE
></FONT
></TD
></TR
></TABLE
></DIV
></DIV
></DIV
><H3
CLASS="FOOTNOTES"
>Notes</H3
><TABLE
BORDER="0"
CLASS="FOOTNOTES"
WIDTH="100%"
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
WIDTH="5%"
><A
NAME="FTN.AEN230"
HREF="prereqs.html#AEN230"
><SPAN
CLASS="footnote"
>[1]</SPAN
></A
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
WIDTH="95%"
><P
>This <SPAN
CLASS="ABBREV"
>RPM</SPAN
> contains the header files
needed for php</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
WIDTH="5%"
><A
NAME="FTN.AEN236"
HREF="prereqs.html#AEN236"
><SPAN
CLASS="footnote"
>[2]</SPAN
></A
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
WIDTH="95%"
><P
>Only needed if PHP is being built from the CVS tree</P
></TD
></TR
></TABLE
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="intro.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="apache.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Introduction</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Getting, build and install Apache with its basic modules</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>