Buyukweb
OpenCart Kurulumu ve Yönetimi: Türkiye İçin E-Ticaret Rehberi

OpenCart Kurulumu ve Yönetimi: Türkiye İçin E-Ticaret Rehberi

OpenCart 4.x kurulumu, Türkçe dil paketi, iyzico/PayTR ödeme entegrasyonu, kargo modülü ve performans optimizasyonu.

Büyükweb Editör EkibiHosting, Sunucu ve Sistem Yönetimi Editörü11 dakika okuma

OpenCart Kurulumu ve Yönetimi: Türkiye İçin E-Ticaret Rehberi

OpenCart, açık kaynaklı, esnek ve Türkiye'de popüler bir e-ticaret platformudur. Bu rehberde OpenCart 4.x kurulumundan Türkiye özelleştirmelerine kadar her şeyi ele alıyoruz.

OpenCart Neden Tercih Edilir?

Avantajları:
✓ Ücretsiz ve açık kaynak
✓ 13,000+ eklenti/tema
✓ Çoklu dil ve para birimi
✓ Türkçe dil paketi mevcut
✓ Hafif ve hızlı
✓ WooCommerce'e kıyasla daha az kaynak

Dezavantajları:
✗ WooCommerce kadar büyük topluluk yok
✗ SEO özelleştirmesi sınırlı
✗ Güncelleme süreçleri bazen karmaşık

Kurulum (Ubuntu 22.04)

# LAMP/LEMP Stack
apt update && apt install -y nginx php8.1-fpm mariadb-server   php8.1-curl php8.1-gd php8.1-mbstring php8.1-mysql   php8.1-xml php8.1-zip php8.1-intl

# MariaDB veritabanı oluştur
mysql -u root -p << 'EOF'
CREATE DATABASE opencart CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'ocuser'@'localhost' IDENTIFIED BY 'güvenli-parola';
GRANT ALL PRIVILEGES ON opencart.* TO 'ocuser'@'localhost';
FLUSH PRIVILEGES;
EOF

# OpenCart indir
wget https://github.com/opencart/opencart/releases/download/4.0.2.3/opencart-4.0.2.3.zip
unzip opencart-4.0.2.3.zip -d /var/www/
mv /var/www/upload /var/www/magazaniz

# İzinler
chown -R www-data:www-data /var/www/magazaniz
find /var/www/magazaniz -type d -exec chmod 755 {} ;
find /var/www/magazaniz -type f -exec chmod 644 {} ;
# /etc/nginx/sites-available/magazaniz.com
server {
    listen 443 ssl http2;
    server_name magazaniz.com www.magazaniz.com;

    root /var/www/magazaniz;
    index index.php;

    ssl_certificate /etc/letsencrypt/live/magazaniz.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/magazaniz.com/privkey.pem;

    location / {
        try_files $uri $uri/ @opencart;
    }

    location @opencart {
        rewrite ^/(.+)$ /index.php?_route_=$1 last;
    }

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

    # Admin klasörü gizle
    location /admin {
        auth_basic "Admin";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }

    # Hassas dosyaları engelle
    location ~* .(htaccess|htpasswd|ini|log|sh|sql)$ {
        deny all;
    }
}

Türkçe Dil ve Para Birimi

# OpenCart Admin Panel → Uzantılar → Dil Yükleyici
# Türkçe dil paketini indir:
# opencart.com/index.php?route=marketplace/extension/info&extension_id=42

# Manuel yükleme:
# catalog/language/tr-tr/ klasörüne kopyala
# admin/language/tr-tr/ klasörüne kopyala

# Admin Panel → Sistem → Ayarlar → Mağaza
# Dil: Türkçe
# Para birimi: Türk Lirası (TRY - ₺)
# Ülke: Türkiye
# Bölge: İstanbul (veya şehriniz)

Modification Sistemi: OCMOD ve vQmod

OpenCart, çekirdek dosyaları doğrudan değiştirmek yerine modification katmanı sunar — güncellemelerde kayıp önler.

OCMOD (OpenCart 2+ default)

