mirror of
https://github.com/myronblair/tomsjavajive
synced 2026-06-30 17:50:32 -05:00
Initial commit
This commit is contained in:
@@ -0,0 +1,314 @@
|
||||
# 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*
|
||||
Reference in New Issue
Block a user