आप अपने .NET वेब एप्लिकेशन को कैसे तैनात करते हैं? (सिफारिशें, कृपया!)


10

हमने हाल ही में अपनी ASP.NET वेबसाइट को वेब एप्लिकेशन में अपग्रेड किया है और इसे तैनात करते समय अचानक छलांग लगाने से हम चौंक जाते हैं। यह देखते हुए कि यह कितना सामान्य कार्य है, मैं सोच रहा था कि प्लग-इन / सॉफ्टवेयर लोग तेजी से विकसित, दूरस्थ रूप से संग्रहीत, परियोजना (यानी एक वेबसाइट) को तैनात करने के लिए क्या उपयोग करते हैं?

विजुअल स्टूडियो में सिर्फ "प्रकाशन" से बेहतर तरीका होना चाहिए और फिर उन फ़ाइलों को मैन्युअल रूप से एफ़टीपी करने के लिए होना चाहिए जो बदल गए हैं? कम से कम क्योंकि साइट नीचे चला जाता है जब हम अपने .DLLs अपलोड कर रहे हैं।

बहुत सारे फ़िज़ूल रूप से फ़ाइल अपवाद हैं जो मुझे संभव है कि इस प्रक्रिया को जितना संभव हो उतना स्वचालित रूप से स्वचालित किया जाए, ताकि आकस्मिक अपलोड को रोका जा सके।

हमारे पुराने समाधान (हमारे वेबसाइट पर) के साथ हमने एएसपी के लिए डिस्पैच का उपयोग किया जो पूरी तरह से हिल गया और पूरी प्रक्रिया को एक क्लिक किया। दुर्भाग्य से यह DLL के लिए बहुत अच्छा नहीं है (जैसा कि पहले बताया गया है)।

तो आपकी टीम यह कैसे करती है?

किसी भी सलाह के लिए धन्यवाद।

PS - मैंने पढ़ा है कि विजुअल स्टूडियो 2010 को VS2005 / 08 में इन कमियों को दूर करना है, लेकिन तब तक ...


3
इस stackoverflow के लिए है, नहीं?
साइसिक

1
एक सर्वर पर एक वेबसाइट तैनात करना? मुझे ऐसा नहीं लगता - प्रोग्रामिंग से इसका कोई लेना-देना नहीं है।
जोंगो रेनहार्ड्ट

