অস্থায়ীভাবে আইআইএসে * সমস্ত * এইচটিটিপি / এইচটিটিপিএস অনুরোধগুলি একটি "সার্ভার রক্ষণাবেক্ষণ" পৃষ্ঠাতে পুনর্নির্দেশ করুন


10

আমাদের কাছে একটি আইআইএস সার্ভার রয়েছে যা কয়েকশো পৃথক ওয়েব অ্যাপ্লিকেশন হোস্ট করে এবং এই অ্যাপ্লিকেশনগুলিকে হোস্ট করে এমন শারীরিক ডাটাবেস সার্ভারটি একটি সংক্ষিপ্ত সময়ের জন্য রক্ষণাবেক্ষণের জন্য অফলাইনে নেওয়া হবে (আমরা আশা করি এটি 15 মিনিটেরও কম সময় নিবে)।

সেই সময়কালে, আমরা যে কোনও ওয়েবসাইটের জন্য আসা সমস্ত ট্র্যাফিককে "আমরা বর্তমানে রক্ষণাবেক্ষণের মধ্য দিয়ে যাচ্ছি" পৃষ্ঠাতে পুনর্নির্দেশ করতে চাই।

আমি উপলব্ধি করেছি যে আমি প্রতিটি ওয়েব অ্যাপ্লিকেশনে গিয়ে এবং আইআইএস পুনর্লিখনের নিয়মটি সেট করে যা ব্যবহারকারীকে সেই অ্যাপ্লিকেশনটিতে সমস্ত অনুরোধের জন্য অন্য পৃষ্ঠায় প্রেরণ করে। তবে ডাটাবেস রক্ষণাবেক্ষণের চেয়ে এটি করতে আমাদের আরও বেশি সময় লাগবে!

আমি তিনটি জিনিস চেষ্টা করেছি, যার কোনটিই কাজ করে নি:

গ্লোবাল আইআইএস পুনর্লিখন বিধি

আমি সমস্ত সাইটগুলিতে একটি নিয়ম প্রয়োগ করার একটি সহজ উপায় সন্ধান করছি , একের মধ্যে হুড়োহুড়ি হয়ে পড়ে - এবং তারপরে সেই নিয়মটিকে একটি সমান ব্যথাহীন পদক্ষেপে "পূর্বাবস্থাপন" করতে সক্ষম হতে হবে। এখনও অবধি আমার কোন চেষ্টা কাজ করে নি। আমি আমার বিশ্বব্যাপী ওয়েবকনফাইগে ডাব্লু: \ উইন্ডোজ \ মাইক্রোসফট.নেট \ ফ্রেমওয়ার্ক 64 \ v4.0.30319 \ কনফিগারেশন \ ওয়েবকনফিগ এ এই পুনর্লিখনের নিয়মটি রাখার চেষ্টা করেছি:

<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="redirect all requests" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" />
                    </conditions>
                    <action type="Redirect" url="http://www.somedomain.com/maintenance" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

এটি কাজ করে না। আমরা আইআইএসে .NET 4.0 64 বিট চালাচ্ছি, তবে "কেবলমাত্র" আমি একই জিনিসটি 32 বিট এবং 2.0 গ্লোবাল ওয়েবকনফিগ ফাইলগুলিতে রেখেছি, এবং এখনও কোনও পরিবর্তন নেই।

App_Offline.htm "বিশেষ ফাইল"

আমি অন্য একটি পরামর্শ যা দেখেছি তা হ'ল অ্যাপ_অফ্লাইন.এইচটিএম "বিশেষ" ফাইল , তবে আমরা আমাদের একই অ্যাপ্লিকেশনটির অ্যাপ্লিকেশনটিতে এই ফাইলটি রক্ষণাবেক্ষণের তুলনায় আরও বেশি সময় নিতে চাইলে একই সমস্যা ফিরে পেয়েছি।

আইআইএসে "আমরা অফলাইনে আছি" সাইট

