On 7/1/2018 12:18 PM, Michael Osipov wrote:
Am 2018-07-01 um 20:44 schrieb isa...@apache.org:
Author: isapir
Date: Sun Jul 1 18:44:38 2018
New Revision: 1834798
URL: http://svn.apache.org/viewvc?rev=1834798&view=rev
Log:
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=62500
Added scripts to create CATALINA_BASE directory
Added:
tomcat/trunk/bin/makebase.bat
tomcat/trunk/bin/makebase.sh
Added: tomcat/trunk/bin/makebase.sh
URL:
http://svn.apache.org/viewvc/tomcat/trunk/bin/makebase.sh?rev=1834798&view=auto
==============================================================================
--- tomcat/trunk/bin/makebase.sh (added)
+++ tomcat/trunk/bin/makebase.sh Sun Jul 1 18:44:38 2018
@@ -0,0 +1,64 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License,
Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This script creates the directory structure required for running
Tomcat
+# in a separate directory by pointing $CATALINA_BASE to it. It
copies the
+# conf directory from $CATALINA_HOME, and creates empty directories for
+# bin, logs, temp, and work.
+#
+# If the file $CATALINA_HOME/bin/setenv.sh exists then it is copied to
+# the target directory as well.
+
+# first arg is the target directory
+BASE_TGT=$1
Why not call it CATALINA_BASE?
+if [ -z ${BASE_TGT} ]; then
+ # target directory not provided; exit
+ echo "Usage: makebase <path-to-target-directory>"
+ exit 1
+fi
+
+HOME_DIR="$(dirname $(dirname $0))"
Why not call it CATALINA_HOME?
I was thinking that if CATALINA_BASE or CATALINA_HOME are already set
then I shouldn't mess with them.
+if [ -d ${BASE_TGT} ]; then
+ # target directory exists
+ echo directory exists
Why no double quotes? Why not "target directory exists"?
Will update accordingly, but do the quotes add anything? It seems to
work fine without them.
+ # exit if target directory is not empty
+ [ "$(ls -A ${BASE_TGT})" ] && \
+ echo "target directory is not empty" && \
+ exit 1
+else
+ # create the target directory
+ mkdir -p ${BASE_TGT}
+fi
+
+for dir in bin logs temp work;
Why not webapps? The default Tomcat config (server.xml) refers to
webapps in CATALINA_BASE. lib is missing: catalina.properties
common.loader refers to it.
webapps make sense, though we might want to allow to create an empty
directory rather than copy the contents of the original webapps.
I don't believe that `lib` is required. I have deployed many instances
without `lib` and never noticed an issue. Am I missing something?
+do
+ # copy directory with permissions and delete contents if any
+ cp -a "${HOME_DIR}/${dir}" "${BASE_TGT}/${dir}"
+ rm -fr "${BASE_TGT}/${dir}"/*
+done
Why do you copy and then delete? Why not mkdir directory directly?
On Windows I create the directories. On *nix the permissions were
different so I did it that way to copy the original permissions. I was
also thinking of using `chmod` as a different option.
+# copy conf directory recursively and preserve permissions
+cp -a "${HOME_DIR}/conf" "${BASE_TGT}/"
Preserving permissions will fail if the target is not under root's
control. E.g., a user wants a private Tomcat. He won't be able to work
with.
So should I not preserve permissions and instead use `mkdir` and `chmod`?
+# copy setenv.sh if exists
+[ -f "${HOME_DIR}/bin/setenv.sh" ] && \
+ cp -p "${HOME_DIR}/bin/setenv.sh" "${BASE_TGT}/bin/"
Here you ignore -p.
+echo created CATALINA_BASE directory at $BASE_TGT
Not quoted again.
You should also warn that the ports in the server.xml are likely bound
already.
I'll add that
Igal
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org