क्या हर कोई सिर्फ "प्रकाशित करें" और एफ़टीपी अपलोड पर क्लिक करता है? :( वहाँ एक बेहतर तरीका होना चाहिए!
Django Reinhardt 19

वेबसाइट से वेब एप्लिकेशन में बदलने के बाद आपको किन कठिनाइयों का अनुभव हुआ है?
क्रिस

जब हमारे पास एक वेबसाइट थी, तो हमारे पुराने परिनियोजन समाधान (डिस्पैच) ने स्वचालित रूप से निगरानी की कि कौन सी फाइलें बदल दी गई हैं। यह तब उन फ़ाइलों को प्रोडक्शन साइट (विशिष्ट फाइलों और फ़ोल्डरों की अनदेखी) को विजुअल स्टूडियो के भीतर से एक क्लिक के साथ अपलोड कर सकता है। यह आनंद, आनंद में था।
जिआंगो रेनहार्ड्ट

जवाबों:


5

मैं दृढ़ता से निरंतर एकीकरण का उपयोग करने की सलाह दूंगा।

हम बिल्ड को स्वचालित करने के लिए CI, रेक और अल्बाकोर के लिए TeamCity के संयोजन का उपयोग करते हैं ।

TeamCity आपके सोर्स कोड रिपॉजिटरी में से कोड की जाँच करेगा, फिर, Rake का उपयोग करते हुए, एप्लिकेशन का निर्माण करें, यूनिट टेस्ट निष्पादित करें और यहां तक ​​कि आपकी इच्छा होने पर अपनी डेटाबेस स्क्रिप्ट भी चलाएं। एक सफल निर्माण के बाद आप अपने स्रोत कोड को ज़िप फ़ाइल में पैकेज कर सकते हैं या अपनी पसंद के गंतव्य पर कॉपी कर सकते हैं।

हम Git का उपयोग करते हैं, हालांकि TeamCity सभी स्रोत नियंत्रण प्रणालियों के साथ काम करता है।

XML फ़ाइल संपादन के बिना TeamCity और Rake का उपयोग करना CruiseControl और NANT का उपयोग करने के समान होगा। यदि आप चाहें तो बेशक, आप NANT के साथ TeamCity का उपयोग कर सकते हैं।

एक छोटा नमूना एक rakefile.rb से खींचा जाता है जो बिल्ड का प्रदर्शन करता है। IMHO, XML फ़ाइल की तुलना में पढ़ना और डीबग करना आसान है।

require 'albacore'
require 'rexml/document'
require 'find'

VERSION_NO = "1.0"

OUTPUT_PATH = "output"
WEBOUTPUT_PATH = "output/web"
ADMINOUTPUT_PATH = "output/admin"

CONFIG = "Release"

WEB_PATH = "app/Company.Website.Web"
ADMIN_PATH = "app/Company.Website.Admin"
PACKAGE_PATH = "build/package"
DB_SCRIPT_PATH = "Company.Website.DB"
SOLUTION = "Company.Website.sln"

ARTIFACTS_PATH = "d:/build/artifacts/"

DEPLOY_WEB_PATH = "d:/deploy/company/website/"
DEPLOY_ADMIN_PATH = "d:/deploy/company/admin/"

task :default => ['setuptest','assemblyinfo','config','msbuild','createdb','sqlcmd','deploy']


task :setuptest do |setup|
  if ENV['BuildNumber'].nil? then ENV['BuildNumber'] = "000" end

  VERSION_NO = VERSION_NO + '.' + ENV['BuildNumber']
  puts 'Version Number : ' + VERSION_NO

  ZIPFILE_WEB = 'Company.Website.Web.' + VERSION_NO
  ZIPFILE_ADMIN = 'Company.Website.Admin.' + VERSION_NO  

  DB_SERVER = "WEB2"
  DB_DATABASE = "Website"  
  CREATEDB_SCRIPT = "app/Company.Website.DB/00CreateDatabaseTEST.sql"
end

  assemblyinfotask do |asm|
    asm.version = VERSION_NO
    asm.company_name = "Company Name"
    asm.copyright = "Copyright 2010"
    asm.output_file = "CommonAssemblyInfo.cs"
  end

  task :config do
    FileUtils.cp 'NHibernate.test.config', 'NHibernate.config'
  end

  msbuildtask do |msb|
    msb.properties = { :configuration => :Debug }
    msb.targets [:Clean, :Build]
    msb.solution = "Company.Website.sln"
  end

  sqlcmdtask :createdb do |sql|
    puts "executing sql scripts..."
    sql.log_level = :verbose
    sql.path_to_command = "sqlcmd.exe"
    sql.server = DB_SERVER
    sql.database = "master"
    sql.scripts << CREATEDB_SCRIPT
  end

  sqlcmdtask do |sql|
    puts "executing sql scripts..."
    sql.log_level = :verbose
    sql.path_to_command = "sqlcmd.exe"
    sql.server = DB_SERVER
    sql.database = DB_DATABASE
    sql.scripts << "app/Company.Website.DB/01CreateTables.sql"
    sql.scripts << "app/Company.Website.DB/02InsertReferenceData.sql"
  end

  task :deployprep do

    FileUtils.remove_dir 'app/Company.Website.Web/obj'
    FileUtils.remove_dir 'app/Company.Website.Admin/obj'

  end

  ziptask :zipweb do |zip|
    puts "creating zip package in " + ZIPFILE_WEB
    zip.directories_to_zip = ["app/Company.Website.Web"]
    zip.output_file = ZIPFILE_WEB  + '.zip'
    zip.output_path = File.dirname(__FILE__)
  end

  ziptask :zipadmin do |zip|
      puts "creating zip package in " + ZIPFILE_ADMIN
    zip.directories_to_zip = ["app/Company.Website.Admin"]
    zip.output_file = ZIPFILE_ADMIN  + '.zip'
    zip.output_path = File.dirname(__FILE__)
  end  

अल्बाकोर विशेष रूप से .NET एप्लिकेशन को तैनात करने के लिए रेक कार्यों का सूट है।


गूंगा प्रश्न: क्या ड्रीमविवर प्रोजेक्ट के लिए भी ऐसा ही कोई समाधान है?
djangofan

मुझे नहीं पता है कि आप वास्तव में ड्रीमविवर परियोजनाओं का निर्माण करते हैं, लेकिन आप अभी भी निरंतर एकीकरण और रेक में निर्मित कार्यों की नकल कर सकते हैं।
जेसन वत्स 19

3

लिनक्स पर, मैंने फैब्रिक (fabfile.org) और capistrano (capify.org) का उपयोग किया है जो दूरस्थ SSH और SCP कमांड में सहायता के लिए स्वचालन उपकरण हैं। यदि आपके पास आपके विंडोज़ होस्ट्स पर साइग्विन स्थापित है, तो आपको तैनाती उपकरणों के रूप में इनका पुन: उपयोग करने में सक्षम होना चाहिए।


2
अविश्वसनीय रूप से बकवास होने के लिए मुझे क्षमा करें, लेकिन विज़ुअल स्टूडियो के साथ इनका उपयोग कैसे किया जा सकता है? (मैं सोच रहा था कि वे नहीं कर सकते हैं)
Django Reinhardt

3

Visual Studio में "प्रकाशन" एक वेब एप्लिकेशन को कमांडलाइन से चलाया जा सकता है msbuild "C:\proj\yourprojectpathandfilename.csproj" /deploydir:"C:\some\deploy\dir"। गंतव्य निर्देशिका एक मौजूद वेब अनुप्रयोग है।

आपके बड़े प्रश्न को कवर करने वाले अन्य उत्तर अच्छे हैं। मैं यह भी जोड़ूंगा कि आपको कई ओपन सोर्स वेब एप्लिकेशन प्रोजेक्ट्स देखने चाहिए और उन बिल्ड प्रक्रिया को कॉपी करना चाहिए जो आपको सबसे ज्यादा पसंद हैं।


3

मैं स्कॉट से सहमत हूं कि यह बहुत जटिल हो सकता है और आसानी से अनदेखी हो सकती है। परिनियोजन रणनीति बहुत ही विशिष्ट अनुप्रयोग के रूप में अच्छी तरह से है। यदि आपका ऐप पूरी तरह से एक फ़ोल्डर में निहित है, तो यह जीएसी को संदर्भित करने वाले ऐप की तुलना में आसान हो सकता है। जो बदले में अभी भी एक सर्वर की तुलना में आसान हो सकता है, जिसे एक ऐप के कई संस्करणों को बनाए रखने की आवश्यकता होती है जो GAC असेंबली के कई संस्करणों का संदर्भ देता है। हम यहां नीति फ़ाइलों के बारे में बात करना शुरू नहीं करना चाहते :)।