আমাদের সমস্ত সাইটগুলি একটি আইপি দিয়ে আইআইএসে সেটআপ করা আছে। এটি এসএনএ ছাড়াই আমাদের পক্ষে কাজ করে কারণ আমাদের সমস্ত অ্যাপ্লিকেশন একটি একক এসএসএল শংসাপত্র ভাগ করে দেয় (এটি একটি ইউসিসি)। আমার কাছে ঘটে যাওয়া একটি জিনিসটি হ'ল সম্ভবত আমি আইআইএসে একটি সাইট সেটআপ করতে পারি যা আমরা যে আইপি ব্যবহার করছি তার সাথে সমস্ত ট্র্যাফিকের সাথে মেলে এবং হোস্টের শিরোনামের মানটি নির্দিষ্ট করে না । আশা ছিল যে আমি এটিকে একটি উচ্চতর "অগ্রাধিকার" দিতে পারব এবং এটি শুরু হওয়ার সাথে সাথে সমস্ত আইটেমির সাথে ট্র্যাফিকের সাথে মেলে, অন্য কোনও সাইটের মিলের সুযোগ হওয়ার আগেই। অনুরোধ URL নির্বিশেষে, সমস্ত অনুরোধের জন্য একই পৃষ্ঠাটি পরিবেশন করতে আমি সেই সাইটটি সেট আপ করতে পারি।

রক্ষণাবেক্ষণের সময় সেই সাইটটি শুরু করুন এবং শেষ হয়ে গেলে এটি বন্ধ করুন।

তবে, আমি এই কাজটিও করতে পারিনি, কারণ আইআইএস আরও নির্দিষ্ট সাইটের সাথে কোনও নির্দিষ্ট সাইটের সাথে এইচটিটিপি অনুরোধের সাথে মেলে বলে মনে হচ্ছে। সুতরাং, এই "ব্যবহারকারীদের আমরা অফলাইনে বলুন" সাইটের জন্য হোস্ট-শিরোলেখের মান বাদ দিয়ে, অনুরোধটিতে অন্য কোনও সাইটের সাথে মিলে যাওয়া হোস্ট-শিরোনামের মান না থাকলে এটি মিলবে না। যা আমাদের প্রতিটি ওয়েব অ্যাপ্লিকেশনটিতে ম্যানুয়ালি যেতে এবং এটি অফলাইনে নেওয়ার জন্য কোনও ক্রিয়া সম্পাদন করে এবং একই সাথে আমাদের রক্ষণাবেক্ষণের কাজ শেষ হলে অনলাইনে ফিরিয়ে দেওয়া একই সমস্যাটিতে ফিরে আসে

এটি সম্পাদন করার কোনও সহজ উপায় আছে? দেখে মনে হবে নিশ্চয়ই আমরা প্রথম এই সমস্যাটির মুখোমুখি নই।

-Josh


একটি বিকল্প হ'ল অ্যাপাচি বা অন্য কোনও ওয়েব সার্ভারের ইনস্টল ইনস্টল করা এবং এতে আপনার আফসোস সাইট সেট আপ করা। তারপরে, সময় আসার পরে, আইআইএস বন্ধ করুন এবং অ্যাপাচি শুরু করুন এবং এটি সমস্ত অনুরোধগুলি পরিচালনা করবেন।
ফোবিস

আমরা এই বিটিডব্লিউটি সাধারণত যেভাবে করি তা হ'ল সার্ভারের সামনের কোনও ডিভাইসে দুঃখিত পৃষ্ঠা থাকা, যেমন লোড ব্যালেন্সার।
ফোবিস

উত্তর:


6

আমি আপনার তৃতীয় পদ্ধতির সাথে যাব "We're offline" Site in IIS, বলুন যে আপনি এটির নাম দিয়েছেন Offline, যদি এটির কোনও হোস্ট শিরোনাম নির্দিষ্ট না করে থাকে তবে এটি অনুরোধগুলি অনুরোধ করে যা অন্য কোনও সাইটগুলির সাথে ম্যাচিং হোস্ট শিরোলেখ দ্বারা গ্রহণ না করা সমস্ত সরবরাহ করে। এটি প্রতিরোধ করতে আপনি কেবল অন্য সমস্ত সাইট বন্ধ করে দিন।

