96 lines
2.9 KiB
Bash
Executable File
96 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# --- Colors for Output ---
|
|
GREEN='\033[0;32m'
|
|
BLUE='\033[0;34m'
|
|
RED='\033[0;31m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${BLUE}==============================================${NC}"
|
|
echo -e "${GREEN} Production Readiness Checklist ${NC}"
|
|
echo -e "${BLUE}==============================================${NC}"
|
|
|
|
# 1. Check PHP Version
|
|
PHP_VER=$(php -r 'echo PHP_VERSION;')
|
|
echo -ne "Checking PHP Version (8.2+ required)... "
|
|
if [[ $(echo "$PHP_VER 8.2" | awk '{print ($1 >= $2)}') -eq 1 ]]; then
|
|
echo -e "${GREEN}OK ($PHP_VER)${NC}"
|
|
else
|
|
echo -e "${RED}FAIL ($PHP_VER)${NC}"
|
|
fi
|
|
|
|
# 2. Check PHP Extensions
|
|
echo -e "\nChecking PHP Extensions:"
|
|
EXTENSIONS=("pgsql" "redis" "curl" "mbstring" "xml" "zip" "bcmath" "intl" "gd")
|
|
for ext in "${EXTENSIONS[@]}"; do
|
|
echo -ne " - $ext... "
|
|
if php -m | grep -qi "$ext"; then
|
|
echo -e "${GREEN}INSTALLED${NC}"
|
|
else
|
|
echo -e "${RED}MISSING${NC}"
|
|
fi
|
|
done
|
|
|
|
# 3. Check .env settings
|
|
echo -e "\nChecking .env settings:"
|
|
if [ -f .env ]; then
|
|
APP_ENV=$(grep APP_ENV .env | cut -d '=' -f2)
|
|
APP_DEBUG=$(grep APP_DEBUG .env | cut -d '=' -f2)
|
|
|
|
echo -ne " - APP_ENV... "
|
|
if [[ "$APP_ENV" == "production" ]]; then
|
|
echo -e "${GREEN}production${NC}"
|
|
else
|
|
echo -e "${YELLOW}$APP_ENV (Warning: not production)${NC}"
|
|
fi
|
|
|
|
echo -ne " - APP_DEBUG... "
|
|
if [[ "$APP_DEBUG" == "false" ]]; then
|
|
echo -e "${GREEN}false${NC}"
|
|
else
|
|
echo -e "${RED}true (CRITICAL: Disable debug in production!)${NC}"
|
|
fi
|
|
else
|
|
echo -e "${RED}.env file missing!${NC}"
|
|
fi
|
|
|
|
# 4. Check Directory Permissions
|
|
echo -e "\nChecking Directory Permissions:"
|
|
DIRS=("storage" "bootstrap/cache")
|
|
for dir in "${DIRS[@]}"; do
|
|
echo -ne " - $dir writable... "
|
|
if [ -w "$dir" ]; then
|
|
echo -e "${GREEN}YES${NC}"
|
|
else
|
|
echo -e "${RED}NO${NC}"
|
|
fi
|
|
done
|
|
|
|
# 5. Check Mobile API URL
|
|
echo -e "\nChecking Mobile API Configuration:"
|
|
if [ -f mobile/services/api.ts ]; then
|
|
if grep -q "Constants.expoConfig?.extra?.apiUrl" mobile/services/api.ts; then
|
|
echo -e "${GREEN}Flexible (Production Ready)${NC}"
|
|
else
|
|
echo -e "${YELLOW}Hardcoded (Check mobile/services/api.ts)${NC}"
|
|
fi
|
|
fi
|
|
|
|
# 6. Check Database Connectivity
|
|
echo -e "\nChecking Database Connectivity... "
|
|
php artisan db:monitor --quiet > /dev/null 2>&1
|
|
if [ $? -eq 0 ]; then
|
|
echo -e "${GREEN}CONNECTED${NC}"
|
|
else
|
|
echo -e "${RED}FAILED${NC}"
|
|
fi
|
|
|
|
echo -e "\n${BLUE}==============================================${NC}"
|
|
echo -e "${YELLOW}Next Steps for Smooth Deployment:${NC}"
|
|
echo -e "1. Run ${BLUE}php artisan optimize${NC} in production."
|
|
echo -e "2. Run ${BLUE}npm run build${NC} for frontend assets."
|
|
echo -e "3. Ensure ${BLUE}Supervisor${NC} is running for Queue and Reverb."
|
|
echo -e "4. Check ${BLUE}Nginx${NC} logs for any proxy issues."
|
|
echo -e "${BLUE}==============================================${NC}"
|