classify web
This commit is contained in:
85
install.sh
Normal file
85
install.sh
Normal file
@@ -0,0 +1,85 @@
|
||||
#!/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!"
|
||||
Reference in New Issue
Block a user