# نصب و استقرار روی هاست

[بازگشت به فهرست](README.md)

این راهنما نحوه آپلود **نسخه HTML** قالب Novira روی هاست اشتراکی (cPanel، DirectAdmin، Plesk) یا سرور اختصاصی را توضیح می‌دهد.

اگر نسخه Next.js را مستقر می‌کنید، به [فصل ۱۴: استقرار نسخه Next.js](14-nextjs-deployment.md) بروید. آن نسخه یک مرحله بیلد دارد و نکته مهمی درباره نصب در زیرپوشه.

## پیش‌نیازهای هاست

- پشتیبانی از فایل‌های HTML استاتیک
- Apache یا Nginx (هر دو مناسب هستند)
- فضای دیسک: حداقل **۵۰ مگابایت** (با تصاویر دمو)
- SSL (HTTPS) — strongly recommended

## مرحله ۱ — آماده‌سازی فایل‌ها

قبل از آپلود، این موارد را **آپلود نکنید** (حجم اضافی و غیرضروری):

- `node_modules/`
- `.git/` (در صورت وجود)
- `.cursor/`
- `theme.zip` (آرشیو فشرده)

**حتماً آپلود کنید:**

- همه فایل‌های `*.html` در ریشه
- پوشه کامل `assets/`
- پوشه `_profile-mains/` (در صورت استفاده از اسنیپت‌های پروفایل)
- پوشه `help/` (اختیاری — برای مستندات روی سرور)

## مرحله ۲ — انتخاب مسیر نصب

### نصب در ریشه دامنه (پیشنهادی)

فایل‌ها را در `public_html` یا `www` یا `httpdocs` قرار دهید:

```
public_html/
├── index.html      ← صفحه اصلی: https://example.com/
├── demo.html
├── assets/
└── ...
```

### نصب در زیرپوشه

مثلاً `public_html/shop/`:

```
public_html/shop/
├── index.html      ← https://example.com/shop/
└── assets/
```

لینک‌های نسبی قالب (`assets/css/...`) بدون تغییر کار می‌کنند، چون نسبت به همان پوشه HTML هستند.

## مرحله ۳ — آپلود با cPanel File Manager

1. وارد cPanel شوید
2. **File Manager** → `public_html`
3. **Upload** → فایل‌های ZIP را آپلود کنید
4. روی ZIP راست‌کلیک → **Extract**
5. مطمئن شوید `index.html` مستقیماً در `public_html` است (نه داخل پوشه تودرتو اضافی)

## مرحله ۴ — آپلود با FTP (FileZilla)

| تنظیم | مقدار |
|-------|--------|
| Host | آدرس FTP هاست (مثلاً `ftp.example.com`) |
| Username | نام کاربری FTP |
| Password | رمز FTP |
| Port | 21 (یا 22 برای SFTP) |

1. به `public_html` متصل شوید
2. کل محتوای قالب را از سمت چپ (لوکال) به راست (سرور) بکشید
3. منتظر اتمام آپلود بمانید (تصاویر ممکن است چند دقیقه طول بکشد)

## مرحله ۵ — تنظیم SSL (HTTPS)

در cPanel:

1. **SSL/TLS Status** یا **Let's Encrypt**
2. دامنه را انتخاب کنید → **Issue** یا **Install**
3. پس از فعال‌سازی، سایت را با `https://` باز کنید

## مرحله ۶ — صفحه پیش‌فرض

Apache معمولاً `index.html` را به‌عنوان صفحه پیش‌فرض می‌شناسد. اگر `index.html` باز نمی‌شود:

- فایل [examples/.htaccess](examples/.htaccess) را در `public_html` کپی کنید
- یا در cPanel → **Indexes** → Directory Index را بررسی کنید

## مرحله ۷ — چک‌لیست پس از استقرار

| بررسی | روش |
|--------|-----|
| صفحه اصلی | `https://yourdomain.com/` یا `index.html` |
| CSS لود شده | F12 → Network → فیلتر CSS — بدون 404 |
| JS لود شده | Network → JS — `novira.js`, `alpine.js` بدون خطا |
| Console تمیز | F12 → Console — بدون خطای قرمز Alpine |
| اسلایدرها | اسکرول صفحه اصلی — بنرها حرکت می‌کنند |
| موبایل | DevTools → حالت موبایل — منوی همبرگری کار کند |
| فونت | متن فارسی با وزیرمتن (نیاز به اینترنت برای CDN) |

## فایل .htaccess (اختیاری)

نمونه آماده در [help/examples/.htaccess](examples/.htaccess):

- تنظیم `DirectoryIndex index.html`
- فشرده‌سازی gzip
- Cache برای فایل‌های استاتیک

```apache
# کپی از help/examples/.htaccess به public_html/.htaccess
```

## نکات هاست ایرانی

- اگر Google Fonts فیلتر است، فونت Vazirmatn را محلی هاست کنید → [شخصی‌سازی](08-customization.md#فونت)
- برای سرعت، از CDN هاست یا Cloudflare استفاده کنید
- `assets/images/` را فشرده نگه دارید؛ از آپلود مجدد تصاویر بزرگ غیرضروری خودداری کنید

## استقرار روی Nginx

اگر سرور Nginx دارید، یک بلوک ساده:

```nginx
server {
    listen 80;
    server_name example.com;
    root /var/www/novira;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~* \.(css|js|png|jpg|jpeg|gif|webp|svg|woff2)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
}
```

## به‌روزرسانی قالب

1. از نسخه فعلی روی سرور **بکاپ** بگیرید
2. تغییرات شخصی‌سازی‌شده را یادداشت کنید
3. فایل‌های جدید را آپلود کنید (یا فقط فایل‌های تغییرکرده)
4. Cache مرورگر و CDN را پاک کنید

## گام بعدی

- [ساختار پوشه‌ها](05-folder-structure.md)
- [عیب‌یابی](12-troubleshooting.md)
- [استقرار نسخه Next.js](14-nextjs-deployment.md)