Microsoft वेब परिनियोजन उपकरण को अनुप्रयोग अनुरोध रूटिंग के साथ संयोजित करना एक अच्छा विकल्प है। IIS7 में, टूल का उपयोग करके इंस्टॉल पैकेज बनाना संभव है। उपकरण को किसी वेब एप्लिकेशन पर इंगित करना और संपूर्ण एप्लिकेशन को एप्लिकेशन संग्रह फ़ोल्डर में बैकअप करना भी संभव है। फिर आप इस संग्रह फ़ोल्डर से IIS6 या IIS7 वेब सर्वर (IIS5 समर्थित नहीं) पर तैनात कर सकते हैं। मैं आवेदन अनुरोधों का उपयोग करूंगा जैसे स्कॉट को परीक्षण वेबसाइटों से अलग करने का सुझाव दिया गया है। एक बार जब आप नई प्रकाशित वेबसाइट को सत्यापित कर लेते हैं, तो आप नए संस्करण के लिए एआरआर सेट कर सकते हैं।


2

PyroBatchFTP इसके लिए बहुत अच्छा काम करता है। यह सिर्फ परिवर्तनों को धक्का देगा और आप इसे स्क्रिप्ट कर सकते हैं ताकि आप एक बैच फ़ाइल के डबल-क्लिक के साथ धक्का दे सकें।