ধরে নিই যে আপনার আইআইএস স্ক্রিপ্টিং ইনস্টল রয়েছে, একটি উন্নত পাওয়ারশেল খুলুন:

import-module webadministration

এখন আপনি অফলাইনটি বাদে সমস্ত সাইট বন্ধ করতে পারবেন:

Get-ChildItem IIS:\Sites | Where {$_.Name -ne "Offline"} | Stop-WebSite

যখন এসকিউএল-সার্ভারটি ব্যাক আপ হয়, সেগুলি আবার শুরু করুন:

Get-ChildItem IIS:\Sites | Where {$_.Name -ne "Offline"} | Start-WebSite

আপনার পাশাপাশি এফটিপি সাইটগুলি থাকলে, কমান্ডগুলি একটি ত্রুটি দেখায় কারণ আপনি কোনও স্টপ-ওয়েবসাইটের সেমিডলেটে কোনও এফটিপি সাইটটি পাইপ করতে পারবেন না, তবে এটি এখনও সমস্ত ওয়েবসাইটের জন্য কাজ করে।

আপনার যদি এমন সাইট থাকে যা সাধারণত চালিত হয় না, আপনাকে সেগুলি দ্বিতীয় কমান্ডে বাদ দিতে হবে, যেমন:

Where {$_.Name -ne "Offline" -and $_.Name -ne "foobar.com"}

আইআইএস ইনস্টল করার জন্য পাওয়ারশেল সেন্টিমিলেটস আপনার কাছে না থাকলে আপনি একই কাজ করতে অ্যাপসিএমডি.এক্সই ব্যবহার করতে পারেন, যদিও আমি বছরের পর বছর এটি ব্যবহার করি নি।


2

আমাদের সমস্ত সাইটগুলি একটি আইপি দিয়ে আইআইএসে সেটআপ করা আছে।

1) একটি পুরানো ডেস্কটপ নিন, লাইভ লিনাক্স ডিস্ট্রো চালান, এটি আইআইএস বক্সের মতোই আইপি দিন, এটি নেটওয়ার্কে সংযুক্ত করবেন না

২) লাইভ লিনাক্স বাক্সে এনগিনেক্স ফায়ার করুন এবং আপনার পছন্দ মতো ডাউনটাইম পৃষ্ঠাটি তৈরি করুন, আপনার ল্যাপটপের সাথে সংযুক্ত একটি অফলাইন সুইচ / হাব ব্যবহার করে এটি পরীক্ষা করুন

3) আইআইএস বক্স ইথারনেট কেবলটি প্লাগ করুন এবং এটিকে লাইভ লিনাক্স বাক্সে প্লাগ করুন।

4) স্যুইচ (বা রোল শক্তি) উপর ম্যাক অ্যাড্রেয়ার ক্যাশে পরিষ্কার করুন। আপনার ডাউনটাইম সাইটটি এখন লাইভ।


0

অ্যাপাচি ইনস্টল করুন এবং নিম্নলিখিতগুলির মতো ভার্চুয়াল হোস্ট তৈরি করুন path\to\apache\conf\extra\httpd-vhosts.conf:

<VirtualHost *:80>
    DocumentRoot C:/Apache/htdocs
    ServerName anyname.net

    # Other directives here
</VirtualHost>

তারপরে উপরের সেটিং-এ উল্লিখিত ডকুমেন্টের রুটে, অফলাইন বার্তা সহ একটি সূচিপত্র HTML ফাইল তৈরি করুন।

নিম্নলিখিত পদক্ষেপটি খুব গুরুত্বপূর্ণ, আপনাকে অ্যাপাচি চালানোর আগে 80 টি পোর্ট ব্যবহার করতে পারে এমন সমস্ত পরিষেবা বন্ধ করতে হবে। আপনি এই লিঙ্কটিতে তাদের বেশিরভাগের একটি তালিকা পেতে পারেন


0

