İçeriğe geç

Sürüm yükseltme ve kurtarma

Güncelleme %20'de durdu. Şu an bozuk olan şey muhasebeniz.

Yükseltmeyi önce kopya bir ortamda yapıyoruz, geri alma provasını kimse ihtiyaç duymadan önce yapıyoruz ve sonra gerçek sürümlerde fiilen bozulmuş raporları tek tek kontrol ediyoruz. Kurulumunuz şu anda çalışmıyorsa e-postanın ilk satırında yazın; teklif vermeden önce triyaj yaparız.

İmzalar

Kendi hata mesajınızı burada tanıyacaksınız.

Bu bozulma deseni yıllardır aynı ve hâlâ bildiriliyor — geçmiş bir sürümün kapattığı tarihsel bir hata değil. Bu Akaunting'e yönelik bir suçlama değil; uzak bir sunucuya canlı bağlantıya ihtiyaç duyan bir güncelleyicinin dışarıdan görüntüsü böyle.

Güncelleme sırasında

  • %20'de "Not able to download core" ve ilerleme çubuğu bir daha hiç oynamıyor.
  • %60'a geldi ve durdu. Şimdi bütün sayfalar 500 veriyor.
  • Güncelleme %80'e geldi ve orada kaldı.
  • artisan update:finish 1 koduyla çıkıyor ve işe yarar bir mesaj vermiyor.
  • Her sayfa kırk ile elli saniyede açılıyor ve bütün modüller 0.0.0 sürümünü gösteriyor.
  • Güncelleme çalıştı ve şimdi migration'ın beklediği bir tablo yok.

Güncellemeden sonra

  • Gelir tablosu raporunda 500 Internal Server Error.
  • İşlem numaraları otomatik artmayı bıraktı.
  • Güncellemeden beri fatura hatırlatmaları hiç gitmiyor.
  • Modülün menü girişi duruyor ama tıklayınca 403 dönüyor.
  • Gelir tablosunda bir gider iki kez sayılıyor.
  • Bir faturayı düzenledik ve eki kayboldu.

Neden oluyor

Dört mekanizma ve hiçbiri sizin hatanız değil.

Hangisinin içinde olduğunuzu bilmek, çözümün on dakika mı bir proje mi olduğuna karar veriyor. Tahmin etmek ise bozuk bir kurulumu iki bozuk kurulum yapma yöntemi.

Güncelleyici dışarıyı arıyor

Kendi sunucunuzdaki Akaunting kendi başına yeterli değil. Tek tuşla güncelleme, çekirdek ve modül paketlerini canlı bir bağlantı üzerinden akaunting.com'dan çekiyor ve sürüm kontrolü yanıttan belirli bir yapı bekliyor — bildirilen bir arızanın kökü tam olarak buydu, yanıtta eksik bir anahtar. Çağrı başarısız olduğunda güncelleme yolun ortasında duruyor. akaunting.com hiç erişilemez olduğunda ise kurulumların sayfa başına kırk ile elli saniyeye çıktığı ve bütün modüllerin 0.0.0 gösterdiği kayıtlı. İnternete kapalı bir Akaunting desteklenen bir kurgu değil ve bunu üzerine politika kurmadan önce bilmek daha iyi.

Her zaman çekirdek, sonra uygulamalar

Akaunting'in kendi sürüm uyumluluğu politikası, kullanıcıların çekirdek sürümü çıktığı anda geçerli olan modül sürümünü aldığını ve bu yüzden modül geliştiricilerinin geriye dönük uyumluluk tutmak zorunda olmadığını söylüyor. Tersinden okuyun: yalnızca çekirdeği yükselten desteklenen bir yol yok, önce uygulamayı yükselten de yok. Sıra bir tercih ya da iyi alışkanlık değil, paketlemenin desteklediği tek dizi.

Yarısı çalışmış bir migration

Yolun ortasında ölen bir güncelleme veritabanını iki şema arasında bırakıyor. Tekrar deneme, zaten var olan bir tablo yüzünden kısıt hatası veriyor; ikinci denemenin bambaşka bir hata gibi görünmesinin ve insanların sürümün bozuk olduğu sonucuna varmasının nedeni bu. Çözüm, bilinen bir duruma karşı elle çalıştırılan artisan dizisi — ve bu ancak ilk denemeden önce snapshot alınmışsa mümkün.

