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

Reply via email to