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
234 lines
7.4 KiB
Markdown
234 lines
7.4 KiB
Markdown
# راهنمای استقرار 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) |
|