# 🚀 راهنمای نصب و راه‌اندازی Panel IRChem

## 📊 مشخصات موردنیاز سرور

### حداقل منابع (Minimum Requirements):
- **RAM**: 1GB
- **CPU**: 1 Core
- **Storage**: 10GB
- **PHP**: 8.1 یا بالاتر
- **Database**: MySQL 5.7+ یا MariaDB 10.2+

### حداکثر منابع پیشنهادی (Recommended):
- **RAM**: 4GB
- **CPU**: 2-4 Cores
- **Storage**: 50GB SSD
- **PHP**: 8.2 با OPcache
- **Database**: MySQL 8.0+ با Query Cache

---

## 🎯 مراحل نصب از ابتدا تا انتها

##############################################################
### 📝 مرحله 1: اتصال به سرور و بررسی سیستم
##############################################################

```bash
# اتصال به سرور از طریق SSH
ssh root@YOUR_SERVER_IP

# بررسی نسخه سیستم عامل
cat /etc/os-release

# بررسی وضعیت منابع سرور
free -h
df -h
nproc
```

**نکته**: اطمینان حاصل کنید که حداقل 1GB RAM و 10GB فضای خالی موجود است.


##############################################################
### 📦 مرحله 2: نصب PHP و Extension های موردنیاز
##############################################################

```bash
# به‌روزرسانی سیستم
apt update && apt upgrade -y

# نصب PHP 8.2 و extension های موردنیاز
apt install -y php8.2-cli php8.2-fpm php8.2-mysql php8.2-xml \
php8.2-mbstring php8.2-curl php8.2-zip php8.2-gd php8.2-intl \
php8.2-bcmath php8.2-soap php8.2-simplexml

# فعال‌سازی OPcache برای افزایش سرعت
echo "opcache.enable=1" >> /etc/php/8.2/fpm/conf.d/10-opcache.ini

# بررسی نصب موفق
php -v
php -m
```

**نکته**: اطمینان حاصل کنید که همه extension ها نصب شده‌اند.


##############################################################
### 🗄️ مرحله 3: نصب و پیکربندی MySQL
##############################################################

```bash
# نصب MySQL
apt install -y mysql-server

# امن‌سازی MySQL
mysql_secure_installation

# ورود به MySQL
mysql -u root -p

# ایجاد دیتابیس و کاربر
CREATE DATABASE irchembuy CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'irchem_user'@'localhost' IDENTIFIED BY 'YOUR_STRONG_PASSWORD';
GRANT ALL PRIVILEGES ON irchembuy.* TO 'irchem_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
```

**نکته**: رمز عبور قوی برای کاربر دیتابیس انتخاب کنید.


##############################################################
### 🔧 مرحله 4: نصب Composer
##############################################################

```bash
# دانلود و نصب Composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer

# بررسی نصب موفق
composer --version
```

**نکته**: Composer باید در مسیر global نصب شود.


##############################################################
### 📥 مرحله 5: نصب Node.js و NPM
##############################################################

```bash
# نصب Node.js 18.x
curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
apt install -y nodejs

# بررسی نصب موفق
node -v
npm -v
```

**نکته**: از Node.js 18.x برای سازگاری بهتر استفاده کنید.


##############################################################
### 📂 مرحله 6: کلون کردن یا آپلود پروژه
##############################################################

```bash
# اگر با Git:
cd /var/www
git clone <repository-url> irchembuy.crm
cd irchembuy.crm

# یا اگر فایل ZIP آپلود کردید:
cd /var/www
unzip irchembuy.crm.zip -d irchembuy.crm
cd irchembuy.crm
```

**نکته**: مطمئن شوید که فایل‌ها در مسیر `/var/www` قرار دارند.


##############################################################
### 📥 مرحله 7: نصب Dependencies
##############################################################

```bash
# نصب PHP packages
composer install --no-dev --optimize-autoloader --no-interaction

# نصب NPM packages
npm install --production

# ساخت frontend assets
npm run build
```

**نکته**: فرآیند نصب ممکن است 5-10 دقیقه طول بکشد.


##############################################################
### ⚙️ مرحله 8: تنظیم فایل .env
##############################################################

