154 lines
4.1 KiB
Bash
Executable File
154 lines
4.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Server Environment Setup Script
|
|
# This script helps you set up .env files on your deployment servers
|
|
|
|
set -e
|
|
|
|
echo "================================================"
|
|
echo "Server Environment Setup for MerchBay Admin"
|
|
echo "================================================"
|
|
echo ""
|
|
|
|
# Color codes for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Function to prompt for input with default value
|
|
prompt_input() {
|
|
local prompt="$1"
|
|
local default="$2"
|
|
local value
|
|
|
|
if [ -n "$default" ]; then
|
|
read -p "$prompt [$default]: " value
|
|
echo "${value:-$default}"
|
|
else
|
|
read -p "$prompt: " value
|
|
echo "$value"
|
|
fi
|
|
}
|
|
|
|
# Function to prompt for password (hidden input)
|
|
prompt_password() {
|
|
local prompt="$1"
|
|
local value
|
|
|
|
read -s -p "$prompt: " value
|
|
echo ""
|
|
echo "$value"
|
|
}
|
|
|
|
# Choose environment
|
|
echo "Which environment are you setting up?"
|
|
echo "1) Production"
|
|
echo "2) Development"
|
|
read -p "Enter choice [1-2]: " env_choice
|
|
|
|
case $env_choice in
|
|
1)
|
|
ENV_TYPE="production"
|
|
DEPLOY_DIR="/var/www/merchbay_admin"
|
|
DEFAULT_DOMAIN="merchbay.com"
|
|
DEFAULT_APP_URL="https://merchbay.com"
|
|
DEFAULT_APP_ENV="production"
|
|
DEFAULT_DB_NAME="merchbay_prod"
|
|
;;
|
|
2)
|
|
ENV_TYPE="development"
|
|
DEPLOY_DIR="/var/www/merchbay_admin_dev"
|
|
DEFAULT_DOMAIN="dev.merchbay.app"
|
|
DEFAULT_APP_URL="https://dev.merchbay.app"
|
|
DEFAULT_APP_ENV="staging"
|
|
DEFAULT_DB_NAME="merchbay_dev"
|
|
;;
|
|
*)
|
|
echo -e "${RED}Invalid choice${NC}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
echo -e "\n${GREEN}Setting up $ENV_TYPE environment${NC}\n"
|
|
|
|
# Collect information
|
|
echo "=== Application Settings ==="
|
|
APP_ENV=$(prompt_input "APP_ENV" "$DEFAULT_APP_ENV")
|
|
APP_DEBUG=$(prompt_input "APP_DEBUG (true/false)" "false")
|
|
APP_URL=$(prompt_input "APP_URL" "$DEFAULT_APP_URL")
|
|
DOMAIN=$(prompt_input "DOMAIN" "$DEFAULT_DOMAIN")
|
|
|
|
echo -e "\n=== Database Settings ==="
|
|
DB_HOST=$(prompt_input "DB_HOST" "localhost")
|
|
DB_PORT=$(prompt_input "DB_PORT" "3306")
|
|
DB_DATABASE=$(prompt_input "DB_DATABASE" "$DEFAULT_DB_NAME")
|
|
DB_USERNAME=$(prompt_input "DB_USERNAME" "merchbay_user")
|
|
DB_PASSWORD=$(prompt_password "DB_PASSWORD")
|
|
|
|
echo -e "\n=== Server Connection ==="
|
|
SERVER_USER=$(prompt_input "SSH Username" "root")
|
|
SERVER_HOST=$(prompt_input "Server IP/Hostname" "")
|
|
|
|
if [ -z "$SERVER_HOST" ]; then
|
|
echo -e "${RED}Error: Server hostname is required${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Generate .env content
|
|
ENV_CONTENT="APP_ENV=$APP_ENV
|
|
APP_DEBUG=$APP_DEBUG
|
|
APP_URL=$APP_URL
|
|
DB_HOST=$DB_HOST
|
|
DB_PORT=$DB_PORT
|
|
DB_DATABASE=$DB_DATABASE
|
|
DB_USERNAME=$DB_USERNAME
|
|
DB_PASSWORD=$DB_PASSWORD
|
|
DOMAIN=$DOMAIN"
|
|
|
|
# Show summary
|
|
echo -e "\n${YELLOW}=== Configuration Summary ===${NC}"
|
|
echo "Environment: $ENV_TYPE"
|
|
echo "Deploy Directory: $DEPLOY_DIR"
|
|
echo "Server: $SERVER_USER@$SERVER_HOST"
|
|
echo "Domain: $DOMAIN"
|
|
echo "Database: $DB_DATABASE"
|
|
echo ""
|
|
|
|
# Ask for confirmation
|
|
read -p "Deploy this configuration to the server? (y/n): " confirm
|
|
|
|
if [ "$confirm" != "y" ]; then
|
|
echo "Aborted."
|
|
exit 0
|
|
fi
|
|
|
|
# Deploy to server
|
|
echo -e "\n${GREEN}Deploying configuration to server...${NC}"
|
|
|
|
# Create deployment directory and .env file
|
|
ssh "$SERVER_USER@$SERVER_HOST" "mkdir -p $DEPLOY_DIR"
|
|
|
|
# Upload .env file
|
|
echo "$ENV_CONTENT" | ssh "$SERVER_USER@$SERVER_HOST" "cat > $DEPLOY_DIR/.env && chmod 600 $DEPLOY_DIR/.env"
|
|
|
|
echo -e "\n${GREEN}✓ Configuration deployed successfully!${NC}"
|
|
echo -e "\nThe .env file has been created at: ${YELLOW}$DEPLOY_DIR/.env${NC}"
|
|
echo ""
|
|
|
|
# Display Gitea secrets needed
|
|
echo -e "${YELLOW}=== Gitea Secrets Required ===${NC}"
|
|
if [ "$ENV_TYPE" = "production" ]; then
|
|
echo "Add these secrets to your Gitea repository:"
|
|
echo " • PROD_DEPLOY_SSH_KEY: Your SSH private key"
|
|
echo " • PROD_DEPLOY_USER: $SERVER_USER"
|
|
echo " • PROD_DEPLOY_HOST: $SERVER_HOST"
|
|
else
|
|
echo "Add these secrets to your Gitea repository:"
|
|
echo " • DEPLOY_SSH_KEY: Your SSH private key"
|
|
echo " • DEPLOY_USER: $SERVER_USER"
|
|
echo " • DEPLOY_HOST: $SERVER_HOST"
|
|
fi
|
|
|
|
echo -e "\n${GREEN}Setup complete!${NC}"
|