पर Vaasnet हम सेटअप खुद के लिए सपना समाधान है, लेकिन यह काफी है, तो आप कर सकते हैं इनमें से कुछ या सभी तत्वों का उपयोग करके सेटअप लेकिन लायक करने के लिए शामिल है। यहाँ यह है:

  • हमारे सभी देव मशीनों पर एसवीएन
  • हमारे निर्माण / परिनियोजन सर्वर पर एसवीएन
  • Cruisecontrol.net एसवीएन में परिवर्तन के लिए देखता है और एक मंचन फ़ोल्डर में सिर्फ आवश्यक फ़ाइलों का निर्माण और स्टेज करेगा
  • PyroBatchFTP का उपयोग करते हुए, हम एक स्टेजिंग साइट पर धकेलते हैं (क्रूसिसकंट्रोल द्वारा ट्रिगर किया जाता है ताकि यह अपने आप हो जाए)
  • IIS7 और एप्लिकेशन रिक्वेस्ट रूटिंग (ARR) और URL रीराइट का उपयोग करते हुए , हमारे पास निम्न स्टेजिंग / उत्पादन सेटअप है:
    • ARR अप फ्रंट ट्रैफ़िक को या तो 01 या 02 पर निर्देशित करेगा, जिसके आधार पर एक 'लाइव' है और कौन सा 'स्टेजिंग' है
    • एफ़टीपी खाता हमेशा 'स्टेजिंग' के लिए बाध्य होता है
    • मेरे पास एक और मिनी एडमिन साइट है जो स्टेजिंग को स्वैप करेगी और एक क्लिक से लाइव होगी। शून्य डाउनटाइम के साथ स्विच करने में 1 सेकंड का समय लगता है और हम फिर से स्विच कर सकते हैं यदि हमें पता चलता है कि उस रिलीज़ के साथ कुछ गलत था (हालांकि यह दुर्लभ है क्योंकि हम लाइव होने से पहले इसे इतनी आसानी से परीक्षण कर सकते हैं)।

तो शुद्ध परिणाम हमें एसवीएन की जांच करने की अनुमति देता है और यह स्वचालित रूप से निर्माण करता है और बिना किसी मैन्युअल बातचीत के उत्पादन के लिए धक्का देता है। जब हम अपने मंचन URL पर परीक्षण करते हैं और यह निर्धारित करते हैं कि यह लाइव होने के लिए तैयार है, तो हम एक साधारण साइट में लॉग इन करते हैं और 1 क्लिक के साथ, यह लाइव है।


काश कि उत्पाद मुफ्त होता। यह बहुत अच्छा लग रहा है।
djangofan

ऐसा लगता है कि हम जिस चीज की तलाश कर रहे हैं, ठीक उसी तरह की है। मैं इसमें थोड़ा और शोध करूँगा, लेकिन पोस्ट करने के लिए धन्यवाद!
जोंगो रेनहार्ड्ट

हाँ, यह मुफ़्त नहीं है, लेकिन यह आपके समय के पहले घंटे के भीतर ही भुगतान करता है। यह इस तरह एक तैनाती की स्थिति में बहुत जल्दी आता है।
स्कॉट फोर्सिथ - एमवीपी

अच्छा, एक सवाल है। आप उल्लेख करते हैं कि उदाहरण 01 या 02 को लाइव किया जा सकता है, और मुद्दों के मामले में, इसे अन्य उदाहरण पर वापस स्विच किया जा सकता है। उस समय डेटाबेस में उपयोगकर्ता डेटा का क्या होता है? आधा उदाहरण 1 DB पर होगा, और बाकी उदाहरण DB पर?
सौरभ कुमार