```bash
# کپی کردن فایل نمونه
cp .env.example .env

# ویرایش فایل .env
nano .env
```

**محتوای فایل .env باید به این صورت باشد:**

```env
APP_NAME="Panel IRChem"
APP_ENV=production
APP_KEY=
APP_DEBUG=false
APP_URL=http://irchembuy.crm

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=irchembuy
DB_USERNAME=irchem_user
DB_PASSWORD=YOUR_STRONG_PASSWORD

LOG_CHANNEL=errorlog
LOG_LEVEL=error
```

**نکته**: رمز عبور دیتابیس را وارد کنید.


##############################################################
### 🔑 مرحله 9: Generate Application Key
##############################################################

```bash
# ایجاد Application Key
php artisan key:generate

# پاک کردن cache های قبلی
php artisan config:clear
php artisan cache:clear
```

**نکته**: این کار یک کلید رمزنگاری برای اپلیکیشن ایجاد می‌کند.


##############################################################
### 🗄️ مرحله 10: اجرای Migrations
##############################################################

```bash
# اجرای migrations
php artisan migrate --force

# بررسی وضعیت migrations
php artisan migrate:status
```

**نکته**: اگر خطا رخ داد، log ها را بررسی کنید: `tail -f storage/logs/laravel.log`


##############################################################
### 🌱 مرحله 11: Seed کردن دیتابیس (اختیاری)
##############################################################

```bash
# اجرای seeder ها برای ایجاد داده اولیه
php artisan db:seed --force

# اگر seeder خاصی دارید
php artisan db:seed --class=CompleteSystemSeeder --force
```

**نکته**: این مرحله برای اولین نصب ضروری است.


##############################################################
### 🔐 مرحله 12: تنظیم Permissions
##############################################################

```bash
# تنظیم مالک فایل‌ها
chown -R www-data:www-data /var/www/irchembuy.crm

# تنظیم دسترسی فایل‌ها
chmod -R 755 /var/www/irchembuy.crm
chmod -R 775 /var/www/irchembuy.crm/storage
chmod -R 775 /var/www/irchembuy.crm/bootstrap/cache
```

**نکته**: این دسترسی‌ها برای امنیت و عملکرد صحیح ضروری هستند.


##############################################################
### 🚀 مرحله 13: Cache کردن Configurations
##############################################################

```bash
# Cache کردن config, route, view
php artisan config:cache
php artisan route:cache
php artisan view:cache

# بهینه‌سازی autoloader
composer dump-autoload --optimize
```

**نکته**: این کار باعث افزایش چشمگیر سرعت اپلیکیشن می‌شود.


##############################################################
### 🌐 مرحله 14: نصب و پیکربندی Nginx
##############################################################

```bash
# نصب Nginx
apt install -y nginx

# ایجاد فایل configuration
nano /etc/nginx/sites-available/irchembuy.crm
```

**محتوای فایل configuration:**

```nginx
server {
    listen 80;
    server_name irchembuy.crm;
    root /var/www/irchembuy.crm/public;

    index index.php index.html;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}
```

```bash
# فعال‌سازی سایت
ln -s /etc/nginx/sites-available/irchembuy.crm /etc/nginx/sites-enabled/

# تست configuration
nginx -t

# راه‌اندازی مجدد Nginx
systemctl restart nginx
systemctl enable nginx
```

**نکته**: اطمینان حاصل کنید که هیچ خطایی در configuration وجود ندارد.


##############################################################
### 🔒 مرحله 15: نصب SSL Certificate (Let's Encrypt)
##############################################################

```bash
# نصب Certbot
apt install -y certbot python3-certbot-nginx

# دریافت SSL certificate
certbot --nginx -d irchembuy.crm

# تست auto-renewal
certbot renew --dry-run
```

**نکته**: Certificate به صورت خودکار هر 90 روز تمدید می‌شود.


##############################################################
### ✅ مرحله 16: تست نهایی اپلیکیشن
##############################################################

