Bunun çok basit bir soru olduğunu biliyorum. Biri beni mizah edip bununla nasıl başa çıkacaklarını söyleseydi, çok iyi olurdum.
Bunu göndermeye karar verdim çünkü aşağıdaki sorunu çözmek için SynchToy'u yüklemek üzereyim ve bir "Oyuncak" kullanarak biraz profesyonelce hissediyorum ama daha iyi bir yol düşünemiyorum.
Çoğu zaman bu durumdayken, işleri yapmanın acı verici bir yolunu özlüyorum - bu, şirketteki tek geliştirici olmaktan kaynaklanıyor.
- İş yerimde bilgisayarımda geliştirilen ASP.NET web uygulaması
- Çözümün 2 projesi var:
- Web sitesi (dosyalar)
- WebsiteLib (C # / dll)
- Git deposu kullanma
- GoGrid 2008R2 web sunucusunda konuşlandırıldı
Dağıtım:
- Kod değişikliklerini yapın.
- Git’e bas.
- Uzak masaüstünden sunucuya.
- Git'ten çekin.
- Windows explorer ile sürükleyip bırakarak canlı dosyaların üzerine yaz.
5. Adımda tüm dosyaları web sitesinin kökünden sildim .. bu iyi bir şey olamaz. Bu yüzden SynchToy'u yüklemek üzereyim ...
GÜNCELLEME: Tüm faydalı cevaplar için TEŞEKKÜRLER. Cevabını işaretlemek için hangisini seçemiyorum - bir web dağıtımını kullanmak arasında - birkaç yararlı önerim var gibi görünüyor:
- Web Projesi = tüm site tek bir DLL içine paketlenmiş - benim için olumsuz basit güncellemeleri zorlayamam - 50 bir şirkette yalnız bir geliştirici olmak, bu zaman zaman daha basit bir şey olmaya devam ediyor.
- Doğrudan SCM'den sitenin web köküne çekmek - SCM'nin gizli dizininin açığa çıkmasına neden olabileceği korkusuyla bunu yapmadım, ancak buradaki cevaplar bunu aşmama yardımcı oldu (yine de bir tanesine sahip olmayı sevmeme rağmen) emin olun unutma konusunda endişelenecek daha çok şey zaman içinde hala doğru olduğundan emin olun)
- Bir web çiftliği kullanmak ve sistematik olarak düğümlere dağıtmak - bu sıfır arıza süresi için ideal bir çözümdür, bu aslında benim için önemli olan bir şeydir, çünkü site esasen şirketim için gerçek zamanlı bir gelir kaynağıdır - onları ikna etmek için zor zamanlar yaşayabilirim Sunucuların maliyetini iki katına çıkar.
-> Son olarak, site için tek bir tıklama dağıtımının yapılması gereken temel sorumlunun tekrar uygulanması veya YANLIŞ BAZI BİR YANLIŞ YANLIŞ, muhtemelen cevaplardan aldığım en faydalı şey.
GÜNCELLEME 2: Buna geri döndüğümü ve şu anda aylardır süren asıl çözümle güncellediğimi ve mükemmel çalıştığımı düşündüm (tek web sunucusu çözümüm için).
Kullandığım işlem:
- Kod değişiklikleri yapın
- Git’e bas
- Uzak masaüstünden sunucuya
- Git'ten çekin
Aşağıdaki toplu komut dosyasını çalıştırın:
cd C: \ Kullanıcılar \ Yönetici
% systemroot% \ system32 \ inetsrv \ appcmd.exe "/ site.name:Default Web Sitesi" adlı siteyi durdur
robokopi Belgeler \ kod \ da \ 1 \ çalışma \ Ağaç \ Borç VermeTreeWebSite1 c: \ inetpub \ wwwroot / E / XF linksconfig Web.config
% systemroot% \ system32 \ inetsrv \ appcmd.exe "/site.name:Default Web Sitesi" sitesini başlattı
Gördüğünüz gibi bu siteyi yıkıyor, değiştirilen dosyaları akıllıca kopyalamak için robokopi kullanıyor ve ardından siteyi geri getiriyor. Genellikle 2 saniyeden daha kısa sürede çalışır. Bu sitedeki en yüksek trafik saniyede yaklaşık 2 istek olduğundan, site güncellemesi başına 4 istek eksik kabul edilebilir.
Sine Git konusunda daha fazla bilgi sahibi oldum, yukarıdaki ilk dört adımın "manuel bir işlem" olmasının da kabul edilebilir olduğunu gördüm, ancak istediğimde her şeyi tek bir tıklamayla çevirebildiğimden eminim.
AppCmd.exe'nin belgeleri burada . Robocopy için belgeler burada .