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