1

किसी अन्य तरीके से जिसका सुझाव नहीं दिया गया है, मैं आपको 'गु' और वेब सेटअप प्रोजेक्ट्स के लिए संदर्भित करता हूं

यह मूल रूप से आपके .NET अनुप्रयोग के लिए एक MSI इंस्टॉलर बनाता है। यह उदाहरण VS2005 के लिए है, लेकिन मेरे पास VS2010 है और परियोजना का प्रकार अभी भी है। यदि आपको इसकी आवश्यकता है, या यदि आप नहीं चाहते हैं, तो यह आपको बहुत सारे अनुकूलन दे सकता है।

व्यक्तिगत रूप से जहां मैं काम करता हूं, हम सिर्फ एक xcopy- शैली परिनियोजन करते हैं, लेकिन मैं अंततः सर्वर समूह को एक पैकेज सौंपना चाहता हूं, उन्हें यह नियंत्रण देता है कि कब और कैसे इसे तैनात किया जाता है। (मुझे लगता है कि इससे समूह-नीति जैसी किसी चीज़ का उपयोग करके बड़े पैमाने पर काम करना आसान हो सकता है, लेकिन मैं इससे परिचित नहीं हूं)


0

इस बिल्ली की त्वचा के कई तरीके हैं, वास्तव में इस बात पर निर्भर करता है कि आपके सर्वर पर आपकी कितनी पहुंच हो सकती है। देर से मेरी व्यक्तिगत पसंदीदा विधि परियोजना के भीतर एक बिल्ड स्क्रिप्ट को सेटअप करना है (आमतौर पर MSBUILD का उपयोग करके) जो सभी परिनियोजन फ़ाइलों को पैकेज करती है, फिर उत्पादन में उन्हें पुल करने के लिए SVN का उपयोग करें। और उत्पादन फ़ाइलों को संस्करणित करने के लिए।

डेटाबेस-वार, सबसे अच्छी शर्त यह है कि किसी प्रकार के माइग्रेशन ढांचे का उपयोग किया जाए। फिर, उन लोगों का एक समूह, जिनके बारे में कोई स्पष्ट जवाब नहीं है।


0

व्यक्तिगत रूप से मैं सिर्फ एक vbs स्क्रिप्ट का उपयोग करता हूं जो मैंने खुद को विशिष्ट फाइलपेट के फ़ोल्डरों को देव सर्वर (यानी सीएस फाइलों को छोड़ दें, आदि) को कॉपी करने के लिए लिखा था।


हमारा देव सर्वर केवल एफ़टीपी के माध्यम से उपलब्ध है, और यदि संभव हो तो मैं एक बीस्पोक समाधान से बचने की उम्मीद कर रहा था।
जोंगो रेनहार्ड्ट

0

जब मैंने एक बड़ी .com कंपनी में काम किया तो यही हमने अपने .net तैनाती के साथ किया।

हमारे सभी स्रोत कोड और संग्रहीत कार्यविधियाँ SVN में संग्रहीत की गईं। प्रत्येक रात, एक डेटाबेस नौकरी चलाती है और उत्पादन संग्रहीत प्रोक्स को खींचती है और उन्हें एसवीएन पर एक निर्देशिका में खिसका देती है ताकि स्रोत नियंत्रण में हमेशा सबसे वर्तमान संस्करण हो।

किसी प्रोजेक्ट के लिए परिनियोजन के दिन, हम SVN से प्रोजेक्ट्स को खींचने के लिए एक nAnt स्क्रिप्ट का उपयोग करेंगे, प्रोजेक्ट्स का एक कस्टम बिल्ड करेंगे और इन प्रॉजेक्ट्स के लिए किसी भी निर्भरता को खींचने की जरूरत है। एक बार nAnt स्क्रिप्ट चलने के बाद इसे एक सेल्फ एक्सट्रैक्टिंग ज़िप फाइल में पैक कर दिया गया था। इस तैनाती के साथ जुड़े स्टोर्क प्रोक्स को स्रोत नियंत्रण में जांचा गया था और एक एक्सेल स्प्रेड शीट को चलाने के लिए और किस क्रम में स्क्रिप्ट के साथ अद्यतन किया गया था।

