ifnex/DEPLOYMENT_HANDOFF.md
Kazem Alghasi 6c745ea8f8 docs: localize and restructure project documentation
Refactor core documentation files to Persian and introduce a deployment handoff guide.

- Translate `AGENT.md`, `CLIENT_DELIVERY.md`, and `README.md` to Persian for better local stakeholder alignment
- Restructure `AGENT.md` with improved technical specifications and versioning
- Update `CLIENT_DELIVERY.md` with localized status legends and requirement tables
- Enhance `README.md` with detailed feature lists and improved formatting
- Add `DEPLOYMENT_HANDOFF.md` to facilitate production deployment processes
2026-10-04 03:17:35 +03:30

234 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# راهنمای استقرار IFNEX — ویژهٔ تیم IT کارفرما
> **مخاطب:** مسئول IT شرکت IFNEX
> **تاریخ تحویل:** ۲۰۲۶-۱۰-۰۴
> **نسخه:** ۱.۰
> **تهیه‌کننده:** VernaSoft Group — Kazem Alghasi
---
## ۱. معماری استقرار
این سیستم از دو بخش مستقل تشکیل شده است که هرکدام روی دامنهٔ جداگانه میزبانی می‌شوند و فقط از طریق REST API با هم ارتباط دارند.
| بخش | دامنه | روش تحویل | مسیر وب‌سرور |
|------|-------|------------|--------------|
| لاراول (API + پنل مدیریت Filament) | `system.ifnex.ir` | کلون گیت | `/var/www/system.ifnex.ir/public` |
| وردپرس (وب‌سایت + پورتال مشتری) | `ifnex.ir` | فایل ZIP + فایل SQL | `/var/www/ifnex.ir` |
**پیش‌نیازهای هر دو بخش:**
- PHP 8.2 یا بالاتر با اکستنشن‌های `pdo_mysql`، `mbstring`، `xml`، `gd`، `zip`
- MySQL 8 یا بالاتر
- Composer 2.x (فقط برای لاراول)
- Nginx یا Apache + PHP-FPM
- گواهی SSL از Let's Encrypt برای هر دو دامنه
---
## ۲. استقرار لاراول — `system.ifnex.ir`
### ۲.۱ کلون مخزن
```bash
cd /var/www/system.ifnex.ir
git clone https://www.git.vernahost.ir/gitmodir110/ifnex.git tmp
cp -r tmp/04_Laravel/* .
cp tmp/04_Laravel/.env.example .env
rm -rf tmp
```
### ۲.۲ نصب پکیج‌ها
```bash
composer install --no-dev --optimize-autoloader
```
### ۲.۳ تنظیم فایل `.env`
```bash
nano .env
```
مقادیر زیر را حتماً تنظیم کنید:
```dotenv
APP_NAME=IFNEX
APP_ENV=production
APP_DEBUG=false
APP_URL=https://system.ifnex.ir
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=ifnex_laravel
DB_USERNAME=YOUR_DB_USER
DB_PASSWORD=YOUR_DB_PASSWORD
IFNEX_BRIDGE_API_KEY=CHANGE_THIS_TO_A_RANDOM_SECRET
CORS_ALLOWED_ORIGINS=https://ifnex.ir
ZARINPAL_SANDBOX=false
ZARINPAL_MERCHANT_ID=YOUR_REAL_MERCHANT_ID
ZARINPAL_CALLBACK_URL=https://system.ifnex.ir/api/v1/payment/callback
ZARINPAL_FRONTEND_SUCCESS_URL=https://ifnex.ir/wallet
ZARINPAL_FRONTEND_FAILURE_URL=https://ifnex.ir/wallet
KAVENEGAR_API_KEY=YOUR_KAVENEGAR_KEY
KAVENEGAR_SENDER=YOUR_SENDER_NUMBER
```
> ⚠️ **نکتهٔ امنیتی:** مقدار `IFNEX_BRIDGE_API_KEY` را پیش از استقرار با یک کلید تصادفی و طولانی جایگزین کنید. این مقدار باید عیناً در پلاگین وردپرس هم تنظیم شود.
### ۲.۴ راه‌اندازی اولیه
```bash
php artisan key:generate
php artisan migrate --force
php artisan storage:link
php artisan config:cache
php artisan route:cache
php artisan view:cache
```
تنظیم دسترسی پوشه‌ها:
```bash
chown -R www-data:www-data storage bootstrap/cache
chmod -R 775 storage bootstrap/cache
```
### ۲.۵ تنظیم Cron
برای اجرای صف و زمان‌بندی‌ها، این خط را در کرون اضافه کنید:
```cron
* * * * * cd /var/www/system.ifnex.ir && php artisan schedule:run >> /dev/null 2>&1
```
اگر صف با Redis اجرا می‌شود، این خط را نیز اضافه کنید:
```cron
* * * * * cd /var/www/system.ifnex.ir && php artisan queue:work --tries=3 >> /dev/null 2>&1
```
---
## ۳. استقرار وردپرس — `ifnex.ir`
### ۳.۱ نصب فایل‌ها
1. فایل ZIP وردپرس را در `/var/www/ifnex.ir` اکسترکت کنید.
2. فایل SQL دیتابیس را ایمپورت کنید.
### ۳.۲ تنظیم `wp-config.php`
```php
define('DB_NAME', 'ifnex_wordpress');
define('DB_USER', 'YOUR_WP_DB_USER');
define('DB_PASSWORD', 'YOUR_WP_DB_PASSWORD');
define('DB_HOST', '127.0.0.1');
define('WP_HOME', 'https://ifnex.ir');
define('WP_SITEURL', 'https://ifnex.ir');
```
### ۳.۳ فعال‌سازی قالب و پلاگین
قالب `IFNEX Theme` و پلاگین `IFNEX Bridge` را از بخش افزونه‌های وردپرس فعال کنید.
### ۳.۴ تنظیمات پلاگین IFNEX Bridge
از مسیر **پنل وردپرس → تنظیمات IFNEX**:
| تنظیم | مقدار |
|--------|--------|
| API URL | `https://system.ifnex.ir/api/v1` |
| Bridge API Key | همان مقدار `IFNEX_BRIDGE_API_KEY` در فایل `.env` لاراول |
### ۳.۵ اصلاح آدرس‌ها در دیتابیس
اگر سایت از محیط لوکال به سرور منتقل می‌شود، آدرس‌های ذخیره‌شده را اصلاح کنید:
```sql
UPDATE wp_options
SET option_value = REPLACE(option_value, 'http://localhost/IFNEX-Logistics/03_WordPress', 'https://ifnex.ir')
WHERE option_name IN ('home', 'siteurl');
UPDATE wp_posts
SET guid = REPLACE(guid, 'http://localhost/IFNEX-Logistics/03_WordPress', 'https://ifnex.ir');
UPDATE wp_posts
SET post_content = REPLACE(post_content, 'http://localhost/IFNEX-Logistics/03_WordPress', 'https://ifnex.ir');
UPDATE wp_postmeta
SET meta_value = REPLACE(meta_value, 'http://localhost/IFNEX-Logistics/03_WordPress', 'https://ifnex.ir');
```
سپس کش وردپرس را پاک کنید (اگر افزونهٔ کش دارید) و یک‌بار به پیشخوان وردپرس بروید.
---
## ۴. تنظیمات وب‌سرور
### ۴.۱ لاراول — `system.ifnex.ir`
- **Document Root:** `/var/www/system.ifnex.ir/public`
### ۴.۲ وردپرس — `ifnex.ir`
- **Document Root:** `/var/www/ifnex.ir`
### ۴.۳ گواهی SSL
هر دو دامنه به گواهی SSL از Let's Encrypt نیاز دارند. پس از نصب گواهی، مطمئن شوید ریدایرکت HTTP به HTTPS فعال است.
---
## ۵. چک‌لیست نهایی
### ۵.۱ لاراول
- [ ] کلون مخزن انجام شد
- [ ] `composer install` اجرا شد
- [ ] فایل `.env` تنظیم شد (دیتابیس، `APP_URL`، CORS، Zarinpal، Kavenegar)
- [ ] `php artisan key:generate` اجرا شد
- [ ] `php artisan migrate` اجرا شد
- [ ] `php artisan storage:link` اجرا شد
- [ ] دسترسی `storage/` و `bootstrap/cache/` تنظیم شد
- [ ] `php artisan config:cache` اجرا شد
- [ ] کرون اضافه شد
- [ ] آدرس `https://system.ifnex.ir/panel/login` باز می‌شود
### ۵.۲ وردپرس
- [ ] فایل‌ها اکسترکت شدند
- [ ] دیتابیس ایمپورت شد
- [ ] `wp-config.php` تنظیم شد
- [ ] آدرس‌ها در دیتابیس جایگزین شدند
- [ ] قالب و پلاگین IFNEX Bridge فعال شدند
- [ ] پلاگین تنظیم شد (API URL + Bridge API Key)
- [ ] آدرس `https://ifnex.ir` باز می‌شود
- [ ] لاگین مشتری کار می‌کند
### ۵.۳ ارتباط بین‌سامانه‌ای
- [ ] وردپرس به API لاراول وصل می‌شود (تست: لاگین مشتری)
- [ ] خطای CORS داده نمی‌شود
- [ ] پرداخت درگاه کار می‌کند (`ZARINPAL_MERCHANT_ID` تنظیم شده و `ZARINPAL_SANDBOX=false`)
- [ ] ارسال پیامک Kavenegar تست شد
- [ ] بارگذاری فایل (آپلود تعهدنامه) کار می‌کند
- [ ] بکاپ دیتابیس تنظیم شده است
---
## ۶. اطلاعات تماس
| مورد | مقدار |
|------|-------|
| توسعه‌دهنده | VernaSoft Group — Kazem Alghasi |
| ایمیل | kazem@vernasoft.group |
| مخزن گیت | [git.vernahost.ir/gitmodir110/ifnex](https://www.git.vernahost.ir/gitmodir110/ifnex) |