Cleaned things up. Made things working :-) Both the startup script
in ${PREFIX}/etc/rc.d and the control script in ${PREFIX}/bin have been refactored and now actually work very well. Using the 'www' user and group, creating them if they don't exist. I've used the same approach as www/apache13. STDOUT_LOG and STDERR_LOG are now fixed (no ?= anymore) since the package deinstall does not support a different location. This fixes the first half of PR 28624. See: http://www.freebsd.org/cgi/query-pr.cgi?pr=34931 Reported by: Kees Jan Koster <k.j.koster@kpn.com>
This commit is contained in:
parent
e7c1eb4000
commit
229c3f67eb
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=55052
@ -7,6 +7,7 @@
|
||||
|
||||
PORTNAME= jakarta-tomcat
|
||||
PORTVERSION= 3.2.4
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= www java
|
||||
MASTER_SITES= http://jakarta.apache.org/builds/jakarta-tomcat/release/v${PORTVERSION}/bin/ \
|
||||
http://www.metaverse.nl/~ernst/ \
|
||||
@ -25,40 +26,34 @@ LOG_DIR= ${APP_HOME}/logs
|
||||
PLIST_SUB+= T=${APP_HOME:S/^${PREFIX}\///}
|
||||
APP_TITLE= Jakarta Tomcat
|
||||
APP_SHORTNAME= tomcat
|
||||
APPCTL_NAME= ${APP_SHORTNAME}ctl
|
||||
CTL_SCRIPT= ${PREFIX}/bin/${APPCTL_NAME}
|
||||
CONTROL_SCRIPT_NAME= ${APP_SHORTNAME}ctl
|
||||
CONTROL_SCRIPT= ${PREFIX}/bin/${CONTROL_SCRIPT_NAME}
|
||||
STARTUP_ORDER?= 020
|
||||
STARTUP_SCRIPT= ${PREFIX}/etc/rc.d/${STARTUP_ORDER}.${PORTNAME}.sh
|
||||
JAVA_HOME?= ${LOCALBASE}/jdk1.3.1
|
||||
JAVA_PORT?= ${PORTSDIR}/java/jdk13
|
||||
USER_NAME?= ${APP_SHORTNAME}
|
||||
GROUP_NAME?= ${USER_NAME}
|
||||
USER_ID?= 7103
|
||||
GROUP_ID?= ${USER_ID}
|
||||
USER_NAME= www
|
||||
GROUP_NAME= www
|
||||
PW?= /usr/sbin/pw
|
||||
LISTEN_PORT?= 8080
|
||||
STDOUT_LOG?= ${LOG_DIR}/stdout.log
|
||||
STDERR_LOG?= ${LOG_DIR}/stderr.log
|
||||
STDOUT_LOG= ${LOG_DIR}/stdout.log
|
||||
STDERR_LOG= ${LOG_DIR}/stderr.log
|
||||
AUTO_START?= NO
|
||||
|
||||
pre-install:
|
||||
@${ECHO_CMD} "Installation settings:"
|
||||
@${ECHO_CMD} " Destination directory: ${APP_HOME}"
|
||||
@${ECHO_CMD} " Control script location: ${CTL_SCRIPT}"
|
||||
@${ECHO_CMD} " Control script location: ${CONTROL_SCRIPT}"
|
||||
@${ECHO_CMD} " Startup script location: ${STARTUP_SCRIPT}"
|
||||
@${ECHO_CMD} " Location of JDK: ${JAVA_HOME}"
|
||||
@${ECHO_CMD} " Location of Java port: ${JAVA_PORT}"
|
||||
@${ECHO_CMD} " Running as (user/group): ${USER_NAME}/${GROUP_NAME} (${USER_ID}:${GROUP_ID})"
|
||||
@${ECHO_CMD} " Running as (user/group): ${USER_NAME}/${GROUP_NAME}"
|
||||
@${ECHO_CMD} " Port to listen at: ${LISTEN_PORT}"
|
||||
@${ECHO_CMD} " Logfile stdout: ${STDOUT_LOG}"
|
||||
@${ECHO_CMD} " Logfile stderr: ${STDERR_LOG}"
|
||||
@${ECHO_CMD} " Starting after install: ${AUTO_START}"
|
||||
|
||||
do-install:
|
||||
@# Add the group and the user if they do not exist
|
||||
${PW} groupadd -n ${GROUP_NAME} -g ${GROUP_ID} || true
|
||||
${PW} useradd -n ${USER_NAME} -u ${USER_ID} -g ${GROUP_NAME} -c "${APP_TITLE} account" -d ${APP_HOME} -s ${SH} -h - || true
|
||||
|
||||
@# Create the destination directory
|
||||
${MKDIR} ${APP_HOME}
|
||||
|
||||
@ -75,10 +70,17 @@ do-install:
|
||||
> ${WRKDIR}/workers.properties
|
||||
${MV} ${WRKDIR}/workers.properties ${APP_HOME}/conf/workers.properties
|
||||
|
||||
@# Install the startup script
|
||||
${CAT} ${FILESDIR}/${PORTNAME}.sh \
|
||||
| ${SED} "/%%USER_NAME%%/s//${USER_NAME}/" \
|
||||
| ${SED} "/%%APP_SHORTNAME%%/s//${APP_SHORTNAME}/" \
|
||||
| ${SED} "/%%CONTROL_SCRIPT%%/s//${CONTROL_SCRIPT:S/\//\\\//g}/" \
|
||||
> ${STARTUP_SCRIPT}
|
||||
${CHMOD} 0554 ${STARTUP_SCRIPT}
|
||||
|
||||
@# Install the control script
|
||||
${CAT} ${FILESDIR}/${APPCTL_NAME} \
|
||||
${CAT} ${FILESDIR}/${CONTROL_SCRIPT_NAME} \
|
||||
| ${SED} "/%%PORTNAME%%/s//${PORTNAME}/" \
|
||||
| ${SED} "/%%PORTVERSION%%/s//${PORTVERSION}/" \
|
||||
| ${SED} "/%%APP_TITLE%%/s//${APP_TITLE}/" \
|
||||
| ${SED} "/%%APP_SHORTNAME%%/s//${APP_SHORTNAME}/" \
|
||||
| ${SED} "/%%APP_HOME%%/s//${APP_HOME:S/\//\\\//g}/" \
|
||||
@ -88,13 +90,9 @@ do-install:
|
||||
| ${SED} "/%%USER_NAME%%/s//${USER_NAME}/" \
|
||||
| ${SED} "/%%STDOUT_LOG%%/s//${STDOUT_LOG:S/\//\\\//g}/" \
|
||||
| ${SED} "/%%STDERR_LOG%%/s//${STDERR_LOG:S/\//\\\//g}/" \
|
||||
> ${CTL_SCRIPT}
|
||||
${CHOWN} ${USER_NAME}:${GROUP_NAME} ${CTL_SCRIPT}
|
||||
${CHMOD} 6554 ${CTL_SCRIPT}
|
||||
|
||||
@# Install the startup script
|
||||
${CP} ${FILESDIR}/${PORTNAME}.sh ${STARTUP_SCRIPT}
|
||||
${CHMOD} 0554 ${STARTUP_SCRIPT}
|
||||
> ${CONTROL_SCRIPT}
|
||||
${CHOWN} ${USER_NAME}:${GROUP_NAME} ${CONTROL_SCRIPT}
|
||||
${CHMOD} 6554 ${CONTROL_SCRIPT}
|
||||
|
||||
@# Create the directories that the application will create at the
|
||||
@# first run
|
||||
@ -115,21 +113,21 @@ do-install:
|
||||
|
||||
@# Install the man page
|
||||
.if !defined(NOPORTDOCS)
|
||||
${CAT} ${FILESDIR}/${APPCTL_NAME}.1 \
|
||||
${CAT} ${FILESDIR}/${CONTROL_SCRIPT_NAME}.1 \
|
||||
| ${SED} "/%%PREFIX%%/s//${PREFIX:S/\//\\\//g}/" \
|
||||
> ${WRKDIR}/${APPCTL_NAME}.1
|
||||
${INSTALL_MAN} ${WRKDIR}/${APPCTL_NAME}.1 ${MANPREFIX}/man/man1
|
||||
> ${WRKDIR}/${CONTROL_SCRIPT_NAME}.1
|
||||
${INSTALL_MAN} ${WRKDIR}/${CONTROL_SCRIPT_NAME}.1 ${MANPREFIX}/man/man1
|
||||
.endif
|
||||
|
||||
post-install:
|
||||
@${ECHO_CMD} "${APP_TITLE} ${PORTVERSION} has been installed in ${APP_HOME}."
|
||||
@${ECHO_CMD} "If you would like a user to be able to use ${APPCTL_NAME}, then put this user in the group ${GROUP_NAME}."
|
||||
@${ECHO_CMD} "If you would like a user to be able to use ${CONTROL_SCRIPT_NAME}, then put this user in the group ${GROUP_NAME}."
|
||||
.if !defined(NOPORTDOCS)
|
||||
@${ECHO_CMD} "Use 'man ${APPCTL_NAME}' for information about starting and stopping ${APP_TITLE}."
|
||||
@${ECHO_CMD} "Use 'man ${CONTROL_SCRIPT_NAME}' for information about starting and stopping ${APP_TITLE}."
|
||||
.endif
|
||||
.if ${AUTO_START} == "YES"
|
||||
@${ECHO_CMD} "Starting ${APP_TITLE}..."
|
||||
@${CTL_SCRIPT} start || true
|
||||
@${CONTROL_SCRIPT} start || true
|
||||
.endif
|
||||
|
||||
.include <bsd.port.mk>
|
||||
|
@ -3,21 +3,17 @@
|
||||
# Set some variables
|
||||
USER_NAME=%%USER_NAME%%
|
||||
MYSELF=`basename $0`
|
||||
CONTROL_SCRIPT=%%CONTROL_SCRIPT%%
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% start" > /dev/null ; echo -n
|
||||
su -f -m ${USER_NAME} -c "exec %%CONTROL_SCRIPT%% start" && echo -n ' %%APP_SHORTNAME%%'
|
||||
;;
|
||||
stop)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% stop"
|
||||
;;
|
||||
restart)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% restart"
|
||||
su -f -m ${USER_NAME} -c "exec %%CONTROL_SCRIPT%% stop" && echo -n ' %%APP_SHORTNAME%%'
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "Usage: ${MYSELF} { start | stop | restart }"
|
||||
echo "Usage: ${MYSELF} { start | stop }"
|
||||
echo ""
|
||||
exit 64
|
||||
;;
|
||||
|
@ -1,9 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Set some variables
|
||||
VERSION=%%PORTVERSION%%
|
||||
APP_HOME=%%APP_HOME%%
|
||||
USER_NAME=%%USER_NAME%%
|
||||
STDOUT_LOG=%%STDOUT_LOG%%
|
||||
STDERR_LOG=%%STDERR_LOG%%
|
||||
JAR_FILE=${APP_HOME}/lib/webserver.jar
|
||||
@ -22,13 +20,6 @@ if [ -f ${JAVA_HOME}/lib/tools.jar ] ; then
|
||||
CLASSPATH=${CLASSPATH}:${JAVA_HOME}/lib/tools.jar
|
||||
fi
|
||||
|
||||
# Check if we're being run as a shell script or as an rc script
|
||||
if [ ${MYSELF} = "%%RC_SCRIPT_NAME%%" ]; then
|
||||
AS_RC_SCRIPT=yes
|
||||
else
|
||||
AS_RC_SCRIPT=no
|
||||
fi
|
||||
|
||||
# Check if the JAVA_HOME directory is defined, otherwise set it to the
|
||||
# fallback default
|
||||
if [ "${JAVA_HOME}a" = "a" ]; then
|
||||
@ -36,50 +27,101 @@ if [ "${JAVA_HOME}a" = "a" ]; then
|
||||
fi
|
||||
JAVA_CMD=${JAVA_HOME}/bin/java
|
||||
|
||||
# Function that starts the application
|
||||
start() {
|
||||
|
||||
##############################################################################
|
||||
# Function that shows an error message
|
||||
#
|
||||
# This function is called by the 'checks' function
|
||||
#
|
||||
# Parameters:
|
||||
# 1: The message to be displayed.
|
||||
|
||||
error() {
|
||||
echo -n "%%APP_SHORTNAME%%: ERROR: "
|
||||
echo $1
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Function that performs all checks necessary for starting or stopping the
|
||||
# application.
|
||||
#
|
||||
# This function is called by the 'start' and 'stop' functions
|
||||
#
|
||||
# This function expects no parameters
|
||||
|
||||
checks() {
|
||||
# Make sure the application directory does exist
|
||||
if [ ! -d ${APP_HOME} ]; then
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo ""
|
||||
fi
|
||||
echo "%%APP_SHORTNAME%%: ERROR: Unable to find %%APP_TITLE%% home directory at ${APP_HOME}."
|
||||
error "Unable to find %%APP_TITLE%% home directory at ${APP_HOME}."
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# Make sure the application JAR file exists
|
||||
if [ ! -r ${JAR_FILE} ]; then
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo ""
|
||||
fi
|
||||
echo "%%APP_SHORTNAME%%: ERROR: Unable to find %%APP_TITLE%% JAR file at ${JAR_FILE}."
|
||||
error "Unable to find %%APP_TITLE%% JAR file at ${JAR_FILE}."
|
||||
exit 3
|
||||
fi
|
||||
|
||||
# Make sure the Java VM can be found
|
||||
if [ ! -x ${JAVA_CMD} ]; then
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo ""
|
||||
fi
|
||||
echo "%%APP_SHORTNAME%%: ERROR: Unable to find Java VM at ${JAVA_HOME}."
|
||||
error "Unable to find Java VM at ${JAVA_HOME}."
|
||||
exit 4
|
||||
fi
|
||||
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo -n " %%APP_SHORTNAME%%"
|
||||
fi
|
||||
su - ${USER_NAME} -c "(cd ${APP_HOME} && ${JAVA_CMD} -cp ${CLASSPATH} -Dtomcat.home=${APP_HOME} org.apache.tomcat.startup.Tomcat) >> ${STDOUT_LOG} 2>> ${STDERR_LOG}"
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Functions that calls the application with the specified parameter
|
||||
#
|
||||
# Parameters:
|
||||
# 1: The argument to pass to the application (optional)
|
||||
|
||||
app() {
|
||||
(cd ${APP_HOME} && ${JAVA_CMD} -cp ${CLASSPATH} -Dtomcat.home=${APP_HOME} org.apache.tomcat.startup.Tomcat $1 &) >> ${STDOUT_LOG} 2>> ${STDERR_LOG}
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Function that starts the application
|
||||
#
|
||||
# This function is called from the main function
|
||||
#
|
||||
# This function expects no parameters
|
||||
|
||||
start() {
|
||||
# Perform the checks
|
||||
checks
|
||||
|
||||
# Stop the application
|
||||
app
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Function that stops the application
|
||||
#
|
||||
# This function is called from the main function
|
||||
#
|
||||
# This function expects no parameters
|
||||
|
||||
stop() {
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo -n " %%APP_SHORTNAME%%"
|
||||
fi
|
||||
su - ${USER_NAME} -c "(cd ${APP_HOME} && ${JAVA_CMD} -cp ${CLASSPATH} -Dtomcat.home=${APP_HOME} org.apache.tomcat.startup.Tomcat -stop) >> ${STDOUT_LOG} 2>> ${STDERR_LOG}"
|
||||
# Perform the checks
|
||||
checks
|
||||
|
||||
# Stop the application
|
||||
app -stop
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
|
||||
##############################################################################
|
||||
# Main function. This function calls the 'start' and 'stop' functions.
|
||||
#
|
||||
# Parameters:
|
||||
# 1: The argument to this shell script
|
||||
|
||||
main() {
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
@ -91,9 +133,13 @@ case "$1" in
|
||||
start
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "Usage: ${MYSELF} { start | stop | restart }"
|
||||
echo ""
|
||||
exit 64
|
||||
;;
|
||||
esac
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
# Call the main function and exit
|
||||
main $1
|
||||
exit 0
|
||||
|
@ -1,8 +1,21 @@
|
||||
#!/bin/sh
|
||||
PID_FILE=/var/run/jakarta-tomcat.pid
|
||||
if [ -e ${PID_FILE} ]; then
|
||||
echo -n "Jakarta Tomcat is still running."
|
||||
/bin/kill `cat ${PID_FILE}`
|
||||
rm -f ${PID_FILE}
|
||||
echo " Stopped."
|
||||
#
|
||||
# This script does the following.
|
||||
#
|
||||
# Checks if the 'www' user exists. If it does, then it displays
|
||||
# a message.
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
# Make sure we're called during the 'make deinstall' process
|
||||
if [ "$2" != "POST-DEINSTALL" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# If the user exists, then display a message
|
||||
if pw usershow "www" 2>/dev/null 1>&2; then
|
||||
echo "To delete the www user permanently, use 'pw userdel www'"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
@ -410,5 +410,3 @@ etc/rc.d/020.jakarta-tomcat.sh
|
||||
@dirrm %%T%%/conf
|
||||
@dirrm %%T%%/bin
|
||||
@dirrm %%T%%
|
||||
@unexec pw groupdel tomcat || true
|
||||
@unexec pw userdel tomcat || true
|
||||
|
@ -7,6 +7,7 @@
|
||||
|
||||
PORTNAME= jakarta-tomcat
|
||||
PORTVERSION= 3.2.4
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= www java
|
||||
MASTER_SITES= http://jakarta.apache.org/builds/jakarta-tomcat/release/v${PORTVERSION}/bin/ \
|
||||
http://www.metaverse.nl/~ernst/ \
|
||||
@ -25,40 +26,34 @@ LOG_DIR= ${APP_HOME}/logs
|
||||
PLIST_SUB+= T=${APP_HOME:S/^${PREFIX}\///}
|
||||
APP_TITLE= Jakarta Tomcat
|
||||
APP_SHORTNAME= tomcat
|
||||
APPCTL_NAME= ${APP_SHORTNAME}ctl
|
||||
CTL_SCRIPT= ${PREFIX}/bin/${APPCTL_NAME}
|
||||
CONTROL_SCRIPT_NAME= ${APP_SHORTNAME}ctl
|
||||
CONTROL_SCRIPT= ${PREFIX}/bin/${CONTROL_SCRIPT_NAME}
|
||||
STARTUP_ORDER?= 020
|
||||
STARTUP_SCRIPT= ${PREFIX}/etc/rc.d/${STARTUP_ORDER}.${PORTNAME}.sh
|
||||
JAVA_HOME?= ${LOCALBASE}/jdk1.3.1
|
||||
JAVA_PORT?= ${PORTSDIR}/java/jdk13
|
||||
USER_NAME?= ${APP_SHORTNAME}
|
||||
GROUP_NAME?= ${USER_NAME}
|
||||
USER_ID?= 7103
|
||||
GROUP_ID?= ${USER_ID}
|
||||
USER_NAME= www
|
||||
GROUP_NAME= www
|
||||
PW?= /usr/sbin/pw
|
||||
LISTEN_PORT?= 8080
|
||||
STDOUT_LOG?= ${LOG_DIR}/stdout.log
|
||||
STDERR_LOG?= ${LOG_DIR}/stderr.log
|
||||
STDOUT_LOG= ${LOG_DIR}/stdout.log
|
||||
STDERR_LOG= ${LOG_DIR}/stderr.log
|
||||
AUTO_START?= NO
|
||||
|
||||
pre-install:
|
||||
@${ECHO_CMD} "Installation settings:"
|
||||
@${ECHO_CMD} " Destination directory: ${APP_HOME}"
|
||||
@${ECHO_CMD} " Control script location: ${CTL_SCRIPT}"
|
||||
@${ECHO_CMD} " Control script location: ${CONTROL_SCRIPT}"
|
||||
@${ECHO_CMD} " Startup script location: ${STARTUP_SCRIPT}"
|
||||
@${ECHO_CMD} " Location of JDK: ${JAVA_HOME}"
|
||||
@${ECHO_CMD} " Location of Java port: ${JAVA_PORT}"
|
||||
@${ECHO_CMD} " Running as (user/group): ${USER_NAME}/${GROUP_NAME} (${USER_ID}:${GROUP_ID})"
|
||||
@${ECHO_CMD} " Running as (user/group): ${USER_NAME}/${GROUP_NAME}"
|
||||
@${ECHO_CMD} " Port to listen at: ${LISTEN_PORT}"
|
||||
@${ECHO_CMD} " Logfile stdout: ${STDOUT_LOG}"
|
||||
@${ECHO_CMD} " Logfile stderr: ${STDERR_LOG}"
|
||||
@${ECHO_CMD} " Starting after install: ${AUTO_START}"
|
||||
|
||||
do-install:
|
||||
@# Add the group and the user if they do not exist
|
||||
${PW} groupadd -n ${GROUP_NAME} -g ${GROUP_ID} || true
|
||||
${PW} useradd -n ${USER_NAME} -u ${USER_ID} -g ${GROUP_NAME} -c "${APP_TITLE} account" -d ${APP_HOME} -s ${SH} -h - || true
|
||||
|
||||
@# Create the destination directory
|
||||
${MKDIR} ${APP_HOME}
|
||||
|
||||
@ -75,10 +70,17 @@ do-install:
|
||||
> ${WRKDIR}/workers.properties
|
||||
${MV} ${WRKDIR}/workers.properties ${APP_HOME}/conf/workers.properties
|
||||
|
||||
@# Install the startup script
|
||||
${CAT} ${FILESDIR}/${PORTNAME}.sh \
|
||||
| ${SED} "/%%USER_NAME%%/s//${USER_NAME}/" \
|
||||
| ${SED} "/%%APP_SHORTNAME%%/s//${APP_SHORTNAME}/" \
|
||||
| ${SED} "/%%CONTROL_SCRIPT%%/s//${CONTROL_SCRIPT:S/\//\\\//g}/" \
|
||||
> ${STARTUP_SCRIPT}
|
||||
${CHMOD} 0554 ${STARTUP_SCRIPT}
|
||||
|
||||
@# Install the control script
|
||||
${CAT} ${FILESDIR}/${APPCTL_NAME} \
|
||||
${CAT} ${FILESDIR}/${CONTROL_SCRIPT_NAME} \
|
||||
| ${SED} "/%%PORTNAME%%/s//${PORTNAME}/" \
|
||||
| ${SED} "/%%PORTVERSION%%/s//${PORTVERSION}/" \
|
||||
| ${SED} "/%%APP_TITLE%%/s//${APP_TITLE}/" \
|
||||
| ${SED} "/%%APP_SHORTNAME%%/s//${APP_SHORTNAME}/" \
|
||||
| ${SED} "/%%APP_HOME%%/s//${APP_HOME:S/\//\\\//g}/" \
|
||||
@ -88,13 +90,9 @@ do-install:
|
||||
| ${SED} "/%%USER_NAME%%/s//${USER_NAME}/" \
|
||||
| ${SED} "/%%STDOUT_LOG%%/s//${STDOUT_LOG:S/\//\\\//g}/" \
|
||||
| ${SED} "/%%STDERR_LOG%%/s//${STDERR_LOG:S/\//\\\//g}/" \
|
||||
> ${CTL_SCRIPT}
|
||||
${CHOWN} ${USER_NAME}:${GROUP_NAME} ${CTL_SCRIPT}
|
||||
${CHMOD} 6554 ${CTL_SCRIPT}
|
||||
|
||||
@# Install the startup script
|
||||
${CP} ${FILESDIR}/${PORTNAME}.sh ${STARTUP_SCRIPT}
|
||||
${CHMOD} 0554 ${STARTUP_SCRIPT}
|
||||
> ${CONTROL_SCRIPT}
|
||||
${CHOWN} ${USER_NAME}:${GROUP_NAME} ${CONTROL_SCRIPT}
|
||||
${CHMOD} 6554 ${CONTROL_SCRIPT}
|
||||
|
||||
@# Create the directories that the application will create at the
|
||||
@# first run
|
||||
@ -115,21 +113,21 @@ do-install:
|
||||
|
||||
@# Install the man page
|
||||
.if !defined(NOPORTDOCS)
|
||||
${CAT} ${FILESDIR}/${APPCTL_NAME}.1 \
|
||||
${CAT} ${FILESDIR}/${CONTROL_SCRIPT_NAME}.1 \
|
||||
| ${SED} "/%%PREFIX%%/s//${PREFIX:S/\//\\\//g}/" \
|
||||
> ${WRKDIR}/${APPCTL_NAME}.1
|
||||
${INSTALL_MAN} ${WRKDIR}/${APPCTL_NAME}.1 ${MANPREFIX}/man/man1
|
||||
> ${WRKDIR}/${CONTROL_SCRIPT_NAME}.1
|
||||
${INSTALL_MAN} ${WRKDIR}/${CONTROL_SCRIPT_NAME}.1 ${MANPREFIX}/man/man1
|
||||
.endif
|
||||
|
||||
post-install:
|
||||
@${ECHO_CMD} "${APP_TITLE} ${PORTVERSION} has been installed in ${APP_HOME}."
|
||||
@${ECHO_CMD} "If you would like a user to be able to use ${APPCTL_NAME}, then put this user in the group ${GROUP_NAME}."
|
||||
@${ECHO_CMD} "If you would like a user to be able to use ${CONTROL_SCRIPT_NAME}, then put this user in the group ${GROUP_NAME}."
|
||||
.if !defined(NOPORTDOCS)
|
||||
@${ECHO_CMD} "Use 'man ${APPCTL_NAME}' for information about starting and stopping ${APP_TITLE}."
|
||||
@${ECHO_CMD} "Use 'man ${CONTROL_SCRIPT_NAME}' for information about starting and stopping ${APP_TITLE}."
|
||||
.endif
|
||||
.if ${AUTO_START} == "YES"
|
||||
@${ECHO_CMD} "Starting ${APP_TITLE}..."
|
||||
@${CTL_SCRIPT} start || true
|
||||
@${CONTROL_SCRIPT} start || true
|
||||
.endif
|
||||
|
||||
.include <bsd.port.mk>
|
||||
|
@ -3,21 +3,17 @@
|
||||
# Set some variables
|
||||
USER_NAME=%%USER_NAME%%
|
||||
MYSELF=`basename $0`
|
||||
CONTROL_SCRIPT=%%CONTROL_SCRIPT%%
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% start" > /dev/null ; echo -n
|
||||
su -f -m ${USER_NAME} -c "exec %%CONTROL_SCRIPT%% start" && echo -n ' %%APP_SHORTNAME%%'
|
||||
;;
|
||||
stop)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% stop"
|
||||
;;
|
||||
restart)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% restart"
|
||||
su -f -m ${USER_NAME} -c "exec %%CONTROL_SCRIPT%% stop" && echo -n ' %%APP_SHORTNAME%%'
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "Usage: ${MYSELF} { start | stop | restart }"
|
||||
echo "Usage: ${MYSELF} { start | stop }"
|
||||
echo ""
|
||||
exit 64
|
||||
;;
|
||||
|
@ -1,9 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Set some variables
|
||||
VERSION=%%PORTVERSION%%
|
||||
APP_HOME=%%APP_HOME%%
|
||||
USER_NAME=%%USER_NAME%%
|
||||
STDOUT_LOG=%%STDOUT_LOG%%
|
||||
STDERR_LOG=%%STDERR_LOG%%
|
||||
JAR_FILE=${APP_HOME}/lib/webserver.jar
|
||||
@ -22,13 +20,6 @@ if [ -f ${JAVA_HOME}/lib/tools.jar ] ; then
|
||||
CLASSPATH=${CLASSPATH}:${JAVA_HOME}/lib/tools.jar
|
||||
fi
|
||||
|
||||
# Check if we're being run as a shell script or as an rc script
|
||||
if [ ${MYSELF} = "%%RC_SCRIPT_NAME%%" ]; then
|
||||
AS_RC_SCRIPT=yes
|
||||
else
|
||||
AS_RC_SCRIPT=no
|
||||
fi
|
||||
|
||||
# Check if the JAVA_HOME directory is defined, otherwise set it to the
|
||||
# fallback default
|
||||
if [ "${JAVA_HOME}a" = "a" ]; then
|
||||
@ -36,50 +27,101 @@ if [ "${JAVA_HOME}a" = "a" ]; then
|
||||
fi
|
||||
JAVA_CMD=${JAVA_HOME}/bin/java
|
||||
|
||||
# Function that starts the application
|
||||
start() {
|
||||
|
||||
##############################################################################
|
||||
# Function that shows an error message
|
||||
#
|
||||
# This function is called by the 'checks' function
|
||||
#
|
||||
# Parameters:
|
||||
# 1: The message to be displayed.
|
||||
|
||||
error() {
|
||||
echo -n "%%APP_SHORTNAME%%: ERROR: "
|
||||
echo $1
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Function that performs all checks necessary for starting or stopping the
|
||||
# application.
|
||||
#
|
||||
# This function is called by the 'start' and 'stop' functions
|
||||
#
|
||||
# This function expects no parameters
|
||||
|
||||
checks() {
|
||||
# Make sure the application directory does exist
|
||||
if [ ! -d ${APP_HOME} ]; then
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo ""
|
||||
fi
|
||||
echo "%%APP_SHORTNAME%%: ERROR: Unable to find %%APP_TITLE%% home directory at ${APP_HOME}."
|
||||
error "Unable to find %%APP_TITLE%% home directory at ${APP_HOME}."
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# Make sure the application JAR file exists
|
||||
if [ ! -r ${JAR_FILE} ]; then
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo ""
|
||||
fi
|
||||
echo "%%APP_SHORTNAME%%: ERROR: Unable to find %%APP_TITLE%% JAR file at ${JAR_FILE}."
|
||||
error "Unable to find %%APP_TITLE%% JAR file at ${JAR_FILE}."
|
||||
exit 3
|
||||
fi
|
||||
|
||||
# Make sure the Java VM can be found
|
||||
if [ ! -x ${JAVA_CMD} ]; then
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo ""
|
||||
fi
|
||||
echo "%%APP_SHORTNAME%%: ERROR: Unable to find Java VM at ${JAVA_HOME}."
|
||||
error "Unable to find Java VM at ${JAVA_HOME}."
|
||||
exit 4
|
||||
fi
|
||||
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo -n " %%APP_SHORTNAME%%"
|
||||
fi
|
||||
su - ${USER_NAME} -c "(cd ${APP_HOME} && ${JAVA_CMD} -cp ${CLASSPATH} -Dtomcat.home=${APP_HOME} org.apache.tomcat.startup.Tomcat) >> ${STDOUT_LOG} 2>> ${STDERR_LOG}"
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Functions that calls the application with the specified parameter
|
||||
#
|
||||
# Parameters:
|
||||
# 1: The argument to pass to the application (optional)
|
||||
|
||||
app() {
|
||||
(cd ${APP_HOME} && ${JAVA_CMD} -cp ${CLASSPATH} -Dtomcat.home=${APP_HOME} org.apache.tomcat.startup.Tomcat $1 &) >> ${STDOUT_LOG} 2>> ${STDERR_LOG}
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Function that starts the application
|
||||
#
|
||||
# This function is called from the main function
|
||||
#
|
||||
# This function expects no parameters
|
||||
|
||||
start() {
|
||||
# Perform the checks
|
||||
checks
|
||||
|
||||
# Stop the application
|
||||
app
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Function that stops the application
|
||||
#
|
||||
# This function is called from the main function
|
||||
#
|
||||
# This function expects no parameters
|
||||
|
||||
stop() {
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo -n " %%APP_SHORTNAME%%"
|
||||
fi
|
||||
su - ${USER_NAME} -c "(cd ${APP_HOME} && ${JAVA_CMD} -cp ${CLASSPATH} -Dtomcat.home=${APP_HOME} org.apache.tomcat.startup.Tomcat -stop) >> ${STDOUT_LOG} 2>> ${STDERR_LOG}"
|
||||
# Perform the checks
|
||||
checks
|
||||
|
||||
# Stop the application
|
||||
app -stop
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
|
||||
##############################################################################
|
||||
# Main function. This function calls the 'start' and 'stop' functions.
|
||||
#
|
||||
# Parameters:
|
||||
# 1: The argument to this shell script
|
||||
|
||||
main() {
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
@ -91,9 +133,13 @@ case "$1" in
|
||||
start
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "Usage: ${MYSELF} { start | stop | restart }"
|
||||
echo ""
|
||||
exit 64
|
||||
;;
|
||||
esac
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
# Call the main function and exit
|
||||
main $1
|
||||
exit 0
|
||||
|
@ -1,8 +1,21 @@
|
||||
#!/bin/sh
|
||||
PID_FILE=/var/run/jakarta-tomcat.pid
|
||||
if [ -e ${PID_FILE} ]; then
|
||||
echo -n "Jakarta Tomcat is still running."
|
||||
/bin/kill `cat ${PID_FILE}`
|
||||
rm -f ${PID_FILE}
|
||||
echo " Stopped."
|
||||
#
|
||||
# This script does the following.
|
||||
#
|
||||
# Checks if the 'www' user exists. If it does, then it displays
|
||||
# a message.
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
# Make sure we're called during the 'make deinstall' process
|
||||
if [ "$2" != "POST-DEINSTALL" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# If the user exists, then display a message
|
||||
if pw usershow "www" 2>/dev/null 1>&2; then
|
||||
echo "To delete the www user permanently, use 'pw userdel www'"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
@ -410,5 +410,3 @@ etc/rc.d/020.jakarta-tomcat.sh
|
||||
@dirrm %%T%%/conf
|
||||
@dirrm %%T%%/bin
|
||||
@dirrm %%T%%
|
||||
@unexec pw groupdel tomcat || true
|
||||
@unexec pw userdel tomcat || true
|
||||
|
@ -7,6 +7,7 @@
|
||||
|
||||
PORTNAME= jakarta-tomcat
|
||||
PORTVERSION= 3.2.4
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= www java
|
||||
MASTER_SITES= http://jakarta.apache.org/builds/jakarta-tomcat/release/v${PORTVERSION}/bin/ \
|
||||
http://www.metaverse.nl/~ernst/ \
|
||||
@ -25,40 +26,34 @@ LOG_DIR= ${APP_HOME}/logs
|
||||
PLIST_SUB+= T=${APP_HOME:S/^${PREFIX}\///}
|
||||
APP_TITLE= Jakarta Tomcat
|
||||
APP_SHORTNAME= tomcat
|
||||
APPCTL_NAME= ${APP_SHORTNAME}ctl
|
||||
CTL_SCRIPT= ${PREFIX}/bin/${APPCTL_NAME}
|
||||
CONTROL_SCRIPT_NAME= ${APP_SHORTNAME}ctl
|
||||
CONTROL_SCRIPT= ${PREFIX}/bin/${CONTROL_SCRIPT_NAME}
|
||||
STARTUP_ORDER?= 020
|
||||
STARTUP_SCRIPT= ${PREFIX}/etc/rc.d/${STARTUP_ORDER}.${PORTNAME}.sh
|
||||
JAVA_HOME?= ${LOCALBASE}/jdk1.3.1
|
||||
JAVA_PORT?= ${PORTSDIR}/java/jdk13
|
||||
USER_NAME?= ${APP_SHORTNAME}
|
||||
GROUP_NAME?= ${USER_NAME}
|
||||
USER_ID?= 7103
|
||||
GROUP_ID?= ${USER_ID}
|
||||
USER_NAME= www
|
||||
GROUP_NAME= www
|
||||
PW?= /usr/sbin/pw
|
||||
LISTEN_PORT?= 8080
|
||||
STDOUT_LOG?= ${LOG_DIR}/stdout.log
|
||||
STDERR_LOG?= ${LOG_DIR}/stderr.log
|
||||
STDOUT_LOG= ${LOG_DIR}/stdout.log
|
||||
STDERR_LOG= ${LOG_DIR}/stderr.log
|
||||
AUTO_START?= NO
|
||||
|
||||
pre-install:
|
||||
@${ECHO_CMD} "Installation settings:"
|
||||
@${ECHO_CMD} " Destination directory: ${APP_HOME}"
|
||||
@${ECHO_CMD} " Control script location: ${CTL_SCRIPT}"
|
||||
@${ECHO_CMD} " Control script location: ${CONTROL_SCRIPT}"
|
||||
@${ECHO_CMD} " Startup script location: ${STARTUP_SCRIPT}"
|
||||
@${ECHO_CMD} " Location of JDK: ${JAVA_HOME}"
|
||||
@${ECHO_CMD} " Location of Java port: ${JAVA_PORT}"
|
||||
@${ECHO_CMD} " Running as (user/group): ${USER_NAME}/${GROUP_NAME} (${USER_ID}:${GROUP_ID})"
|
||||
@${ECHO_CMD} " Running as (user/group): ${USER_NAME}/${GROUP_NAME}"
|
||||
@${ECHO_CMD} " Port to listen at: ${LISTEN_PORT}"
|
||||
@${ECHO_CMD} " Logfile stdout: ${STDOUT_LOG}"
|
||||
@${ECHO_CMD} " Logfile stderr: ${STDERR_LOG}"
|
||||
@${ECHO_CMD} " Starting after install: ${AUTO_START}"
|
||||
|
||||
do-install:
|
||||
@# Add the group and the user if they do not exist
|
||||
${PW} groupadd -n ${GROUP_NAME} -g ${GROUP_ID} || true
|
||||
${PW} useradd -n ${USER_NAME} -u ${USER_ID} -g ${GROUP_NAME} -c "${APP_TITLE} account" -d ${APP_HOME} -s ${SH} -h - || true
|
||||
|
||||
@# Create the destination directory
|
||||
${MKDIR} ${APP_HOME}
|
||||
|
||||
@ -75,10 +70,17 @@ do-install:
|
||||
> ${WRKDIR}/workers.properties
|
||||
${MV} ${WRKDIR}/workers.properties ${APP_HOME}/conf/workers.properties
|
||||
|
||||
@# Install the startup script
|
||||
${CAT} ${FILESDIR}/${PORTNAME}.sh \
|
||||
| ${SED} "/%%USER_NAME%%/s//${USER_NAME}/" \
|
||||
| ${SED} "/%%APP_SHORTNAME%%/s//${APP_SHORTNAME}/" \
|
||||
| ${SED} "/%%CONTROL_SCRIPT%%/s//${CONTROL_SCRIPT:S/\//\\\//g}/" \
|
||||
> ${STARTUP_SCRIPT}
|
||||
${CHMOD} 0554 ${STARTUP_SCRIPT}
|
||||
|
||||
@# Install the control script
|
||||
${CAT} ${FILESDIR}/${APPCTL_NAME} \
|
||||
${CAT} ${FILESDIR}/${CONTROL_SCRIPT_NAME} \
|
||||
| ${SED} "/%%PORTNAME%%/s//${PORTNAME}/" \
|
||||
| ${SED} "/%%PORTVERSION%%/s//${PORTVERSION}/" \
|
||||
| ${SED} "/%%APP_TITLE%%/s//${APP_TITLE}/" \
|
||||
| ${SED} "/%%APP_SHORTNAME%%/s//${APP_SHORTNAME}/" \
|
||||
| ${SED} "/%%APP_HOME%%/s//${APP_HOME:S/\//\\\//g}/" \
|
||||
@ -88,13 +90,9 @@ do-install:
|
||||
| ${SED} "/%%USER_NAME%%/s//${USER_NAME}/" \
|
||||
| ${SED} "/%%STDOUT_LOG%%/s//${STDOUT_LOG:S/\//\\\//g}/" \
|
||||
| ${SED} "/%%STDERR_LOG%%/s//${STDERR_LOG:S/\//\\\//g}/" \
|
||||
> ${CTL_SCRIPT}
|
||||
${CHOWN} ${USER_NAME}:${GROUP_NAME} ${CTL_SCRIPT}
|
||||
${CHMOD} 6554 ${CTL_SCRIPT}
|
||||
|
||||
@# Install the startup script
|
||||
${CP} ${FILESDIR}/${PORTNAME}.sh ${STARTUP_SCRIPT}
|
||||
${CHMOD} 0554 ${STARTUP_SCRIPT}
|
||||
> ${CONTROL_SCRIPT}
|
||||
${CHOWN} ${USER_NAME}:${GROUP_NAME} ${CONTROL_SCRIPT}
|
||||
${CHMOD} 6554 ${CONTROL_SCRIPT}
|
||||
|
||||
@# Create the directories that the application will create at the
|
||||
@# first run
|
||||
@ -115,21 +113,21 @@ do-install:
|
||||
|
||||
@# Install the man page
|
||||
.if !defined(NOPORTDOCS)
|
||||
${CAT} ${FILESDIR}/${APPCTL_NAME}.1 \
|
||||
${CAT} ${FILESDIR}/${CONTROL_SCRIPT_NAME}.1 \
|
||||
| ${SED} "/%%PREFIX%%/s//${PREFIX:S/\//\\\//g}/" \
|
||||
> ${WRKDIR}/${APPCTL_NAME}.1
|
||||
${INSTALL_MAN} ${WRKDIR}/${APPCTL_NAME}.1 ${MANPREFIX}/man/man1
|
||||
> ${WRKDIR}/${CONTROL_SCRIPT_NAME}.1
|
||||
${INSTALL_MAN} ${WRKDIR}/${CONTROL_SCRIPT_NAME}.1 ${MANPREFIX}/man/man1
|
||||
.endif
|
||||
|
||||
post-install:
|
||||
@${ECHO_CMD} "${APP_TITLE} ${PORTVERSION} has been installed in ${APP_HOME}."
|
||||
@${ECHO_CMD} "If you would like a user to be able to use ${APPCTL_NAME}, then put this user in the group ${GROUP_NAME}."
|
||||
@${ECHO_CMD} "If you would like a user to be able to use ${CONTROL_SCRIPT_NAME}, then put this user in the group ${GROUP_NAME}."
|
||||
.if !defined(NOPORTDOCS)
|
||||
@${ECHO_CMD} "Use 'man ${APPCTL_NAME}' for information about starting and stopping ${APP_TITLE}."
|
||||
@${ECHO_CMD} "Use 'man ${CONTROL_SCRIPT_NAME}' for information about starting and stopping ${APP_TITLE}."
|
||||
.endif
|
||||
.if ${AUTO_START} == "YES"
|
||||
@${ECHO_CMD} "Starting ${APP_TITLE}..."
|
||||
@${CTL_SCRIPT} start || true
|
||||
@${CONTROL_SCRIPT} start || true
|
||||
.endif
|
||||
|
||||
.include <bsd.port.mk>
|
||||
|
@ -3,21 +3,17 @@
|
||||
# Set some variables
|
||||
USER_NAME=%%USER_NAME%%
|
||||
MYSELF=`basename $0`
|
||||
CONTROL_SCRIPT=%%CONTROL_SCRIPT%%
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% start" > /dev/null ; echo -n
|
||||
su -f -m ${USER_NAME} -c "exec %%CONTROL_SCRIPT%% start" && echo -n ' %%APP_SHORTNAME%%'
|
||||
;;
|
||||
stop)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% stop"
|
||||
;;
|
||||
restart)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% restart"
|
||||
su -f -m ${USER_NAME} -c "exec %%CONTROL_SCRIPT%% stop" && echo -n ' %%APP_SHORTNAME%%'
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "Usage: ${MYSELF} { start | stop | restart }"
|
||||
echo "Usage: ${MYSELF} { start | stop }"
|
||||
echo ""
|
||||
exit 64
|
||||
;;
|
||||
|
@ -3,21 +3,17 @@
|
||||
# Set some variables
|
||||
USER_NAME=%%USER_NAME%%
|
||||
MYSELF=`basename $0`
|
||||
CONTROL_SCRIPT=%%CONTROL_SCRIPT%%
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% start" > /dev/null ; echo -n
|
||||
su -f -m ${USER_NAME} -c "exec %%CONTROL_SCRIPT%% start" && echo -n ' %%APP_SHORTNAME%%'
|
||||
;;
|
||||
stop)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% stop"
|
||||
;;
|
||||
restart)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% restart"
|
||||
su -f -m ${USER_NAME} -c "exec %%CONTROL_SCRIPT%% stop" && echo -n ' %%APP_SHORTNAME%%'
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "Usage: ${MYSELF} { start | stop | restart }"
|
||||
echo "Usage: ${MYSELF} { start | stop }"
|
||||
echo ""
|
||||
exit 64
|
||||
;;
|
||||
|
@ -1,9 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Set some variables
|
||||
VERSION=%%PORTVERSION%%
|
||||
APP_HOME=%%APP_HOME%%
|
||||
USER_NAME=%%USER_NAME%%
|
||||
STDOUT_LOG=%%STDOUT_LOG%%
|
||||
STDERR_LOG=%%STDERR_LOG%%
|
||||
JAR_FILE=${APP_HOME}/lib/webserver.jar
|
||||
@ -22,13 +20,6 @@ if [ -f ${JAVA_HOME}/lib/tools.jar ] ; then
|
||||
CLASSPATH=${CLASSPATH}:${JAVA_HOME}/lib/tools.jar
|
||||
fi
|
||||
|
||||
# Check if we're being run as a shell script or as an rc script
|
||||
if [ ${MYSELF} = "%%RC_SCRIPT_NAME%%" ]; then
|
||||
AS_RC_SCRIPT=yes
|
||||
else
|
||||
AS_RC_SCRIPT=no
|
||||
fi
|
||||
|
||||
# Check if the JAVA_HOME directory is defined, otherwise set it to the
|
||||
# fallback default
|
||||
if [ "${JAVA_HOME}a" = "a" ]; then
|
||||
@ -36,50 +27,101 @@ if [ "${JAVA_HOME}a" = "a" ]; then
|
||||
fi
|
||||
JAVA_CMD=${JAVA_HOME}/bin/java
|
||||
|
||||
# Function that starts the application
|
||||
start() {
|
||||
|
||||
##############################################################################
|
||||
# Function that shows an error message
|
||||
#
|
||||
# This function is called by the 'checks' function
|
||||
#
|
||||
# Parameters:
|
||||
# 1: The message to be displayed.
|
||||
|
||||
error() {
|
||||
echo -n "%%APP_SHORTNAME%%: ERROR: "
|
||||
echo $1
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Function that performs all checks necessary for starting or stopping the
|
||||
# application.
|
||||
#
|
||||
# This function is called by the 'start' and 'stop' functions
|
||||
#
|
||||
# This function expects no parameters
|
||||
|
||||
checks() {
|
||||
# Make sure the application directory does exist
|
||||
if [ ! -d ${APP_HOME} ]; then
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo ""
|
||||
fi
|
||||
echo "%%APP_SHORTNAME%%: ERROR: Unable to find %%APP_TITLE%% home directory at ${APP_HOME}."
|
||||
error "Unable to find %%APP_TITLE%% home directory at ${APP_HOME}."
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# Make sure the application JAR file exists
|
||||
if [ ! -r ${JAR_FILE} ]; then
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo ""
|
||||
fi
|
||||
echo "%%APP_SHORTNAME%%: ERROR: Unable to find %%APP_TITLE%% JAR file at ${JAR_FILE}."
|
||||
error "Unable to find %%APP_TITLE%% JAR file at ${JAR_FILE}."
|
||||
exit 3
|
||||
fi
|
||||
|
||||
# Make sure the Java VM can be found
|
||||
if [ ! -x ${JAVA_CMD} ]; then
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo ""
|
||||
fi
|
||||
echo "%%APP_SHORTNAME%%: ERROR: Unable to find Java VM at ${JAVA_HOME}."
|
||||
error "Unable to find Java VM at ${JAVA_HOME}."
|
||||
exit 4
|
||||
fi
|
||||
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo -n " %%APP_SHORTNAME%%"
|
||||
fi
|
||||
su - ${USER_NAME} -c "(cd ${APP_HOME} && ${JAVA_CMD} -cp ${CLASSPATH} -Dtomcat.home=${APP_HOME} org.apache.tomcat.startup.Tomcat) >> ${STDOUT_LOG} 2>> ${STDERR_LOG}"
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Functions that calls the application with the specified parameter
|
||||
#
|
||||
# Parameters:
|
||||
# 1: The argument to pass to the application (optional)
|
||||
|
||||
app() {
|
||||
(cd ${APP_HOME} && ${JAVA_CMD} -cp ${CLASSPATH} -Dtomcat.home=${APP_HOME} org.apache.tomcat.startup.Tomcat $1 &) >> ${STDOUT_LOG} 2>> ${STDERR_LOG}
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Function that starts the application
|
||||
#
|
||||
# This function is called from the main function
|
||||
#
|
||||
# This function expects no parameters
|
||||
|
||||
start() {
|
||||
# Perform the checks
|
||||
checks
|
||||
|
||||
# Stop the application
|
||||
app
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Function that stops the application
|
||||
#
|
||||
# This function is called from the main function
|
||||
#
|
||||
# This function expects no parameters
|
||||
|
||||
stop() {
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo -n " %%APP_SHORTNAME%%"
|
||||
fi
|
||||
su - ${USER_NAME} -c "(cd ${APP_HOME} && ${JAVA_CMD} -cp ${CLASSPATH} -Dtomcat.home=${APP_HOME} org.apache.tomcat.startup.Tomcat -stop) >> ${STDOUT_LOG} 2>> ${STDERR_LOG}"
|
||||
# Perform the checks
|
||||
checks
|
||||
|
||||
# Stop the application
|
||||
app -stop
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
|
||||
##############################################################################
|
||||
# Main function. This function calls the 'start' and 'stop' functions.
|
||||
#
|
||||
# Parameters:
|
||||
# 1: The argument to this shell script
|
||||
|
||||
main() {
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
@ -91,9 +133,13 @@ case "$1" in
|
||||
start
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "Usage: ${MYSELF} { start | stop | restart }"
|
||||
echo ""
|
||||
exit 64
|
||||
;;
|
||||
esac
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
# Call the main function and exit
|
||||
main $1
|
||||
exit 0
|
||||
|
@ -1,8 +1,21 @@
|
||||
#!/bin/sh
|
||||
PID_FILE=/var/run/jakarta-tomcat.pid
|
||||
if [ -e ${PID_FILE} ]; then
|
||||
echo -n "Jakarta Tomcat is still running."
|
||||
/bin/kill `cat ${PID_FILE}`
|
||||
rm -f ${PID_FILE}
|
||||
echo " Stopped."
|
||||
#
|
||||
# This script does the following.
|
||||
#
|
||||
# Checks if the 'www' user exists. If it does, then it displays
|
||||
# a message.
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
# Make sure we're called during the 'make deinstall' process
|
||||
if [ "$2" != "POST-DEINSTALL" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# If the user exists, then display a message
|
||||
if pw usershow "www" 2>/dev/null 1>&2; then
|
||||
echo "To delete the www user permanently, use 'pw userdel www'"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
@ -410,5 +410,3 @@ etc/rc.d/020.jakarta-tomcat.sh
|
||||
@dirrm %%T%%/conf
|
||||
@dirrm %%T%%/bin
|
||||
@dirrm %%T%%
|
||||
@unexec pw groupdel tomcat || true
|
||||
@unexec pw userdel tomcat || true
|
||||
|
@ -7,6 +7,7 @@
|
||||
|
||||
PORTNAME= jakarta-tomcat
|
||||
PORTVERSION= 3.2.4
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= www java
|
||||
MASTER_SITES= http://jakarta.apache.org/builds/jakarta-tomcat/release/v${PORTVERSION}/bin/ \
|
||||
http://www.metaverse.nl/~ernst/ \
|
||||
@ -25,40 +26,34 @@ LOG_DIR= ${APP_HOME}/logs
|
||||
PLIST_SUB+= T=${APP_HOME:S/^${PREFIX}\///}
|
||||
APP_TITLE= Jakarta Tomcat
|
||||
APP_SHORTNAME= tomcat
|
||||
APPCTL_NAME= ${APP_SHORTNAME}ctl
|
||||
CTL_SCRIPT= ${PREFIX}/bin/${APPCTL_NAME}
|
||||
CONTROL_SCRIPT_NAME= ${APP_SHORTNAME}ctl
|
||||
CONTROL_SCRIPT= ${PREFIX}/bin/${CONTROL_SCRIPT_NAME}
|
||||
STARTUP_ORDER?= 020
|
||||
STARTUP_SCRIPT= ${PREFIX}/etc/rc.d/${STARTUP_ORDER}.${PORTNAME}.sh
|
||||
JAVA_HOME?= ${LOCALBASE}/jdk1.3.1
|
||||
JAVA_PORT?= ${PORTSDIR}/java/jdk13
|
||||
USER_NAME?= ${APP_SHORTNAME}
|
||||
GROUP_NAME?= ${USER_NAME}
|
||||
USER_ID?= 7103
|
||||
GROUP_ID?= ${USER_ID}
|
||||
USER_NAME= www
|
||||
GROUP_NAME= www
|
||||
PW?= /usr/sbin/pw
|
||||
LISTEN_PORT?= 8080
|
||||
STDOUT_LOG?= ${LOG_DIR}/stdout.log
|
||||
STDERR_LOG?= ${LOG_DIR}/stderr.log
|
||||
STDOUT_LOG= ${LOG_DIR}/stdout.log
|
||||
STDERR_LOG= ${LOG_DIR}/stderr.log
|
||||
AUTO_START?= NO
|
||||
|
||||
pre-install:
|
||||
@${ECHO_CMD} "Installation settings:"
|
||||
@${ECHO_CMD} " Destination directory: ${APP_HOME}"
|
||||
@${ECHO_CMD} " Control script location: ${CTL_SCRIPT}"
|
||||
@${ECHO_CMD} " Control script location: ${CONTROL_SCRIPT}"
|
||||
@${ECHO_CMD} " Startup script location: ${STARTUP_SCRIPT}"
|
||||
@${ECHO_CMD} " Location of JDK: ${JAVA_HOME}"
|
||||
@${ECHO_CMD} " Location of Java port: ${JAVA_PORT}"
|
||||
@${ECHO_CMD} " Running as (user/group): ${USER_NAME}/${GROUP_NAME} (${USER_ID}:${GROUP_ID})"
|
||||
@${ECHO_CMD} " Running as (user/group): ${USER_NAME}/${GROUP_NAME}"
|
||||
@${ECHO_CMD} " Port to listen at: ${LISTEN_PORT}"
|
||||
@${ECHO_CMD} " Logfile stdout: ${STDOUT_LOG}"
|
||||
@${ECHO_CMD} " Logfile stderr: ${STDERR_LOG}"
|
||||
@${ECHO_CMD} " Starting after install: ${AUTO_START}"
|
||||
|
||||
do-install:
|
||||
@# Add the group and the user if they do not exist
|
||||
${PW} groupadd -n ${GROUP_NAME} -g ${GROUP_ID} || true
|
||||
${PW} useradd -n ${USER_NAME} -u ${USER_ID} -g ${GROUP_NAME} -c "${APP_TITLE} account" -d ${APP_HOME} -s ${SH} -h - || true
|
||||
|
||||
@# Create the destination directory
|
||||
${MKDIR} ${APP_HOME}
|
||||
|
||||
@ -75,10 +70,17 @@ do-install:
|
||||
> ${WRKDIR}/workers.properties
|
||||
${MV} ${WRKDIR}/workers.properties ${APP_HOME}/conf/workers.properties
|
||||
|
||||
@# Install the startup script
|
||||
${CAT} ${FILESDIR}/${PORTNAME}.sh \
|
||||
| ${SED} "/%%USER_NAME%%/s//${USER_NAME}/" \
|
||||
| ${SED} "/%%APP_SHORTNAME%%/s//${APP_SHORTNAME}/" \
|
||||
| ${SED} "/%%CONTROL_SCRIPT%%/s//${CONTROL_SCRIPT:S/\//\\\//g}/" \
|
||||
> ${STARTUP_SCRIPT}
|
||||
${CHMOD} 0554 ${STARTUP_SCRIPT}
|
||||
|
||||
@# Install the control script
|
||||
${CAT} ${FILESDIR}/${APPCTL_NAME} \
|
||||
${CAT} ${FILESDIR}/${CONTROL_SCRIPT_NAME} \
|
||||
| ${SED} "/%%PORTNAME%%/s//${PORTNAME}/" \
|
||||
| ${SED} "/%%PORTVERSION%%/s//${PORTVERSION}/" \
|
||||
| ${SED} "/%%APP_TITLE%%/s//${APP_TITLE}/" \
|
||||
| ${SED} "/%%APP_SHORTNAME%%/s//${APP_SHORTNAME}/" \
|
||||
| ${SED} "/%%APP_HOME%%/s//${APP_HOME:S/\//\\\//g}/" \
|
||||
@ -88,13 +90,9 @@ do-install:
|
||||
| ${SED} "/%%USER_NAME%%/s//${USER_NAME}/" \
|
||||
| ${SED} "/%%STDOUT_LOG%%/s//${STDOUT_LOG:S/\//\\\//g}/" \
|
||||
| ${SED} "/%%STDERR_LOG%%/s//${STDERR_LOG:S/\//\\\//g}/" \
|
||||
> ${CTL_SCRIPT}
|
||||
${CHOWN} ${USER_NAME}:${GROUP_NAME} ${CTL_SCRIPT}
|
||||
${CHMOD} 6554 ${CTL_SCRIPT}
|
||||
|
||||
@# Install the startup script
|
||||
${CP} ${FILESDIR}/${PORTNAME}.sh ${STARTUP_SCRIPT}
|
||||
${CHMOD} 0554 ${STARTUP_SCRIPT}
|
||||
> ${CONTROL_SCRIPT}
|
||||
${CHOWN} ${USER_NAME}:${GROUP_NAME} ${CONTROL_SCRIPT}
|
||||
${CHMOD} 6554 ${CONTROL_SCRIPT}
|
||||
|
||||
@# Create the directories that the application will create at the
|
||||
@# first run
|
||||
@ -115,21 +113,21 @@ do-install:
|
||||
|
||||
@# Install the man page
|
||||
.if !defined(NOPORTDOCS)
|
||||
${CAT} ${FILESDIR}/${APPCTL_NAME}.1 \
|
||||
${CAT} ${FILESDIR}/${CONTROL_SCRIPT_NAME}.1 \
|
||||
| ${SED} "/%%PREFIX%%/s//${PREFIX:S/\//\\\//g}/" \
|
||||
> ${WRKDIR}/${APPCTL_NAME}.1
|
||||
${INSTALL_MAN} ${WRKDIR}/${APPCTL_NAME}.1 ${MANPREFIX}/man/man1
|
||||
> ${WRKDIR}/${CONTROL_SCRIPT_NAME}.1
|
||||
${INSTALL_MAN} ${WRKDIR}/${CONTROL_SCRIPT_NAME}.1 ${MANPREFIX}/man/man1
|
||||
.endif
|
||||
|
||||
post-install:
|
||||
@${ECHO_CMD} "${APP_TITLE} ${PORTVERSION} has been installed in ${APP_HOME}."
|
||||
@${ECHO_CMD} "If you would like a user to be able to use ${APPCTL_NAME}, then put this user in the group ${GROUP_NAME}."
|
||||
@${ECHO_CMD} "If you would like a user to be able to use ${CONTROL_SCRIPT_NAME}, then put this user in the group ${GROUP_NAME}."
|
||||
.if !defined(NOPORTDOCS)
|
||||
@${ECHO_CMD} "Use 'man ${APPCTL_NAME}' for information about starting and stopping ${APP_TITLE}."
|
||||
@${ECHO_CMD} "Use 'man ${CONTROL_SCRIPT_NAME}' for information about starting and stopping ${APP_TITLE}."
|
||||
.endif
|
||||
.if ${AUTO_START} == "YES"
|
||||
@${ECHO_CMD} "Starting ${APP_TITLE}..."
|
||||
@${CTL_SCRIPT} start || true
|
||||
@${CONTROL_SCRIPT} start || true
|
||||
.endif
|
||||
|
||||
.include <bsd.port.mk>
|
||||
|
@ -3,21 +3,17 @@
|
||||
# Set some variables
|
||||
USER_NAME=%%USER_NAME%%
|
||||
MYSELF=`basename $0`
|
||||
CONTROL_SCRIPT=%%CONTROL_SCRIPT%%
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% start" > /dev/null ; echo -n
|
||||
su -f -m ${USER_NAME} -c "exec %%CONTROL_SCRIPT%% start" && echo -n ' %%APP_SHORTNAME%%'
|
||||
;;
|
||||
stop)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% stop"
|
||||
;;
|
||||
restart)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% restart"
|
||||
su -f -m ${USER_NAME} -c "exec %%CONTROL_SCRIPT%% stop" && echo -n ' %%APP_SHORTNAME%%'
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "Usage: ${MYSELF} { start | stop | restart }"
|
||||
echo "Usage: ${MYSELF} { start | stop }"
|
||||
echo ""
|
||||
exit 64
|
||||
;;
|
||||
|
@ -3,21 +3,17 @@
|
||||
# Set some variables
|
||||
USER_NAME=%%USER_NAME%%
|
||||
MYSELF=`basename $0`
|
||||
CONTROL_SCRIPT=%%CONTROL_SCRIPT%%
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% start" > /dev/null ; echo -n
|
||||
su -f -m ${USER_NAME} -c "exec %%CONTROL_SCRIPT%% start" && echo -n ' %%APP_SHORTNAME%%'
|
||||
;;
|
||||
stop)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% stop"
|
||||
;;
|
||||
restart)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% restart"
|
||||
su -f -m ${USER_NAME} -c "exec %%CONTROL_SCRIPT%% stop" && echo -n ' %%APP_SHORTNAME%%'
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "Usage: ${MYSELF} { start | stop | restart }"
|
||||
echo "Usage: ${MYSELF} { start | stop }"
|
||||
echo ""
|
||||
exit 64
|
||||
;;
|
||||
|
@ -1,9 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Set some variables
|
||||
VERSION=%%PORTVERSION%%
|
||||
APP_HOME=%%APP_HOME%%
|
||||
USER_NAME=%%USER_NAME%%
|
||||
STDOUT_LOG=%%STDOUT_LOG%%
|
||||
STDERR_LOG=%%STDERR_LOG%%
|
||||
JAR_FILE=${APP_HOME}/lib/webserver.jar
|
||||
@ -22,13 +20,6 @@ if [ -f ${JAVA_HOME}/lib/tools.jar ] ; then
|
||||
CLASSPATH=${CLASSPATH}:${JAVA_HOME}/lib/tools.jar
|
||||
fi
|
||||
|
||||
# Check if we're being run as a shell script or as an rc script
|
||||
if [ ${MYSELF} = "%%RC_SCRIPT_NAME%%" ]; then
|
||||
AS_RC_SCRIPT=yes
|
||||
else
|
||||
AS_RC_SCRIPT=no
|
||||
fi
|
||||
|
||||
# Check if the JAVA_HOME directory is defined, otherwise set it to the
|
||||
# fallback default
|
||||
if [ "${JAVA_HOME}a" = "a" ]; then
|
||||
@ -36,50 +27,101 @@ if [ "${JAVA_HOME}a" = "a" ]; then
|
||||
fi
|
||||
JAVA_CMD=${JAVA_HOME}/bin/java
|
||||
|
||||
# Function that starts the application
|
||||
start() {
|
||||
|
||||
##############################################################################
|
||||
# Function that shows an error message
|
||||
#
|
||||
# This function is called by the 'checks' function
|
||||
#
|
||||
# Parameters:
|
||||
# 1: The message to be displayed.
|
||||
|
||||
error() {
|
||||
echo -n "%%APP_SHORTNAME%%: ERROR: "
|
||||
echo $1
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Function that performs all checks necessary for starting or stopping the
|
||||
# application.
|
||||
#
|
||||
# This function is called by the 'start' and 'stop' functions
|
||||
#
|
||||
# This function expects no parameters
|
||||
|
||||
checks() {
|
||||
# Make sure the application directory does exist
|
||||
if [ ! -d ${APP_HOME} ]; then
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo ""
|
||||
fi
|
||||
echo "%%APP_SHORTNAME%%: ERROR: Unable to find %%APP_TITLE%% home directory at ${APP_HOME}."
|
||||
error "Unable to find %%APP_TITLE%% home directory at ${APP_HOME}."
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# Make sure the application JAR file exists
|
||||
if [ ! -r ${JAR_FILE} ]; then
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo ""
|
||||
fi
|
||||
echo "%%APP_SHORTNAME%%: ERROR: Unable to find %%APP_TITLE%% JAR file at ${JAR_FILE}."
|
||||
error "Unable to find %%APP_TITLE%% JAR file at ${JAR_FILE}."
|
||||
exit 3
|
||||
fi
|
||||
|
||||
# Make sure the Java VM can be found
|
||||
if [ ! -x ${JAVA_CMD} ]; then
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo ""
|
||||
fi
|
||||
echo "%%APP_SHORTNAME%%: ERROR: Unable to find Java VM at ${JAVA_HOME}."
|
||||
error "Unable to find Java VM at ${JAVA_HOME}."
|
||||
exit 4
|
||||
fi
|
||||
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo -n " %%APP_SHORTNAME%%"
|
||||
fi
|
||||
su - ${USER_NAME} -c "(cd ${APP_HOME} && ${JAVA_CMD} -cp ${CLASSPATH} -Dtomcat.home=${APP_HOME} org.apache.tomcat.startup.Tomcat) >> ${STDOUT_LOG} 2>> ${STDERR_LOG}"
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Functions that calls the application with the specified parameter
|
||||
#
|
||||
# Parameters:
|
||||
# 1: The argument to pass to the application (optional)
|
||||
|
||||
app() {
|
||||
(cd ${APP_HOME} && ${JAVA_CMD} -cp ${CLASSPATH} -Dtomcat.home=${APP_HOME} org.apache.tomcat.startup.Tomcat $1 &) >> ${STDOUT_LOG} 2>> ${STDERR_LOG}
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Function that starts the application
|
||||
#
|
||||
# This function is called from the main function
|
||||
#
|
||||
# This function expects no parameters
|
||||
|
||||
start() {
|
||||
# Perform the checks
|
||||
checks
|
||||
|
||||
# Stop the application
|
||||
app
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Function that stops the application
|
||||
#
|
||||
# This function is called from the main function
|
||||
#
|
||||
# This function expects no parameters
|
||||
|
||||
stop() {
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo -n " %%APP_SHORTNAME%%"
|
||||
fi
|
||||
su - ${USER_NAME} -c "(cd ${APP_HOME} && ${JAVA_CMD} -cp ${CLASSPATH} -Dtomcat.home=${APP_HOME} org.apache.tomcat.startup.Tomcat -stop) >> ${STDOUT_LOG} 2>> ${STDERR_LOG}"
|
||||
# Perform the checks
|
||||
checks
|
||||
|
||||
# Stop the application
|
||||
app -stop
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
|
||||
##############################################################################
|
||||
# Main function. This function calls the 'start' and 'stop' functions.
|
||||
#
|
||||
# Parameters:
|
||||
# 1: The argument to this shell script
|
||||
|
||||
main() {
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
@ -91,9 +133,13 @@ case "$1" in
|
||||
start
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "Usage: ${MYSELF} { start | stop | restart }"
|
||||
echo ""
|
||||
exit 64
|
||||
;;
|
||||
esac
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
# Call the main function and exit
|
||||
main $1
|
||||
exit 0
|
||||
|
@ -1,8 +1,21 @@
|
||||
#!/bin/sh
|
||||
PID_FILE=/var/run/jakarta-tomcat.pid
|
||||
if [ -e ${PID_FILE} ]; then
|
||||
echo -n "Jakarta Tomcat is still running."
|
||||
/bin/kill `cat ${PID_FILE}`
|
||||
rm -f ${PID_FILE}
|
||||
echo " Stopped."
|
||||
#
|
||||
# This script does the following.
|
||||
#
|
||||
# Checks if the 'www' user exists. If it does, then it displays
|
||||
# a message.
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
# Make sure we're called during the 'make deinstall' process
|
||||
if [ "$2" != "POST-DEINSTALL" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# If the user exists, then display a message
|
||||
if pw usershow "www" 2>/dev/null 1>&2; then
|
||||
echo "To delete the www user permanently, use 'pw userdel www'"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
@ -410,5 +410,3 @@ etc/rc.d/020.jakarta-tomcat.sh
|
||||
@dirrm %%T%%/conf
|
||||
@dirrm %%T%%/bin
|
||||
@dirrm %%T%%
|
||||
@unexec pw groupdel tomcat || true
|
||||
@unexec pw userdel tomcat || true
|
||||
|
@ -7,6 +7,7 @@
|
||||
|
||||
PORTNAME= jakarta-tomcat
|
||||
PORTVERSION= 3.2.4
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= www java
|
||||
MASTER_SITES= http://jakarta.apache.org/builds/jakarta-tomcat/release/v${PORTVERSION}/bin/ \
|
||||
http://www.metaverse.nl/~ernst/ \
|
||||
@ -25,40 +26,34 @@ LOG_DIR= ${APP_HOME}/logs
|
||||
PLIST_SUB+= T=${APP_HOME:S/^${PREFIX}\///}
|
||||
APP_TITLE= Jakarta Tomcat
|
||||
APP_SHORTNAME= tomcat
|
||||
APPCTL_NAME= ${APP_SHORTNAME}ctl
|
||||
CTL_SCRIPT= ${PREFIX}/bin/${APPCTL_NAME}
|
||||
CONTROL_SCRIPT_NAME= ${APP_SHORTNAME}ctl
|
||||
CONTROL_SCRIPT= ${PREFIX}/bin/${CONTROL_SCRIPT_NAME}
|
||||
STARTUP_ORDER?= 020
|
||||
STARTUP_SCRIPT= ${PREFIX}/etc/rc.d/${STARTUP_ORDER}.${PORTNAME}.sh
|
||||
JAVA_HOME?= ${LOCALBASE}/jdk1.3.1
|
||||
JAVA_PORT?= ${PORTSDIR}/java/jdk13
|
||||
USER_NAME?= ${APP_SHORTNAME}
|
||||
GROUP_NAME?= ${USER_NAME}
|
||||
USER_ID?= 7103
|
||||
GROUP_ID?= ${USER_ID}
|
||||
USER_NAME= www
|
||||
GROUP_NAME= www
|
||||
PW?= /usr/sbin/pw
|
||||
LISTEN_PORT?= 8080
|
||||
STDOUT_LOG?= ${LOG_DIR}/stdout.log
|
||||
STDERR_LOG?= ${LOG_DIR}/stderr.log
|
||||
STDOUT_LOG= ${LOG_DIR}/stdout.log
|
||||
STDERR_LOG= ${LOG_DIR}/stderr.log
|
||||
AUTO_START?= NO
|
||||
|
||||
pre-install:
|
||||
@${ECHO_CMD} "Installation settings:"
|
||||
@${ECHO_CMD} " Destination directory: ${APP_HOME}"
|
||||
@${ECHO_CMD} " Control script location: ${CTL_SCRIPT}"
|
||||
@${ECHO_CMD} " Control script location: ${CONTROL_SCRIPT}"
|
||||
@${ECHO_CMD} " Startup script location: ${STARTUP_SCRIPT}"
|
||||
@${ECHO_CMD} " Location of JDK: ${JAVA_HOME}"
|
||||
@${ECHO_CMD} " Location of Java port: ${JAVA_PORT}"
|
||||
@${ECHO_CMD} " Running as (user/group): ${USER_NAME}/${GROUP_NAME} (${USER_ID}:${GROUP_ID})"
|
||||
@${ECHO_CMD} " Running as (user/group): ${USER_NAME}/${GROUP_NAME}"
|
||||
@${ECHO_CMD} " Port to listen at: ${LISTEN_PORT}"
|
||||
@${ECHO_CMD} " Logfile stdout: ${STDOUT_LOG}"
|
||||
@${ECHO_CMD} " Logfile stderr: ${STDERR_LOG}"
|
||||
@${ECHO_CMD} " Starting after install: ${AUTO_START}"
|
||||
|
||||
do-install:
|
||||
@# Add the group and the user if they do not exist
|
||||
${PW} groupadd -n ${GROUP_NAME} -g ${GROUP_ID} || true
|
||||
${PW} useradd -n ${USER_NAME} -u ${USER_ID} -g ${GROUP_NAME} -c "${APP_TITLE} account" -d ${APP_HOME} -s ${SH} -h - || true
|
||||
|
||||
@# Create the destination directory
|
||||
${MKDIR} ${APP_HOME}
|
||||
|
||||
@ -75,10 +70,17 @@ do-install:
|
||||
> ${WRKDIR}/workers.properties
|
||||
${MV} ${WRKDIR}/workers.properties ${APP_HOME}/conf/workers.properties
|
||||
|
||||
@# Install the startup script
|
||||
${CAT} ${FILESDIR}/${PORTNAME}.sh \
|
||||
| ${SED} "/%%USER_NAME%%/s//${USER_NAME}/" \
|
||||
| ${SED} "/%%APP_SHORTNAME%%/s//${APP_SHORTNAME}/" \
|
||||
| ${SED} "/%%CONTROL_SCRIPT%%/s//${CONTROL_SCRIPT:S/\//\\\//g}/" \
|
||||
> ${STARTUP_SCRIPT}
|
||||
${CHMOD} 0554 ${STARTUP_SCRIPT}
|
||||
|
||||
@# Install the control script
|
||||
${CAT} ${FILESDIR}/${APPCTL_NAME} \
|
||||
${CAT} ${FILESDIR}/${CONTROL_SCRIPT_NAME} \
|
||||
| ${SED} "/%%PORTNAME%%/s//${PORTNAME}/" \
|
||||
| ${SED} "/%%PORTVERSION%%/s//${PORTVERSION}/" \
|
||||
| ${SED} "/%%APP_TITLE%%/s//${APP_TITLE}/" \
|
||||
| ${SED} "/%%APP_SHORTNAME%%/s//${APP_SHORTNAME}/" \
|
||||
| ${SED} "/%%APP_HOME%%/s//${APP_HOME:S/\//\\\//g}/" \
|
||||
@ -88,13 +90,9 @@ do-install:
|
||||
| ${SED} "/%%USER_NAME%%/s//${USER_NAME}/" \
|
||||
| ${SED} "/%%STDOUT_LOG%%/s//${STDOUT_LOG:S/\//\\\//g}/" \
|
||||
| ${SED} "/%%STDERR_LOG%%/s//${STDERR_LOG:S/\//\\\//g}/" \
|
||||
> ${CTL_SCRIPT}
|
||||
${CHOWN} ${USER_NAME}:${GROUP_NAME} ${CTL_SCRIPT}
|
||||
${CHMOD} 6554 ${CTL_SCRIPT}
|
||||
|
||||
@# Install the startup script
|
||||
${CP} ${FILESDIR}/${PORTNAME}.sh ${STARTUP_SCRIPT}
|
||||
${CHMOD} 0554 ${STARTUP_SCRIPT}
|
||||
> ${CONTROL_SCRIPT}
|
||||
${CHOWN} ${USER_NAME}:${GROUP_NAME} ${CONTROL_SCRIPT}
|
||||
${CHMOD} 6554 ${CONTROL_SCRIPT}
|
||||
|
||||
@# Create the directories that the application will create at the
|
||||
@# first run
|
||||
@ -115,21 +113,21 @@ do-install:
|
||||
|
||||
@# Install the man page
|
||||
.if !defined(NOPORTDOCS)
|
||||
${CAT} ${FILESDIR}/${APPCTL_NAME}.1 \
|
||||
${CAT} ${FILESDIR}/${CONTROL_SCRIPT_NAME}.1 \
|
||||
| ${SED} "/%%PREFIX%%/s//${PREFIX:S/\//\\\//g}/" \
|
||||
> ${WRKDIR}/${APPCTL_NAME}.1
|
||||
${INSTALL_MAN} ${WRKDIR}/${APPCTL_NAME}.1 ${MANPREFIX}/man/man1
|
||||
> ${WRKDIR}/${CONTROL_SCRIPT_NAME}.1
|
||||
${INSTALL_MAN} ${WRKDIR}/${CONTROL_SCRIPT_NAME}.1 ${MANPREFIX}/man/man1
|
||||
.endif
|
||||
|
||||
post-install:
|
||||
@${ECHO_CMD} "${APP_TITLE} ${PORTVERSION} has been installed in ${APP_HOME}."
|
||||
@${ECHO_CMD} "If you would like a user to be able to use ${APPCTL_NAME}, then put this user in the group ${GROUP_NAME}."
|
||||
@${ECHO_CMD} "If you would like a user to be able to use ${CONTROL_SCRIPT_NAME}, then put this user in the group ${GROUP_NAME}."
|
||||
.if !defined(NOPORTDOCS)
|
||||
@${ECHO_CMD} "Use 'man ${APPCTL_NAME}' for information about starting and stopping ${APP_TITLE}."
|
||||
@${ECHO_CMD} "Use 'man ${CONTROL_SCRIPT_NAME}' for information about starting and stopping ${APP_TITLE}."
|
||||
.endif
|
||||
.if ${AUTO_START} == "YES"
|
||||
@${ECHO_CMD} "Starting ${APP_TITLE}..."
|
||||
@${CTL_SCRIPT} start || true
|
||||
@${CONTROL_SCRIPT} start || true
|
||||
.endif
|
||||
|
||||
.include <bsd.port.mk>
|
||||
|
@ -3,21 +3,17 @@
|
||||
# Set some variables
|
||||
USER_NAME=%%USER_NAME%%
|
||||
MYSELF=`basename $0`
|
||||
CONTROL_SCRIPT=%%CONTROL_SCRIPT%%
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% start" > /dev/null ; echo -n
|
||||
su -f -m ${USER_NAME} -c "exec %%CONTROL_SCRIPT%% start" && echo -n ' %%APP_SHORTNAME%%'
|
||||
;;
|
||||
stop)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% stop"
|
||||
;;
|
||||
restart)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% restart"
|
||||
su -f -m ${USER_NAME} -c "exec %%CONTROL_SCRIPT%% stop" && echo -n ' %%APP_SHORTNAME%%'
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "Usage: ${MYSELF} { start | stop | restart }"
|
||||
echo "Usage: ${MYSELF} { start | stop }"
|
||||
echo ""
|
||||
exit 64
|
||||
;;
|
||||
|
@ -3,21 +3,17 @@
|
||||
# Set some variables
|
||||
USER_NAME=%%USER_NAME%%
|
||||
MYSELF=`basename $0`
|
||||
CONTROL_SCRIPT=%%CONTROL_SCRIPT%%
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% start" > /dev/null ; echo -n
|
||||
su -f -m ${USER_NAME} -c "exec %%CONTROL_SCRIPT%% start" && echo -n ' %%APP_SHORTNAME%%'
|
||||
;;
|
||||
stop)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% stop"
|
||||
;;
|
||||
restart)
|
||||
su - ${USER_NAME} -c "%%CONTROL_SCRIPT%% restart"
|
||||
su -f -m ${USER_NAME} -c "exec %%CONTROL_SCRIPT%% stop" && echo -n ' %%APP_SHORTNAME%%'
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "Usage: ${MYSELF} { start | stop | restart }"
|
||||
echo "Usage: ${MYSELF} { start | stop }"
|
||||
echo ""
|
||||
exit 64
|
||||
;;
|
||||
|
@ -1,9 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Set some variables
|
||||
VERSION=%%PORTVERSION%%
|
||||
APP_HOME=%%APP_HOME%%
|
||||
USER_NAME=%%USER_NAME%%
|
||||
STDOUT_LOG=%%STDOUT_LOG%%
|
||||
STDERR_LOG=%%STDERR_LOG%%
|
||||
JAR_FILE=${APP_HOME}/lib/webserver.jar
|
||||
@ -22,13 +20,6 @@ if [ -f ${JAVA_HOME}/lib/tools.jar ] ; then
|
||||
CLASSPATH=${CLASSPATH}:${JAVA_HOME}/lib/tools.jar
|
||||
fi
|
||||
|
||||
# Check if we're being run as a shell script or as an rc script
|
||||
if [ ${MYSELF} = "%%RC_SCRIPT_NAME%%" ]; then
|
||||
AS_RC_SCRIPT=yes
|
||||
else
|
||||
AS_RC_SCRIPT=no
|
||||
fi
|
||||
|
||||
# Check if the JAVA_HOME directory is defined, otherwise set it to the
|
||||
# fallback default
|
||||
if [ "${JAVA_HOME}a" = "a" ]; then
|
||||
@ -36,50 +27,101 @@ if [ "${JAVA_HOME}a" = "a" ]; then
|
||||
fi
|
||||
JAVA_CMD=${JAVA_HOME}/bin/java
|
||||
|
||||
# Function that starts the application
|
||||
start() {
|
||||
|
||||
##############################################################################
|
||||
# Function that shows an error message
|
||||
#
|
||||
# This function is called by the 'checks' function
|
||||
#
|
||||
# Parameters:
|
||||
# 1: The message to be displayed.
|
||||
|
||||
error() {
|
||||
echo -n "%%APP_SHORTNAME%%: ERROR: "
|
||||
echo $1
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Function that performs all checks necessary for starting or stopping the
|
||||
# application.
|
||||
#
|
||||
# This function is called by the 'start' and 'stop' functions
|
||||
#
|
||||
# This function expects no parameters
|
||||
|
||||
checks() {
|
||||
# Make sure the application directory does exist
|
||||
if [ ! -d ${APP_HOME} ]; then
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo ""
|
||||
fi
|
||||
echo "%%APP_SHORTNAME%%: ERROR: Unable to find %%APP_TITLE%% home directory at ${APP_HOME}."
|
||||
error "Unable to find %%APP_TITLE%% home directory at ${APP_HOME}."
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# Make sure the application JAR file exists
|
||||
if [ ! -r ${JAR_FILE} ]; then
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo ""
|
||||
fi
|
||||
echo "%%APP_SHORTNAME%%: ERROR: Unable to find %%APP_TITLE%% JAR file at ${JAR_FILE}."
|
||||
error "Unable to find %%APP_TITLE%% JAR file at ${JAR_FILE}."
|
||||
exit 3
|
||||
fi
|
||||
|
||||
# Make sure the Java VM can be found
|
||||
if [ ! -x ${JAVA_CMD} ]; then
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo ""
|
||||
fi
|
||||
echo "%%APP_SHORTNAME%%: ERROR: Unable to find Java VM at ${JAVA_HOME}."
|
||||
error "Unable to find Java VM at ${JAVA_HOME}."
|
||||
exit 4
|
||||
fi
|
||||
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo -n " %%APP_SHORTNAME%%"
|
||||
fi
|
||||
su - ${USER_NAME} -c "(cd ${APP_HOME} && ${JAVA_CMD} -cp ${CLASSPATH} -Dtomcat.home=${APP_HOME} org.apache.tomcat.startup.Tomcat) >> ${STDOUT_LOG} 2>> ${STDERR_LOG}"
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Functions that calls the application with the specified parameter
|
||||
#
|
||||
# Parameters:
|
||||
# 1: The argument to pass to the application (optional)
|
||||
|
||||
app() {
|
||||
(cd ${APP_HOME} && ${JAVA_CMD} -cp ${CLASSPATH} -Dtomcat.home=${APP_HOME} org.apache.tomcat.startup.Tomcat $1 &) >> ${STDOUT_LOG} 2>> ${STDERR_LOG}
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Function that starts the application
|
||||
#
|
||||
# This function is called from the main function
|
||||
#
|
||||
# This function expects no parameters
|
||||
|
||||
start() {
|
||||
# Perform the checks
|
||||
checks
|
||||
|
||||
# Stop the application
|
||||
app
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Function that stops the application
|
||||
#
|
||||
# This function is called from the main function
|
||||
#
|
||||
# This function expects no parameters
|
||||
|
||||
stop() {
|
||||
if [ "${AS_RC_SCRIPT}" = "yes" ]; then
|
||||
echo -n " %%APP_SHORTNAME%%"
|
||||
fi
|
||||
su - ${USER_NAME} -c "(cd ${APP_HOME} && ${JAVA_CMD} -cp ${CLASSPATH} -Dtomcat.home=${APP_HOME} org.apache.tomcat.startup.Tomcat -stop) >> ${STDOUT_LOG} 2>> ${STDERR_LOG}"
|
||||
# Perform the checks
|
||||
checks
|
||||
|
||||
# Stop the application
|
||||
app -stop
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
|
||||
##############################################################################
|
||||
# Main function. This function calls the 'start' and 'stop' functions.
|
||||
#
|
||||
# Parameters:
|
||||
# 1: The argument to this shell script
|
||||
|
||||
main() {
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
@ -91,9 +133,13 @@ case "$1" in
|
||||
start
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "Usage: ${MYSELF} { start | stop | restart }"
|
||||
echo ""
|
||||
exit 64
|
||||
;;
|
||||
esac
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
# Call the main function and exit
|
||||
main $1
|
||||
exit 0
|
||||
|
@ -1,8 +1,21 @@
|
||||
#!/bin/sh
|
||||
PID_FILE=/var/run/jakarta-tomcat.pid
|
||||
if [ -e ${PID_FILE} ]; then
|
||||
echo -n "Jakarta Tomcat is still running."
|
||||
/bin/kill `cat ${PID_FILE}`
|
||||
rm -f ${PID_FILE}
|
||||
echo " Stopped."
|
||||
#
|
||||
# This script does the following.
|
||||
#
|
||||
# Checks if the 'www' user exists. If it does, then it displays
|
||||
# a message.
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
# Make sure we're called during the 'make deinstall' process
|
||||
if [ "$2" != "POST-DEINSTALL" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# If the user exists, then display a message
|
||||
if pw usershow "www" 2>/dev/null 1>&2; then
|
||||
echo "To delete the www user permanently, use 'pw userdel www'"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
@ -410,5 +410,3 @@ etc/rc.d/020.jakarta-tomcat.sh
|
||||
@dirrm %%T%%/conf
|
||||
@dirrm %%T%%/bin
|
||||
@dirrm %%T%%
|
||||
@unexec pw groupdel tomcat || true
|
||||
@unexec pw userdel tomcat || true
|
||||
|
Loading…
Reference in New Issue
Block a user