<!-- example.ocmod.xml -->
<?xml version="1.0" encoding="utf-8"?>
<modification>
    <name>Sayfa Başına Ürün Sayısı</name>
    <code>perpage_50</code>
    <version>1.0</version>
    <author>Büyükweb</author>

    <file path="catalog/controller/product/category.php">
        <operation>
            <search><![CDATA[
                if (isset($this->request->get['limit'])) {
                    $limit = (int)$this->request->get['limit'];
                } else {
                    $limit = (int)$this->config->get('config_limit_admin');
                }
            ]]></search>
            <add position="replace"><![CDATA[
                $limit = isset($this->request->get['limit']) ? (int)$this->request->get['limit'] : 50;
            ]]></add>
        </operation>
    </file>
</modification>

Yükleme: Admin → Uzantılar → Modifications → Yükle. Sonra Modifications → Yenile zorunlu (cache rebuild).

Custom Modification — Direkt Düzenleme Yerine

3rd party eklenti güncellemeleri sırasında kendi değişiklikleriniz silinir eğer çekirdek dosyayı düzenlerseniz. OCMOD ile değişiklikler her zaman üstte uygulanır → güncelleme sonrası kaybolmaz.

vQmod (eski 1.5.x)

OpenCart 1.5.x ile gelen önceki sistem; 4.x'te extension API'si benzer iş yapar. Eski mağaza miras kodda hâlâ görülebilir.

Modifications Cache Yönetimi

# Modification cache klasörü
ls /var/www/magazaniz/storage/modification/