2.x'ten 3.x'e geçiş bir güncelleme değil

Sürüm 2, PHP 7.4 üzerinde çalışıyor; sürüm 3, 8.1 veya üstünü istiyor. Bu başka bir düğme değil, başka bir sunucu. Üstüne veriyi, 2.x için alınmış uygulamaları ve sonrasında tutması gereken raporları ekleyin; ortaya kopya ortamı ve geçiş penceresi olan bir proje çıkıyor. Forumda bunu güncelleme gibi ele alıp başlığa "data seems lost" yazan biri var. Bunu yalnızca bir tespitten sonra fiyatlıyoruz.

Nasıl yapıyoruz

Kopyada bir kez çalışmadan canlı kurulumda hiçbir şey denenmiyor.

Önce kopya ortam, sonra bilinçli olarak bir kez geri alma, sonra sizin seçtiğiniz bir pencerede gerçeği. Kontrol turu sabit bir liste, çünkü bozulan şeyler sabit bir liste.

  1. 01

    Triyaj

    Yapabildiğimizde aynı gün

    Hangi sürümdesiniz, hangi sürüme gidiyorsunuz, hangi uygulamalar kurulu, çekirdek dosyalara dokunulmuş mu ve kurulum şu anda hiç kullanılabilir durumda mı. Çalışmıyorsa bu adım sizi çalışır hale getirmekle ilgili, yükseltmeyle değil.

  2. 02

    Kopya ortam

    1. gün

    Veritabanı ve storage klasörünün tamamı ayrı bir ortama kopyalanıyor; akaunting.com'a dışa erişim çalışır durumda, çünkü güncelleyici buna ihtiyaç duyuyor. Yükseltme ilk kez burada gerçekleşiyor.

  3. 03

    Snapshot, sonra geri alma provası

    Hiçbir şeye dokunulmadan önce

    Bir geri dönüş noktası ve ardından o noktanın gerçek olduğunu kanıtlamak için ayrı bir ortama fiilen geri yükleme. Kimsenin geri yüklemediği yedek bir plan değil, bir temenni — ve genellikle eksik çıkan kısım dosya ekleri oluyor.

  4. 04

    Sırayla yükseltme

    Çekirdek, sonra uygulamalar

    Çekirdek hedef sürüme, ardından her ücretli uygulama onunla birlikte çıkmış sürüme. Tek tuşla yol başarısız olduğunda, bilinen bir duruma karşı elle artisan dizisi — çıktısı saklanarak.

  5. 05

    Kontrol turu

    Sabit liste

    Yanda duran liste, kopya ortamdaki gerçek verinizde madde madde. Tutmayan her şey, geçişten söz edilmeden önce ya düzeltiliyor ya yazıya geçiyor.

  6. 06

    Geçiş ve yazılı rapor

    Sizin seçtiğiniz pencerede

    Aynı yükseltme canlı kurulumda, sizin seçtiğiniz pencerede, geri alma hazır ve provalıyken. Sonra kurulu sürümü, neyin değiştiğini, neyin doğrulandığını ve izleyen hafta neye bakacağımızı yazan bir rapor.

Her seferinde sonradan neyi yeniden kontrol ediyoruz

  • Gelir tablosu — en sık bozulan rapor; bir sürümden sonra 500 hatası ve 3.2.1'de düzeltilen, gideri iki kez sayan hata dahil
  • Vergi özeti toplamları, göz kararıyla değil önceki dönemle karşılaştırılarak
  • İki yama sürümü arasında duran işlem numarası otomatik artışı
  • Tekrarlayan faturalar: bir tanesi baştan sona tetiklenerek
  • 3.1.12'den sonra çalışmayı bırakan fatura hatırlatmaları
  • Belgelerdeki ekler; dosyanın düzenlemeden sağ çıktığını kanıtlamak için bir fatura düzenlenip kaydedilerek
  • Her modülün menü girişi ve yetkisi — çünkü kaydedilmemiş bir yetki 403 döndürüyor
  • PDF çıktısı; müşteri adında ve adreste Türkçe karakterler dahil
  • Cron ve mail — sağ çıktığı varsayılmayıp yeniden kanıtlanarak
  • Double-Entry kullanan müşterilerde açılış bakiyeleri ve mizanın tutması