जब डिप्लोमेनेट बंद हो गया, तो सेल्फ-एक्सट्रैक्टिंग ज़िप फ़ाइल को उस सर्वर पर स्थानांतरित कर दिया गया, जहां इसे लॉन्च किया गया था। सभी फाइलें सही निर्देशिकाओं में निकाली गईं और डीबीए ने prodcution डेटाबेस पर संग्रहीत प्रोक्स को चलाया।

इस प्रणाली का उपयोग करते हुए एक विशिष्ट तैनाती पर, हम एक घंटे या उससे कम समय में पांच से छह घंटे की तैनाती से चले गए।

सौभाग्य और आशा है कि यह आपके आवेदन को तैनात करने के तरीके में मदद करता है।


0

विजुअल स्टूडियो में सिर्फ "प्रकाशन" से बेहतर तरीका होना चाहिए और फिर उन फ़ाइलों को मैन्युअल रूप से एफ़टीपी करने के लिए होना चाहिए जो बदल गए हैं?

ओकाम का रेज़र आमतौर पर पसंदीदा तरीका है: सरल, बेहतर। एफ़टीपी किसी भी जटिलताओं के लिए आसान नहीं है। कुछ लोग XCOPY, Filezilla या WSFTP का उपयोग करते हैं, अन्य लोग MS Web परिनियोजन टूल (जिसका मैं अभी तक परिचित नहीं हैं) का उपयोग कर सकते हैं, लेकिन सभी में, ASP.NET वेब ऐप्स को तैनात करने का एक बेहतर तरीका है (और अन्य) सामान्य रूप से क्षुधा)। आईएमओ, यदि तैनाती को विकास की शुरुआत से ध्यान में रखा जाता है, तो तैनाती को वेब ऐप के साथ एकीकृत किया जा सकता है जो भविष्य में अपेक्षाकृत दर्द मुक्त और चिकनी तैनाती के लिए बनाता है।

एक .NET डेवलपर के रूप में, जिन्होंने ASP.NET वेब ऐप विकसित करने वाली कई कंपनियों में काम किया है, जो आकार, जटिलता और उपयोगकर्ताओं की संख्या (कई सौ उपयोगकर्ताओं से लेकर दसियों हज़ार तक) में हैं, IMO 'परिनियोजन' अक्सर सबसे "तरल पदार्थ" विषय होता है। कुछ संगठन इसे नौकरशाही के संदर्भ में बहुत दूर ले जाते हैं जबकि अन्य किसी भी मुद्दे को तैनाती के साथ संबोधित नहीं करते हैं। मेरे अनुभव में, तैनाती के मुद्दे कठिनाइयों / असफलताओं के संदर्भ में 1 या 3 श्रेणियों में आते हैं:

  1. डिज़ाइन चरण के दौरान गहराई में परिनियोजन को अनदेखा / भुला दिया जाता है: अधिकांश वेब ऐप में वेब सर्वर और डेटाबेस को शामिल किया जाता है। एप्लिकेशन कोड से परे, शायद कुछ संग्रहीत कार्यविधियाँ और डेटाबेस तालिकाएँ, परिनियोजन के लिए बहुत अधिक विचार की आवश्यकता नहीं है। ASP.NET, परिनियोजन में सक्षम होने से अधिक है, लेकिन अधिकांश डेवलपर्स अक्सर एक अलग समस्या के रूप में परिनियोजन के तरीके को छोड़ते हुए वास्तविक एप्लिकेशन को चलाने और ऐसा करने के कार्य से विचलित होते हैं ।

  2. तैनाती कई प्रणालियों में और लोगों को खेलने में जटिल है : जटिलता एक कुतिया है। MSMQ, टी-एसक्यूएल संग्रहीत प्रक्रियाओं और ट्रिगर्स, रिपोर्टिंग सर्विसेज, SOAP / XML मैसेजिंग, AD प्रमाणीकरण, SSAS / SSIS, आदि से। खेल में प्रौद्योगिकियों की संख्या में शामिल लोगों की संख्या में वृद्धि होती है। सबसे बुरी बात, इन सभी विभिन्न घटकों को आमतौर पर एक संगठन के भीतर विभिन्न संस्थाओं द्वारा प्रबंधित किया जाता है। जब तक हर कोई एक-दूसरे के साथ तालमेल नहीं रखता, तब तक जटिलता में तेजी से वृद्धि हो सकती है जिससे विफलता के कई बिंदु हो सकते हैं।

  3. आलस्य, उदासीनता और संचार और / या प्रबंधन की कमी: समन्वित संचार और प्रोटोकॉल की कमी के लिए कोई दस्तावेज नहीं होने से, अपेक्षाकृत सरल प्रक्रिया को पेंच करना आसान है। तैनाती की एक सरल प्रक्रिया होनी चाहिए जिसमें सभी जाँचें हो सकती हैं कि क्या किया गया है, लेकिन अक्सर ऐसा कभी नहीं होता है। अधिकांश लोग सिर्फ इतना चाहते हैं कि लानत स्थल एक चालू हो। मेरे अनुभव में, लोग (गैर-प्रोग्रामर) वास्तव में परवाह नहीं करते हैं जब तक कि कुछ वास्तव में फ़ुबर नहीं हो जाता है । जिम्मेदारी शायद ही कभी सिर्फ एक व्यक्ति वास्तव में करने के लिए पर पड़ता करते तैनाती के रूप में कोई भी वास्तव में तो जवाबदेही है विफलता का कारण बनना चाहता है आमतौर पर बिखरे।

