Açık Kaynak Uygulamalar

    Strapi Nedir ve Headless CMS Kurulumu Rehberi

    REST ve GraphQL API'leri hızla oluşturan popüler açık kaynak headless CMS Strapi'nin kurulum rehberi.

    14 dk okuma Güncellendi: 10 Temmuz 2026

    Bir web ya da mobil proje büyüdükçe hemen her ekipte aynı gerilim yaşanır. Geliştirici tarafı, veriye kod içinden erişebileceği düzenli ve öngörülebilir bir API bekler. İçerik tarafı — editörler, pazarlama ekibi, ürün sorumluları — ise veritabanının nasıl çalıştığını hiç bilmeden kayıt girip düzenleyebileceği anlaşılır bir panel ister. Bu iki isteği ayrı ayrı, elle yazılmış bir backend ile karşılamaya kalktığınızda haftalar süren tekrar eden iş çıkar ortaya: aynı CRUD uçlarını defalarca yazmak, kimlik doğrulamayı kurgulamak, dosya yüklemeyi çözmek. Strapi tam da bu tekrarı ortadan kaldırmak için tasarlanmış, Node.js tabanlı, açık kaynaklı bir headless CMS'tir.

    Bu yazıda Strapi'nin ne olduğunu ve neden bu kadar yaygınlaştığını, panelden içerik türü tanımlamayı sağlayan Content-Type Builder aracını, tanımladığınız her tür için otomatik olarak üretilen REST ve GraphQL API'lerini, rol ve izin sistemini, kurulum adımlarını ve doğru veritabanı seçimini sırayla ele alacağız. Medya kütüphanesinin nasıl çalıştığına, Strapi'yi kendi sunucunuzda barındırmanın somut getirilerine ve bu alandaki en yakın rakibi Directus ile aralarındaki farklara da değineceğiz. Amacımız, Strapi'nin hangi projede işinize yarayacağını net bir şekilde görmenizi sağlamak.

    Strapi Nedir, Ne İşe Yarar#

    Strapi, JavaScript ve TypeScript ile yazılmış, kendi sunucunuzda çalıştırabileceğiniz açık kaynaklı bir headless CMS'tir. "Headless" (başsız) sözcüğü şunu anlatır: Strapi yalnızca içeriği saklar ve onu bir API üzerinden sunar; bu içeriğin ziyaretçiye nasıl gösterileceğine, hangi tema veya şablonla görüneceğine hiç karışmaz. Görünüm katmanını — yani "head" kısmını — React, Next.js, Vue, bir mobil uygulama ya da tamamen başka bir sistem olarak siz kurarsınız. Hepsi aynı Strapi API'sinden beslenir.

    Strapi'yi klasik bir içerik yönetim sisteminden ayıran temel nokta, hazır bir yönetim paneli ile kod düzeyinde özelleştirmeyi bir arada sunmasıdır. Panele girdiğinizde blog yazısı, ürün, kampanya, kullanıcı yorumu gibi kendi içerik yapılarınızı görsel bir arayüzden tanımlarsınız. Strapi bu tanımlara bakarak arka planda hem veritabanı tablolarını oluşturur hem de her yapı için çalışmaya hazır API uçları üretir. Böylece "yeni bir tabloyu kur, sonra CRUD uçlarını elle yaz, sonra doğrulamayı ekle" döngüsünü baştan sona atlarsınız.

    Uygulamanın kendisi bir Node.js projesidir; yani ürettiği kod tamamen sizin elinizdedir. Panelin sağladığı hızın ötesine geçmek istediğinizde — örneğin özel bir iş kuralı, bir dış servise bağlanan bir uç ya da özelleştirilmiş bir denetleyici (controller) yazmak gerektiğinde — doğrudan proje dizinindeki dosyalara müdahale edebilirsiniz. Strapi bu yönüyle "kodsuz kolaylık" ile "tam kod kontrolü" arasında rahat bir denge kurar ve bu denge onu geliştirici ekipler arasında bu kadar popüler yapan asıl etkendir.

    İçerik Türü Oluşturucu (Content-Type Builder)#

    Strapi'nin kalbi Content-Type Builder (içerik türü oluşturucu) aracıdır. Bu araçla, projenizin ihtiyaç duyduğu veri yapılarını hiç SQL yazmadan, tarayıcı üzerinden tanımlarsınız. Strapi'de iki ana yapı tipi vardır. Collection Type (koleksiyon türü) birden çok kaydı olan yapılardır — örneğin "Makale", "Ürün", "Yorum". Single Type (tekil tür) ise tek bir kayıttan oluşan yapılardır — "Ana Sayfa", "İletişim Bilgileri", "Site Ayarları" gibi.

    Bir tür oluştururken alanlarını (fields) tek tek eklersiniz. Strapi metin, zengin metin, sayı, tarih, boolean, e-posta, medya, ilişki (relation), JSON, enumerasyon ve daha fazlası için hazır alan tipleri sunar. Örneğin bir blog için "Makale" koleksiyonu tanımlarken başlık için bir kısa metin, gövde için bir zengin metin, kapak için bir medya alanı ve yazar için başka bir koleksiyona bağlanan bir ilişki alanı eklersiniz. Component ve Dynamic Zone özellikleriyle de tekrar eden alan gruplarını yeniden kullanabilir, sayfa yapısını bloklardan kurgulayabilirsiniz.

    Panelde yaptığınız her tanım, arka planda proje dizinine düz JSON şema dosyaları olarak yazılır. Tipik bir şema kabaca şöyle görünür:

    {
      "kind": "collectionType",
      "collectionName": "makaleler",
      "info": { "singularName": "makale", "pluralName": "makaleler", "displayName": "Makale" },
      "attributes": {
        "baslik": { "type": "string", "required": true },
        "govde": { "type": "richtext" },
        "yayinTarihi": { "type": "datetime" },
        "kapak": { "type": "media", "multiple": false },
        "yazar": { "type": "relation", "relation": "manyToOne", "target": "api::yazar.yazar" }
      }
    }
    

    Bu dosyaların proje içinde tutulması pratikte çok önemlidir. Şema kod olarak sürüm kontrolüne (Git) girer; böylece geliştirme ortamında tanımladığınız türleri, canlı ortama tıpatıp aynı şekilde taşıyabilirsiniz. Tür yapısını elle veritabanında değiştirmek yerine kodla yönetmek, ekip çalışmasında ve dağıtımda tutarlılığı korur.

    Otomatik REST ve GraphQL API#

    Strapi'nin en büyük vaadi burada devreye girer: Content-Type Builder ile bir tür tanımladığınız anda, o tür için çalışan bir REST API anında hazır olur. Ek bir kod yazmanıza, uç tanımlamanıza gerek kalmaz. "Makale" koleksiyonunu oluşturduğunuzda aşağıdaki uçlar doğrudan kullanılabilir hale gelir:

    # Tüm makaleleri getir
    curl https://cms.ornek.com/api/makaleler
    
    # Tek bir makaleyi getir
    curl https://cms.ornek.com/api/makaleler/12
    
    # Yeni makale oluştur (token gerektirir)
    curl -X POST https://cms.ornek.com/api/makaleler \
      -H "Authorization: Bearer API_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"data":{"baslik":"İlk Yazı","govde":"Merhaba dünya"}}'
    

    REST uçları filtreleme, sıralama, sayfalama ve ilişkili kayıtları birlikte çekme (populate) parametrelerini destekler. Örneğin yalnızca yayınlanmış makaleleri, yazar bilgisiyle birlikte ve tarihe göre sıralı çekmek istediğinizde sorgu şuna benzer:

    curl "https://cms.ornek.com/api/makaleler?filters[yayinlandi][\$eq]=true&populate=yazar&sort=yayinTarihi:desc&pagination[pageSize]=10"
    

    Aynı içeriği GraphQL ile sunmak isterseniz tek yapmanız gereken resmi GraphQL eklentisini kurmaktır. Kurulumdan sonra /graphql uç noktası açılır ve tanımladığınız tüm türler otomatik olarak GraphQL şemasına dönüşür:

    npm install @strapi/plugin-graphql
    

    Bunun ardından tek bir istekle tam olarak istediğiniz alanları ve ilişkili verileri çekebilirsiniz:

    query {
      makaleler(filters: { yayinlandi: { eq: true } }, sort: "yayinTarihi:desc") {
        data {
          attributes {
            baslik
            yayinTarihi
            yazar { data { attributes { ad } } }
          }
        }
      }
    }
    

    REST ile GraphQL arasındaki seçim tamamen projenize kalmıştır. REST daha tanıdık ve basittir, hızlı entegrasyonlarda pratiktir. GraphQL ise iç içe geçmiş, ilişkili veri yapılarını tek istekte tam ölçüsünde çekmenize izin verdiği için özellikle karmaşık ekranlarda ağ trafiğini azaltır. Strapi ikisini de aynı içerik üzerinden sunduğu için birini seçmek diğerini kaybetmek anlamına gelmez.

    Rol Tabanlı Erişim ve İzinler#

    Bir API'yi herkese açık bırakmak neredeyse hiçbir gerçek projede kabul edilebilir değildir. Strapi bu yüzden rol tabanlı erişim kontrolü (RBAC) ile gelir ve bunu iki ayrı katmanda çözer. Bu ayrımı anlamak, Strapi ile güvenli bir kurulum yapmanın anahtarıdır.

    Birinci katman yönetim paneli kullanıcılarıdır (admin users). Bunlar Strapi paneline giren editör ve yöneticilerdir. Panelde Super Admin, Editor ve Author gibi hazır roller bulunur; ayrıca kendi rollerinizi oluşturup her rolün hangi içerik türünü görebileceğini, düzenleyebileceğini ya da silebileceğini alan düzeyine kadar belirleyebilirsiniz. Örneğin bir "Yazar" rolüne yalnızca kendi makalelerini düzenleme, ama yayına alma yetkisini vermeme gibi kurallar tanımlarsınız.

    İkinci katman API kullanıcılarıdır ve buradaki "Users & Permissions" eklentisi kritik öneme sahiptir. Bu katman, API'yi tüketen son kullanıcıları ve uygulamaları yönetir. Varsayılan olarak iki rol vardır: Public (kimliği doğrulanmamış, yani token'sız gelen istekler) ve Authenticated (giriş yapmış kullanıcılar). Her rol için hangi türde hangi işlemin — find, findOne, create, update, delete — açık olduğunu tek tek işaretlersiniz.

    Buradaki en yaygın hata, yeni oluşturulan bir türün API'sine "neden 403 dönüyor" diye şaşırmaktır. Cevap basittir: Strapi, güvenlik gereği yeni türlerin izinlerini varsayılan olarak kapalı tutar. Public rolüne okuma izni vermeden içeriğiniz dışarıya görünmez. Programatik erişim için ise panelden API Token üretir (salt okunur, tam erişim ya da özel yetkili) ve bunu Authorization: Bearer başlığında gönderirsiniz. Bu iki katmanlı model sayesinde editör yetkileri ile uygulama yetkilerini birbirine karıştırmadan, her tarafın yalnızca ihtiyacı olan erişime sahip olmasını sağlarsınız — bu da en az yetki prensibinin pratikteki karşılığıdır.

    Kurulum ve Veritabanı Seçimi#

    Strapi bir Node.js uygulamasıdır ve kurulumu tek komutla başlar. Güncel bir LTS Node.js sürümü kurulu bir sunucuda yeni bir proje oluşturmak için:

    npx create-strapi-app@latest cms-projem --quickstart
    

    --quickstart bayrağı hızlı bir deneme için SQLite ile projeyi ayağa kaldırır ve tarayıcıda ilk yönetici hesabını oluşturmanız için paneli açar. Bu, denemek için harika bir başlangıçtır; ancak üretim ortamı için SQLite önerilmez. SQLite tek dosyalık bir veritabanıdır ve eşzamanlı yazma yükü altında ölçeklenmez. Gerçek projelerde PostgreSQL veya MySQL/MariaDB tercih edilmelidir.

    Veritabanı seçimini yaparken şu tabloyu bir pusula olarak kullanabilirsiniz:

    VeritabanıNe zaman tercih edilirNot
    SQLiteYalnızca yerel deneme ve prototipÜretimde kullanmayın
    PostgreSQLÜretim için önerilen varsayılanJSON alanlar ve ilişkilerde güçlü
    MySQL / MariaDBMevcut MySQL altyapısı olanlarYaygın hosting desteği

    Üretim için veritabanı bağlantısını config/database.js dosyasından ya da ortam değişkenleriyle yönetirsiniz. PostgreSQL için tipik bir .env yapılandırması şöyledir:

    DATABASE_CLIENT=postgres
    DATABASE_HOST=127.0.0.1
    DATABASE_PORT=5432
    DATABASE_NAME=strapi
    DATABASE_USERNAME=strapi_user
    DATABASE_PASSWORD=guclu-bir-parola
    DATABASE_SSL=false
    APP_KEYS=birinci-anahtar,ikinci-anahtar
    API_TOKEN_SALT=rastgele-bir-deger
    ADMIN_JWT_SECRET=rastgele-bir-deger
    JWT_SECRET=rastgele-bir-deger
    

    Buradaki APP_KEYS, API_TOKEN_SALT ve JWT sırlarının güçlü ve rastgele değerlerle doldurulması güvenlik açısından zorunludur; bunlar oturum ve token imzalama işlemlerinde kullanılır ve asla varsayılan bırakılmamalıdır. Canlıya çıkarken projeyi NODE_ENV=production ile npm run build sonrası npm run start şeklinde çalıştırır, önüne bir ters proxy koyar ve süreci PM2 gibi bir süreç yöneticisiyle ayakta tutarsınız.

    Panelin ve API'nin ziyaretçiye güvenli ulaşması için önüne Nginx gibi bir ters proxy ve geçerli bir HTTPS sertifikası koymak gerekir. Basit bir Nginx ters proxy bloğu şuna benzer:

    server {
        listen 80;
        server_name cms.ornek.com;
    
        location / {
            proxy_pass http://127.0.0.1:1337;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
    

    Sertifika tarafında ücretsiz bir çözüm için Let's Encrypt yeterlidir; kritik bir kurumsal API sunuyorsanız önüne bir web uygulaması güvenlik duvarı (WAF) koymanızı da öneririz.

    Medya Kütüphanesi ve Dosya Yönetimi#

    İçerik yönetiminin ayrılmaz bir parçası görsel ve dosya yönetimidir; Strapi bunun için hazır bir Medya Kütüphanesi ile gelir. Panelden ya da API üzerinden yüklediğiniz tüm görseller, PDF'ler, videolar ve diğer dosyalar tek bir merkezi kütüphanede toplanır. Bir görsel yüklediğinizde Strapi otomatik olarak farklı boyutlarda türevlerini (thumbnail, small, medium, large) üretir; böylece ön yüzde her ekran için doğru boyuttaki görseli çekerek gereksiz bant genişliği tüketmezsiniz.

    Varsayılan olarak dosyalar sunucunun yerel diskinde public/uploads klasöründe saklanır. Bu, tek sunuculu kurulumlar için gayet yeterlidir. Ancak dosyalar diskte tutulduğunda düzenli bir yedekleme planı şarttır; çünkü veritabanınızı yedeklemek yüklenen dosyaları kurtarmaya yetmez, ikisini birlikte düşünmeniz gerekir. Ayrıca birden çok Strapi örneğini yük dengeleyici arkasında çalıştırmayı planlıyorsanız yerel disk yetersiz kalır — her örneğin ayrı diski olacağı için dosyalar tutarsızlaşır.

    Bu senaryolarda çözüm, dosya depolamayı harici bir S3 uyumlu servise taşıyan bir upload provider eklentisi kurmaktır. Örneğin AWS S3 için:

    npm install @strapi/provider-upload-aws-s3
    

    Ardından config/plugins.js içinde depolama sağlayıcısını tanımlar, erişim anahtarlarını ortam değişkenlerinden okuturusunuz. Böylece dosyalar sunucudan bağımsız, ölçeklenebilir bir depoda durur ve önüne bir CDN koyarak dünya geneline hızlı sunum yapabilirsiniz. Küçük ve orta ölçekli projelerin çoğunda ise yerel disk + düzenli yedekleme kombinasyonu fazlasıyla iş görür; harici depolamaya ancak trafik ya da yüksek erişilebilirlik ihtiyacı gerçekten büyüdüğünde geçmek mantıklıdır.

    Strapi ile Directus Karşılaştırması#

    Strapi'nin en sık karşılaştırıldığı araç Directus'tur; ikisi de açık kaynaklı, kendi sunucunuzda barındırabileceğiniz, anlık REST/GraphQL API üreten headless CMS'lerdir. Ancak felsefeleri belirgin biçimde ayrışır ve bu ayrım hangisini seçeceğinizi belirler.

    En kritik fark veritabanına yaklaşımlarıdır. Directus, mevcut bir veritabanının üzerine kurulur ve tablolarınızı oldukları haliyle tanır; şemayı sizin yapınıza uydurur, veriyi kendi biçimine çevirmez. Strapi ise şemanın sahibi olmak ister: türleri Strapi'nin Content-Type Builder'ından tanımlarsınız ve tabloları kendisi oluşturup yönetir. Yani elinizde hâlihazırda dolu bir veritabanı varsa ve onun üstüne bir panel/API eklemek istiyorsanız Directus daha uygundur; sıfırdan bir backend kuruyorsanız Strapi'nin kod-merkezli yaklaşımı daha doğal akar.

    İkinci fark özelleştirme biçimidir. Strapi bir Node.js projesidir; controller, servis, middleware ve eklentileri doğrudan kodla yazar, iş mantığını proje dosyalarına gömersiniz. Directus daha çok panel ve yapılandırma üzerinden çalışır, kod yazımını daha az gerektirir. Kısaca temel farkları şöyle özetleyebiliriz:

    ÖlçütStrapiDirectus
    Veritabanı yaklaşımıŞemayı kendi oluşturur/yönetirMevcut DB'yi olduğu gibi sarar
    ÖzelleştirmeKod merkezli (Node.js projesi)Panel/yapılandırma merkezli
    İdeal senaryoSıfırdan kurulan backendVar olan veritabanına arayüz eklemek
    TeknolojiNode.js / JavaScriptNode.js / JavaScript
    APIAnlık REST + GraphQLAnlık REST + GraphQL

    İkisi de mükemmel araçlardır; "hangisi daha iyi" sorusunun tek bir doğru cevabı yoktur. Kod üzerinde tam kontrol isteyen, ön yüzünü kendi geliştiren ve backend'i sıfırdan kuran ekipler Strapi'yi; teknik olmayan bir ekibe hızlı bir panel sunmak ya da mevcut bir SQL veritabanını sarmak isteyenler ise Directus'u tercih etme eğilimindedir. Daha ayrıntılı bir bakış için Directus nedir yazımıza göz atabilir; kimlik doğrulama ve gerçek zamanlı özellikleri de kapsayan daha geniş bir backend platformu arıyorsanız Supabase nedir yazımızı inceleyebilirsiniz.

    Kendi Sunucunuzda Barındırmanın Avantajları#

    Strapi'nin bir bulut sürümü (Strapi Cloud) de var; yine de onu kendi sunucunuzda barındırmanın somut getirileri bulunur — özellikle Türkiye'de faaliyet gösteren bir işletmeyseniz.

    Veri sahipliği ve KVKK. Strapi çoğu zaman kullanıcı hesapları, sipariş bilgileri ya da form gönderimleri gibi kişisel veriler içeren tabloları yönetir. Bu verilerin nerede tutulduğu ve nasıl işlendiği KVKK kapsamında doğrudan sizin sorumluluğunuzdadır. Strapi'yi kendi sunucunuzda çalıştırdığınızda hem veritabanı hem de yüklenen dosyalar tümüyle sizin denetiminizde kalır. Sunucunun Türkiye'de olması, verinin yurt içinde tutulması açısından da ek bir kolaylık sağlar.

    Maliyet öngörülebilirliği. Bulut tabanlı backend hizmetleri genellikle kayıt sayısı, API çağrı adedi ya da bant genişliği üzerinden ücretlendirir; proje büyüdükçe bu kalemler hızla kabarır. Kendi sunucunuzda Strapi'nin yazılımı ücretsizdir; yalnızca sunucu kaynağınızın bedelini ödersiniz ve maliyetiniz büyük ölçüde sabit kalır.

    Tam kontrol. Sürüm yükseltmelerini ne zaman yapacağınıza, hangi eklentileri kuracağınıza ve performansı nasıl ayarlayacağınıza siz karar verirsiniz. Strapi hem CPU hem de RAM açısından makul kaynak ister; küçük projeler için 2 vCPU ve 2 GB RAM'lik bir başlangıç yeterlidir, ancak yoğun trafik ve büyük medya kütüphaneleri için 4 vCPU ve 8 GB üzeri kaynak planlamak gerekir. Bu tür bir Node.js uygulaması için root erişimine sahip bir VDS sunucu ya da sanal sunucu sağlam bir zemin sunar; sunucu yönetimiyle uğraşmak istemiyorsanız yönetimli sunucu hizmetimiz kurulum ve bakım yükünü üstlenir.

    Strapi gibi Node.js uygulamalarını ve onlarca hazır aracı komut satırıyla tek tek kurmakla uğraşmak istemiyorsanız, Clou.TR App Center üzerinden birçok self-hosted uygulamayı çalışır durumda başlatabilir; Docker, port yönlendirmesi ve sertifika ayarlarıyla ayrı ayrı ilgilenmeden hızlıca yayına geçebilirsiniz.

    Sıkça Sorulan Sorular#

    Strapi kullanmak için programlama bilmek gerekir mi?#

    İçerik girmek ve paneli kullanmak için kod bilmenize gerek yoktur; editörler her işlemi görsel arayüzden yürütür. Ancak Strapi bir Node.js backend'i olduğundan, ilk kurulumu, sunucuya dağıtımı ve ürettiği API'nin ön yüze bağlanması geliştirici bilgisi ister. Özel iş kuralları ya da özelleştirilmiş uçlar yazmak istediğinizde de JavaScript bilgisi devreye girer. Kısacası içerik ekibi kodsuz çalışır, kurulum ve entegrasyon tarafında ise teknik bilgi gerekir.

    Strapi ücretsiz mi?#

    Strapi'nin açık kaynaklı sürümünü kendi sunucunuzda tamamen ücretsiz çalıştırabilirsiniz; bu senaryoda maliyetiniz yalnızca sunucu kaynağınızdan oluşur. Bunun yanında şirketin ücretli bir bulut planı (Strapi Cloud) ve bazı gelişmiş özellikleri kapsayan kurumsal (Enterprise) sürümü de vardır. Standart headless CMS ihtiyaçlarının büyük çoğunluğu ücretsiz açık kaynak sürümüyle rahatça karşılanır.

    Strapi ile Directus arasındaki temel fark nedir?#

    En belirgin fark veritabanına yaklaşımlarıdır. Strapi şemanın sahibi olmak ister; türleri kendi arayüzünden tanımlar ve tabloları kendisi oluşturur, bu yüzden sıfırdan kurulan projelere daha uygundur. Directus ise mevcut bir SQL veritabanının üzerine oturur ve tablolarınızı oldukları haliyle tanır, bu yüzden hâlihazırda dolu bir veritabanına arayüz eklemekte daha iyidir. Ayrıca Strapi kod merkezli, Directus ise daha çok panel merkezli özelleştirme sunar.

    Strapi hangi veritabanlarını destekler ve hangisini seçmeliyim?#

    Strapi PostgreSQL, MySQL, MariaDB ve SQLite ile çalışır. SQLite yalnızca yerel deneme ve prototip için uygundur; tek dosyalık yapısı nedeniyle üretimde önerilmez. Gerçek projeler için PostgreSQL güvenli varsayılan seçimdir; JSON alanlar ve ilişkilerde güçlüdür. Mevcut altyapınız MySQL üzerine kuruluysa MySQL ya da MariaDB de gayet iyi çalışır. Karar verirken ekibinizin en rahat yönettiği ve hostinginizin en iyi desteklediği veritabanını seçmeniz en pratik yaklaşımdır.

    Yeni oluşturduğum içerik türünün API'si neden 403 hatası veriyor?#

    Bu, Strapi'de en sık karşılaşılan durumdur ve aslında bir hata değil, güvenlik davranışıdır. Strapi yeni oluşturulan türlerin izinlerini varsayılan olarak kapalı tutar. İçeriğinizi token'sız (herkese açık) okutmak için Settings bölümündeki Users & Permissions eklentisinden Public rolüne ilgili türün find ve findOne izinlerini vermeniz gerekir. Programatik yazma işlemleri içinse panelden bir API Token üretip isteklerinizde Authorization: Bearer başlığıyla göndermelisiniz.

    Strapi ile yüklenen dosyalar nerede saklanır?#

    Varsayılan olarak yüklenen tüm dosyalar sunucunun yerel diskinde public/uploads klasöründe tutulur ve Strapi görsellerin farklı boyutlarda türevlerini otomatik üretir. Tek sunuculu kurulumlarda bu yeterlidir, ancak dosyaların düzenli yedeklenmesi şarttır; çünkü veritabanı yedeği yüklenen dosyaları kapsamaz. Birden çok sunuculu ya da yüksek trafikli kurulumlarda ise bir upload provider eklentisiyle dosyaları S3 uyumlu harici bir depoya taşımak ve önüne CDN koymak en sağlıklı yoldur.

    Kapanış#

    Strapi, hazır bir yönetim panelinin kolaylığı ile tam kod kontrolünü tek çatıda buluşturarak backend geliştirmenin en tekrarlı kısımlarını ortadan kaldırır. İçerik türlerinizi görsel bir arayüzden tanımlar, tanımladığınız anda çalışan REST ve GraphQL API'lerini elde eder, rol ve izin sistemiyle erişimi ayrıntısına kadar denetlersiniz. Ön yüzü kendi geliştirdiğiniz, backend'i sıfırdan kurduğunuz ve kod üzerinde tam kontrol istediğiniz projelerde Strapi çoğu zaman en yerinde seçimlerden biridir.

    Strapi bir Node.js uygulaması olduğu için sağlıklı çalışması root erişimine sahip, kaynağı öngörülebilir bir sunucu ister. Kendi altyapınızı kurmak istiyorsanız VDS veya sanal sunucu çözümlerimiz sağlam bir zemin sunar; kurulum ve bakımla uğraşmadan çalışır bir ortam istiyorsanız App Center ile birçok self-hosted uygulamayı tek tıkla başlatabilir, yönetimli sunucu hizmetimizle günlük operasyonu bize bırakabilirsiniz. Verinizin sizde kaldığı, maliyetin öngörülebilir olduğu bir headless CMS kurmak için Clou.TR altyapısıyla hemen başlayabilirsiniz.

    cmsapiself-hosted

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.