# Manuel temizlik (Admin'den de yapılabilir)
rm -rf /var/www/magazaniz/storage/modification/*

⚠️ Modification yüklendikten sonra Yenile'yi mutlaka tıklayın — yoksa değişiklik etkili olmaz.

iyzico Ödeme Entegrasyonu

// OpenCart iyzico ödeme modülü (özet)
// catalog/controller/extension/payment/iyzico.php

class ControllerExtensionPaymentIyzico extends Controller {
    public function index() {
        // İyzipay PHP kütüphanesi
        require_once(DIR_SYSTEM . 'library/iyzipay/IyzipayBootstrap.php');
        IyzipayBootstrap::init();

        $options = new IyzipayOptions();
        $options->setApiKey($this->config->get('payment_iyzico_api_key'));
        $options->setSecretKey($this->config->get('payment_iyzico_secret_key'));
        $options->setBaseUrl('https://api.iyzipay.com');

        // Form yapılandır
        $request = new IyzipayRequestCreateCheckoutFormInitializeRequest();
        $request->setLocale(IyzipayModelLocale::TR);
        $request->setConversationId($this->session->data['order_id']);
        $request->setPrice($this->currency->format($order['total'], 'TRY', 1, false));
        $request->setPaidPrice($request->getPrice());
        $request->setCurrency(IyzipayModelCurrency::TL);
        $request->setCallbackUrl($this->url->link('extension/payment/iyzico/callback', '', true));

        $checkoutFormInitialize = IyzipayModelCheckoutFormInitialize::create($request, $options);

        // iyzico ödeme formunu göster
        $data['checkout_form_content'] = $checkoutFormInitialize->getCheckoutFormContent();
        return $this->load->view('extension/payment/iyzico_form', $data);
    }
}

Kargo Modülleri

Türkiye Kargo Modülleri (opencart.com marketplace):
- MNG Kargo OpenCart Modülü
- Yurtiçi Kargo Entegrasyonu
- PTT Kargo Modülü
- Aras Kargo Modülü

Manuel kargo kurulumu:
Admin → Uzantılar → Uzantılar → Kargo → Düz Oranlı Kargo

Desi tabanlı kargo fiyatlandırma:
Admin → Uzantılar → Kargo → Ağırlığa Göre Kargo
0kg - 1kg: 35₺
1kg - 3kg: 45₺
3kg - 5kg: 55₺

OpenCart Performans Optimizasyonu

// System → Settings → Store → Server

// Önbellek:
Önbellekleme: Açık

// Sıkıştırma:
Çıktı Sıkıştırma: 6 (Gzip)

// SEO URL:
SEO URL: Açık

// php.ini
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300

// OpenCart önbellek temizleme
rm -rf /var/www/magazaniz/system/storage/cache/*
rm -rf /var/www/magazaniz/system/storage/modification/*

Multi-Layer Cache Stack — Performans Maksimum

OpenCart varsayılan dosya cache'i kullanır; üretim için çok katmanlı cache gerekli.

Katman 1: OPcache (PHP Bytecode)

; /etc/php/8.1/fpm/conf.d/10-opcache.ini
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

PHP'in her istekte parse etme yükünü ortadan kaldırır — TTFB %30-50 düşer.

Katman 2: Object Cache (Redis)

apt install redis-server php8.1-redis
systemctl enable --now redis-server
// config.php — OpenCart'a Redis cache söyle
define('CACHE_DRIVER', 'redis');
define('CACHE_HOSTNAME', '127.0.0.1');
define('CACHE_PORT', 6379);
define('CACHE_PREFIX', 'oc4_');

Kategori listesi, ürün özellikleri, modification cache'i hep Redis'ten okunur — DB hit %70 azalır.

Katman 3: Edge Cache (LiteSpeed / Cloudflare)

Büyükweb LiteSpeed paketleri LiteSpeed Cache plugin desteğiyle full-page cache yapar. Ürün listesi, anasayfa, kategori — login'siz ziyaretçilere disk'ten 0.1 ms'de döner.

# .htaccess - LiteSpeed cache directives
<IfModule LiteSpeed>
    CacheLookup on
    RewriteRule .* - [E=cache-control:max-age=300]
</IfModule>

Cache Yenileme Stratejisi

Olay Hangi cache temizlenmeli?
Ürün stoğu/fiyat değişti Object cache (Redis) + LiteSpeed
Yeni kategori eklendi Tüm cache
Modification yüklendi Modification cache + Object cache
Tema güncellendi Tüm cache + tarayıcı cache (versioning)
redis-cli FLUSHALL
rm -rf storage/cache/*

Multi-Store Setup (Tek Kurulum, Birden Fazla Mağaza)

OpenCart multi-store özelliği ile aynı kurulumda farklı domainlerde ayrı mağaza çalıştırılabilir — paylaşımlı stok + paylaşımlı kullanıcı + farklı tema/dil/para birimi.

Adım Adım Kurulum

1. Admin → Sistem → Ayarlar → Yeni Mağaza Ekle
2. Mağaza URL: https://ikincimagaza.com/
3. Tema: Farklı tema seç (opsiyonel)
4. Dil: Farklı dil ayarı
5. Para birimi: USD/TRY karışık satış varsa

Nginx Multi-Domain Config

server {
    listen 443 ssl http2;
    server_name magazaniz.com www.magazaniz.com ikincimagaza.com www.ikincimagaza.com;
    root /var/www/magazaniz;

    ssl_certificate /etc/letsencrypt/live/magazaniz.com/fullchain.pem;
    # Multi-domain SSL: SAN sertifikası tüm domainleri içerir
    # certbot -d magazaniz.com -d www.magazaniz.com -d ikincimagaza.com -d www.ikincimagaza.com

    # OpenCart route handling — domain'e göre store seçilir
    location / {
        try_files $uri $uri/ /index.php?_route_=$uri&$args;
    }
}

OpenCart server_name'i HTTP_HOST'tan okuyup doğru mağaza ayarlarını yükler.

Multi-Store Avantajları

  • Stok yönetimi tek panelden — tek admin, çoklu vitrin
  • Farklı dil/para birimi — Türkiye + Almanya pazarı
  • Farklı kargo + ödeme yöntemleri — bölge bazlı
  • Sub-domain veya farklı domain — SEO açısından bağımsız

⚠️ Multi-store performans yükü tek mağazaya göre fazla — VDS minimum 4GB RAM + 2 vCPU öneriyoruz; E-Ticaret VDS bu yapı için tasarlandı.

KDV ve Vergi Yapılandırması (Türkiye Spesifik)

Vergi Sınıfları

Admin → Sistem → Yerel Veriler → Vergiler → Vergi Sınıfları
  • KDV %20 (varsayılan)
  • KDV %10 (gıda, kozmetik, tekstil)
  • KDV %1 (temel gıda, kitap, ilaç)
  • KDV %0 (ihracat, eğitim, sağlık)

Ürün Bazlı KDV Atama

Admin → Katalog → Ürünler → [ürün] → Bilgi
"Vergi Sınıfı": KDV %10 / %20 / %1 seç

KDV Dahil/Hariç Gösterim

Admin → Sistem → Ayarlar → Seçenekler
"Vergiyi Görüntüle": Açık
"Vergi Dahil Görüntüle": Açık (B2C için)

B2B mağazalarda KDV hariç + toplam göstermek doğru; checkout'ta KDV otomatik eklenir.

E-Fatura ve E-Arşiv Entegrasyonu

OpenCart doğal e-fatura çıkarmaz — ek modül gerekir:

  • MikroErp / LogoYazılım entegrasyon (kurumsal)
  • EDM E-Fatura modülü (orta-küçük)
  • Foriba / Lemon Müşteri (cloud)
Sipariş tamamlandığında otomatik:
  ↳ Fatura GİB'e iletilir
  ↳ Müşteriye PDF mail
  ↳ XML arşivlenir

Büyükweb cPanel paketleri Foriba ve EDM modüllerinin kurulumuna teknik destek verir.

OpenCart SEO Ayarları

Admin Panel → Sistem → Ayarlar → Sunucu:
✓ SEO URL Kullan: Açık

Admin Panel → Her ürün/kategori için:
- SEO Anahtar Kelimesi: samsung-galaxy-s24
- Meta Başlık: Samsung Galaxy S24 128GB
- Meta Açıklama: 50MP kamera, 4000mAh batarya...

robots.txt:
User-agent: *
Disallow: /admin/
Disallow: /catalog/view/theme/.*/stylesheet/
Disallow: /index.php?route=account/
Sitemap: https://magazaniz.com/index.php?route=feed/google_sitemap

