Skip to content

Commit a97e765

Browse files
committed
Science Commit 5.
1 parent 70e07d7 commit a97e765

1 file changed

Lines changed: 79 additions & 24 deletions

File tree

modules/black/presidential/Brarner.M.Alete/install/deploy-remote-linux.sh

Lines changed: 79 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -18,28 +18,77 @@ REMOTE_HOST="45.32.31.139"
1818
REMOTE_USER="${BMA_REMOTE_USER:-root}"
1919
REMOTE_DOMAIN="lauradei.us"
2020
REMOTE_PATH="/var/www/html/brarner.m.alete"
21-
SITE_URL="http://${REMOTE_DOMAIN}/brarner.m.alete"
21+
SITE_URL="https://${REMOTE_DOMAIN}/brarner.m.alete"
22+
23+
# SSH options to prevent hanging
24+
SSH_OPTS="-o ConnectTimeout=10 -o BatchMode=yes -o StrictHostKeyChecking=accept-new -o ServerAliveInterval=15 -o ServerAliveCountMax=3"
2225

2326
echo "═══════════════════════════════════════════════════════════════"
2427
echo " Brarner.M.Alete™ — Remote Linux Server Deploy"
2528
echo " Target: ${SITE_URL}"
2629
echo " Server: ${REMOTE_HOST} (${REMOTE_DOMAIN})"
2730
echo "═══════════════════════════════════════════════════════════════"
2831

29-
# Verify SSH access
32+
# ─── Pre-flight: Reverse DNS check ───
33+
echo "[*] Checking reverse DNS for ${REMOTE_HOST}..."
34+
RDNS=$(dig +short -x "$REMOTE_HOST" 2>/dev/null | head -1 || host "$REMOTE_HOST" 2>/dev/null | awk '{print $NF}' || echo "")
35+
if [ -n "$RDNS" ]; then
36+
echo "[*] Reverse DNS: ${REMOTE_HOST}${RDNS}"
37+
# Verify it resolves back to our domain
38+
if echo "$RDNS" | grep -qi "lauradei"; then
39+
echo "[*] PTR matches expected domain"
40+
else
41+
echo "[!] WARNING: PTR (${RDNS}) does not match lauradei.us"
42+
echo " SSL cert may fail. Ensure DNS A record points to ${REMOTE_HOST}"
43+
echo " Continuing anyway..."
44+
fi
45+
else
46+
echo "[!] WARNING: No reverse DNS found for ${REMOTE_HOST}"
47+
echo " Set PTR record: ${REMOTE_HOST} → mail.lauradei.us"
48+
echo " Continuing anyway..."
49+
fi
50+
51+
# ─── Pre-flight: Verify SSH access ───
3052
echo "[*] Verifying SSH access to ${REMOTE_USER}@${REMOTE_HOST}..."
31-
if ! ssh -o ConnectTimeout=10 -o BatchMode=yes "$REMOTE_USER@$REMOTE_HOST" "echo OK" &>/dev/null; then
53+
if ! ssh $SSH_OPTS "$REMOTE_USER@$REMOTE_HOST" "echo OK" 2>/dev/null; then
3254
echo "[!] Cannot SSH to ${REMOTE_HOST}. Check your key or access."
55+
echo " Try: ssh-copy-id ${REMOTE_USER}@${REMOTE_HOST}"
3356
exit 1
3457
fi
3558
echo "[*] SSH access confirmed"
3659