Mesajınıza bir iş günü içinde dönüyoruz. Türkçe ve İngilizce.

Nasıl fiyatlanıyor

Sürüm atlaması başına, kurtarma olarak ya da bir daha hiç.

Bilinen bir sürümden bilinen bir sürüme tek atlama bilinebilir bir kapsam, dolayısıyla sabit fiyat alıyor. Bozuk bir kurulum dışarıdan bilinemez, dolayısıyla önce triyaj alıyor. Üçüncü seçenek ise bunun yıllık bir olay olmaktan çıkmasını sağlayan seçenek.

Yükseltme, tek sürüm atlaması

Durum tespitinden sonra teklif

Bilinen bir başlangıç sürümünden bilinen bir hedefe; kopya ortamda yapılmış ve doğrulanmış. Hangi uygulamaların ve hangi özelleştirmelerin işin içinde olduğunu bildikten sonra sabit fiyat.

  • Planlanan değil, provası yapılan geri alma
  • Kontrol turunun tamamı
  • Sonunda yazılı rapor

Kurtarma

Durum tespitinden sonra teklif

Kurulum çalışmıyor ya da yarı güncellenmiş. Önce triyaj, sonra tamamlamak ya da geri almak için sabit fiyat — canlı sunucuda hiçbir şeye dokunmadan önce anlaşılmış olarak.

  • Yapabildiğimizde aynı gün triyaj
  • Her değişiklikten önce snapshot
  • Sadece çözüm değil, nedeni de yazılı

Bir daha hiç

Durum tespitinden sonra teklif

Bakım anlaşması. Yükseltmeler bizim takvimimizde bizim tarafımızdan kopya ortamda hazırlanıp uygulanıyor; rapor bir şey bozulsun ya da bozulmasın geliyor.

  • Yanıt süresine göre katmanlı
  • Üç ayda bir canlı geri yükleme tatbikatı
  • Çekirdek ve uygulamalar aynı hizada tutuluyor
Faturayı kesen tüzel kişi: Lokum Tech LLC
2.x'ten 3.x'e geçiş yalnızca tespitten sonra, asla görülmeden fiyatlanmıyor
Her değişiklikten önce snapshot, istisnasız
Her işten önce yazılı kapsam

Bu paketlerin başlangıç fiyatları netleşiyor. Görüşmede sorun; aralık değil, net bir sayı veriyoruz.

Kapsam

Neyi alıyoruz, neye razı olmuyoruz.

Bu sayfada reddettiklerimiz kapsam içindekilerden daha önemli, çünkü hepsi en az bir kez bir müşterinin bizden istediği şeyler.

Bunu alıyoruz

  • Yarıda kalmış tek tuşla güncelleme, yüzde kaçta olursa olsun
  • "Not able to download core" — dışa internet erişimi olmayan sunucular dahil
  • Güncelleme sonrası 500 hatası ve altındaki yarım kalmış migration
  • Kilitlenmiş yönetici ya da kendi hesabınıza yanlışlıkla verilmiş bir rol
  • Veriyle birlikte 2.x'ten 3.x'e geçiş; kopya ortamı ve geçiş penceresi olan bir proje olarak
  • Ücretli uygulamaların ve özel modüllerin yeni çekirdekle aynı hizaya getirilmesi

Bunu yapmıyoruz

  • Snapshot almadan canlı bir kurulumu yükseltmek — isteseniz de, aceleniz olsa da.
  • Üçüncü taraf bir App Store uygulamasının hedef çekirdeğinizle uyumlu bir sürümü olduğunu vaat etmek. Kontrol ediyoruz ve bazen cevap olmadığı çıkıyor.
  • Yalnızca veritabanı alınmış, storage klasörünü hiç içermemiş bir yedekten veri kurtarmak. Dosyalar kurtarılacak şekilde orada değil.
  • Bir gün kazanmak için kopya ortamı atlamak. O bir gün, işin bütün değeri.
  • Çekirdek dosyalar düzenlenerek yapılmış bir özelleştirme için yükseltme yolu garanti etmek. Onu modül olarak yeniden yapmanın ne tuttuğunu söylüyoruz; o cevabın parası verilmeye değen tek hali bu.

