عیب‌یابی

مسائل رایج

مشکلات نصب

پورت قبلاً استفاده می‌شود

خطا: listen tcp :3000: bind: address already in use

راه‌حل:

# یافتن فرآیند استفاده‌کننده از پورت 3000
lsof -i :3000  # Linux/macOS
netstat -ano | findstr :3000  # Windows

# کشتن فرآیند
kill -9 <PID>  # Linux/macOS
taskkill /PID <PID> /F  # Windows

# یا استفاده از پورت متفاوت
./gityar web -p 3001

اتصال دیتابیس ناموفق

خطا: Failed to connect to database

راه‌حل‌ها:

SQLite:

# بررسی مجوزهای نوشتن
chmod 755 data/

MySQL:

[database]
DB_TYPE = mysql
HOST = 127.0.0.1:3306
NAME = gityar
USER = gityar
PASSWD = correct_password
  • تأیید MySQL در حال اجرا است
  • بررسی اعتبارنامه‌ها
  • اطمینان از وجود دیتابیس
  • بررسی مجوزهای کاربر

PostgreSQL:

[database]
DB_TYPE = postgres
HOST = 127.0.0.1:5432
NAME = gityar
USER = gityar
PASSWD = correct_password
SSL_MODE = disable
  • تأیید PostgreSQL در حال اجرا است
  • بررسی اعتبارنامه‌ها
  • اطمینان از وجود دیتابیس

مشکلات احراز هویت

نمی‌توانم وارد شوم

علل احتمالی:

  1. اعتبارنامه اشتباه: بازنشانی رمز عبور
  2. حساب فعال نشده: ایمیل را برای لینک فعال‌سازی بررسی کنید
  3. حساب غیرفعال: با ادمین تماس بگیرید

بازنشانی رمز عبور:

  1. روی "فراموشی رمز عبور" در صفحه ورود کلیک کنید
  2. ایمیل را وارد کنید
  3. لینک بازنشانی را دنبال کنید
  4. رمز عبور جدید تنظیم کنید

احراز هویت LDAP ناموفق

راه‌حل‌ها:

  • تأیید سرور LDAP قابل دسترسی است
  • بررسی bind DN و رمز عبور
  • تأیید user search base
  • بررسی log ها برای خطاهای LDAP

در app.ini:

[auth]
ENABLE_LDAP = true

[ldap]
HOST = ldap.example.com:389
BASE_DN = dc=example,dc=com

مشکلات مخزن

نمی‌توانم به مخزن Push کنم

خطا: Permission denied

راه‌حل‌ها:

  1. بررسی دسترسی مخزن:

    • آیا همکار هستید؟
    • آیا دسترسی نوشتن دارید؟
    • آیا در تیم صحیح هستید؟
  2. بررسی احراز هویت:

    # تست SSH
    ssh -T git@localhost
       
    # تست HTTP
    curl -u username:password http://localhost:3000/user/repo.git/info/refs
    
  3. بررسی محافظت branch:

    • آیا branch محافظت‌شده است؟
    • آیا مجوز push دارید؟

Git Clone ناموفق

HTTP:

# بررسی URL
git clone http://localhost:3000/user/repo.git

# با اعتبارنامه
git clone http://username:password@localhost:3000/user/repo.git

SSH:

# بررسی کلید SSH
ssh -T git@localhost

# با جزئیات
GIT_SSH_COMMAND="ssh -v" git clone git@localhost:user/repo.git

مخزن خالی نشان داده می‌شود

علل:

  1. هیچ commit ای push نشده
  2. branch اشتباه انتخاب شده
  3. مخزن مقداردهی اولیه نشده

راه‌حل:

cd your-repo
git status
git log --all
git branch -a

# اگر خالی است، commit اولیه ایجاد کنید
echo "# پروژه من" > README.md
git add .
git commit -m "commit اولیه"
git push origin main

مشکلات عملکرد

بارگذاری کند صفحات

راه‌حل‌ها:

  1. فعال‌سازی caching:

    [cache]
    ADAPTER = memory
    INTERVAL = 60
    
  2. استفاده از reverse proxy:

    • Nginx یا Apache
    • فعال‌سازی فشرده‌سازی gzip
  3. بهینه‌سازی دیتابیس:

    # MySQL
    mysqlcheck -o gityar -u root -p
       
    # PostgreSQL
    vacuumdb -d gityar
    
  4. افزایش منابع:

    • رم بیشتر
    • پردازنده سریع‌تر
    • ذخیره‌سازی SSD