60+
# ─── Pre-flight: Check if Apache alias config already exists ───
61+
echo "[*] Checking for existing Apache alias configuration..."
62+
ALIAS_EXISTS=$(ssh $SSH_OPTS "$REMOTE_USER@$REMOTE_HOST" "
63+
if [ -f /etc/apache2/conf-available/brarner-m-alete.conf ] || \
64+
[ -f /etc/apache2/conf-enabled/brarner-m-alete.conf ] || \
65+
[ -f /etc/httpd/conf.d/brarner-m-alete.conf ]; then
66+
echo 'EXISTS'
67+
else
68+
echo 'NONE'
69+
fi
70+
" 2>/dev/null)
71+
72+
if [ "$ALIAS_EXISTS" = "EXISTS" ]; then
73+
echo "[*] Apache alias config already exists — will update in place"
74+
else
75+
echo "[*] No existing alias config — will create new"
76+
fi
77+
78+
# ─── Pre-flight: Check webapp source exists locally ───
79+
if [ ! -d "$WEBAPP_SRC" ]; then
80+
echo "[!] Webapp source not found: $WEBAPP_SRC"
81+
echo " Run download-jars.sh and build first."
82+
exit 1
83+
fi
84+
echo "[*] Webapp source OK: $WEBAPP_SRC"
85+
3786
# Install Apache2 if not present
3887
echo "[*] Ensuring Apache2 is installed..."
39-
ssh "$REMOTE_USER@$REMOTE_HOST" "
88+
ssh $SSH_OPTS "$REMOTE_USER@$REMOTE_HOST" "
4089
if ! command -v apache2 &>/dev/null && ! command -v httpd &>/dev/null; then
4190
if command -v apt &>/dev/null; then
42-
apt update && apt install -y apache2
91+
DEBIAN_FRONTEND=noninteractive apt update && DEBIAN_FRONTEND=noninteractive apt install -y apache2
4392
elif command -v dnf &>/dev/null; then
4493
dnf install -y httpd && systemctl enable httpd && systemctl start httpd
4594
fi
@@ -50,49 +99,52 @@ ssh "$REMOTE_USER@$REMOTE_HOST" "
5099

51100
# Create directory structure on remote
52101
echo "[*] Creating remote directory: ${REMOTE_PATH}"
53-
ssh "$REMOTE_USER@$REMOTE_HOST" "mkdir -p ${REMOTE_PATH}/WEB-INF/lib"
102+
ssh $SSH_OPTS "$REMOTE_USER@$REMOTE_HOST" "mkdir -p ${REMOTE_PATH}/WEB-INF/lib"
54103

55104
# Deploy webapp
56105
echo "[*] Deploying webapp files..."
57-
scp -r "$WEBAPP_SRC/"* "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/"
106+
scp -o ConnectTimeout=10 -o BatchMode=yes -r "$WEBAPP_SRC/"* "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/"
58107

59108
# Deploy JARs
60109
if [ -d "$BMA_ROOT/lib" ]; then
61110
echo "[*] Deploying library JARs..."
62-
scp "$BMA_ROOT/lib/"*.jar "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/WEB-INF/lib/" 2>/dev/null || true
111+
scp -o ConnectTimeout=10 -o BatchMode=yes "$BMA_ROOT/lib/"*.jar "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/WEB-INF/lib/" 2>/dev/null || true
63112
fi
64113

65114
# Deploy images
66115
if [ -d "$BMA_ROOT/images" ]; then
67116
echo "[*] Deploying images..."
68-
ssh "$REMOTE_USER@$REMOTE_HOST" "mkdir -p ${REMOTE_PATH}/images"
69-
scp -r "$BMA_ROOT/images/"* "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/images/" 2>/dev/null || true
117+
ssh $SSH_OPTS "$REMOTE_USER@$REMOTE_HOST" "mkdir -p ${REMOTE_PATH}/images"
118+
scp -o ConnectTimeout=10 -o BatchMode=yes -r "$BMA_ROOT/images/"* "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/images/" 2>/dev/null || true
70119
fi
71120

72121
# Set permissions
73-
ssh "$REMOTE_USER@$REMOTE_HOST" "chmod -R 755 ${REMOTE_PATH} && chown -R www-data:www-data ${REMOTE_PATH} 2>/dev/null || chown -R apache:apache ${REMOTE_PATH} 2>/dev/null"
122+
ssh $SSH_OPTS "$REMOTE_USER@$REMOTE_HOST" "chmod -R 755 ${REMOTE_PATH} && chown -R www-data:www-data ${REMOTE_PATH} 2>/dev/null || chown -R apache:apache ${REMOTE_PATH} 2>/dev/null"
74123

75-
# Install Tomcat on top of Apache2 if Apache is found
76-
echo "[*] Checking for Tomcat / installing if Apache2 already present..."
77-
ssh "$REMOTE_USER@$REMOTE_HOST" "
124+
# Install Tomcat — BMA runs on Java Enterprise; auto-install or prompt
125+
INSTALL_TOMCAT="y"
126+
if [ -t 0 ]; then
127+
read -rp "[?] Install Tomcat 11 for Java Enterprise servlets? [Y/n] " INSTALL_TOMCAT
128+
INSTALL_TOMCAT="${INSTALL_TOMCAT:-y}"
129+
fi
130+
131+
if [[ "$INSTALL_TOMCAT" =~ ^[Yy]$ ]]; then
132+
echo "[*] Installing Tomcat (Java Enterprise runtime for BMA)..."
133+
ssh $SSH_OPTS "$REMOTE_USER@$REMOTE_HOST" "
78134
TOMCAT_VERSION='11.0.2'
79135
TOMCAT_HOME='/opt/tomcat'
80136
TOMCAT_URL=\"https://archive.apache.org/dist/tomcat/tomcat-11/v\${TOMCAT_VERSION}/bin/apache-tomcat-\${TOMCAT_VERSION}.tar.gz\"
81137
82-
APACHE_FOUND=false
83138
TOMCAT_FOUND=false
84139
85-
if systemctl is-active --quiet apache2 2>/dev/null || systemctl is-active --quiet httpd 2>/dev/null; then
86-
APACHE_FOUND=true
87-
fi
88-
89140
if [ -d \"\$TOMCAT_HOME\" ] && [ -f \"\$TOMCAT_HOME/bin/catalina.sh\" ]; then
90141
TOMCAT_FOUND=true
142+
echo '[*] Tomcat already installed at '\$TOMCAT_HOME
91143
fi
92144
93-
# Install Tomcat alongside Apache2
94-
if [ \"\$APACHE_FOUND\" = true ] && [ \"\$TOMCAT_FOUND\" = false ]; then
95-
echo '[*] Apache2 found — installing Tomcat '\$TOMCAT_VERSION' on top...'
145+
# Install Tomcat (BMA requires Java Enterprise / Jakarta Servlet runtime)
146+
if [ \"\$TOMCAT_FOUND\" = false ]; then
147+
echo '[*] Installing Tomcat '\$TOMCAT_VERSION' (Jakarta Servlet 6.1 runtime)...'
96148
cd /tmp
97149
curl -sfLO \"\$TOMCAT_URL\"
98150
mkdir -p \"\$TOMCAT_HOME\"
@@ -137,10 +189,13 @@ TOMSVC
137189
echo '[*] Deployed to Tomcat context: /brarner'
138190
fi
139191
"
192+
else
193+
echo "[*] Skipping Tomcat install — Apache2 static only"
194+
fi
140195

141196
# Configure Apache2 — ServerAlias + Tomcat proxy (if both) or static alias (Apache only)
142197
echo "[*] Configuring Apache2 ServerAlias and routing..."
143-
ssh "$REMOTE_USER@$REMOTE_HOST" "
198+
ssh $SSH_OPTS "$REMOTE_USER@$REMOTE_HOST" "
144199
CONF='/etc/apache2/conf-available/brarner-m-alete.conf'
145200
[ -d /etc/httpd/conf.d ] && CONF='/etc/httpd/conf.d/brarner-m-alete.conf'
146201
@@ -209,7 +264,7 @@ echo ""
209264

210265
# ─── SSL/TLS 443 — Let's Encrypt (Trusted CA) + Tomcat locked to localhost ───
211266
echo "[*] Configuring SSL/TLS port 443 via Let's Encrypt (Trusted CA)..."
212-
ssh "$REMOTE_USER@$REMOTE_HOST" "
267+
ssh $SSH_OPTS "$REMOTE_USER@$REMOTE_HOST" "
213268
# Install certbot
214269
if ! command -v certbot &>/dev/null; then
215270
if command -v apt &>/dev/null; then

0 commit comments

Comments
 (0)