[{"data":1,"prerenderedAt":37},["ShallowReactive",2],{"blog-akaunting-kurulum-gereksinimleri":3},{"html":4,"toc":5,"faq":24},"\u003Cp>Akaunting kurulumu için PHP 8.1 veya üstü, desteklenen bir veritabanı (MySQL, MariaDB, PostgreSQL ya da SQLite), URL yeniden yazmayı destekleyen bir web sunucusu ve bir grup PHP eklentisi gerekiyor. Kurulum sihirbazını bitirmek işin kolay kısmı; asıl iş, kurulumdan sonra cron&#39;un, giden e-postanın, HTTPS&#39;in ve yedeğin gerçekten çalıştığını kanıtlamak. Bu yazıda önce sunucu seçimini, sonra ilk gün kontrol listesini adım adım anlatıyoruz.\u003C\u002Fp>\n\u003Ch2 id=\"akaunting-3-x-sunucu-gereksinimleri\">Akaunting 3.x sunucu gereksinimleri\u003C\u002Fh2>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fakaunting.com\u002Fhc\u002Fdocs\u002Fon-premise\u002Frequirements\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">Akaunting&#39;in resmî gereksinim sayfası\u003C\u002Fa> şu tabloyu veriyor:\u003C\u002Fp>\n\u003Cdiv class=\"table-scroll\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Bileşen\u003C\u002Fth>\n\u003Cth>Gereksinim\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>PHP\u003C\u002Ftd>\n\u003Ctd>8.1 veya üstü\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Veritabanı\u003C\u002Ftd>\n\u003Ctd>MySQL, PostgreSQL, SQLite veya SQL Server\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Web sunucusu\u003C\u002Ftd>\n\u003Ctd>Apache, Nginx veya IIS\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>URL yeniden yazma\u003C\u002Ftd>\n\u003Ctd>Gerekli (Apache için mod_rewrite, Nginx&#39;te karşılığı)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>PHP eklentileri\u003C\u002Ftd>\n\u003Ctd>BCMath, Ctype, cURL, DOM, FileInfo, Intl, GD, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML, Zip\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Cp>Kurulum sihirbazı bu maddeleri kontrol ediyor ve eksik varsa ilerlemiyor. Ancak sihirbazın görmediği, sonradan sorun çıkaran maddeler de var:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>CLI PHP ile web PHP&#39;si aynı mı?\u003C\u002Fstrong> Sihirbaz tarayıcıdan çalışan PHP&#39;yi kontrol ediyor. Cron ve artisan komutları ise komut satırındaki PHP&#39;yi kullanıyor. Paylaşımlı hostinglerde komut satırındaki \u003Ccode>php\u003C\u002Fcode> çoğu zaman daha eski bir sürüm; doğru sürüm \u003Ccode>php8.2\u003C\u002Fcode> gibi ayrı bir isimle ya da tam yolla çağrılıyor.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>proc_open ve proc_get_status açık mı?\u003C\u002Fstrong> Bazı hosting firmaları güvenlik gerekçesiyle bu fonksiyonları kapatıyor ve kurulum bir noktada sebepsizce duruyor.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Bellek ve süre sınırları:\u003C\u002Fstrong> düşük \u003Ccode>memory_limit\u003C\u002Fcode> ve \u003Ccode>max_execution_time\u003C\u002Fcode>, kurulumu veritabanı tablolarını oluştururken kesebiliyor. Yarım kalan kurulum, tekrar denemede &quot;tablo zaten var&quot; hatası veriyor.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Dosya yükleme sınırı:\u003C\u002Fstrong> \u003Ccode>upload_max_filesize\u003C\u002Fcode> ve \u003Ccode>post_max_size\u003C\u002Fcode>, fatura eklerinin ne kadar büyük olabileceğini belirliyor.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Dışa erişim:\u003C\u002Fstrong> Akaunting sürüm kontrolü, güncelleme ve uygulama kurulumu için akaunting.com&#39;a HTTPS ile bağlanıyor. Dışa kapalı bir sunucuda güncellemeler başarısız oluyor.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"veritabani-secimi\">Veritabanı seçimi\u003C\u002Fh3>\n\u003Cp>Resmî liste dört veritabanı sayıyor, ama hepsi eşit derecede yaygın kullanılmıyor. Bizim varsayılan önerimiz MySQL ya da MariaDB; Akaunting ekosisteminde en sık karşılaşılan ortamlar bunlar. Özel bir gerekçeniz yoksa bunlardan birini seçmek, ileride karşılaşacağınız bir sorunun başkası tarafından daha önce yaşanmış ve çözülmüş olma ihtimalini artırır. SQLite deneme kurulumları için pratik, ama birden fazla kullanıcının aynı anda çalıştığı bir üretim ortamı için önermiyoruz.\u003C\u002Fp>\n\u003Cp>Veritabanının karakter setinin \u003Ccode>utf8mb4\u003C\u002Fcode> olduğundan emin olun. Türkçe karakterler (ı, ş, ğ) ve müşteri adlarındaki özel karakterler ancak böyle sorunsuz saklanır. Bir de yedekleme planını veritabanı seçerken düşünün: MySQL ya da MariaDB için \u003Ccode>mysqldump\u003C\u002Fcode> gibi araçlar her sunucuda hazır bulunur.\u003C\u002Fp>\n\u003Cp>Akaunting&#39;in ne olduğunu ve lisans sınırlarını henüz incelemediyseniz, önce \u003Ca href=\"\u002Fblog\u002Fakaunting-nedir\">Akaunting nedir yazımıza\u003C\u002Fa> göz atmanızı öneririz; hangi katmanda lisansa ihtiyaç duyacağınız sunucu planını da etkiliyor.\u003C\u002Fp>\n\u003Ch2 id=\"paylasimli-hosting-vps-ya-da-docker\">Paylaşımlı hosting, VPS ya da Docker?\u003C\u002Fh2>\n\u003Cp>Üç seçeneğin de yeri var; doğru seçim, sunucuya kimin bakacağına bağlı.\u003C\u002Fp>\n\u003Cdiv class=\"table-scroll\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>\u003C\u002Fth>\n\u003Cth>Paylaşımlı hosting\u003C\u002Fth>\n\u003Cth>VPS\u003C\u002Fth>\n\u003Cth>Docker\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>Başlangıç zahmeti\u003C\u002Ftd>\n\u003Ctd>Düşük\u003C\u002Ftd>\n\u003Ctd>Orta\u003C\u002Ftd>\n\u003Ctd>Orta–yüksek\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>PHP ve eklenti kontrolü\u003C\u002Ftd>\n\u003Ctd>Hosting firmasında\u003C\u002Ftd>\n\u003Ctd>Sizde\u003C\u002Ftd>\n\u003Ctd>İmajda, sizde\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Gerçek cron\u003C\u002Ftd>\n\u003Ctd>Panele bağlı, bazen yok\u003C\u002Ftd>\n\u003Ctd>Var\u003C\u002Ftd>\n\u003Ctd>Ayrı bir servis ya da konteyner olarak kurulmalı\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Güncelleme riski\u003C\u002Ftd>\n\u003Ctd>Süre\u002Fbellek sınırları yüzünden yüksek\u003C\u002Ftd>\n\u003Ctd>Kontrol edilebilir\u003C\u002Ftd>\n\u003Ctd>Kontrol edilebilir, ama kalıcı veri bağlantıları doğru kurulmalı\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Kime uygun\u003C\u002Ftd>\n\u003Ctd>Çok küçük kullanım, teknik destek alan\u003C\u002Ftd>\n\u003Ctd>Çoğu işletme\u003C\u002Ftd>\n\u003Ctd>Zaten konteyner kullanan ekipler\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Cp>\u003Cstrong>Paylaşımlı hosting\u003C\u002Fstrong> ucuz görünür, ama yukarıdaki maddelerden ikisi üçü genellikle eksik çıkar. Kullanacaksanız, hosting firmanızdan yazılı olarak CLI PHP sürümünü, kapalı fonksiyon listesini ve gerçek cron desteğini isteyin.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>VPS\u003C\u002Fstrong>, çoğu işletme için en öngörülebilir seçenek. PHP-FPM ile Nginx ya da Apache, bir veritabanı, otomatik yenilenen bir TLS sertifikası ve bir cron kaydı; hepsi sizin kontrolünüzde.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Docker\u003C\u002Fstrong>, ekibinizde konteyner bilen biri varsa iyi bir seçim. İki noktaya dikkat edin: kullandığınız imajın Akaunting&#39;in güncel sürümünün gerisinde kalıp kalmadığını kontrol edin ve \u003Ccode>storage\u003C\u002Fcode> klasörü ile veritabanının konteyner silindiğinde kaybolmayacak şekilde kalıcı birimlerde durduğundan emin olun. Zamanlanmış görevler için ayrı bir konteyner ya da sunucu cron&#39;u gerekiyor; konteyner içinde kendiliğinden çalışmıyor.\u003C\u002Fp>\n\u003Ch2 id=\"kurulumun-kendisi-dikkat-edilecek-bes-nokta\">Kurulumun kendisi: dikkat edilecek beş nokta\u003C\u002Fh2>\n\u003Col>\n\u003Cli>\u003Cstrong>Kök dizini doğru ayarlayın.\u003C\u002Fstrong> Mümkünse web sunucusunun kök dizinini uygulamanın \u003Ccode>public\u003C\u002Fcode> klasörüne yönlendirin. Akaunting&#39;i mevcut bir sitenin \u003Ccode>public_html\u003C\u002Fcode> klasörünün içine açmak, hem güvenlik hem karışıklık açısından sorun çıkarır.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Veritabanını boş ve ayrı açın.\u003C\u002Fstrong> Akaunting&#39;e özel bir veritabanı ve yalnızca o veritabanında yetkisi olan bir kullanıcı oluşturun.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Süre sınırını kurulum için yükseltin.\u003C\u002Fstrong> Komut satırından kurulum yapıyorsanız süre sınırı genellikle sorun olmaz; tarayıcıdan yapıyorsanız \u003Ccode>max_execution_time\u003C\u002Fcode> değerini geçici olarak yükseltin.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Ortam dosyasını kontrol edin.\u003C\u002Fstrong> Kurulumdan sonra \u003Ccode>.env\u003C\u002Fcode> dosyasında \u003Ccode>APP_KEY\u003C\u002Fcode> değerinin üretildiğini, \u003Ccode>APP_URL\u003C\u002Fcode> değerinin gerçek adresle (https dahil) aynı olduğunu ve \u003Ccode>APP_DEBUG\u003C\u002Fcode> değerinin \u003Ccode>false\u003C\u002Fcode> olduğunu doğrulayın. Açık bırakılan hata ayıklama modu, hata sayfalarında yapılandırma bilgisi gösterebilir.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Dosya izinlerini daraltın.\u003C\u002Fstrong> Web sunucusunun yazması gereken yerler \u003Ccode>storage\u003C\u002Fcode> ve \u003Ccode>bootstrap\u002Fcache\u003C\u002Fcode> klasörleri. &quot;Çalışsın diye&quot; bütün klasörlere 777 vermek, sorunu çözmez, yenisini açar.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"ilk-gun-kontrol-listesi\">İlk gün kontrol listesi\u003C\u002Fh2>\n\u003Cp>Kurulum ekranının &quot;tebrikler&quot; demesi, sistemin işe hazır olduğu anlamına gelmiyor. Aşağıdaki maddelerin her biri bir kez \u003Cstrong>kanıtlanmalı\u003C\u002Fstrong>, varsayılmamalı.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cinput disabled=\"\" type=\"checkbox\"> \u003Cstrong>Cron gerçekten çalışıyor.\u003C\u002Fstrong> Sunucuda dakikada bir \u003Ccode>php artisan schedule:run\u003C\u002Fcode> çalıştıran bir kayıt var ve bu kayıttaki \u003Ccode>php\u003C\u002Fcode>, web tarafıyla aynı sürüm. Kanıt: bugün tarihli bir tekrarlayan fatura tanımlayın ve oluştuğunu görün.\u003C\u002Fli>\n\u003Cli>\u003Cinput disabled=\"\" type=\"checkbox\"> \u003Cstrong>Giden e-posta ulaşıyor.\u003C\u002Fstrong> SMTP ayarları girildi; alan adınız için SPF ve DKIM kayıtları tanımlı, mümkünse DMARC da. Kanıt: bir faturayı PDF ekiyle gerçek bir Gmail ya da Outlook adresine gönderin ve spam klasörüne değil gelen kutusuna düştüğünü görün.\u003C\u002Fli>\n\u003Cli>\u003Cinput disabled=\"\" type=\"checkbox\"> \u003Cstrong>HTTPS zorunlu ve otomatik yenileniyor.\u003C\u002Fstrong> Sertifika kuruldu, http adresi https&#39;e yönleniyor, yenileme otomatik.\u003C\u002Fli>\n\u003Cli>\u003Cinput disabled=\"\" type=\"checkbox\"> \u003Cstrong>İzinler doğru.\u003C\u002Fstrong> Yazma yetkisi yalnızca gereken klasörlerde; \u003Ccode>.env\u003C\u002Fcode> dosyası tarayıcıdan erişilemiyor.\u003C\u002Fli>\n\u003Cli>\u003Cinput disabled=\"\" type=\"checkbox\"> \u003Cstrong>Saat dilimi, para birimi ve biçimler ayarlı.\u003C\u002Fstrong> Uygulama ayarlarında saat dilimi Europe\u002FIstanbul, varsayılan para birimi TRY, tarih biçimi ve ondalık\u002Fbinlik ayırıcılar Türkiye&#39;ye göre. Sunucunun saat dilimini de kontrol edin; cron&#39;un &quot;bugün&quot; kabul ettiği gün buna bağlı.\u003C\u002Fli>\n\u003Cli>\u003Cinput disabled=\"\" type=\"checkbox\"> \u003Cstrong>Yönetici hesabı korunuyor.\u003C\u002Fstrong> Güçlü ve benzersiz bir parola, kişiye özel e-posta adresi. Ayrıca kasada duran ikinci bir acil durum yönetici hesabı; kendinize yanlış rol verip kilitlenmek, sık yaşanan bir durum.\u003C\u002Fli>\n\u003Cli>\u003Cinput disabled=\"\" type=\"checkbox\"> \u003Cstrong>Yedek alınıyor ve bir kez geri yüklendi.\u003C\u002Fstrong> Veritabanı, \u003Ccode>storage\u003C\u002Fcode> klasörü ve \u003Ccode>.env\u003C\u002Fcode> dosyası düzenli olarak sunucu dışına kopyalanıyor. Kanıt: bu yedeği ayrı bir ortama geri yükleyip bir faturayı ekiyle birlikte açın.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Son maddenin önemini abartmak zor. \u003Ccode>.env\u003C\u002Fcode> içindeki \u003Ccode>APP_KEY\u003C\u002Fcode> kaybolursa, şifrelenmiş bazı değerler okunamaz hale gelebilir; \u003Ccode>storage\u003C\u002Fcode> yoksa bütün fatura ekleri kaybolur. Yalnızca veritabanını alan bir yedek, çoğu zaman geri yükleme gününe kadar eksik olduğu fark edilmeyen bir yedektir.\u003C\u002Fp>\n\u003Ch2 id=\"kurulumdan-sonra-ilk-haftalar\">Kurulumdan sonra ilk haftalar\u003C\u002Fh2>\n\u003Cp>İlk gün kontrol listesi tamamlandıktan sonra birkaç alışkanlık edinmek, ileride yaşanacak sorunların çoğunu önlüyor:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Hangi sürümde olduğunuzu ve hangi uygulamaları kurduğunuzu not edin.\u003C\u002Fstrong> Güncelleme zamanı geldiğinde bu liste ilk ihtiyaç duyacağınız şey.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Uygulama günlüklerine bakmayı öğrenin.\u003C\u002Fstrong> Hatalar \u003Ccode>storage\u002Flogs\u003C\u002Fcode> klasöründeki dosyalara düşüyor. Bir şey ters gittiğinde ilk bakılacak yer burası.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Güncellemeyi canlı sistemde ilk kez denemeyin.\u003C\u002Fstrong> Bir kopya ortam hazırlayıp güncellemeyi önce orada yapmak, bir günlük ekstra iş gibi görünür; yarıda kalmış bir güncellemeyi kurtarmaktan çok daha ucuzdur. Bu işin nasıl planlandığını \u003Ca href=\"\u002Fakaunting\u002Fsurum-yukseltme\">sürüm yükseltme ve kurtarma\u003C\u002Fa> sayfamızda anlattık.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Mali müşavirinizle hesap planını ve vergi oranlarını erkenden konuşun.\u003C\u002Fstrong> Kayıtlar biriktikten sonra yapı değiştirmek, başta doğru kurmaktan zordur.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"nereden-baslamali\">Nereden başlamalı?\u003C\u002Fh2>\n\u003Cp>Elinizde bir sunucu varsa, ilk adım ona yukarıdaki gereksinim tablosunu ve kapalı fonksiyon listesini uygulamak. Cevap &quot;bu sunucuda olmaz&quot; çıkarsa, bunu kurulumdan önce öğrenmek size zaman kazandırır. Teknik ekibiniz varsa bu yazıdaki kontrol listesi, işi kendiniz yapmanız için yeterli bir başlangıç noktası.\u003C\u002Fp>\n\u003Cp>İşi devretmek isterseniz, \u003Ca href=\"\u002Fakaunting\u002Fkurulum\">Akaunting kurulum hizmetimizde\u003C\u002Fa> önce sunucuyu yazılı olarak kontrol ediyor, ardından kurulumu cron&#39;u, e-postası ve geri yüklemesi denenmiş yedeğiyle birlikte teslim ediyoruz. Sorularınız için \u003Ca href=\"\u002Filetisim\">iletişim sayfamızdan\u003C\u002Fa> bize ulaşabilirsiniz.\u003C\u002Fp>\n",[6,9,12,15,18,21],{"id":7,"text":8},"akaunting-3-x-sunucu-gereksinimleri","Akaunting 3.x sunucu gereksinimleri",{"id":10,"text":11},"paylasimli-hosting-vps-ya-da-docker","Paylaşımlı hosting, VPS ya da Docker?",{"id":13,"text":14},"kurulumun-kendisi-dikkat-edilecek-bes-nokta","Kurulumun kendisi: dikkat edilecek beş nokta",{"id":16,"text":17},"ilk-gun-kontrol-listesi","İlk gün kontrol listesi",{"id":19,"text":20},"kurulumdan-sonra-ilk-haftalar","Kurulumdan sonra ilk haftalar",{"id":22,"text":23},"nereden-baslamali","Nereden başlamalı?",[25,28,31,34],{"q":26,"a":27},"Akaunting paylaşımlı hostinge kurulur mu?","Bazı paylaşımlı hostinglerde kurulur, ama sık karşılaşılan engeller var: CLI ile web tarafının farklı PHP sürümleri kullanması, kapatılmış proc_open fonksiyonu, düşük bellek ve süre sınırları, gerçek cron kaydı açılamaması. Kurulumdan önce bu maddeleri hosting firmanızla tek tek doğrulayın.",{"q":29,"a":30},"Akaunting için hangi PHP sürümü gerekiyor?","Akaunting 3.x, PHP 8.1 veya üstünü istiyor. Hem web sunucusunun hem komut satırının aynı ve destekleyen bir sürümü kullandığından emin olun; ikisi farklıysa kurulum ya da zamanlanmış görevler sessizce başarısız olabilir.",{"q":32,"a":33},"Cron kurmazsam ne olur?","Uygulama açılır ve fatura kesebilirsiniz, fakat tekrarlayan faturalar oluşmaz, ödeme hatırlatmaları gitmez ve zamanlanmış diğer işler çalışmaz. Bunu gösteren bir hata mesajı da çıkmaz; çoğu zaman bir müşteri sorduğunda fark edilir.",{"q":35,"a":36},"Kurulumdan sonra en önemli adım hangisi?","Yedeği bir kez gerçekten geri yüklemek. Veritabanı ile storage klasörünü ayrı bir ortama geri yükleyip faturaları ve eklerini açabiliyorsanız elinizde bir yedek var demektir; denenmemiş yedek yalnızca bir varsayımdır.",1793978421450]