Yaygın OpenCart Sorunları

Sorun Sebep Çözüm
500 Internal Server Error Permissions (664/777 yanlış) veya error_log PHP hata storage/logs/error.log kontrol; chmod -R 755 dizin, 644 dosya
"There was an error..." DB bağlantı veya config config.php kontrol; DB user/parola doğru mu? mysql -u ocuser -p test
Türkçe karakter bozuk UTF-8 collation yanlış ALTER DATABASE opencart CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
Modification etkili değil Yenile yapılmadı Admin → Modifications → Yenile butonu
Sepet sıfırlanıyor Session driver problemi veya cookie kısıtlaması Session driver'ı db yap; SameSite cookie kontrol
Resim yüklenmiyor Permissions veya GD/Imagick eksik apt install php8.1-gd php8.1-imagick + chmod 755 image/
Admin panel çok yavaş Modification cache şişmiş storage/modification/ temizle
Ödeme callback fail SSL veya redirect URL yanlış config.php HTTPS_SERVER doğru mu? Test ortamından üretime geçişte URL'leri güncelle
Search çalışmıyor DB index yok ALTER TABLE oc_product ADD FULLTEXT(name, model);
Notice: Undefined index Eski PHP 5.x kod, PHP 8'de strict OpenCart sürümünü 4.x'e güncelle veya error_reporting adjust

Image Optimizasyon Pipeline

# Admin → Sistem → Bakım → Resmin İade
# Bu OpenCart resim cache'ini sıfırlar

# Toplu image optimize (jpegoptim + pngquant)
apt install jpegoptim pngquant
find /var/www/magazaniz/image -name "*.jpg" -exec jpegoptim --strip-all --max=85 {} \;
find /var/www/magazaniz/image -name "*.png" -exec pngquant --quality=65-80 --ext=.png --force {} \;

Türkiye'deki yavaş 4G bağlantılar için ürün resimlerinde WebP/AVIF dönüşümü %30-50 boyut tasarrufu sağlar.

Sonuç

OpenCart, özellikle orta ölçekli Türk e-ticaret işletmeleri için güçlü bir platformdur. Türkçe dil desteği, iyzico/PayTR entegrasyonu ve Türk kargo firması modülleriyle hızlı kurulum yapılabilir. Büyükweb hosting cPanel planlarında OpenCart Fantastico ile tek tıkla kurulumu desteklenmektedir.