बहुत सारे फ़िज़ूल रूप से फ़ाइल अपवाद हैं जो मुझे संभव है कि इस प्रक्रिया को जितना संभव हो उतना स्वचालित रूप से स्वचालित किया जाए, ताकि आकस्मिक अपलोड को रोका जा सके। तो आपकी टीम यह कैसे करती है?

मैं तैनाती को स्वचालित करने के लिए किसी भी विक्रेता के बारे में नहीं जानता, हालांकि अगर कुछ थे तो मुझे आश्चर्य नहीं होगा। आप शायद VBScript / WMI या बैच स्क्रिप्ट के माध्यम से एक समाधान को स्क्रिप्ट कर सकते हैं, लेकिन वास्तविकता यह है कि आपको अधिक जटिल ASP.NET साइटों के लिए एक साथ समाधान को दर्जी करने की आवश्यकता है। सरल साइटें जिनमें पृष्ठ, डेटाबेस कनेक्टिविटी और कुछ भी नहीं है, आपको आवेदन की जटिलता के अनुरूप अपने तैनाती के प्रयासों को लगभग इतना करने की आवश्यकता नहीं है।

अब तक, मेरी वर्तमान कार्य पर तैनाती अभी भी एफ़टीपी से अधिक है और फ़ाइलों का एक गुच्छा स्थानांतरित कर रही है। यह बदसूरत है, पंगा लेना आसान है और सटीक इतिहास का कोई मतलब नहीं है। दी है कि आप एफ़टीपी लॉग के माध्यम से कंघी कर सकते हैं, कोई भी वास्तव में ऐसा करने के लिए परेशान नहीं करता है। एफ़टीपी से परे बहुत ज़रूरत के बिना हमारे एप्लिकेशन काफी सरल हैं। मेरी टीम हमारी वेब ऐप्स कैसे दिखाती है, यह वास्तव में आपके लिए किसी काम का नहीं है। इसके बजाय, मैं इस अवसर का उपयोग बेहतर प्रथाओं को सुझाने के लिए करूँगा ।

  • कुछ अनुमान नहीं लगाना। उपयोगकर्ता खाते, आर / डब्ल्यू / एक्स विशेषाधिकारों, एसीएल, फायरवॉल, समय (जब तैनात करने के लिए और आपको इसे करने के लिए कितना समय है), और यदि संभव हो, तो अंतिम "लॉन्च की तारीख" से पहले सभी वातावरण में तैनाती का परीक्षण करें
  • विकास वास्तव में शुरू होने से पहले, विकास में कारक की तैनाती। यदि यह एक सरल साइट है, तो यह हो। कई चलती भागों, कारक में यह के सभी देखते हैं और वास्तव में तो निर्माण एक योजना है जो करने के लिए सभी घटकों (कोड, डेटाबेस, रिपोर्ट, कतार, आदि) एक ही योजना पर सभी कर रहे हैं।
  • अन्य समानताएं के साथ समन्वय करें और प्रभावी ढंग से और कुशलता से संवाद करें।
  • यदि संभव हो तो अधिक प्रासंगिक जानकारी के रूप में दस्तावेज़।
  • पर्यावरण: एक वेब सर्वर बनाम वेब फार्म; 32-बिट बनाम 64-बिट; लॉग / त्रुटियों / घूमने आदि की निगरानी करने का एक तरीका खोजें।
  • ऐसे उपकरण खोजें (या बनाएँ) जो तैनाती में सहायता कर सकते हैं।
  • यदि प्रोग्राम करने योग्य परिनियोजन के लिए संभव है, तो एक प्रतिमान चुनें और उसके साथ रहें। उदाहरण के लिए, यदि आप किसी एप्लिकेशन के राज्य, परिनियोजन, पहुँच को पूरा करने के लिए प्राथमिक साधन के रूप में डेटाबेस सर्वर का उपयोग करना चाहते हैं, और इसे एप्लिकेशन में सेंकें और इसके साथ रहें। यदि आप हर तरह से XML फाइलें (जैसे web.config) पढ़ना पसंद करते हैं, तो बस एप्लिकेशन को लागू करने के एक सुसंगत प्रतिमान के साथ रहें । एक अन्य उदाहरण: कुछ संगठन प्रत्येक वातावरण में एक स्थिर फ़ाइल के रूप में web.config छोड़ते हैं जिसे अन्य वातावरणों पर तैनात नहीं किया जाना चाहिए । अन्य कार्यक्रम web.config इस तरह से है कि इसे बिना त्रुटि के पूरे वातावरण में तैनात किया जा सकता है।