আমি জানি এটি পুরানো, তবে আমি কেবল এটি করতে হয়েছিল একটি পুরানো উইন্ডোজ 2008 আর 2 বাক্সে। এটি প্রশ্নের শিরোনামের আরও উত্তর; প্রশ্নের বিশদ সম্পর্কিত, এটি তখন কেবল " আইআইএসে আমরা অফলাইনে সাইট আছি " সেট আপ করার একটাই পন্থা ।

এটি আইআইএস এবং স্ট্যাটিক এইচটিএমএল এর চেয়ে বেশি কিছুতে নির্ভর করে না। আইআইএসের "এইচটিটিপি পুনর্নির্দেশ" কার্যকারিতা আপনি যা চান তা পরিচালনা করে না তবে এটি অনুকরণ করার আরও একটি উপায় রয়েছে। রক্ষণাবেক্ষণ পৃষ্ঠায় নির্দেশ করার জন্য কেবল সাইটের "ত্রুটি পৃষ্ঠাগুলি" পরিবর্তন করুন। হ্যাঁ, আপনি কেবলমাত্র আইআইএস-এ একটি সম্পূর্ণ "সাইট" ব্যবহার করতে পারলে এটি কাজ করে।

আমার ক্ষেত্রে, সাইটের মূল ফোল্ডারে একটি একক "ডিফল্ট htm" ফাইল রয়েছে (যেমন সি: et ইনপপ \ wwwroot)। সুতরাং "ত্রুটি পৃষ্ঠাগুলি" সমস্তই "এই সাইটে একটি URL চালানো" এবং "/default.htm" পথটি ব্যবহার করতে কনফিগার করা হয়েছে। যেহেতু আমি ফাইলে নিখুঁত ইউআরএলগুলি (যেমন "/" দিয়ে শুরু করি) ব্যবহার করি, তাই এর সামগ্রীগুলি ব্রাউজারে সঠিকভাবে কার্যকর করে, পাবলিক ইউআরএল যা প্রদর্শিত হবে তা নির্বিশেষে।

এই কনফিগারেশনের নেট ফলাফলটি আমার রক্ষণাবেক্ষণ পৃষ্ঠার সামগ্রী পরিবেশন করতে সাইটের যে কোনও / সমস্ত অনুরোধ। অনুরোধটি কী তা বিবেচ্য নয়।

এছাড়াও, সচেতন থাকুন যে আইআইএস মূল ফোল্ডারে একটি ওয়েবকনফিগ ফাইল তৈরি করে এই পরিবর্তনকে প্রভাবিত করবে। এটি আমার জন্য এটি তৈরি করেছিল:

 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
     <system.webServer>
         <httpErrors>
             <remove statusCode="502" subStatusCode="-1" />
             <remove statusCode="501" subStatusCode="-1" />
             <remove statusCode="500" subStatusCode="-1" />
             <remove statusCode="412" subStatusCode="-1" />
             <remove statusCode="406" subStatusCode="-1" />
             <remove statusCode="405" subStatusCode="-1" />
             <remove statusCode="404" subStatusCode="-1" />
             <remove statusCode="403" subStatusCode="-1" />
             <remove statusCode="401" subStatusCode="-1" />
             <error statusCode="401" prefixLanguageFilePath="" path="/default.htm" responseMode="ExecuteURL" />
             <error statusCode="403" prefixLanguageFilePath="" path="/default.htm" responseMode="ExecuteURL" />
             <error statusCode="404" prefixLanguageFilePath="" path="/default.htm" responseMode="ExecuteURL" />
             <error statusCode="405" prefixLanguageFilePath="" path="/default.htm" responseMode="ExecuteURL" />
             <error statusCode="406" prefixLanguageFilePath="" path="/default.htm" responseMode="ExecuteURL" />
             <error statusCode="412" prefixLanguageFilePath="" path="/default.htm" responseMode="ExecuteURL" />
             <error statusCode="500" prefixLanguageFilePath="" path="/default.htm" responseMode="ExecuteURL" />
             <error statusCode="501" prefixLanguageFilePath="" path="/default.htm" responseMode="ExecuteURL" />
             <error statusCode="502" prefixLanguageFilePath="" path="/default.htm" responseMode="ExecuteURL" />
         </httpErrors>
     </system.webServer>
 </configuration>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.