# نصب باشگاه مشتریان سایت ساز زرین روی هاست اشتراکی cPanel

این راهنما و اصلاحیه برای بسته موجود 0.9.0 است. نصب اولیه به SSH، Composer، Node.js یا Supervisor روی هاست نیاز ندارد. بسته کامل برنامه، شامل vendor، باید قبلاً استخراج شده باشد. اصلاحیه جایگزین بسته کامل نیست.

## ۱. اعمال اصلاحیه روی فایل‌های موجود

در File Manager پوشه‌ای را باز کنید که فایل‌های artisan و composer.json و پوشه‌های app، installer و public داخل آن هستند. فایل zarrin-cpanel-installer-fix.zip را **در همین پوشه اصلی برنامه** بارگذاری و Extract کنید. جایگزینی فایل‌های هم‌نام داخل اصلاحیه را تأیید کنید. ساختار پوشه‌های داخل ZIP را حفظ کنید؛ فایل install.php ریشه و public/install.php دو فایل متفاوت هستند. قبل از جایگزینی، اگر قبلاً آن‌ها را شخصاً ویرایش کرده‌اید، نسخه قبلی را نگه دارید.

فایل‌های .env، storage، پایگاه داده، کاربران، تنظیمات اتصال و قفل نصب داخل اصلاحیه نیستند و بازنویسی نمی‌شوند. فایل عمومی نصب فقط با کد نصب معتبر اجازه شروع می‌دهد.

## ۲. انتخاب PHP مناسب همان زیر‌دامنه

