Kompilace Apache + PHP3 + MySQL
V.S.
linux na linux.listy.cz
Pondělí Listopad 29 21:09:35 CET 1999
Od: Karel Zak - Zakkr <zakkr na zf.jcu.cz>
> > > Kdyz tak sleduji tento thread, nezkousel nekdo taky:
> > >
> > > ftp://ftp2.zf.jcu.cz/users/zakkr/apache/apache-cs-php-ssl-v3.tar.gz
> > >
> > > Je to kompletni balik a staci tam jen nastavit co chcete a "ono" se to
> > > prekompiluje (bez problemu vyzkouseno apache + mysql + postgresql +
> > > ssl + php + cz apod..).
> > >
> > Vyzkousel bych to, potrebuji ale PHP3, je tam?
> > Kde se to nastavuje? Muzete napsat strucne info?
> >
> Ten balik obsahuje vse (vcetne zdrojaku (proto to ma 5Mb)) tedy:
> apache 1.3.6
> php3 3.0.12
> modssl 2.3.11 (+ openssl 0.9.3a pokud to nemate v systemu)
> modczech
>
> (no a k PHP musi byt v systemu to co se chce zakompilovat (MySQL ..atd)
> Vsechno jsou to mozne posledni verze (tedy takove, aby to slo vzajemne do
> sebe.)
>
> Je tam skript run a v nem na zacatku nastaveni toho co se ma to toho
apache
> zakompilovat + nastaveni cest pro apache.
>
> no a pak ./run (bez option to da parametry)
> ./run init
> ./run make
>
> (pokud to budete kompilovat vicekrat tak je to treba smazat pomoci
> ./run delete - (z duvodu cz pache)
>
Tak jsem to zkusil, ale opet bez uspechu. Tentokrat to pri ./run make vypise
tohle:
[...]
Creating Makefile in src/os/unix
Creating Makefile in src/modules/standard
configure: warning: #: invalid host type
configure: warning: #: invalid host type
configure: error: can only configure for one host and one target at a time
[root na www apache-cs-php-ssl]#
Prikladam script run.
Diky moc za pomoc.
V.S.
------------- další část ---------------
#!/bin/sh
### Standard EDIT area {{{ -------------------------------------------------
# NOTE: Please, use "" instead "no" in the next configuration !
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#============= What do you want?
# HAVE_XXX="yes" / HAVE_XXX="" )
HAVE_SSL="yes" # OpenSSL modul
HAVE_MCZ="yes" # Czech modul
HAVE_PHP="yes" # PHP modul
#============= Options
MAKE_OPTION="" # "-j" making on Multi-CPU systems
####################
###### APACHE ######
####################
# Install options
# - if you set ( XXX_DIR="" ), apache use PREFIX.
#
PREFIX="/etc/httpd" # Top dir of the apache's tree
# NOTE (good idea :-):
# - if you want to install apache to your system via your
# distribution set next values, but if you want to compile
# standard apache unset next value (value="") and apache
# will be install to PREFIX tree only (not to '/etc' '/var' ...).
#
CONF_DIR="/etc/httpd" # Apache + SSL config dir
HTDOCS_DIR="/home/pegasart/publichtml" # Top dir for WWW pages tree
ICONS_DIR="/usr/share/httpd/icons" # Apache's icons
INCLUDE_DIR="/usr/include/httpd" # Apache "C" include files
CGI_DIR="/home/pegasart/cgi-bin" # Cgi-bin dir
LIBEXEC_DIR="" # DSO - modules
LOG_DIR="/var/log/httpd" # Log files
LOCALSTATE_DIR="/var/run" # Server status dir
RUNTIME_DIR="/var/run" # Dir for PID file (?)
MAN_DIR="/usr/man" # Manual pages
PROXYCACHE_DIR="" # Proxy cache dir
SERVER_START_DIR="/etc/rc.d/init.d" # Dir for the
# server start script
# _BIN_ Ignored if you use SSL from this package
#
BIN_DIR="/usr/bin"
SBIN_DIR="/usr/sbin"
# NOTE: Don't forget (after install) edit a httpd.conf !
#################
###### PHP ######
#################
# Standard PHP is with "-g"
#
PHP_CFLAGS="-O3"
# What do you want in PHP ? (If you set HAVE_PHP !)
# - EDIT this item !!! --> add / unset --with-xxx=???
#
PHP_SUPPORT=" \
# --with-pgsql=/usr \
# --with-gd=/usr \
--enable-track-vars \
--with-mysql=/usr/local/mysql \
--with-config-file-path=/etc/httpd \
"
### Other PHP switchs:
# - next are basic switchs only (!) for more see the
# ./configure --help in PHP source)
# - if you want add some next support - copy '--with' line
# without '#' to PHP_SUPPORT and if your favourite switch
# is not here type it manually to PHP_SUPPORT
# - you dont't forget set DIR --with_xxx=[DIR]
#
# --with-gd= \
# --with-oracle= \
# --with-iodbc= \
# --with-adabas= \
# --with-sybase= \
# --with-sybase-ct= \
# --with-msql= \
# --with-solid= \
# --with-ldap= \
# --with-mysql=/usr \
#################
###### SSL ######
#################
# SYSTEM_SSL -> Set "yes" or ""
#
# "yes" - if you want use SSL from your system instead SSL in
# this package.
# - you need 'libssl' and 'openssl' in your system.
# ! - Note: in your system is (probably) older SSL, than
# needs latest mod_ssl ! (Hmm... I think, that good idea
# is use for apache on (distribution and) system
# independent SSL.)
#
SYSTEM_SSL="yes"
# If you set SYSTEM_SSL="yes" :
#
SYSTEM_SSL_BIN="/usr/bin/"
SYSTEM_SSL_SPT="/usr/bin/"
####################
###### BUGFIX ######
####################
# Special option for PHP gcc command line.
#
PHP_OTHER_CC_OPT=""
### }}} End of EDIT --------------------------------------------------------
### ------------------------------------------------------------------------
PHP_OTHER_CC_OPT=" ${PHP_OTHER_CC_OPT} "
### Advanced EDIT area
# Apache modules
[ "${HAVE_MCZ}" ] && APACHE_MODL_OPT="${APACHE_MODL_OPT} --activate-module=src/modules/czech/libczech.a"
[ "${HAVE_PHP}" ] && APACHE_MODL_OPT="${APACHE_MODL_OPT} --activate-module=src/modules/php3/libphp3.a"
[ "${HAVE_SSL}" ] && APACHE_MODL_OPT="${APACHE_MODL_OPT} --enable-module=ssl --enable-shared=ssl"
# Apache configure
[ "${CONF_DIR}" ] && APACHE_CONF_OPT="${APACHE_CONF_OPT} --sysconfdir=${CONF_DIR}"
[ "${LOG_DIR}" ] && APACHE_CONF_OPT="${APACHE_CONF_OPT} --logfiledir=${LOG_DIR}"
[ "${RUNTIME_DIR}" ] && APACHE_CONF_OPT="${APACHE_CONF_OPT} --runtimedir=${RUNTIME_DIR}"
[ "${MAN_DIR}" ] && APACHE_CONF_OPT="${APACHE_CONF_OPT} --mandir=${MAN_DIR}"
[ "${PROXYCACHE_DIR}" ] && APACHE_CONF_OPT="${APACHE_CONF_OPT} --proxycachedir=${PROXYCACHE_DIR}"
[ "${LIBEXEC_DIR}" ] && APACHE_CONF_OPT="${APACHE_CONF_OPT} --libexecdir=${LIBEXEC_DIR}"
[ "${LOCALSTATE_DIR}" ] && APACHE_CONF_OPT="${APACHE_CONF_OPT} --localstatedir=${LOCALSTATE_DIR}"
[ "${INCLUDE_DIR}" ] && APACHE_CONF_OPT="${APACHE_CONF_OPT} --includedir=${INCLUDE_DIR}"
if [ "${SYSTEM_SSL}" ]; then
[ "${BIN_DIR}" ] && APACHE_CONF_OPT="${APACHE_CONF_OPT} --bindir=${BIN_DIR}"
[ "${SBIN_DIR}" ] && APACHE_CONF_OPT="${APACHE_CONF_OPT} --sbindir=${SBIN_DIR}"
fi
# Apache make
[ "${HTDOCS_DIR}" ] && APACHE_MAKE_OPT="${APACHE_MAKE_OPT} htdocsdir=${HTDOCS_DIR}"
[ "${ICONS_DIR}" ] && APACHE_MAKE_OPT="${APACHE_MAKE_OPT} iconsdir=${ICONS_DIR}"
[ "${CGI_DIR}" ] && APACHE_MAKE_OPT="${APACHE_MAKE_OPT} cgidir=${CGI_DIR}"
#============= Files
APACHE="apache_1.3.6.tar.gz"
DIR_APACHE="apache_1.3.6"
OPENSSL="openssl-0.9.3a.tar.gz"
DIR_OPENSSL="openssl-0.9.3a"
MODSSL="mod_ssl-2.3.11-1.3.6.tar.gz"
DIR_MODSSL="mod_ssl-2.3.11-1.3.6"
PHP="php-3.0.12.tar.gz"
DIR_PHP="php-3.0.12"
MCZ="mcz-patch_1.3.6_3.1.0b4.gz"
MCZ_PATCH="mcz-patch_1.3.6_3.1.0b4"
MCZ_ADD_CONFIG="mcz_config"
#============= Commands
TAR="tar"
GZIP="gzip"
RM="rm"
TOPDIR=`pwd`
CP="cp"
CHMOD="chmod"
MKDIR="mkdir -p"
MV="mv"
#---------------------------------------------
ungzip_all()
{
${TAR} -zxvf ${APACHE}
[ "${HAVE_MCZ}" ] && ${GZIP} -d ${MCZ}
[ "${HAVE_PHP}" ] && ${TAR} -zxvf ${PHP}
[ "${HAVE_SSL}" -a ! "${SYSTEM_SSL}" ] && ${TAR} -zxvf ${OPENSSL}
[ "${HAVE_SSL}" ] && ${TAR} -zxvf ${MODSSL}
}
delete_all()
{
${RM} -fr ${DIR_APACHE}
[ "${HAVE_MCZ}" -a -f "${MCZ_PATCH}" ] && ${GZIP} ${MCZ_PATCH}
[ "${HAVE_PHP}" ] && ${RM} -fr ${DIR_PHP}
[ "${HAVE_SSL}" -a ! "${SYSTEM_SSL}" ] && ${RM} -fr ${DIR_OPENSSL}
[ "${HAVE_SSL}" ] && ${RM} -fr ${DIR_MODSSL}
${RM} -f debian/control
}
patch_mcz()
{
cd ${DIR_APACHE}/src
patch -p1 < ../../${MCZ_PATCH} || exit 1
cd modules/czech/charconv
make ${MAKE_OPT} || exit 1
cd ${TOPDIR}
}
patch_mcz_conf()
{
cd ${DIR_APACHE}/conf
cat ../../${MCZ_ADD_CONFIG} >> httpd.conf-dist || exit 1
cd ${TOPDIR}
}
clean_apache()
{
if [ "${HAVE_MCZ}" ]; then
echo "MCZ: Apache is pached - can't make clean, but must re-init it."
${RM} -fr ${DIR_APACHE}
${TAR} -zxvf ${APACHE}
else
cd ${DIR_APACHE}
make clean || exit 1
cd ${TOPDIR}
fi
}
clean_php()
{
if [ "${HAVE_PHP}" ]; then
cd ${DIR_PHP}
make clean || exit 1
cd ${TOPDIR}
fi
}
clean_openssl()
{
if [ "${HAVE_SSL}" -a ! "${SYSTEM_SSL}" ]; then
cd ${DIR_OPENSSL}
make clean || exit 1
cd ${TOPDIR}
fi
}
clean_modssl()
{
if [ "${HAVE_SSL}" ]; then
cd ${DIR_MODSSL}
make clean || exit 1
cd ${TOPDIR}
fi
}
make_php()
{
cd ${DIR_APACHE}
# This is (dummy) pre-configure for PHP
./configure --prefix=${PREFIX} ${APACHE_CONF_OPT} || exit 1
cd ${TOPDIR}
cd ${DIR_PHP}
CFLAGS="${PHP_CFLAGS} ${PHP_OTHER_CC_OPT}" \
./configure ${PHP_SUPPORT} --with-apache="../${DIR_APACHE}" || exit 1
make ${MAKE_OPT} || exit 1 # PHP make
make install || exit 1
cd ${TOPDIR}
}
make_openssl()
{
cd ${DIR_OPENSSL}
perl ./Configure gcc no-idea --prefix=${PREFIX} || exit 1
make ${MAKE_OPT} || exit 1
cd ${TOPDIR}
}
make_modssl()
{
cd ${DIR_MODSSL}
[ "${SYSTEM_SSL}" ] && PATH=${PATH}:${SYSTEM_SSL_BIN}
./configure --with-apache="../${DIR_APACHE}" || exit 1
cd ${TOPDIR}
}
make_apache()
{
cd ${DIR_APACHE}
if [ "${SYSTEM_SSL}" ]; then
SSL_IS="SYSTEM"
else
SSL_IS="../${DIR_OPENSSL}"
fi
if [ "${HAVE_SSL}" ]; then
SSL_BASE=${SSL_IS} ./configure ${APACHE_MODL_OPT} ${APACHE_CONF_OPT} --prefix=${PREFIX} || exit 1
else
./configure ${APACHE_MODL_OPT} ${APACHE_CONF_OPT} --prefix=${PREFIX} || exit 1
fi
make ${MAKE_OPT} ${APACHE_MAKE_OPT} || exit 1
cd ${TOPDIR}
}
INSTALL_QUIET=""
install_quiet_me()
{
cd ${DIR_APACHE}
make install-quiet root=${INSTALL_QUIET} ${APACHE_MAKE_OPT} || exit 1
cd ${TOPDIR}
if [ "${HAVE_SSL}" -a ! "${SYSTEM_SSL}" ]; then
cd ${DIR_OPENSSL}
make INSTALL_PREFIX=${INSTALL_QUIET} install || exit 1
cd ${TOPDIR}
fi
if [ "${BIN_DIR}" ]; then INST_BIN="${BIN_DIR}"
else INST_BIN="${PREFIX}/bin"
fi
if [ "${SBIN_DIR}" ]; then INST_SBIN="${SBIN_DIR}"
else INST_SBIN="${PREFIX}/sbin"
fi
if [ "${CGI_DIR}" ]; then INST_CGI="${CGI_DIR}"
else INST_CGI="${PREFIX}/cgi-bin"
fi
if [ "${HTDOCS_DIR}" ]; then INST_WWW=${HTDOCS_DIR}
else INST_WWW="${PREFIX}/htdocs"
fi
#SSL
if [ "${HAVE_SSL}" ]; then
if [ "${SYSTEM_SSL}" ]; then
SSL_BIN=${SYSTEM_SSL_BIN}
SSL_SCRIPTS=${SYSTEM_SSL_SPT}
else
SSL_BIN="${PREFIX}/bin"
SSL_SCRIPTS="${PREFIX}/ssl/misc"
fi
cd spt
sed -e "
s%@apache_confdir@%$CONF_DIR%g
s%@ssl_bin@%$SSL_BIN%g
s%@ssl_scripts@%$SSL_SCRIPTS%g
s%@sslmod_scripts@%$INST_BIN%g
" sslmain.sh-dist > "${INSTALL_QUIET}/${INST_BIN}/sslmain.sh" || exit 1
${CHMOD} u+x "${INSTALL_QUIET}/${INST_BIN}/sslmain.sh"
${CP} httpd-mkcert.sh "${INSTALL_QUIET}/${INST_BIN}/httpd-mkcert.sh"
${CHMOD} u+x "${INSTALL_QUIET}/${INST_BIN}/httpd-mkcert.sh"
${CP} get_server_ca.cgi "${INSTALL_QUIET}/${INST_CGI}/get_server_ca.cgi"
${CHMOD} +x "${INSTALL_QUIET}/${INST_CGI}/get_server_ca.cgi"
#SSL end
fi
cd ${TOPDIR}
if [ "${SERVER_START_DIR}" ]; then
${MKDIR} ${INSTALL_QUIET}/${SERVER_START_DIR}
${CP} ${INSTALL_QUIET}/${INST_SBIN}/apachectl \
${INSTALL_QUIET}/${SERVER_START_DIR}/httpd
fi
${MKDIR} ${INSTALL_QUIET}/usr/doc/httpd/
${MV} ${INSTALL_QUIET}/${INST_WWW}/* ${INSTALL_QUIET}/usr/doc/httpd/
cd ${TOPDIR}
${CP} ${spt}/README.manual ${INSTALL_QUIET}/${INST_WWW}/
}
des_package()
{
PACKAGE_DESCRIPTION="Non-official Apache include: ${DIR_APACHE} "
PACKAGE_NAME="apache"
if [ "${HAVE_MCZ}" ]; then
PACKAGE_DESCRIPTION="${PACKAGE_DESCRIPTION} ${MCZ_PATCH} "
PACKAGE_NAME="${PACKAGE_NAME}-cs"
fi
if [ "${HAVE_PHP}" ]; then
PACKAGE_DESCRIPTION="${PACKAGE_DESCRIPTION} ${DIR_PHP} "
PACKAGE_NAME="${PACKAGE_NAME}-php"
fi
if [ "${HAVE_SSL}" ]; then
PACKAGE_DESCRIPTION="${PACKAGE_DESCRIPTION} ${DIR_MODSSL} "
PACKAGE_NAME="${PACKAGE_NAME}-ssl"
fi
sed -e "
s%@package_description@%$PACKAGE_DESCRIPTION%g
s%@package_name@%$PACKAGE_NAME%g
" debian/control-dist > debian/control || exit 1
if [ "${CONF_DIR}" ]; then INST_CONF="${CONF_DIR}"
else INST_CONF="${PREFIX}/conf"
fi
echo "${INST_CONF}/httpd.conf" > debian/conffiles
echo "${INST_CONF}/access.conf" >> debian/conffiles
echo "${INST_CONF}/mime.types" >> debian/conffiles
echo "${INST_CONF}/srm.conf" >> debian/conffiles
if [ "${HAVE_SSL}" ]; then
echo "${INST_CONF}/ssl.crt/server.crt" >> debian/conffiles
echo "${INST_CONF}/ssl.csr/server.csr" >> debian/conffiles
echo "${INST_CONF}/ssl.key/server.key" >> debian/conffiles
fi
}
####### Main
case "$1" in
delete)
delete_all
;;
clean-all)
clean_apache
clean_php
clean_openssl
clean_modssl
;;
clean-apache)
clean_apache
;;
clean-php)
clean_php
;;
clean-openss)
clean_openssl
;;
clean-modssl)
clean_modssl
;;
init)
ungzip_all
;;
make)
[ "${HAVE_MCZ}" ] && patch_mcz
[ "${HAVE_SSL}" -a ! "${SYSTEM_SSL}" ] && make_openssl
[ "${HAVE_SSL}" ] && make_modssl
[ "${HAVE_PHP}" ] && make_php
make_apache
[ "${HAVE_MCZ}" ] && patch_mcz_conf
des_package
;;
install-quiet)
[ ! "${2}" ] && exit 1
INSTALL_QUIET="${2}"
install_quiet_me
;;
default|"")
echo
echo "Usage: ./run [options]"
echo
echo "options: "
echo
echo " init - init all"
echo " make - make all"
echo " clean-all - clean all"
echo " clean-<package> - clean package"
echo " package: apache / openssl / modssl / php"
echo
echo " delete - delete all"
echo " install-quiet [dir] - install to 'dir'"
echo " not install to system"
echo
;;
esac
Další informace o konferenci Linux