مخزن بزرگ کند

راه‌حل‌ها:

  1. فعال‌سازی Git garbage collection:

    [repository]
    ENABLE_AUTO_GIT_GC = true
    GC_AUTO_THRESHOLD = 100
    
  2. استفاده از clone کم‌عمق:

    git clone --depth 50 http://localhost:3000/user/repo.git
    
  3. فعال‌سازی LFS برای فایل‌های بزرگ

مشکلات ایمیل

ایمیل‌ها ارسال نمی‌شوند

بررسی پیکربندی:

[mailer]
ENABLED = true
HOST = smtp.example.com:587
FROM = gityar@example.com
USER = gityar@example.com
PASSWD = password
IS_TLS_ENABLED = true

تست اتصال:

telnet smtp.example.com 587

بررسی log ها:

tail -f log/gityar.log | grep mailer

مشکلات وب‌هوک

وب‌هوک‌ها fire نمی‌شوند

چک‌لیست:

  • وب‌هوک فعال است
  • URL قابل دسترسی است
  • رویدادها پیکربندی شده‌اند
  • فایروال مسدود نمی‌کند
  • گواهی SSL معتبر است

تست وب‌هوک:

  1. به تنظیمات وب‌هوک بروید
  2. روی "تست تحویل" کلیک کنید
  3. پاسخ را بررسی کنید

بررسی log ها:

tail -f log/gityar.log | grep webhook

فایل‌های Log

موقعیت

log/gityar.log
log/http.log

سطوح Log

در app.ini:

[log]
MODE = file
LEVEL = Info  # Trace, Debug, Info, Warn, Error, Critical

فعال‌سازی Log Debug

[log]
LEVEL = Debug

گیتی‌یار را restart کنید و log ها را برای اطلاعات دقیق بررسی کنید.

مشکلات دیتابیس

Backup و Restore

Backup:

# SQLite
cp data/gityar.db gityar-backup.db

# MySQL
mysqldump -u root -p gityar > backup.sql

# PostgreSQL
pg_dump gityar > backup.sql

Restore:

# SQLite
cp gityar-backup.db data/gityar.db

# MySQL
mysql -u root -p gityar < backup.sql

# PostgreSQL
psql gityar < backup.sql

مهاجرت دیتابیس

SQLite به MySQL:

  1. خروجی از SQLite
  2. ایجاد دیتابیس MySQL
  3. ورود داده‌ها
  4. به‌روزرسانی app.ini
  5. Restart گیتی‌یار

پیام‌های خطای رایج

"Template Not Found"

راه‌حل:

# بررسی پوشه templates
ls templates/

# ساخت مجدد از سورس
go build -o gityar ./cmd/gityar

"Static File Not Found"

راه‌حل:

# بررسی پوشه public
ls public/

# ساخت مجدد یا restart
./gityar web

"Session Expired"

راه‌حل:

  • پاک‌سازی cache مرورگر
  • بررسی پیکربندی session
  • Restart گیتی‌یار

دریافت کمک

منابع

هنگام گزارش مشکلات

شامل:

  1. نسخه گیتی‌یار
  2. سیستم‌عامل
  3. نوع و نسخه دیتابیس
  4. پیام‌های خطا
  5. مراحل بازتولید
  6. فایل‌های log (در صورت مرتبط بودن)

اقدامات پیشگیرانه

نگهداری منظم

  • ✅ پشتیبان‌گیری منظم دیتابیس
  • ✅ مانیتور فضای دیسک
  • ✅ به‌روزرسانی گیتی‌یار به آخرین نسخه
  • ✅ بازبینی دوره‌ای log ها
  • ✅ پاک‌سازی مخازن قدیمی
  • ✅ مانیتور معیارهای عملکرد

بهترین شیوه‌های امنیتی

  • ✅ گیتی‌یار را به‌روز نگه دارید
  • ✅ از رمزهای عبور قوی استفاده کنید
  • ✅ 2FA را فعال کنید
  • ✅ حسابرسی امنیتی منظم
  • ✅ مانیتور log های دسترسی
  • ✅ پشتیبان‌گیری منظم

مراحل بعدی