Files
web/install.sh
Husanjonazamov 64af77101f classify web
2026-02-24 12:52:49 +05:00

85 lines
1.9 KiB
Bash

#!/bin/bash
set -e
# Function to display status messages
status_message() {
echo "==== $1 ===="
}
# Update system and install curl
# status_message "Updating system and installing curl"
# sudo apt update && sudo apt install -y curl
# Install NVM
# if [ ! -f nvm.sh ]; then
status_message "Installing NVM"
wget -O nvm.sh https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
# Load NVM
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
# Install Node.js
status_message "Installing Node.js"
nvm install 20
# else
# nvm use 20
# fi
# Verify Node.js installation
node -v
if ! pm2 -v ; then
# Install PM2 globally
status_message "Installing PM2"
npm install -g pm2
fi
# Function to find an available port
find_available_port() {
for port in $(seq 8003 9001); do
if ! sudo lsof -i :$port > /dev/null 2>&1; then
echo $port
return 0
fi
done
echo "No available ports found between 8001 and 9001" >&2
return 1
}
# Find an available port
status_message "Finding an available port"
PORT=$(find_available_port)
if [ $? -ne 0 ]; then
exit 1
fi
echo "Found available port: $PORT"
# Update .htaccess file
status_message "Updating .htaccess file"
sed -i "s/http:\/\/127\.0\.0\.1:[0-9]*\//http:\/\/127.0.0.1:$PORT\//g" .htaccess
# Update package.json file
status_message "Updating package.json file"
sed -i "s/NODE_PORT=*[0-9]*/NODE_PORT=$PORT/" package.json
# Install project dependencies
status_message "Installing project dependencies"
npm install --loglevel verbose
# Build the project
status_message "Building the project"
npm run build
# Start the project with PM2
status_message "Starting the project with PM2"
pm2 start npm --name "eClassify" -- start
# Display PM2 processes
status_message "Displaying PM2 processes"
pm2 ls
status_message "Installation and deployment complete!"