Ilgili Büyükweb Hizmetleri:

  • [E-ticaret VDS paketlerimizi inceleyin](MASK43)
  • [Yüksek trafik icin dedicated sunucu](MASK44)
  • [Tüm hosting ve sunucu paketlerimiz](MASK45)

OpenCart Sıkça Sorulan Sorular

OpenCart 3 ile 4 arasındaki farklar?

OpenCart 4 PHP 8 desteği, modüler yapı (extension API), Bootstrap 5, gelişmiş JSON-LD schema, daha modern admin UI. Mevcut 3.x mağaza varsa 4.x migration uzun sürebilir — extension uyumluluğu kritik. Yeni kurulumda direkt 4.x mantıklı.

Trendyol/Hepsiburada API entegrasyonu yapılır mı?

Evet — 3rd party modülle. Marketplace entegrator yazılımları (entegra, akinsoft, n11mod) OpenCart admin paneliyle senkron çalışır. Stok + sipariş + fiyat tek yerden yönetilir. Sabit IP gerekli — E-Ticaret VDS önerilir.

iyzico mu PayTR mı?

  • iyzico: Daha yaygın, dokümantasyon zengin, küçük-orta için 3D + tek-tık + saklı kart
  • PayTR: Türk komisyon avantajı, taksit oranları rekabetçi, bazı bankalarla özel anlaşma
  • Param: Genç işletmeler için hızlı onboarding
  • Çoklu pos kombinasyonu dönüşüm artırır (kullanıcı tercih eder)

WooCommerce'e göre avantaj/dezavantaj?

  • OpenCart avantaj: Daha hafif (RAM kullanımı az), Türkçe kurulum hızlı, multi-store doğal
  • WooCommerce avantaj: Eklenti çeşitliliği 10x, topluluk büyük, SEO eklentileri (Yoast/RankMath) gelişmiş
  • Karar: Ürün < 1000 + WordPress içerik var → WooCommerce. Sadece e-ticaret + multi-store gerek → OpenCart.

Hosting yeterli mi VDS gerekiyor mu?

Trafik Öneri
< 500 ziyaretçi/gün cPanel Hosting yeterli
500-2000 ziyaretçi/gün VDS Sunucu — özellikle marketplace varsa
2000+ veya peak (Black Friday) E-Ticaret VDS veya Dedicated

Black Friday/Şubat 14 gibi peak'leri nasıl karşılarım?

  1. CDN ile statik içerik Cloudflare'a aktar
  2. Redis object cache + LiteSpeed page cache kombinasyonu
  3. Database read replica (yüksek hacimli sorgu için)
  4. Auto-scale planı — VDS'i geçici büyütme (Büyükweb destek 24-48 saatte yapar)
  5. CDN edge logic ile ülke bazlı yönlendirme

Güvenlik açısından ilk yapılacaklar?

  1. /admin klasörünü rename et (/yonetim-XYZ)
  2. Admin .htpasswd korumalı
  3. Two Factor opsiyon (3rd party modül)
  4. Admin'de IP whitelist
  5. WAF (ModSecurity, Imunify360)
  6. Düzenli güvenlik update — security patches OC takip et
  7. config.php izin 600 (sadece root + www-data)

KVKK uyum için neye dikkat edilmeli?

  • Kayıt formuna açık aydınlatma metni link
  • "Çerez kabul" banner (zorunlu)
  • Müşteri hesap silme talebi → gerçekten silmek (KVKK madde 7)
  • Veri saklama süresi politikası
  • VERBİS kayıt (yıllık ciroya göre zorunlu)

İlgili Büyükweb Hizmetleri

E-ticaret sitenizin yükü için ölçeklenebilir Türkiye lokasyonlu paketler:

Sorularınız için 0850 302 60 70 numaralı destek hattımıza veya iletişim sayfamıza yazabilirsiniz.

E-Ticaret İlgili Hizmetlerimiz

Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin

Etiketler:

#opencart#e-ticaret kurulumu#opencart türkçe#iyzico#opencart hosting

Bu yazıyı paylaş