mirror of
https://github.com/myronblair/tomsjavajive
synced 2026-06-30 17:50:32 -05:00
315 lines
8.6 KiB
Markdown
315 lines
8.6 KiB
Markdown
# Tom's Java Jive - PHP/MySQL Deployment Guide
|
|
|
|
## cPanel FTP Deployment Instructions
|
|
|
|
This guide covers deploying Tom's Java Jive to a cPanel shared hosting environment with FTP access only (no SSH/root).
|
|
|
|
### Requirements
|
|
|
|
- PHP 8.4+
|
|
- MySQL 8.0+
|
|
- FTP Client (FileZilla, Cyberduck, etc.)
|
|
- cPanel access for database creation
|
|
|
|
---
|
|
|
|
## Step 1: Create MySQL Database in cPanel
|
|
|
|
1. Log into your cPanel dashboard
|
|
2. Navigate to **MySQL® Databases**
|
|
3. Create a new database:
|
|
- Database name: `tomsjavajive` (or your preferred name)
|
|
- Note the full database name (usually `cpaneluser_tomsjavajive`)
|
|
4. Create a database user:
|
|
- Username: (your choice)
|
|
- Password: (strong password)
|
|
5. Add user to database:
|
|
- Select the user and database
|
|
- Grant **ALL PRIVILEGES**
|
|
6. Note down your credentials:
|
|
- Database host: `localhost` (usually)
|
|
- Database name: (full name from step 3)
|
|
- Username: (full username from step 4)
|
|
- Password: (from step 4)
|
|
|
|
---
|
|
|
|
## Step 2: Configure Application Settings
|
|
|
|
### Edit `config/database.php`
|
|
|
|
```php
|
|
define('DB_HOST', 'localhost');
|
|
define('DB_NAME', 'cpaneluser_tomsjavajive'); // Your full database name
|
|
define('DB_USER', 'cpaneluser_dbuser'); // Your full database username
|
|
define('DB_PASS', 'your_secure_password'); // Your database password
|
|
```
|
|
|
|
### Edit `config/config.php`
|
|
|
|
```php
|
|
define('SITE_NAME', "Tom's Java Jive");
|
|
define('SITE_URL', 'https://yourdomain.com'); // Your actual domain
|
|
define('SITE_EMAIL', 'support@yourdomain.com');
|
|
|
|
// Set to 'production' for live site
|
|
define('ENVIRONMENT', 'production');
|
|
define('DEBUG_MODE', false);
|
|
|
|
// Stripe Keys (get from https://dashboard.stripe.com/apikeys)
|
|
define('STRIPE_SECRET_KEY', 'sk_live_xxxx'); // Use sk_test_ for testing
|
|
define('STRIPE_PUBLISHABLE_KEY', 'pk_live_xxxx');
|
|
define('STRIPE_WEBHOOK_SECRET', 'whsec_xxxx');
|
|
|
|
// SendGrid (get from https://app.sendgrid.com/settings/api_keys)
|
|
define('SENDGRID_API_KEY', 'SG.xxxx');
|
|
define('SENDER_EMAIL', 'noreply@yourdomain.com');
|
|
|
|
// Twilio (optional - get from https://www.twilio.com/console)
|
|
define('TWILIO_SID', '');
|
|
define('TWILIO_AUTH_TOKEN', '');
|
|
define('TWILIO_PHONE', '');
|
|
```
|
|
|
|
---
|
|
|
|
## Step 3: Upload Files via FTP
|
|
|
|
1. Connect to your server using FTP:
|
|
- Host: Your domain or ftp.yourdomain.com
|
|
- Port: 21 (or 22 for SFTP)
|
|
- Username: Your cPanel username
|
|
- Password: Your cPanel password
|
|
|
|
2. Navigate to `public_html` (or your web root)
|
|
|
|
3. Upload ALL files from the `tomsjavajive-php` folder:
|
|
```
|
|
/public_html/
|
|
├── admin/
|
|
├── api/
|
|
├── assets/
|
|
├── account/
|
|
├── config/
|
|
├── docs/
|
|
├── includes/
|
|
├── install/
|
|
├── pages/
|
|
├── index.php
|
|
├── shop.php
|
|
├── product.php
|
|
├── cart.php
|
|
├── checkout.php
|
|
├── payment.php
|
|
├── login.php
|
|
├── register.php
|
|
├── logout.php
|
|
└── ... (other files)
|
|
```
|
|
|
|
4. Set file permissions (via FTP client or cPanel File Manager):
|
|
- All `.php` files: 644
|
|
- All directories: 755
|
|
- `uploads/` directory: 755 (create if not exists)
|
|
- `config/` directory: 755
|
|
|
|
---
|
|
|
|
## Step 4: Import Database Schema
|
|
|
|
### Option A: Using phpMyAdmin (Recommended)
|
|
|
|
1. In cPanel, open **phpMyAdmin**
|
|
2. Select your database from the left sidebar
|
|
3. Click the **Import** tab
|
|
4. Click **Choose File** and select `install/schema.sql`
|
|
5. Click **Go** to execute
|
|
|
|
### Option B: Using MySQL command in cPanel Terminal (if available)
|
|
|
|
```bash
|
|
mysql -u cpaneluser_dbuser -p cpaneluser_tomsjavajive < install/schema.sql
|
|
```
|
|
|
|
---
|
|
|
|
## Step 5: Create First Admin User
|
|
|
|
After importing the schema, create your first admin user via phpMyAdmin:
|
|
|
|
1. Open phpMyAdmin
|
|
2. Select your database
|
|
3. Click the **SQL** tab
|
|
4. Run this query (replace with your details):
|
|
|
|
```sql
|
|
INSERT INTO admin_users (user_id, email, password_hash, name, is_admin, is_master, permissions)
|
|
VALUES (
|
|
'admin_001',
|
|
'admin@yourdomain.com',
|
|
'$2y$12$xxxxx', -- Generate bcrypt hash (see below)
|
|
'Admin',
|
|
1,
|
|
1,
|
|
'{"dashboard":true,"pos":true,"products":true,"orders":true,"customers":true,"settings_payment":true,"settings_shipping":true,"settings_email":true,"admin_management":true}'
|
|
);
|
|
```
|
|
|
|
**To generate password hash:**
|
|
Create a temporary PHP file called `generate_hash.php`:
|
|
```php
|
|
<?php
|
|
echo password_hash('YourSecurePassword123', PASSWORD_BCRYPT, ['cost' => 12]);
|
|
?>
|
|
```
|
|
Upload it, visit it in browser, copy the hash, then DELETE the file.
|
|
|
|
---
|
|
|
|
## Step 6: Configure Stripe Webhook (Optional but Recommended)
|
|
|
|
1. Go to [Stripe Dashboard > Webhooks](https://dashboard.stripe.com/webhooks)
|
|
2. Click **Add endpoint**
|
|
3. Set endpoint URL: `https://yourdomain.com/api/webhook.php`
|
|
4. Select events:
|
|
- `payment_intent.succeeded`
|
|
- `payment_intent.payment_failed`
|
|
- `charge.refunded`
|
|
5. Copy the **Signing secret** to your `config.php`
|
|
|
|
---
|
|
|
|
## Step 7: Test Your Installation
|
|
|
|
1. Visit `https://yourdomain.com` - Should show storefront
|
|
2. Visit `https://yourdomain.com/admin/` - Should show admin login
|
|
3. Login with your admin credentials
|
|
4. Add a test product
|
|
5. Test the checkout flow
|
|
|
|
---
|
|
|
|
## Data Migration from MongoDB
|
|
|
|
If you have existing data in MongoDB that needs to be migrated:
|
|
|
|
### Prerequisites
|
|
- PHP with MongoDB extension (`pecl install mongodb`)
|
|
- Access to your MongoDB server
|
|
|
|
### Running Migration
|
|
The migration script is located at `install/migrate_from_mongodb.php`.
|
|
|
|
Since cPanel typically doesn't have MongoDB extension, you have two options:
|
|
|
|
**Option A: Export/Import Manually**
|
|
1. Export MongoDB collections to JSON using `mongoexport`
|
|
2. Convert and import to MySQL using phpMyAdmin or custom scripts
|
|
|
|
**Option B: Run Migration Locally**
|
|
1. Install PHP MongoDB extension locally
|
|
2. Connect to both databases
|
|
3. Run: `php migrate_from_mongodb.php [mongodb_url] [mongodb_dbname]`
|
|
|
|
---
|
|
|
|
## Security Checklist
|
|
|
|
Before going live:
|
|
|
|
- [ ] Change default admin password
|
|
- [ ] Update `SITE_URL` in config.php
|
|
- [ ] Set `ENVIRONMENT` to 'production'
|
|
- [ ] Set `DEBUG_MODE` to false
|
|
- [ ] Configure real Stripe keys (not test keys)
|
|
- [ ] Configure SendGrid for emails
|
|
- [ ] Delete `install/` folder after setup
|
|
- [ ] Set up SSL certificate (HTTPS)
|
|
- [ ] Enable Stripe webhook
|
|
- [ ] Test payment flow end-to-end
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### "Database connection failed"
|
|
- Check database credentials in `config/database.php`
|
|
- Verify database exists in cPanel
|
|
- Ensure user has privileges on the database
|
|
|
|
### "500 Internal Server Error"
|
|
- Check `.htaccess` file exists
|
|
- View error logs in cPanel > Error Log
|
|
- Temporarily enable `DEBUG_MODE` in config.php
|
|
|
|
### "Blank page"
|
|
- Enable PHP error display temporarily
|
|
- Check PHP version (requires 8.4+)
|
|
- View Apache/PHP error logs
|
|
|
|
### "Session errors"
|
|
- Ensure `session.save_path` is writable
|
|
- Check `sessions/` folder permissions
|
|
|
|
### "Payment not working"
|
|
- Verify Stripe keys are correct
|
|
- Check browser console for JS errors
|
|
- Verify webhook endpoint is accessible
|
|
|
|
---
|
|
|
|
## File Structure Reference
|
|
|
|
```
|
|
tomsjavajive-php/
|
|
├── admin/ # Admin panel
|
|
│ ├── assets/ # Admin CSS/JS
|
|
│ ├── includes/ # Admin header/footer
|
|
│ ├── index.php # Dashboard
|
|
│ ├── products.php # Product management
|
|
│ ├── orders.php # Order management
|
|
│ └── ...
|
|
├── api/ # API endpoints
|
|
│ ├── cart.php
|
|
│ ├── products.php
|
|
│ ├── orders.php
|
|
│ └── webhook.php # Stripe webhook
|
|
├── assets/ # Public assets
|
|
│ ├── css/
|
|
│ ├── js/
|
|
│ └── images/
|
|
├── account/ # Customer account pages
|
|
├── config/ # Configuration files
|
|
│ ├── config.php # Main config
|
|
│ └── database.php # DB credentials
|
|
├── includes/ # Shared includes
|
|
│ ├── auth.php
|
|
│ ├── db.php
|
|
│ ├── functions.php
|
|
│ ├── header.php
|
|
│ └── footer.php
|
|
├── install/ # Installation files
|
|
│ ├── schema.sql # Database schema
|
|
│ └── migrate_from_mongodb.php
|
|
├── index.php # Homepage
|
|
├── shop.php # Shop page
|
|
├── product.php # Product detail
|
|
├── cart.php # Shopping cart
|
|
├── checkout.php # Checkout
|
|
└── payment.php # Stripe payment
|
|
```
|
|
|
|
---
|
|
|
|
## Support
|
|
|
|
For issues with this deployment:
|
|
1. Check the troubleshooting section above
|
|
2. Review error logs in cPanel
|
|
3. Verify all configuration values are correct
|
|
|
|
---
|
|
|
|
*Last updated: December 2025*
|
|
*PHP Version: 8.4.19 | MySQL Version: 8.0*
|