मुझे एहसास है कि यह पोस्ट मूल रूप से पूछे गए सवाल के लिए ओवरकिल हो सकती है। दुर्भाग्य से, तैनाती सिर्फ एक साधारण बात नहीं है क्योंकि आवेदन जटिलता में भिन्न हो सकते हैं। मुझे लगता है कि जटिल ASP.NET एप्लिकेशन को तैनात करने वाले अधिकांश संगठनों ने समय के साथ कुछ रणनीतियों को कम से कम (कम से कम) मज़बूती से विकसित किया है।


lol ... मैं प्यार करता हूँ कि आप कैसे पार्सिमनी को उद्धृत करते हैं लेकिन फिर आप सबसे जटिल उत्तर देते हैं। जबरदस्त हंसी।
djangofan

1
हाँ, मुझे पता है कि मेरा उत्तर अपने आप में विरोधाभासी है। मैंने अभी कई तैनाती का सामना किया है जो गलत है कि मैं इससे बहुत थक गया हूं । शेख़ी के लिए क्षमा करें!
अगस्त को osij2is

1
रेड गेट से एक नया टूल है: red-gate.com/supportcenter/Content/Deployment_Manager/help/1.0/…
मैट इवांस

@ मट्टू इवांस - नीस! मैं अभी URL देख रहा हूँ। क्या यह एक नया थर्ड पार्टी अधिग्रहण या उनका अपना उत्पाद था?
osij2is

मुझे लगता है कि इसका अपना उत्पाद है। उन्होंने इसे विकसित किया और आंतरिक रूप से अपने स्वयं के तैनाती के लिए उपयोग किया - जो आशाजनक लगता है। मेरे द्वारा प्राप्त करने पर अपने स्वयं के उत्थान पर अद्यतन करेगा
मैट इवांस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.