Net cevaplar

Güncellemenin ortasındaki insanlardan gelen sorular.

Güncelleme şu anda takıldı. Size yazmadan önce ne yapmalıyım?
Tıklamayı bırakın. Güncellemeyi tekrar denemeyin; yarı migrate edilmiş bir veritabanına karşı ikinci deneme genellikle daha yeni ve daha az bilgi veren bir hata üretiyor. Veritabanının ve storage klasörünün olduğu haliyle, bozuk olsa bile, snapshot'ını ya da tam yedeğini alın — bozuk bir durum da çalışabileceğimiz bir durumdur. Sonra hangi sürümdeydiniz, hangi sürüme gidiyordunuz ve yüzde kaçta durduğunu yazın. Bu üç bilgi bir saat kazandırıyor.
Sadece çekirdeği yükseltip uygulamalara dokunmasanız olmaz mı?
Olmaz, çünkü Akaunting'in sürüm uyumluluğu politikası tersine kurulu: kullanıcılar çekirdek sürümüyle birlikte çıkan modül sürümünü alıyor ve modül geliştiricileri geriye dönük uyumluluk tutmaktan açıkça muaf tutuluyor. Yalnızca çekirdeği yükselten desteklenen bir yol yok. Önce çekirdek, sonra her uygulama kendi eşleşen sürümüne; geliştiricisi yeni sürüm çıkarmayı bırakmış bir uygulama ise sonradan keşfedilecek bir sürpriz değil, bilerek verilmesi gereken bir karar.
2.x'teyiz. Yükseltmeye değer mi?
Genellikle evet ama güncelleme olarak değil. Sürüm 2, güvenlik yaması almayan PHP 7.4 üzerinde duruyor; sürüm 3 ise 8.1 veya üstünü istiyor. Yani yeni bir sunucu, bir veri göçü ve bir geçiş; 2.x için alınmış uygulamalar tek tek kontrol edilerek. Bunu bir tespitten sonra fiyatlıyoruz, öncesinde asla. Sizin durumunuz için dürüst cevap temiz kurulum artı veri göçüysa onu söylüyoruz.
Verimiz risk altında mı?
Yükseltmenin kendisi kopyada prova ediliyor; dolayısıyla aynı dizi bir kez çalışmadan canlı veriye dokunulmuyor. Bu tür işlerde gerçek risk yükseltme değil, geri alma anında yedeğin yalnızca veritabanı olduğunu ve eklerin hiç içinde olmadığını fark etmek. Geri yüklemenin, sonradan değil önceden ve gözünüzün önünde yapılmasının nedeni bu.
Bir sürüm atlaması ne kadar sürüyor?
Sorunsuz bir kurulumda tek atlama için: birkaç güne yayılmış bir iki günlük iş; büyük kısmı bizi değil sizin pencerenizi beklemekle geçiyor. Sayıyı değiştiren şeyler ücretli uygulama sayısı, çekirdek dosyalara dokunulmuş olup olmaması ve yeniden doğrulanacak özel modüller. Tespit size aralık değil bir sayı veriyor ve tuttuğumuz şey o sayı.
3.1.x'teyiz ve her şey iyi görünüyor. Niye uğraşalım?
Çünkü "iyi görünüyor" ile "doğru sayı üretiyor" farklı iddialar. 3.2.1 sürümü, gelir tablosunda bir gideri iki kez sayan hatayı düzeltti; o düzeltmeden önce bir kurulum, giderleri fazla gösterirken tamamen sağlıklı görünebiliyordu. Aynı sürümde bir de binlik ayırıcı okuma düzeltmesi var — Türkiye'deki kullanıcıların yıllarca 100,50 gibi bir fiyatı girememesinin arkasındaki hata. Daha eski bir sürümdeyseniz ikisi de hâlâ sizde.

Her iyi ürün bir sohbetle başlar.

Canınızı sıkan süreci anlatın. Doğru adres olup olmadığımızı dürüstçe söyleriz — değilsek, kimin olduğunu da.