در cPanel وارد **MultiPHP Manager** شوید، تیک **club.sitesazz.ir** را بزنید، از PHP Version نسخه **8.3** را انتخاب و Apply کنید. اگر نسخه بالاتر فعال است، لازم نیست آن را پایین بیاورید. در تصویر شما بررسی «PHP 8.3 یا جدیدتر» رد شده بود؛ این پیش‌نیاز باید برطرف شود. نسخه جاری در نصب‌گر جدید نمایش داده می‌شود. [راهنمای رسمی انتخاب نسخه PHP](https://docs.cpanel.net/cpanel/software/multiphp-manager-for-cpanel/)

اگر هاست به‌جای MultiPHP Manager ابزار Select PHP Version دارد، تنظیم دامنه و افزونه‌ها را از مسیر اعلام‌شده میزبان انجام دهید. اگر PHP 8.3 در دسترس نیست، از پشتیبانی بخواهید فعال کند. حذف بررسی نسخه PHP راه‌حل نیست؛ وابستگی‌های این بسته به آن نیاز دارند.

## ۳. تنظیم ریشه وب

در **Domains** مقابل club.sitesazz.ir روی **Manage** بزنید و **Document Root** را به پوشه **public داخل برنامه** متصل کنید. مقدار مسیر را مطابق قالبی که پنل نشان می‌دهد وارد کنید. [راهنمای رسمی مدیریت دامنه](https://docs.cpanel.net/cpanel/domains/domains/)

مثال: اگر File Manager فایل artisan را در `/home/ACCOUNT/club/zarrin-club/artisan` نشان می‌دهد، ریشه وب باید `/home/ACCOUNT/club/zarrin-club/public` باشد. ACCOUNT و بقیه این مسیر نمونه‌اند؛ مسیر واقعی هاست شما هنوز مشخص نشده است.

پس از تنظیم، نشانی نصب باید **https://club.sitesazz.ir/install.php** باشد. `/public` به URL اضافه نمی‌شود. فایل‌ها را تکی جابه‌جا نکنید. فایل‌های غیرعمومی برنامه نباید از دامنه دیگری نیز قابل دسترسی باشند؛ اگر برنامه داخل public_html سایت اصلی است، برای قرار دادن آن در مسیر خصوصی مناسب با میزبان هماهنگ کنید.

اگر این گزینه برای زیر‌دامنه قابل ویرایش نیست، متن زیر را برای پشتیبانی بفرستید:

> لطفاً Document Root زیر‌دامنه club.sitesazz.ir را به پوشه public داخل برنامه Laravel متصل کنید و PHP 8.3 یا بالاتر و SSL معتبر را برای همین زیر‌دامنه فعال کنید. پوشه‌های app، vendor و storage باید خارج از ریشه عمومی وب باشند. لطفاً مسیر کامل برنامه و مسیر PHP مناسب Cron را نیز اعلام کنید.

## ۴. بررسی HTTPS

در **SSL/TLS Status** وضعیت گواهی club.sitesazz.ir را بررسی کنید؛ در صورت وجود گزینه Run AutoSSL، گواهی را فعال کنید. سپس صفحه نصب را با https باز کنید و مطمئن شوید مرورگر هشدار گواهی ندارد. فرم نصب از کوکی امن استفاده می‌کند و روی HTTP فعال نمی‌شود. [راهنمای رسمی SSL/TLS Status](https://docs.cpanel.net/cpanel/security/ssl-tls-status/)

## ۵. ساخت پایگاه داده

در **Database Wizard** (نام قدیمی: MySQL Database Wizard) یک پایگاه داده خالی و کاربر اختصاصی بسازید و **ALL PRIVILEGES** همان پایگاه داده را به آن کاربر بدهید. نام کامل پایگاه داده و کاربر، شامل پیشوندی مانند `account_club`، را نگه دارید. میزبان اغلب `localhost` است؛ مقدار اعلام‌شده میزبان اولویت دارد. [راهنمای رسمی ساخت پایگاه داده](https://docs.cpanel.net/cpanel/databases/database-wizard/)

## ۶. فعال‌سازی بدون SSH

۱. ZIP اصلاحیه را روی رایانه خود نیز Extract کنید و **installer/prepare.html** را در Chrome یا Firefox باز کنید. این فایل مستقل است و به اینترنت نیاز ندارد.
۲. «ساخت کد نصب» را بزنید. کد نمایش‌داده‌شده را نزد خود نگه دارید و فایل **install.token** را دانلود کنید.
۳. در File Manager، فایل دانلودشده را در **storage داخل پوشه اصلی برنامه** بارگذاری کنید. نام فایل باید دقیقاً install.token باشد؛ اگر مرورگر نامی مثل install (1).token گذاشته، آن را اصلاح کنید. فایل حاوی هش کد است؛ خود کد را دستی داخل فایل ننویسید.
۴. صفحه https://club.sitesazz.ir/install.php را دوباره باز کنید. وقتی پیش‌نیازها، HTTPS، مسیر و فایل کد آماده باشند، فرم ظاهر می‌شود.
۵. کد نصب، آدرس باشگاه، مشخصات پایگاه داده و نام، موبایل و رمز مدیر را وارد کنید. رمز مدیر حداقل ۱۲ نویسه باشد. پس از نصب موفق از /login وارد شوید.

قفل storage/installed.lock بعد از موفقیت ایجاد می‌شود. اگر این فایل از نصب قبلی وجود دارد، نصب‌گر عمداً بسته است؛ برای رفع 404 آن را حذف نکنید. نصب نیمه‌کاره به بررسی خطای واقعی نیاز دارد؛ پایگاه داده غیرخالی خودکار پاک نمی‌شود.

## ۷. فعال‌کردن یادآوری و صف روی هاست اشتراکی

از **Cron Jobs** دو کار با زمان‌بندی هر دقیقه بسازید؛ لازم نیست SSH داشته باشید. پنج قسمت زمان را `*` بگذارید و تنها فرمان را در Command وارد کنید. مسیرهای زیر **نمونه** هستند؛ ACCOUNT، مسیر برنامه و مسیر PHP را با مقادیر واقعی اعلام‌شده میزبان جایگزین کنید. PHP خط فرمان نیز باید حداقل 8.3 باشد. [راهنمای رسمی Cron Jobs](https://docs.cpanel.net/cpanel/advanced/cron-jobs/)

زمان‌بندی برنامه:

```sh
/ABSOLUTE/PATH/TO/PHP83 /home/ACCOUNT/zarrin-club/artisan schedule:run >> /home/ACCOUNT/zarrin-club/storage/logs/cron.log 2>&1
```

پردازش صف با خروج پس از خالی‌شدن:

```sh
/ABSOLUTE/PATH/TO/PHP83 /home/ACCOUNT/zarrin-club/artisan queue:work --queue=sms,default --stop-when-empty --max-time=50 --tries=1 --timeout=30 >> /home/ACCOUNT/zarrin-club/storage/logs/queue-cron.log 2>&1
```

برای جلوگیری از هم‌پوشانی اجراها، محدودیت و روش قفل Cron را با میزبان هماهنگ کنید. اگر هاست اجرای دقیقه‌ای را نمی‌پذیرد، یادآوری‌ها با تأخیر اجرا می‌شوند. پس از اطمینان از اجرای درست، لاگ‌های Cron را دوره‌ای مدیریت کنید. اجرای دائمی worker شرط نصب روی این هاست نیست.

## محدوده این اصلاحیه

نصب‌گر فارسی با ظاهر سرمه‌ای و طلایی، استایل همراه صفحه و فونت محلی؛ نمایش نسخه PHP و راهنمای cPanel؛ آماده‌سازی محلی کد نصب؛ حفظ قفل نصب و کنترل کد و نشست. فایل‌های رابط اصلی نیز همراه اصلاحیه قرار دارند تا در صورت ناقص‌بودن بارگذاری آن‌ها جایگزین شوند.

این اصلاحیه نسخه PHP، Document Root یا گواهی هاست را خودکار تغییر نمی‌دهد. تست‌های محلی نصب‌گر در VERIFICATION.txt شرح داده شده‌اند. نصب واقعی روی MySQL هاست شما، پیامک IPPanel، پرداخت زیبال و ظرفیت هاست اشتراکی هنوز روی مقصد تأیید نشده‌اند.
