Installation Scripts
This appendix contains useful scripts for EPMware installation, configuration, and maintenance.
Installation Scripts
Complete Installation Script (Linux)
#!/bin/bash
# EPMware Complete Installation Script
# Run as root or with sudo
set -e
# Variables
EPMWARE_HOME="/opt/epmware"
TOMCAT_HOME="/opt/tomcat"
ORACLE_SID="EPMWARE"
EPMWARE_USER="epmware"
echo "========================================="
echo "EPMware Installation Script"
echo "========================================="
# Create user and directories
echo "Creating EPMware user and directories..."
groupadd ${EPMWARE_USER}
useradd -g ${EPMWARE_USER} -m -s /bin/bash ${EPMWARE_USER}
mkdir -p ${EPMWARE_HOME}/{app,data,logs,backup,config}
mkdir -p ${EPMWARE_HOME}/data/{archive,stage,temp}
chown -R ${EPMWARE_USER}:${EPMWARE_USER} ${EPMWARE_HOME}
# Install Java
echo "Installing Java..."
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
echo "export JAVA_HOME=${JAVA_HOME}" >> /etc/profile
echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profile
# Install Jython
echo "Installing Jython..."
cd /tmp
wget https://repo1.maven.org/maven2/org/python/jython-installer/2.7.3/jython-installer-2.7.3.jar
java -jar jython-installer-2.7.3.jar -s -d /opt/jython
echo "export JYTHON_HOME=/opt/jython" >> /etc/profile
echo "export PATH=\$JYTHON_HOME/bin:\$PATH" >> /etc/profile
# Install Tomcat
echo "Installing Tomcat..."
cd /tmp
wget https://downloads.apache.org/tomcat/tomcat-8/v8.5.85/bin/apache-tomcat-8.5.85.tar.gz
tar -xzvf apache-tomcat-8.5.85.tar.gz -C /opt/
mv /opt/apache-tomcat-8.5.85 ${TOMCAT_HOME}
chown -R ${EPMWARE_USER}:${EPMWARE_USER} ${TOMCAT_HOME}
# Configure Tomcat memory
cat > ${TOMCAT_HOME}/bin/setenv.sh << EOF
#!/bin/bash
export CATALINA_OPTS="\$CATALINA_OPTS -Xms8192m -Xmx12288m"
export CATALINA_OPTS="\$CATALINA_OPTS -XX:+UseG1GC"
export CATALINA_OPTS="\$CATALINA_OPTS -XX:MaxGCPauseMillis=200"
EOF
chmod +x ${TOMCAT_HOME}/bin/setenv.sh
# Create systemd service for Tomcat
cat > /etc/systemd/system/tomcat.service << EOF
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
User=${EPMWARE_USER}
Group=${EPMWARE_USER}
Environment="JAVA_HOME=${JAVA_HOME}"
Environment="CATALINA_HOME=${TOMCAT_HOME}"
Environment="CATALINA_BASE=${TOMCAT_HOME}"
Environment="CATALINA_PID=${TOMCAT_HOME}/temp/tomcat.pid"
ExecStart=${TOMCAT_HOME}/bin/startup.sh
ExecStop=${TOMCAT_HOME}/bin/shutdown.sh
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# Enable and start Tomcat
systemctl daemon-reload
systemctl enable tomcat
echo "========================================="
echo "Installation complete!"
echo "Next steps:"
echo "1. Configure database"
echo "2. Deploy EPMware WAR file"
echo "3. Configure JDBC connection"
echo "========================================="
Database Setup Script
-- EPMware Database Setup Script
-- Run as SYS user
-- Create tablespaces
CREATE TABLESPACE EWD
DATAFILE '/u01/app/oracle/oradata/EPMWARE/EWD.dbf'
SIZE 1024M AUTOEXTEND ON NEXT 500K MAXSIZE 2048M;
CREATE TABLESPACE EWX
DATAFILE '/u01/app/oracle/oradata/EPMWARE/EWX.dbf'
SIZE 10M AUTOEXTEND ON NEXT 500K MAXSIZE 512M;
-- Create user
CREATE USER ew IDENTIFIED BY "EPMware2024!";
ALTER USER ew QUOTA UNLIMITED ON EWD;
ALTER USER ew QUOTA UNLIMITED ON EWX;
ALTER USER ew DEFAULT TABLESPACE EWD;
-- Grant privileges
GRANT CONNECT TO ew;
GRANT CREATE TABLE TO ew;
GRANT CREATE SEQUENCE TO ew;
GRANT CREATE VIEW TO ew;
GRANT CREATE PROCEDURE TO ew;
GRANT CREATE TYPE TO ew;
GRANT CREATE JOB TO ew;
GRANT EXECUTE ON DBMS_CRYPTO TO ew;
-- Create sleep function
CREATE OR REPLACE PROCEDURE sleep(seconds NUMBER)
AS
BEGIN
DBMS_LOCK.SLEEP(seconds);
END;
/
CREATE OR REPLACE PUBLIC SYNONYM sleep FOR sleep;
GRANT EXECUTE ON sleep TO ew;
-- Create directories
CREATE OR REPLACE DIRECTORY ew_archive_db_dir AS '/ew/db/data/archive';
CREATE OR REPLACE DIRECTORY ew_stage_db_dir AS '/ew/db/data/stage';
CREATE OR REPLACE DIRECTORY ew_temp_db_dir AS '/ew/db/data/temp';
GRANT READ, WRITE ON DIRECTORY ew_archive_db_dir TO ew;
GRANT READ, WRITE ON DIRECTORY ew_stage_db_dir TO ew;
GRANT READ, WRITE ON DIRECTORY ew_temp_db_dir TO ew;
COMMIT;
Maintenance Scripts
Backup Script
#!/bin/bash
# EPMware Backup Script
# Variables
BACKUP_DIR="/backup/epmware"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
RETENTION_DAYS=30
# Create backup directory
mkdir -p ${BACKUP_DIR}/${TIMESTAMP}
# Backup database
echo "Backing up database..."
expdp ew/password@EPMWARE \
directory=DATA_PUMP \
dumpfile=ew_${TIMESTAMP}.dmp \
logfile=ew_${TIMESTAMP}.log
# Backup application
echo "Backing up application..."
tar -czvf ${BACKUP_DIR}/${TIMESTAMP}/epmware_app_${TIMESTAMP}.tar.gz \
/opt/tomcat/webapps/epmware/
# Backup configuration
echo "Backing up configuration..."
tar -czvf ${BACKUP_DIR}/${TIMESTAMP}/epmware_config_${TIMESTAMP}.tar.gz \
/opt/epmware/config/
# Remove old backups
echo "Removing old backups..."
find ${BACKUP_DIR} -type d -mtime +${RETENTION_DAYS} -exec rm -rf {} \;
echo "Backup completed: ${BACKUP_DIR}/${TIMESTAMP}"
Health Check Script
#!/bin/bash
# EPMware Health Check Script
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo "========================================="
echo "EPMware Health Check"
echo "========================================="
# Check database
echo -n "Database Status: "
sqlplus -s ew/password@EPMWARE << EOF > /dev/null 2>&1
SELECT 1 FROM dual;
EXIT;
EOF
if [ $? -eq 0 ]; then
echo -e "${GREEN}OK${NC}"
else
echo -e "${RED}FAILED${NC}"
fi
# Check Tomcat
echo -n "Tomcat Status: "
if systemctl is-active --quiet tomcat; then
echo -e "${GREEN}Running${NC}"
else
echo -e "${RED}Stopped${NC}"
fi
# Check EPMware application
echo -n "EPMware Application: "
HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/epmware)
if [ ${HTTP_STATUS} -eq 200 ]; then
echo -e "${GREEN}Accessible${NC}"
else
echo -e "${RED}Not Accessible (HTTP ${HTTP_STATUS})${NC}"
fi
# Check disk space
echo -n "Disk Space: "
DISK_USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ ${DISK_USAGE} -lt 80 ]; then
echo -e "${GREEN}${DISK_USAGE}% used${NC}"
elif [ ${DISK_USAGE} -lt 90 ]; then
echo -e "${YELLOW}${DISK_USAGE}% used${NC}"
else
echo -e "${RED}${DISK_USAGE}% used${NC}"
fi
# Check memory
echo -n "Memory Usage: "
MEM_USAGE=$(free | awk 'NR==2{printf "%.0f", $3*100/$2}')
if [ ${MEM_USAGE} -lt 80 ]; then
echo -e "${GREEN}${MEM_USAGE}%${NC}"
elif [ ${MEM_USAGE} -lt 90 ]; then
echo -e "${YELLOW}${MEM_USAGE}%${NC}"
else
echo -e "${RED}${MEM_USAGE}%${NC}"
fi
echo "========================================="
Log Rotation Script
#!/bin/bash
# EPMware Log Rotation Script
# Variables
LOG_DIR="/opt/epmware/logs"
ARCHIVE_DIR="/opt/epmware/logs/archive"
RETENTION_DAYS=90
DATE=$(date +%Y%m%d)
# Create archive directory
mkdir -p ${ARCHIVE_DIR}
# Rotate EPMware logs
find ${LOG_DIR} -name "*.log" -type f -mtime +7 -exec gzip {} \;
find ${LOG_DIR} -name "*.log.gz" -type f -exec mv {} ${ARCHIVE_DIR}/ \;
# Rotate Tomcat logs
find /opt/tomcat/logs -name "*.log" -type f -mtime +7 -exec gzip {} \;
find /opt/tomcat/logs -name "*.txt" -type f -mtime +7 -exec gzip {} \;
# Clean old archives
find ${ARCHIVE_DIR} -name "*.gz" -type f -mtime +${RETENTION_DAYS} -delete
echo "Log rotation completed on ${DATE}"
Deployment Scripts
Metadata Deployment Script
#!/bin/bash
# EPMware Metadata Deployment Script
# Variables
EPMWARE_URL="http://localhost:8080/epmware"
API_TOKEN="your-api-token"
DEPLOYMENT_ID=$1
if [ -z "${DEPLOYMENT_ID}" ]; then
echo "Usage: $0 <deployment_id>"
exit 1
fi
# Trigger deployment
echo "Starting deployment ${DEPLOYMENT_ID}..."
RESPONSE=$(curl -s -X POST \
-H "Authorization: Bearer ${API_TOKEN}" \
-H "Content-Type: application/json" \
"${EPMWARE_URL}/api/deployment/execute/${DEPLOYMENT_ID}")
# Check status
STATUS=$(echo ${RESPONSE} | jq -r '.status')
if [ "${STATUS}" == "SUCCESS" ]; then
echo "Deployment started successfully"
else
echo "Deployment failed: ${RESPONSE}"
exit 1
fi
# Monitor deployment
while true; do
STATUS=$(curl -s \
-H "Authorization: Bearer ${API_TOKEN}" \
"${EPMWARE_URL}/api/deployment/status/${DEPLOYMENT_ID}" | jq -r '.status')
case ${STATUS} in
"COMPLETED")
echo "Deployment completed successfully"
break
;;
"FAILED")
echo "Deployment failed"
exit 1
;;
"IN_PROGRESS")
echo "Deployment in progress..."
sleep 10
;;
*)
echo "Unknown status: ${STATUS}"
exit 1
;;
esac
done
Monitoring Scripts
Performance Monitor Script
#!/usr/bin/env python
# EPMware Performance Monitor
import psutil
import requests
import json
import time
from datetime import datetime
# Configuration
EPMWARE_URL = "http://localhost:8080/epmware"
ALERT_EMAIL = "admin@company.com"
CHECK_INTERVAL = 60 # seconds
def check_system_resources():
"""Check system resource usage"""
metrics = {
'timestamp': datetime.now().isoformat(),
'cpu_percent': psutil.cpu_percent(interval=1),
'memory_percent': psutil.virtual_memory().percent,
'disk_usage': psutil.disk_usage('/').percent,
'network_connections': len(psutil.net_connections())
}
return metrics
def check_application_health():
"""Check EPMware application health"""
try:
response = requests.get(f"{EPMWARE_URL}/health", timeout=5)
return response.status_code == 200
except:
return False
def send_alert(message):
"""Send alert notification"""
# Implement email or other notification method
print(f"ALERT: {message}")
def main():
"""Main monitoring loop"""
while True:
# Check system resources
metrics = check_system_resources()
# Check thresholds
if metrics['cpu_percent'] > 90:
send_alert(f"High CPU usage: {metrics['cpu_percent']}%")
if metrics['memory_percent'] > 90:
send_alert(f"High memory usage: {metrics['memory_percent']}%")
if metrics['disk_usage'] > 85:
send_alert(f"High disk usage: {metrics['disk_usage']}%")
# Check application health
if not check_application_health():
send_alert("EPMware application is not responding")
# Log metrics
with open('/opt/epmware/logs/metrics.log', 'a') as f:
f.write(json.dumps(metrics) + '\n')
# Wait before next check
time.sleep(CHECK_INTERVAL)
if __name__ == "__main__":
main()
Utility Scripts
Password Encryption Script
#!/bin/bash
# EPMware Password Encryption Utility
echo "EPMware Password Encryption Utility"
echo "===================================="
read -p "Enter password to encrypt: " -s password
echo
# Encrypt password (example using base64, use proper encryption in production)
encrypted=$(echo -n "$password" | openssl enc -aes-256-cbc -a -salt -pass pass:EPMware2024)
echo "Encrypted password: $encrypted"
echo "Add this to your configuration file"
Certificate Generation Script
#!/bin/bash
# Generate SSL Certificate for EPMware
# Variables
KEYSTORE_DIR="/opt/epmware/certs"
KEYSTORE_PASS="changeit"
DOMAIN="epmware.company.com"
# Create directory
mkdir -p ${KEYSTORE_DIR}
# Generate self-signed certificate
keytool -genkey -alias epmware \
-keyalg RSA -keysize 2048 \
-validity 365 \
-keystore ${KEYSTORE_DIR}/keystore.jks \
-storepass ${KEYSTORE_PASS} \
-dname "CN=${DOMAIN}, OU=IT, O=Company, L=City, ST=State, C=US"
echo "Certificate generated: ${KEYSTORE_DIR}/keystore.jks"
echo "Configure in Tomcat server.xml"
© 2025 EPMware, Inc. All rights reserved.