> ## Documentation Index
> Fetch the complete documentation index at: https://docs.breezehost.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Deploy Your Website

> Get your website live with static HTML, WordPress, Node.js, PHP, or Git deployments

# Deploying Your Website

Multiple options exist for getting your website onto Breeze Hosting. Choose the method that matches your project type.

## Quick Deployment Comparison

<CardGroup cols={2}>
  <Card title="Static HTML" icon="code">
    Perfect for portfolios, landing pages, and documentation sites
  </Card>

  <Card title="WordPress" icon="wordpress">
    Blog platform — one-click install through Plesk
  </Card>

  <Card title="Node.js" icon="node">
    Modern JavaScript applications and APIs
  </Card>

  <Card title="PHP Applications" icon="php">
    Traditional web apps, Laravel, Symfony, Drupal
  </Card>

  <Card title="Git Deployment" icon="git">
    Deploy directly from GitHub or GitLab
  </Card>

  <Card title="FTP Upload" icon="upload">
    Simple drag-and-drop file uploads
  </Card>
</CardGroup>

## Static Website (HTML/CSS/JavaScript)

Perfect for portfolios, landing pages, and documentation.

### Using File Manager

<Steps>
  <Step title="Prepare Your Files">
    Have your HTML, CSS, and JavaScript files ready on your computer
  </Step>

  <Step title="Open File Manager">
    In Plesk, go to Websites & Domains → Your Domain → File Manager
  </Step>

  <Step title="Navigate to httpdocs">
    You should be in the /httpdocs folder (your website root)
  </Step>

  <Step title="Delete Default Files">
    Remove index.html or any default files from Plesk (optional)
  </Step>

  <Step title="Upload Your Files">
    Drag and drop your files into the File Manager or click "Upload"
  </Step>

  <Step title="Create Folder Structure">
    Create folders for css, images, js, etc. as needed
  </Step>

  <Step title="Test Your Site">
    Visit [https://your-domain.com](https://your-domain.com) in your browser
  </Step>
</Steps>

### Using FTP/SFTP

For larger projects, use FTP/SFTP for faster uploads:

**FTP Credentials:**

* **Server**: ftp.your-domain.com or your server IP
* **Username**: Your Plesk username or FTP account
* **Password**: Your Plesk password
* **Port**: 21 (FTP) or 22 (SFTP)

**Recommended FTP Clients:**

* **FileZilla** (free, all platforms)
* **Cyberduck** (Mac/Windows)
* **WinSCP** (Windows only)
* **Transmit** (Mac)

**Using FileZilla:**

1. Install FileZilla
2. File → Site Manager → New Site
3. Enter server, username, password
4. Connect
5. Navigate to /httpdocs on remote side
6. Drag files from local to remote
7. Right-click → Permissions to set as needed

<Tip>
  Use SFTP instead of FTP for security. FTP sends passwords in plain text. SFTP encrypts the connection.
</Tip>

## WordPress Installation

Install WordPress with one click through Plesk, or manually:

### One-Click Installation (Recommended)

<Steps>
  <Step title="Open Plesk Applications">
    In Plesk, click "Applications" or "App Installer"
  </Step>

  <Step title="Find WordPress">
    Search for "WordPress" and click it
  </Step>

  <Step title="Click Install">
    Click "Install" next to the WordPress version
  </Step>

  <Step title="Choose Domain">
    Select which domain to install WordPress on
  </Step>

  <Step title="Configure Installation">
    * **Admin Email**: Your admin email
    * **Admin Username**: Secure username (not admin)
    * **Admin Password**: Strong password
    * **Database**: Create new or use existing
  </Step>

  <Step title="Install">
    Click "Install" and wait 1-2 minutes
  </Step>

  <Step title="Login to WordPress">
    Visit [https://your-domain.com/wp-admin](https://your-domain.com/wp-admin) with your credentials
  </Step>
</Steps>

### Manual WordPress Installation

If one-click doesn't work or you prefer manual control:

<Steps>
  <Step title="Create Database">
    In Plesk → Databases, create a new MySQL database and user
  </Step>

  <Step title="Download WordPress">
    Go to wordpress.org, download latest version
  </Step>

  <Step title="Upload Files">
    Extract the ZIP and upload contents to /httpdocs via FTP or File Manager
  </Step>

  <Step title="Run WordPress Setup">
    Visit [https://your-domain.com/wp-admin/install.php](https://your-domain.com/wp-admin/install.php)
  </Step>

  <Step title="Configure Database">
    Enter database name, username, and password when prompted
  </Step>

  <Step title="Complete Installation">
    Create admin account and finish setup
  </Step>

  <Step title="Login">
    Visit [https://your-domain.com/wp-admin](https://your-domain.com/wp-admin) and log in
  </Step>
</Steps>

### WordPress Security & Optimization

After installation, secure and optimize your WordPress site:

**Essential Plugins:**

* **Jetpack** or **Akismet**: Comment spam protection
* **WP Super Cache** or **W3 Total Cache**: Performance caching
* **UpdraftPlus**: Automated daily backups
* **Wordfence**: Security scanning and firewall

**Security Steps:**

1. Delete default "admin" user if it exists
2. Update all plugins and themes
3. Install security plugin
4. Enable two-factor authentication
5. Install SSL certificate (Plesk does this automatically)

**Performance Tips:**

1. Install caching plugin
2. Optimize and compress images
3. Use a CDN for static assets
4. Limit plugins to essential ones
5. Update to latest PHP version in Plesk

## Node.js Applications

Deploy modern JavaScript applications on Breeze Hosting.

<Note>
  Node.js support may vary by plan. Check with support if unsure whether your plan supports Node.js.
</Note>

### Deploying Node.js

**Prerequisites:**

* Node.js application ready
* Package.json with start script
* node\_modules dependencies defined

**Steps:**

<Steps>
  <Step title="Upload Application Files">
    Upload your Node.js application to a folder (not /httpdocs)

    * Create folder like /nodeapp or /api
    * Use FTP or Git deployment
  </Step>

  <Step title="Install Dependencies">
    SSH into your server and run:

    ```bash theme={null}
    cd /path/to/nodeapp
    npm install
    ```
  </Step>

  <Step title="Configure Package.json">
    Ensure your package.json has a start script:

    ```json theme={null}
    {
      "scripts": {
        "start": "node server.js"
      }
    }
    ```
  </Step>

  <Step title="Test Locally">
    Run locally to verify:

    ```bash theme={null}
    npm start
    ```
  </Step>

  <Step title="Use Reverse Proxy">
    Configure nginx or Apache to proxy requests to your Node app
    (Your hosting provider may handle this)
  </Step>

  <Step title="Set Up Auto-Start">
    Use a process manager like PM2:

    ```bash theme={null}
    npm install -g pm2
    pm2 start server.js --name "nodeapp"
    pm2 startup
    pm2 save
    ```
  </Step>
</Steps>

<Tip>
  If Node.js isn't working, contact Breeze support. Some plans may require VPS hosting for Node.js applications.
</Tip>

## PHP Applications

Deploy PHP frameworks like Laravel, Symfony, or Drupal.

### Deploying a PHP Application

**Using File Manager:**

<Steps>
  <Step title="Prepare Application">
    Your PHP app should be ready (all dependencies installed)
  </Step>

  <Step title="Create Database">
    Create a MySQL database in Plesk for your app
  </Step>

  <Step title="Upload Files">
    Upload application files to /httpdocs via File Manager or FTP
  </Step>

  <Step title="Configure App">
    Create .env or config file with database credentials
  </Step>

  <Step title="Set Permissions">
    Right-click folders in File Manager → Permissions:

    * /storage → 755 (Laravel)
    * /uploads → 755 (Drupal)
  </Step>

  <Step title="Run Setup">
    If needed, SSH in and run setup commands:

    ```bash theme={null}
    php artisan migrate  # Laravel
    php bin/console doctrine:migrations:migrate  # Symfony
    ```
  </Step>
</Steps>

### Laravel Deployment

Laravel requires a bit of extra setup:

<Steps>
  <Step title="Upload Laravel Files">
    Upload everything except vendor/ folder
  </Step>

  <Step title="Install Dependencies">
    SSH and run:

    ```bash theme={null}
    cd /home/username/public_html
    composer install --no-dev
    ```
  </Step>

  <Step title="Configure Environment">
    Copy .env.example to .env and configure:

    ```
    DB_HOST=localhost
    DB_DATABASE=your_database
    DB_USERNAME=your_user
    DB_PASSWORD=your_password
    APP_URL=https://your-domain.com
    ```
  </Step>

  <Step title="Generate Key">
    ```bash theme={null}
    php artisan key:generate
    ```
  </Step>

  <Step title="Run Migrations">
    ```bash theme={null}
    php artisan migrate
    ```
  </Step>

  <Step title="Set Permissions">
    ```bash theme={null}
    chmod -R 755 storage bootstrap/cache
    chown -R www-data:www-data storage bootstrap/cache
    ```
  </Step>

  <Step title="Update Document Root">
    In Plesk, set document root to /public folder
  </Step>
</Steps>

## Git Deployment

Deploy directly from GitHub or GitLab.

### Setting Up Git Deployment

**Prerequisites:**

* GitHub or GitLab account with your repository
* SSH key configured

**Steps:**

<Steps>
  <Step title="Generate SSH Key">
    On your server via SSH:

    ```bash theme={null}
    ssh-keygen -t ed25519 -f ~/.ssh/deploy_key
    cat ~/.ssh/deploy_key.pub
    ```
  </Step>

  <Step title="Add SSH Key to GitHub/GitLab">
    1. Log into your GitHub/GitLab account
    2. Settings → SSH Keys
    3. Add the public key from above
    4. Name it "Breeze Hosting"
  </Step>

  <Step title="Clone Repository">
    SSH into your server:

    ```bash theme={null}
    cd /home/username/public_html
    git clone git@github.com:yourname/yourrepo.git .
    ```
  </Step>

  <Step title="Install Dependencies">
    If needed:

    ```bash theme={null}
    npm install      # Node.js
    composer install # PHP
    pip install -r requirements.txt # Python
    ```
  </Step>

  <Step title="Pull Updates">
    To update your site with latest code:

    ```bash theme={null}
    git pull origin main
    ```
  </Step>
</Steps>

### Automated Git Deployments

Automatically deploy when you push to GitHub:

**Using GitHub Actions (Advanced):**

Create `.github/workflows/deploy.yml`:

```yaml theme={null}
name: Deploy to Breeze
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Deploy via SSH
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.DEPLOY_HOST }}
          username: ${{ secrets.DEPLOY_USER }}
          key: ${{ secrets.DEPLOY_KEY }}
          script: |
            cd /home/user/public_html
            git pull origin main
            npm install && npm run build
```

Set secrets in GitHub → Settings → Secrets.

## FTP/SFTP File Uploads

Simple drag-and-drop file uploads using FTP or SFTP client.

**Connection Details:**

* **Host**: ftp.your-domain.com or your IP
* **Username**: Your hosting username
* **Password**: Your hosting password
* **Port**: 21 (FTP) or 22 (SFTP)
* **Root**: /httpdocs (for your main website)

**Popular Clients:**

* **FileZilla** — Free, works everywhere
* **Cyberduck** — Simple, Mac/Windows
* **Transmit** — Mac only, premium
* **WinSCP** — Windows only

After connecting, simply drag files from your computer to the FTP window.

## Deployment Comparison

| Method                | Ease      | Features                    | Best For                     |
| --------------------- | --------- | --------------------------- | ---------------------------- |
| **File Manager**      | Very Easy | Browse/edit                 | Small sites, quick updates   |
| **FTP/SFTP**          | Easy      | Bulk upload                 | Any site type                |
| **Git**               | Moderate  | Version control, automation | Teams, continuous deployment |
| **One-Click Install** | Very Easy | Automatic setup             | WordPress quickly            |
| **Manual Install**    | Hard      | Full control                | Advanced users               |

## Common Deployment Issues

### 404 Errors After Upload

**Problem**: Files uploaded but website shows 404

**Solution**:

1. Verify files are in /httpdocs folder
2. Ensure index.html or index.php exists in root
3. Check folder permissions (should be readable)
4. Clear browser cache
5. Wait a few minutes for changes to take effect

### Database Connection Errors

**Problem**: "Error establishing database connection"

**Solution**:

1. Verify database exists in Plesk
2. Check username and password are correct
3. Ensure database user has permissions
4. Use localhost as database host (not server IP)
5. Verify database wasn't auto-suspended

### File Permission Errors

**Problem**: Cannot write to folder, permission denied

**Solution**:

1. In File Manager, right-click folder
2. Select "Permissions"
3. Set to 755 for folders, 644 for files
4. Check that user is "nobody" or "www-data"

### Timeout on Large Uploads

**Problem**: Upload stops halfway, times out

**Solution**:

1. Use SFTP instead of FTP (faster, more reliable)
2. Split large uploads into smaller batches
3. Increase PHP upload limit if needed (contact support)
4. Upload via SSH instead

## Next Steps

<CardGroup cols={2}>
  <Card title="SSL & Domains" icon="lock" href="/web-hosting/ssl-domains">
    Secure your website with SSL and manage your domains
  </Card>

  <Card title="Plesk Panel Guide" icon="table-columns" href="/web-hosting/plesk-panel">
    Master Plesk features, databases, email, and more
  </Card>

  <Card title="Getting Started" icon="rocket" href="/web-hosting/getting-started">
    Return to initial setup and domain configuration
  </Card>
</CardGroup>

<Note>
  After uploading your website, always enable SSL (HTTPS) for security. Breeze provides free Let's Encrypt certificates through Plesk.
</Note>