```bash
# بررسی وضعیت سرویس‌ها
systemctl status php8.2-fpm
systemctl status nginx
systemctl status mysql

# تست اتصال به دیتابیس
php artisan tinker
# در tinker وارد کنید:
DB::connection()->getPdo();
exit

# بررسی log ها
tail -f storage/logs/laravel.log
```

**نکته**: تمامی سرویس‌ها باید در حال اجرا باشند.


##############################################################
### 🔄 مرحله 17: تنظیم Queue Worker (اختیاری)
##############################################################

```bash
# فعال‌سازی supervisor
apt install -y supervisor

# ایجاد فایل configuration
nano /etc/supervisor/conf.d/laravel-worker.conf
```

**محتوای فایل:**

```ini
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/irchembuy.crm/artisan queue:work --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/irchembuy.crm/storage/logs/worker.log
stopwaitsecs=3600
```

```bash
# اجرای supervisor
supervisorctl reread
supervisorctl update
supervisorctl start laravel-worker:*
```

**نکته**: این مرحله فقط برای سیستم‌هایی که از queue استفاده می‌کنند ضروری است.


##############################################################
### 💾 مرحله 18: تنظیم Backup خودکار
##############################################################

```bash
# ایجاد script backup
nano /usr/local/bin/backup-irchem.sh
```

**محتوای script:**

```bash
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backups/irchem"
mkdir -p $BACKUP_DIR

# Backup دیتابیس
mysqldump -u irchem_user -p'YOUR_PASSWORD' irchembuy > $BACKUP_DIR/db_$DATE.sql

# Backup فایل‌ها
tar -czf $BACKUP_DIR/files_$DATE.tar.gz /var/www/irchembuy.crm

# حذف backup های قدیمی‌تر از 7 روز
find $BACKUP_DIR -type f -mtime +7 -delete
```

```bash
# قابل اجرا کردن script
chmod +x /usr/local/bin/backup-irchem.sh

# افزودن به crontab (هر شب ساعت 2)
crontab -e
# اضافه کنید: 0 2 * * * /usr/local/bin/backup-irchem.sh
```

**نکته**: پوشه `/backups` باید از قبل ایجاد شده باشد.


##############################################################
### 🚨 مرحله 19: امنیت و Firewall
##############################################################

```bash
# فعال‌سازی UFW Firewall
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

# بررسی وضعیت firewall
ufw status
```

**نکته**: پورت 22 (SSH) باید همیشه باز باشد.


##############################################################
### 📊 مرحله 20: مانیتورینگ و Performance
##############################################################

```bash
# نصب htop برای مانیتورینگ
apt install -y htop

# بررسی استفاده از منابع
htop

# بررسی فضای دیسک
df -h

# بررسی استفاده از memory
free -h
```

**نکته**: به طور منظم منابع سرور را بررسی کنید.


##############################################################
### ✅ مرحله 21: چک لیست نهایی
##############################################################

```bash
# بررسی دسترسی به سایت
curl -I https://irchembuy.crm

# بررسی database connection
php artisan tinker
DB::connection()->getPdo();
exit

# بررسی وضعیت migrations
php artisan migrate:status

# پاک کردن تمامی cache ها
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear

# ساختن مجدد cache ها
php artisan config:cache
php artisan route:cache
php artisan view:cache
```

**چک کنید:**
- [ ] سایت روی HTTPS لود می‌شود
- [ ] تمامی صفحات بدون خطا باز می‌شوند
- [ ] لاگین کار می‌کند
- [ ] دیتابیس متصل است
- [ ] فایل‌ها upload می‌شوند
- [ ] SSL معتبر است

---

## 🔧 دستورات مفید برای مدیریت

```bash
# مشاهده لاگ‌های واقعی
tail -f storage/logs/laravel.log

# پاک کردن تمامی cache ها
php artisan optimize:clear

# اجرای migration جدید
php artisan migrate

# بررسی وضعیت اپلیکیشن
php artisan about

# اجرای queue worker به صورت دستی
php artisan queue:work

# ساخت link symbol برای storage
php artisan storage:link
```

---

**نکته مهم**: این راهنما برای اولین نصب کامل اپلیکیشن است. برای به‌روزرسانی کدها، فقط مراحل 6، 7، 10، 13 و 19 را انجام دهید.