mirror of
https://github.com/myronblair/epic-download
synced 2026-06-30 17:51:00 -05:00
auto-commit for 020628f5-4bfa-4157-a41e-90eec0ddfeec
This commit is contained in:
@@ -0,0 +1,273 @@
|
||||
# Epic Travel & Expeditions - cPanel Deployment Guide
|
||||
|
||||
## Overview
|
||||
This package contains the Epic Travel & Expeditions website configured for cPanel hosting with MySQL database.
|
||||
|
||||
## Requirements
|
||||
- cPanel hosting with:
|
||||
- Python 3.8+ support
|
||||
- MySQL 5.7+ or MariaDB 10.3+
|
||||
- Apache with mod_rewrite enabled
|
||||
- SSL certificate (recommended)
|
||||
- At least 500MB disk space
|
||||
- PHP 7.4+ (optional, for phpMyAdmin)
|
||||
|
||||
## Package Contents
|
||||
```
|
||||
epic-travel-cpanel/
|
||||
├── backend/ # Python FastAPI backend
|
||||
│ ├── routes/ # API endpoints
|
||||
│ ├── models/ # Database models
|
||||
│ ├── server.py # Main application
|
||||
│ ├── requirements.txt # Python dependencies
|
||||
│ └── .env.example # Environment template
|
||||
├── frontend/ # React frontend (production build)
|
||||
│ ├── build/ # Compiled React app
|
||||
│ └── .htaccess # Apache configuration
|
||||
├── database_schema.sql # MySQL database schema
|
||||
├── setup_admin.py # Admin user setup script
|
||||
└── INSTALLATION.md # This file
|
||||
```
|
||||
|
||||
## Installation Steps
|
||||
|
||||
### Step 1: Database Setup
|
||||
|
||||
1. **Create MySQL Database**
|
||||
- Log into cPanel → MySQL Databases
|
||||
- Create new database: `username_epic_travel`
|
||||
- Create database user with strong password
|
||||
- Grant ALL PRIVILEGES to the user
|
||||
|
||||
2. **Import Database Schema**
|
||||
- Go to phpMyAdmin
|
||||
- Select your database
|
||||
- Click "Import" tab
|
||||
- Upload `database_schema.sql`
|
||||
- Click "Go"
|
||||
|
||||
3. **Generate Admin Password Hash**
|
||||
```bash
|
||||
cd backend
|
||||
python3 setup_admin.py
|
||||
```
|
||||
- Copy the generated hash
|
||||
- Update the admin_users INSERT statement in the SQL file if needed
|
||||
|
||||
### Step 2: Backend Setup
|
||||
|
||||
1. **Upload Backend Files**
|
||||
- Upload `backend/` folder to your cPanel account
|
||||
- Recommended location: `~/epic-travel-api/`
|
||||
|
||||
2. **Install Python Dependencies**
|
||||
```bash
|
||||
cd ~/epic-travel-api
|
||||
python3 -m venv venv
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
3. **Configure Environment**
|
||||
- Copy `.env.example` to `.env`
|
||||
- Edit `.env` with your settings:
|
||||
```env
|
||||
MYSQL_HOST=localhost
|
||||
MYSQL_PORT=3306
|
||||
MYSQL_DATABASE=username_epic_travel
|
||||
MYSQL_USER=username_dbuser
|
||||
MYSQL_PASSWORD=your_secure_password
|
||||
JWT_SECRET_KEY=your_random_256bit_key
|
||||
ADMIN_DEFAULT_PASSWORD=Joker1974!!!
|
||||
CORS_ORIGINS=https://yourdomain.com
|
||||
```
|
||||
|
||||
4. **Setup Python Application**
|
||||
- In cPanel → Setup Python App
|
||||
- Python version: 3.8+
|
||||
- Application root: `/home/username/epic-travel-api`
|
||||
- Application URL: `/api`
|
||||
- Application startup file: `server.py`
|
||||
- Application Entry point: `app`
|
||||
- Click "Create"
|
||||
|
||||
5. **Install Dependencies via cPanel**
|
||||
- In the Python App configuration
|
||||
- Click "Run pip install" button
|
||||
- Or run: `pip install -r requirements.txt`
|
||||
|
||||
### Step 3: Frontend Setup
|
||||
|
||||
1. **Upload Frontend Build**
|
||||
- Upload contents of `frontend/build/` to your public_html
|
||||
- Or to a subdomain folder
|
||||
|
||||
2. **Configure .htaccess**
|
||||
- Ensure `.htaccess` is present in the root
|
||||
- Modify if your API is on a different path
|
||||
|
||||
3. **Update API URL**
|
||||
- In `public_html/static/js/main.*.js`
|
||||
- Or set via environment variable during build
|
||||
|
||||
### Step 4: SSL Configuration
|
||||
|
||||
1. **Enable SSL**
|
||||
- In cPanel → SSL/TLS
|
||||
- Install Let's Encrypt certificate (free)
|
||||
- Enable "Force HTTPS Redirect"
|
||||
|
||||
2. **Update CORS**
|
||||
- Edit backend `.env`
|
||||
- Set: `CORS_ORIGINS=https://yourdomain.com`
|
||||
- Restart Python application
|
||||
|
||||
### Step 5: Testing
|
||||
|
||||
1. **Test Backend API**
|
||||
```bash
|
||||
curl https://yourdomain.com/api
|
||||
```
|
||||
Should return: `{"message": "Epic Travel API is running", "status": "healthy"}`
|
||||
|
||||
2. **Test Frontend**
|
||||
- Visit: https://yourdomain.com
|
||||
- Should see Epic Travel homepage
|
||||
|
||||
3. **Test Admin Login**
|
||||
- Visit: https://yourdomain.com/admin
|
||||
- Login with:
|
||||
- Email: admin@epictravel.com
|
||||
- Password: Joker1974!!!
|
||||
|
||||
## Configuration Files
|
||||
|
||||
### Backend .env
|
||||
```env
|
||||
# Database Configuration
|
||||
MYSQL_HOST=localhost
|
||||
MYSQL_PORT=3306
|
||||
MYSQL_DATABASE=username_epic_travel
|
||||
MYSQL_USER=username_dbuser
|
||||
MYSQL_PASSWORD=your_password
|
||||
|
||||
# Security
|
||||
JWT_SECRET_KEY=generate_with_openssl_rand_hex_32
|
||||
ADMIN_DEFAULT_PASSWORD=Joker1974!!!
|
||||
|
||||
# CORS
|
||||
CORS_ORIGINS=https://yourdomain.com
|
||||
```
|
||||
|
||||
### Frontend .htaccess
|
||||
```apache
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
RewriteBase /
|
||||
|
||||
# API Proxy
|
||||
RewriteCond %{REQUEST_URI} ^/api/(.*)$
|
||||
RewriteRule ^api/(.*)$ https://yourdomain.com/api/$1 [P,L]
|
||||
|
||||
# React Router
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule ^ index.html [L]
|
||||
</IfModule>
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Backend not starting
|
||||
- Check Python version: `python3 --version`
|
||||
- Check error logs in cPanel
|
||||
- Verify MySQL connection details
|
||||
- Ensure all dependencies installed
|
||||
|
||||
### Frontend shows blank page
|
||||
- Check browser console for errors
|
||||
- Verify API URL in frontend build
|
||||
- Check .htaccess file exists
|
||||
- Clear browser cache
|
||||
|
||||
### Database connection fails
|
||||
- Verify MySQL credentials
|
||||
- Check if database user has proper privileges
|
||||
- Ensure MySQL server is running
|
||||
- Check host (use 'localhost' not '127.0.0.1')
|
||||
|
||||
### CORS errors
|
||||
- Update CORS_ORIGINS in backend .env
|
||||
- Restart Python application
|
||||
- Check SSL configuration
|
||||
- Ensure frontend and backend use same protocol (HTTPS)
|
||||
|
||||
## Performance Optimization
|
||||
|
||||
1. **Enable Gzip Compression**
|
||||
- Add to .htaccess:
|
||||
```apache
|
||||
<IfModule mod_deflate.c>
|
||||
AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/json
|
||||
</IfModule>
|
||||
```
|
||||
|
||||
2. **Enable Browser Caching**
|
||||
- Add to .htaccess:
|
||||
```apache
|
||||
<IfModule mod_expires.c>
|
||||
ExpiresActive On
|
||||
ExpiresByType image/jpg "access plus 1 year"
|
||||
ExpiresByType image/jpeg "access plus 1 year"
|
||||
ExpiresByType image/png "access plus 1 year"
|
||||
ExpiresByType text/css "access plus 1 month"
|
||||
ExpiresByType application/javascript "access plus 1 month"
|
||||
</IfModule>
|
||||
```
|
||||
|
||||
3. **MySQL Optimization**
|
||||
- Add indexes to frequently queried columns
|
||||
- Use connection pooling
|
||||
- Enable query caching
|
||||
|
||||
## Maintenance
|
||||
|
||||
### Updating the Application
|
||||
1. Backup database: Export via phpMyAdmin
|
||||
2. Backup files: Download via FTP
|
||||
3. Upload new files
|
||||
4. Run any database migrations
|
||||
5. Restart Python application
|
||||
|
||||
### Database Backup
|
||||
```bash
|
||||
mysqldump -u username -p username_epic_travel > backup_$(date +%Y%m%d).sql
|
||||
```
|
||||
|
||||
### Monitoring
|
||||
- Check error logs in cPanel
|
||||
- Monitor disk space usage
|
||||
- Review database size
|
||||
- Check Python app status
|
||||
|
||||
## Support
|
||||
For issues specific to this application:
|
||||
- Check logs in cPanel
|
||||
- Verify all configuration settings
|
||||
- Ensure MySQL connection is working
|
||||
- Test API endpoints individually
|
||||
|
||||
## Security Checklist
|
||||
- [ ] Strong MySQL password set
|
||||
- [ ] JWT secret key generated and set
|
||||
- [ ] Admin password changed from default
|
||||
- [ ] SSL certificate installed
|
||||
- [ ] HTTPS redirect enabled
|
||||
- [ ] CORS properly configured
|
||||
- [ ] File permissions set correctly (644 for files, 755 for directories)
|
||||
- [ ] .env file protected (not web-accessible)
|
||||
|
||||
## Credits
|
||||
Epic Travel & Expeditions
|
||||
Contact: advisor@epictravelexpeditions.com
|
||||
Phone: +1 (817) 266-2022
|
||||
Reference in New Issue
Block a user