Что такое сервер Nano?

Сервер Nano представляет собой новый вариант установки Windows Server версии vNext, который обеспечивает минимальный набор базовых компонентов сервера Windows. Возможно, значительно меньший, чем даже вариант Server Core. Это стало возможным благодаря реорганизации исходного кода операционной системы, а акцент в его применении делается на два основных сценария:

  • созданные в «облаке» приложения;
  • «облачная» платформа Hyper-V и масштабируемые файловые серверы File.

Что касается других сценариев, то для них следует продолжать использовать Server Core.

Вариант сервера Nano выбирается во время установки Windows (из других вариантов, которыми являются Server Core и Server с использованием графического интерфейса), и весь набор компонентов графического интерфейса удаляется вместе с другими компонентами. Функции RDP или локальной регистрации при развертывании в варианте сервера Nano не предусмотрено. Вместо этого управление осуществляется через WMI и PowerShell. Вот некоторые ключевые показатели для сравнения варианта сервера Nano с развертыванием варианта Windows Server:

  • размер VHD ниже на 93%;
  • на 92% меньше критических исправлений;
  • на 80% меньше перезагрузок.

Можно ли добавлять функции после создания сервера Nano?

Теоретически да, но сейчас это делать не очень удобно. Надеюсь, что через некоторое время ситуация изменится. Дело в том, что двоичные и языковые файлы являются отдельными файлами типа cabs. Вы идеале вам следовало бы создать образ сервера Nano с нужными функциями. Если вам необходимо добавить функции к существующему серверу Nano, лучше всего создать файл ответов и передать его утилите DISM. О том, как это сделать для IIS, рассказано в статье по адресу: https://msdn.microsoft.com/en-us/library/mt627783.aspx. Однако делать это следует только в исключительных случаях. Особенность сервера Nano в том, что он создается однократно и вы не тратите время на его перенастройку. Вы удаляете его и создаете новый сервер, как описано в статье по адресу: http://windowsitpro.com/windows/pets-and-cattle-methods-deploying-cloud-services.

Я хочу настроить экземпляр своего сервера Nano под конкретные требования во время его первоначального запуска. Что я могу сделать?

Параметры, с которыми вы работаете в New-NanoServerImage, на самом деле приводят к созданию файла unattend.xml на VHD, который используется в процессе специализации при применении настроек. После создания VHD вы можете смонтировать этот файл и отредактировать unattend.xml, прежде чем запускать виртуальную машину. Показанный ниже код PowerShell монтирует VHD и открывает unattend.xml в блокноте, поэтому вы можете выполнить редактирование. Затем можно размонтировать VHD.

$NanoVHDPath =
"D:\VMs\NanoVM2\NanoServerVM.vhd"
      $VHDMount = Mount-VHD -Path
      $NanoVHDPath -Passthru
      $DriveLetter = $VHDMount | Get-Disk |
       Get-Partition | Get-Volume |
      Select-Object
      -ExpandProperty DriveLetter
      $UnattendFile = $DriveLetter +
      ":\Windows\Panther\Unattend.xml"
      notepad $UnattendFile #add 
      Central Standard Time
       before
       in oobeSystem
      Dismount-VHD -Path $NanoVHDPath

Кроме того, вы можете автоматизировать добавление содержимого XML в файл unattend.xml, используя PowerShell.

Приведенный ниже код добавляет временную зону на VHD для моего сервера Nano. Вы можете модифицировать его для выполнения любых других изменений, которые захотите внести. Подробную информацию об изменении XML при помощи PowerShell можно найти в статье по адресу: windowsitpro.com/windows/add-elements-xml-using-powershell.

$NanoVHDPath = "D:\VMs\NanoVM2\
   NanoServerVM.vhd"
         $VHDMount = Mount-VHD -Path
         $NanoVHDPath -Passthru
         $DriveLetter = $VHDMount | Get-Disk
         | Get-Partition | Get-Volume |
         Select-Object -ExpandProperty
         DriveLetter
         $UnattendFile = $DriveLetter +
         ":\Windows\Panther\Unattend.xml"
        
         $xml = [xml](gc $UnattendFile)
         $child =
         $xml.CreateElement
         ("TimeZone",
         $xml.unattend.
         NamespaceURI)
         $child.InnerXml =
         "Central Standard Time"
         $null = $xml.unattend.
         settings.Where{
         ($_.Pass -eq
         'oobeSystem')}
         .component.appendchild
         ($child)
        
         $xml.Save
         ($UnattendFile)
         Dismount-VHD
         -Path $NanoVHDPath

Как мне изменить временную зону сервера Nano в Windows Server 2016?

Временная зона может быть настроена посредством файла unattend.xml на виртуальном диске VHD сервера Nano, который создается до запуска виртуальной машины, а добавление желаемой временной зоны в раздел oobeSystem осуществляется до блока . Например, добавление

Central Standard Time<
   /TimeZone>

выполняется так:


  
   
     
     asdfasdfAA==
     false</PlainText>
     </AdministratorPassword>
   </UserAccounts>
   <TimeZone>Central Standard Time
   </TimeZone>
  </component>
</settings></pre>
<p>
  Другой подход состоит в том, что при запуске виртуальной машины, обеспечивающей активацию режима удаленного управления, необходимо использовать утилиту tzutil для настройки желаемой временной зоны. Я подсоединился к виртуальной машине своего сервера Nano, а затем изменил временную зону:</p>
<pre class="codeblock" style="margin-left: 40px; ">
PS D:\NanoTP4>
   Enter-PSSession -ComputerName NanoVM
                             
         [NanoVM]: PS C:\Users\Administrator\
         Documents>
         [NanoVM]: PS C:\Users\Administrator\
         Documents> tzutil /g
         Pacific Standard Time
         [NanoVM]: PS C:\Users\Administrator\
         Documents> tzutil /s
         "Central Standard Time"
                             
         [NanoVM]: PS C:\Users\Administrator\
         Documents> tzutil /g
         Central Standard Time

         [NanoVM]: PS C:\Users\Administrator\
         Documents> exit
</pre>
<p>
  Теперь я могу видеть свою новую временную зону (см. экран 1).</p>
<p>
   </p>
<table align="center" border="0" class="imgTemplate" style="width: 150px; ">
  <tbody>
    <tr>
      <td>
        <img alt="Просмотр временной зоны на сервере Nano"  src="/images/default.webp" class="lozad" data-src="/FileStorage/ARTICLE/Windows_IT_Pro_RE/2016-02/02_16/13183549/Windows_IT_Pro_RE_50_(4275).jpg" /></td>
    </tr>
    <tr>
      <td>
        <strong>Экран 1. Просмотр временной зоны на сервере Nano</strong></td>
    </tr>
  </tbody>
</table>
<h3>
  Я получаю сообщения об ошибках от утилиты DISM, когда пытаюсь создать файл VHD для сервера Nano. Что предпринять?</h3>
<p>
  Если ошибки есть, то будет указан файл журнала, в котором дается больше информации о конкретном виде ошибки. Вероятнее всего, если вас извещают об ошибках, то вы пытаетесь работать на системе, которая не является Windows Server 2016, и ее DISM не понимает параметры сервера Nano. Убедитесь, что вы используете компьютер с Windows 10 или хост Windows Server 2016 для создания образов сервера Nano.</p>
<h3>
  Я не вижу варианта установки сервера Nano для Windows Server 2016. Как мне установить сервер Nano?</h3>
<p>
  Windows Server 2016 имеет три варианта развертывания: сервер с рабочим столом Server with Desktop Experience, основные серверные компоненты Server Core и специализированный сервер Nano Server. Server with Desktop Experience и Server Core доступны в качестве вариантов установки, но Nano Server недоступен, поскольку создан для модели массового развертывания, в которой применяется какой-либо автоматизированный метод развертывания. Образ сервера нужно подстроить под требования и активировать функции (ни одна из них не включена по умолчанию), необходимые для функционирования сервера. Материалы проектирования сервера Nano можно найти в папке NanoServer на носителе Windows Server 2016. У Microsoft есть отличная статья по адресу: https://technet.microsoft.com/en-us/library/mt126167.aspx. В ней рассматривается все, что необходимо знать для проектирования собственного виртуального или физического сервера Nano. Приведу код PowerShell, который я использовал для создания своего сервера:</p>
<pre class="codeblock" style="margin-left: 40px; ">
$adminPass = ConvertTo-SecureString
   "Pa55word" -AsPlainText -Force

      Import-Module 'S:\OS Images\
      Windows Server 2016 TP4\NanoServer\
      NanoServerImageGenerator.psm1'

            New-NanoServerImage -MediaPath
            'S:\OS Images\Windows Server 2016
             TP4' `
                  -BasePath .\Base -TargetPath .\
                  NanoServerVM.vhd -ComputerName
                  NanoVM `
                  -GuestDrivers -Storage -Defender
                  -Compute -EnableRemote
                  ManagementPort `
                  -AdministratorPassword
                  $adminPass -DomainName
                  savilltech #-ReuseDomainNode</pre>
<p>
  Обратите внимание, что в данном примере я настраиваю простой пароль, для того чтобы избежать участия пользователя. Я скопировал два нужных файла в папку, которая является моей текущей рабочей папкой (как и сказано в статье Microsoft). Затем я создаю новый VHD для Nano, у которого есть система хранения, антивирусная программа, вычислительный модуль (Hyper-V), гостевые драйверы для Hyper-V, включенный режим удаленного управления и подключение с моим локальным доменом. Я запускаю этот код PowerShell на хосте Windows Server 2016, который является членом домена, к которому я подсоединяю сервер Nano. В документе Microsoft содержится детальная информация об использовании команды djoin, если хост не является частью домена, к которому вы хотите подсоединить сервер Nano.</p>
<p>
  Указанный выше код PowerShell создает виртуальный диск VHD типа Generation 1, который я впоследствии использую для создания виртуальной машины. После запуска экземпляр подсоединен к домену и будет использовать DHCP. Вы также можете выполнить базовую настройку параметров IP и системы управления сетевым экраном с помощью консоли сервера Nano (см. экран 2).</p>
<p>
   </p>
<table align="center" border="0" class="imgTemplate" style="width: 150px; ">
  <tbody>
    <tr>
      <td>
        <img alt="Консоль сервера Nano"  src="/images/default.webp" class="lozad" data-src="/FileStorage/ARTICLE/Windows_IT_Pro_RE/2016-02/02_16/13183549/Windows_IT_Pro_RE_51_(2787).jpg" /></td>
    </tr>
    <tr>
      <td>
        <strong>Экран 2. Консоль сервера Nano</strong></td>
    </tr>
  </tbody>
</table>
<p>
   </p>

					
					<!-- Купить номер с этой статьей -->
														</div>
                <!--
				<br>
                <div id="yandex-market-search-string" style="display: none">
                                    </div>
                <div id="ya_market_widget"></div>
                -->
                <br>
                                    <!-- Рекламный блок 630 х 90 -->
                                                            <!-- End рекламный блок 630 х 90 -->
                
                                    <!--<noindex>-->

<!--
    <p style="font-weight: bold; margin-top: 10px;">Поделитесь материалом с коллегами и друзьями</p>

    <div class='likes-block' style="width: 100%;">
        
        <div id="twit-like">
            <script type="text/javascript" src="https://platform.twitter.com/widgets.js" async></script>
            <script type="text/javascript" async>
                document.write(
                    '<a href="https://twitter.com/share" class="twitter-share-button" data-text="Вопросы о сервере Nano" data-url="https://www.osp.ru/winitpro/2016/02/13048339" data-count="horizontal">Tweet</a>'
                );
            </script>
        </div>
        <div class='fb-like 34535'>
            <iframe src="https://www.facebook.com/v2.10/plugins/like.php?app_id=113869198637480&container_width=0&href=http%3A%2F%2Fwww.osp.ru%2Fwinitpro%2F2016%2F02%2F13048339&layout=button_count&locale=ru_RU&sdk=joey&share=false"
                    scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100%; height:30px;"
                    allowTransparency="true">
            </iframe>
        </div>
        <script src="//vk.com/js/api/openapi.js?122" type="text/javascript"></script>
        <script type="text/javascript">
            VK.init({apiId: 5555129, onlyWidgets: true});
        </script>
        <div id="vk_like"></div>
        <script type="text/javascript">
            VK.Widgets.Like("vk_like", {type: "button"});
        </script>
    </div>
-->

<!--</noindex>-->
<div class="clearfix"></div>
                
                <br><br><br>
                <!-- Рекламная площадка 88 -->
                                                    <div class='after-socials-ads' style="width: 100%">
                        <!-- Yandex.RTB R-A-511254-6 -->
<div id="yandex_rtb_R-A-511254-6"></div>
<script>
window.yaContextCb.push(()=>{
	Ya.Context.AdvManager.render({
		"blockId": "R-A-511254-6",
		"renderTo": "yandex_rtb_R-A-511254-6"
	})
})
</script>                    </div>
                                <!-- End площадка 88 -->

                <!-- 17/08/2017-->
                <div data-widget="plista_widget_belowArticle"></div>
				
			</div> <!--end article-full -->

			
		</div> <!--end left-wide-column -->
		<div class='right-column'>
            <!--<div class='rightsidebar-baner'>
	</div>-->



<div class='rightsidebar-baner' style='margin-top:0px'>
    <!-- Code for adPlace No 63 -->
<!--  AdRiver code START. Type:extension Site: OSP BN:1 -->
<script type="text/javascript">
(function(L){if(typeof(ar_cn)=="undefined")ar_cn=1;
var S='setTimeout(function(e){if(!self.CgiHref){document.close();e=parent.document.getElementById("ar_container_"+ar_bnum);e.parentNode.removeChild(e);}},3000);',
    j=' type="text/javascript"',t=0,D=document,n=ar_cn;L='' + ('https:' == document.location.protocol ? 'https:' : 'http:') + ''+L+escape(D.referrer||'unknown')+'&rnd='+Math.round(Math.random()*999999999);
function _(){if(t++<100){var F=D.getElementById('ar_container_'+n);
    if(F){try{var d=F.contentDocument||(window.ActiveXObject&&window.frames['ar_container_'+n].document);
    if(d){d.write('<sc'+'ript'+j+'>var ar_bnum='+n+';'+S+'<\/sc'+'ript><sc'+'ript'+j+' src="'+L+'"><\/sc'+'ript>');t=0}
    else setTimeout(_,100);}catch(e){try{F.src="javascript:{document.write('<sc'+'ript"+j+">var ar_bnum="+n+"; document.domain=\""
    +D.domain+"\";"+S+"<\/sc'+'ript>');document.write('<sc'+'ript"+j+" src=\""+L+"\"><\/sc'+'ript>');}";return}catch(E){}}}else setTimeout(_,100);}}
D.write('<div style="visibility:hidden;height:0px;left:-1000px;position:absolute;"><iframe id="ar_container_'+ar_cn
    +'" width=1 height=1 marginwidth=0 marginheight=0 scrolling=no frameborder=0><\/iframe><\/div><div id="ad_ph_'+ar_cn
    +'" style="display:none;"><\/div>');_();ar_cn++;
})('//ad.adriver.ru/cgi-bin/erle.cgi?sid=122831&bn=1&target=blank&bt=43&pz=0&tail256=');
</script>
<!--  AdRiver code END  -->
<!-- END Code for adPlace No 63 --></div>

<div style="margin-bottom: 20px; margin-top: -40px">
    <div id="os-announce-subscribe-form"></div>
</div>




<div class='rightsidebar-baner' style='margin-top:0px'>
    <!--  AdRiver code START. Type:extension Site: OSP BN:2 -->
<script type="text/javascript">
(function(L){if(typeof(ar_cn)=="undefined")ar_cn=1;
var S='setTimeout(function(e){if(!self.CgiHref){document.close();e=parent.document.getElementById("ar_container_"+ar_bnum);e.parentNode.removeChild(e);}},3000);',
    j=' type="text/javascript"',t=0,D=document,n=ar_cn;L='' + ('https:' == document.location.protocol ? 'https:' : 'http:') + ''+L+escape(D.referrer||'unknown')+'&rnd='+Math.round(Math.random()*999999999);
function _(){if(t++<100){var F=D.getElementById('ar_container_'+n);
    if(F){try{var d=F.contentDocument||(window.ActiveXObject&&window.frames['ar_container_'+n].document);
    if(d){d.write('<sc'+'ript'+j+'>var ar_bnum='+n+';'+S+'<\/sc'+'ript><sc'+'ript'+j+' src="'+L+'"><\/sc'+'ript>');t=0}
    else setTimeout(_,100);}catch(e){try{F.src="javascript:{document.write('<sc'+'ript"+j+">var ar_bnum="+n+"; document.domain=\""
    +D.domain+"\";"+S+"<\/sc'+'ript>');document.write('<sc'+'ript"+j+" src=\""+L+"\"><\/sc'+'ript>');}";return}catch(E){}}}else setTimeout(_,100);}}
D.write('<div style="visibility:hidden;height:0px;left:-1000px;position:absolute;"><iframe id="ar_container_'+ar_cn
    +'" width=1 height=1 marginwidth=0 marginheight=0 scrolling=no frameborder=0><\/iframe><\/div><div id="ad_ph_'+ar_cn
    +'" style="display:none;"><\/div>');_();ar_cn++;
})('//ad.adriver.ru/cgi-bin/erle.cgi?sid=122831&bn=2&target=blank&bt=43&pz=0&tail256=');
</script>
<!--  AdRiver code END  --></div>

<!--<noindex>-->
<!--</noindex>-->


<div class='rightsidebar-baner' style='margin-top:0px'>
    <!-- Yandex.RTB R-A-511254-4 -->
<div id="yandex_rtb_R-A-511254-4"></div>
<script>window.yaContextCb.push(()=>{
  Ya.Context.AdvManager.render({
    renderTo: 'yandex_rtb_R-A-511254-4',
    blockId: 'R-A-511254-4'
  })
})</script></div>

<div class='sb-events'>
	<div class='links-header' style='background:#3398df'>
		ИТ-календарь
	</div>
	<br>
	<ul class='events-list'>
				<li class='event-item'>
						<a href="https://days.directum.ru?utm_source=media&utm_medium=OSP&utm_campaign=article&utm_content=odd2024_anons_kalendar&utm_term=102024" class='sb-event-link'>
				Открытые дни Directum 2024			</a>
			<span class='sb-event-date'>
				18 ноября 2024			</span>
		</li>
				<li class='event-item'>
						<a href="http://it-edu.oit.cmc.msu.ru" class='sb-event-link'>
				Международный конгресс «СОВРЕМЕННЫЕ ПРОБЛЕМЫ КОМПЬЮТЕРНЫХ И ИНФОРМАЦИОННЫХ НАУК»			</a>
			<span class='sb-event-date'>
				21 ноября 2024			</span>
		</li>
				<li class='event-item'>
						<a href="https://clck.ru/3CMopq" class='sb-event-link'>
				Конференция TECH WEEK			</a>
			<span class='sb-event-date'>
				26 ноября 2024			</span>
		</li>
				<li class='event-item'>
						<a href="https://finnext-asia.com//?rs=partner_finnextasia24_OSP" class='sb-event-link'>
				Форум FINNEXT Asia			</a>
			<span class='sb-event-date'>
				28 ноября 2024			</span>
		</li>
				<li class='event-item'>
						<a href="https://cx-day.ru/?rs=p_osp" class='sb-event-link'>
				Форум CX FINTECH DAY			</a>
			<span class='sb-event-date'>
				3 декабря 2024			</span>
		</li>
			</ul>
</div>


<div class='rightsidebar-baner' style='margin-top:0px'>
    <!--  AdRiver code START. Type:extension Site: OSP BN:4 -->
<script type="text/javascript">
(function(L){if(typeof(ar_cn)=="undefined")ar_cn=1;
var S='setTimeout(function(e){if(!self.CgiHref){document.close();e=parent.document.getElementById("ar_container_"+ar_bnum);e.parentNode.removeChild(e);}},3000);',
    j=' type="text/javascript"',t=0,D=document,n=ar_cn;L='' + ('https:' == document.location.protocol ? 'https:' : 'http:') + ''+L+escape(D.referrer||'unknown')+'&rnd='+Math.round(Math.random()*999999999);
function _(){if(t++<100){var F=D.getElementById('ar_container_'+n);
    if(F){try{var d=F.contentDocument||(window.ActiveXObject&&window.frames['ar_container_'+n].document);
    if(d){d.write('<sc'+'ript'+j+'>var ar_bnum='+n+';'+S+'<\/sc'+'ript><sc'+'ript'+j+' src="'+L+'"><\/sc'+'ript>');t=0}
    else setTimeout(_,100);}catch(e){try{F.src="javascript:{document.write('<sc'+'ript"+j+">var ar_bnum="+n+"; document.domain=\""
    +D.domain+"\";"+S+"<\/sc'+'ript>');document.write('<sc'+'ript"+j+" src=\""+L+"\"><\/sc'+'ript>');}";return}catch(E){}}}else setTimeout(_,100);}}
D.write('<div style="visibility:hidden;height:0px;left:-1000px;position:absolute;"><iframe id="ar_container_'+ar_cn
    +'" width=1 height=1 marginwidth=0 marginheight=0 scrolling=no frameborder=0><\/iframe><\/div><div id="ad_ph_'+ar_cn
    +'" style="display:none;"><\/div>');_();ar_cn++;
})('//ad.adriver.ru/cgi-bin/erle.cgi?sid=122831&bn=4&target=blank&bt=43&pz=0&tail256=');
</script>
<!--  AdRiver code END  --></div>

<div class='links-wrapper'>
		<div class='links-header' style='background:#3398df'>
		Популярные теги	</div>
		<div class='links-items'>
		<div class='hot-topic-tags-sidebar'>
			<ul>
									<li class='hot-topic-item'  ">
						<a href='/winitpro/articles/tag/11012424' style="background-color:#3398df">
							Windows Server						</a>
					</li>
									<li class='hot-topic-item'  ">
						<a href='/winitpro/articles/tag/11012198' style="background-color:#3398df">
							Windows 10						</a>
					</li>
									<li class='hot-topic-item'  ">
						<a href='/winitpro/articles/tag/11006588' style="background-color:#3398df">
							Skype						</a>
					</li>
									<li class='hot-topic-item'  ">
						<a href='/winitpro/articles/tag/11010132' style="background-color:#3398df">
							SharePoint						</a>
					</li>
									<li class='hot-topic-item'  ">
						<a href='/winitpro/articles/tag/11000633' style="background-color:#3398df">
							Office 365						</a>
					</li>
									<li class='hot-topic-item'  ">
						<a href='/winitpro/articles/tag/11000643' style="background-color:#3398df">
							Microsoft Azure						</a>
					</li>
									<li class='hot-topic-item'  ">
						<a href='/winitpro/articles/tag/11002378' style="background-color:#3398df">
							Exchange Server						</a>
					</li>
									<li class='hot-topic-item'  ">
						<a href='/winitpro/articles/tag/11018279' style="background-color:#3398df">
							Active Directory						</a>
					</li>
								<li class='hot-topic-item last-item'>
					<a href="/winitpro/articles/tags">Все темы</a>
				</li>
			</ul>
		</div>
	</div>
</div>



<script src='https://admin.opensystems.ru/js/white-papers.js'></script>






                            <div class='rightsidebar-baner' style='margin-top:0px'>
                                    </div>
            
            
                            <div class='rightsidebar-baner' style='margin-top:0px'>
                    <script async type='text/javascript' src='//s.luxcdn.com/t/205442/360_light.js'></script>
<script class='__lxGc__' type='text/javascript'>
((__lxGc__=window.__lxGc__||{'s':{},'b':0})['s']['_205442']=__lxGc__['s']['_205442']||{'b':{}})['b']['_693483']={'i':__lxGc__.b++};
</script>                </div>
            
		</div>
	</div>

<!-- Photo Swipe-->
<!--
 -->
<link rel="stylesheet" href="/assets/js/photoSwipe/dist/photoswipe.css">
<link rel="stylesheet" href="/assets/js/photoSwipe/dist/default-skin/default-skin.css">
<script src="/assets/js/photoSwipe/dist/photoswipe.min.js"></script>
<script src="/assets/js/photoSwipe/dist/photoswipe-ui-default.min.js"></script>
<script type="text/javascript" src='/assets/js/swipe-gallery.js'></script>
<!-- Photo Swipe END -->

        <div class='clear'></div>
        <footer class="wrapper oh hidden-xs_">
    <div class='row'>
        <div class='footer-content'>
            <div class='col-md-12 col-sm-12 col-xs-12 this-site-part'>
                <div class='col-md-8 col-md-offset-4 col-sm-12 col-xs-12'>
                    <div class='this-upper-line'>
                                    <a href="/winitpro/" class='this-logo'>
        <img src="/assets/img/new-logo/WP2.png" alt="Издательство открытые системы">
    </a>
            <ul class='this-socials'>
                <li class='social-item vk'>
            <a href="https://vk.com/club18661021" rel='nofollow' target='_blank'></a>
        </li>
            </ul>
                    </div>
                    <div class='this-lower-line'>
                        <nav>
	<ul class='this-menu'>
								<li class='this-menu-item'>
				<a href="/about/info">Об издательстве</a>
			</li>
								<li class='this-menu-item'>
				<a href="/winitpro/about/">Об издании</a>
			</li>
								<li class='this-menu-item'>
				<a href="/support/winitpro">Обратная связь</a>
			</li>
								<li class='this-menu-item'>
				<a href="/about/finding-us">Как нас найти</a>
			</li>
								<li class='this-menu-item'>
				<a href="/about/contacts">Контакты</a>
			</li>
								<li class='this-menu-item'>
				<a href="/about/republication">О републикации</a>
			</li>
								<li class='this-menu-item'>
				<a href="/tags">Теги</a>
			</li>
								<li class='this-menu-item'>
				<a href="/archive-issues/">Архив изданий</a>
			</li>
								<li class='this-menu-item'>
				<a href="/personalpolicy/">Политика обработки персональных данных</a>
			</li>
		        <li class='this-menu-item'>
            <a href="#" onclick="if(window.__lxG__consent__!==undefined&&window.__lxG__consent__.getState()!==null){window.__lxG__consent__.showConsent()} else {alert('This function only for users from European Economic Area (EEA)')}; return false">Change privacy settings</a>
        </li>
	</ul>
</nav>
                    </div>
                </div>
            </div>
            <div class='col-md-12 col-sm-12 col-xs-12' style='padding-bottom: 10px;'>
                <div class='col-md-4 col-sm-12 col-xs-12 partner-part'>
                    <a class='partner-logo' href='https://www.osp.ru'>
                        <img src="https://www.osp.ru/assets/img/footer/osp_logo.png" alt="osp-logo-image">
                    </a>
                    <p class='partner-desc'>
                        «Открытые системы» - ведущее российское издательство, выпускающее широкий спектр изданий для профессионалов и активных пользователей в сфере ИТ, цифровых устройств, телекоммуникаций, медицины и полиграфии, журналы для детей.
                    </p>
                    <p class='partner-rights hidden-xs'>
                        © «Открытые системы», 1992-2024. <br> Все права защищены.
                    </p>
                </div>
                <div class='col-md-8 col-sm-12 col-xs-12 osp-part'>
                    <p class='hidden-xs'>
                        Издания
                    </p>
                    <nav>
<!--<noindex>-->
        <ul class='osp-projects'>
                            <li>
                                        <a href='https://cwr.osp.ru' rel="nofollow" target='_blank'>Компьютерный мир</a>
                </li>
                            <li>
                                        <a href='/os' rel="nofollow" target='_blank'>Открытые системы.СУБД</a>
                </li>
                            <li>
                                        <a href='https://cio.osp.ru' rel="nofollow" target='_blank'>Директор ИС</a>
                </li>
                            <li>
                                        <a href='https://www.lvrach.ru' rel="nofollow" target='_blank'>Лечащий врач</a>
                </li>
                            <li>
                                        <a href='https://www.publish.ru' rel="nofollow" target='_blank'>Publish</a>
                </li>
                            <li>
                                        <a href='https://www.classmag.ru' rel="nofollow" target='_blank'>Классный журнал</a>
                </li>
                            <li>
                                        <a href='https://www.ponymashka.ru' rel="nofollow" target='_blank'>Понимашка</a>
                </li>
                    </ul>
<!--</noindex>-->
</nav>


                    <p class='hidden-xs' style="margin-top: 10px;margin-bottom: 5px;">
                        Конференции
                    </p>
                    <nav>
<!--<noindex>-->
            <ul class="osp-centers basic" id="common-footer" style="margin-top: 0px;">
		<li id="link_1"><a href="https://www.osp.ru/lp/dataaward2025" target="_blank">Data Award</a></li>

<li id="link_2"><a href="https://www.osp.ru/lp/dm2024" target="_blank">Управление данными</a></li>

<li id="link_3"><a href="https://www.osp.ru/lp/hyperautomation2024" target="_blank">Гиперавтоматизация</a></li>

<li id="link_4"><a href="https://www.osp.ru/lp/dataquality2025" target="_blank">Качество данных</a></li>

<li id="link_5"><a href="https://www.osp.ru/lp/data-ai2024" target="_blank">Data &amp; AI</a></li>

<li id="link_6"><a href="https://www.osp.ru/lp/ai-enterprise2024" target="_blank">Интеллектуальное предприятие</a></li>

	</ul>
<!--</noindex>-->
</nav>
                    <p class='.visible-xs' style='color: #dddddd;font-size: 100%;text-align: center;margin-top: 15px;text-decoration: underline;'>© ООО «Издательство «Открытые системы», 1992-2024.</p>
                </div>
            </div>
            <div class='col-md-12 col-sm-12 col-xs-12 media-info'>
                Средство массовой информации www.osp.ru Учредитель: ООО «Издательство «Открытые системы» Главный редактор: Христов П.В. Адрес электронной почты редакции: info@osp.ru <br>Телефон редакции: 7 (499) 703-18-54
                Возрастная маркировка: 12+ Свидетельство о регистрации СМИ сетевого издания Эл.№ ФС77-62008 от 05 июня 2015 г. выдано Роскомнадзором.
            </div>
            <div style="position: absolute;right: 20px;bottom: 60px;" >

                <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/lozad/dist/lozad.min.js"></script>

                <script>const observer = lozad(); // lazy loads elements with default selector as '.lozad'
                    observer.observe();</script>

                <!--LiveInternet counter--><script type="text/javascript"><!--
                document.write("<a href='//www.liveinternet.ru/click' "+
                "target=_blank><img class='hidden-xs' src='//counter.yadro.ru/hit?t17.3;r"+
                escape(document.referrer)+((typeof(screen)=="undefined")?"":
                ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?
                screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+
                ";h"+escape(document.title.substring(0,80))+";"+Math.random()+
                "' alt='' title='LiveInternet: показано число просмотров за 24"+
                " часа, посетителей за 24 часа и за сегодня' "+
                "border='0' width='88' height='31'><\/a>")
                //--></script><!--/LiveInternet-->

                <!-- tns-counter.ru -->
                <!--
                <script type="text/javascript">
                    var img = new Image();
                    img.src = 'https://www.tns-counter.ru/V13a***R>' + document.referrer.replace(/\*/g,'%2a') + '*osp_ru/ru/CP1251/tmsec=osp_total/';
                </script>
                <noscript>
                    <img src="https://www.tns-counter.ru/V13a****osp_ru/ru/CP1251/tmsec=osp_total/" width="1" height="1" alt="" />
                </noscript>
                -->
                <!--/ tns-counter.ru -->

                <script type='text/javascript'>
                    $(function(){
                        $('#code_check').click(function(){
                            var input = $('#action_code'), code = input.val(), link;
                            if(code!='')
                            {
                                postman.drop(
                                    'checkPromoCode',
                                    {
                                        'Code'  : code
                                    },
                                    function(){
                                        if (this.used!='0')
                                        {
                                            input.addClass('invalid').val('Код использован');
                                        }
                                        else if(this.discount.length>0)
                                        {
                                            link = this.discount[0].Code;
                                            link = reverse(link);
                                            window.location.href = "/subscribe/discount/"+link+"/?promo="+code;
                                        }
                                        else if (this.action.length>0)
                                        {
                                            window.location.href='/subscription?promo='+code;
                                        }
                                        else
                                        {
                                            input.addClass('invalid').val('Неверный код');
                                        }
                                    }
                                );
                            }
                        });
                        $('#action_code').focus(function(){
                            $(this).removeClass('invalid');
                            $(this).val('');
                        });
                    });
                </script>
                <!-- Yandex.Metrika counter -->
                <div style="display:none;"><script type="text/javascript">
                        (function(w, c) {
                            (w[c] = w[c] || []).push(function() {
                                try {
                                    w.yaCounter4520146 = new Ya.Metrika({id:4520146,
                                        clickmap:true,
                                        trackLinks:true, trackHash:true, webvisor:true});
                                }
                                catch(e) { }
                            });
                        })(window, "yandex_metrika_callbacks");
                    </script></div>
                <script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript" defer="defer"></script>
                <noscript><div><img src="//mc.yandex.ru/watch/4520146" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
                <!-- /Yandex.Metrika counter -->
            </div>
        </div>
    </div>
        
</footer>
                <!-- 17/08/2017
        <script type="text/javascript">
        (function(c){var g,s='script',w=window,n=c.name||'PLISTA';if(!w[n]){w[n]=c;g=w.document.getElementsByTagName(s)[0];s=w.document.createElement(s);s.async=true;s.type='text/javascript';s.src=(w.location.protocol==='https:'?'https:':'http:')+'//static'+(c.origin?'-'+c.origin:'')+'.plista.com/async'+(c.name?'/'+c.name:'')+'.js';g.parentNode.insertBefore(s,g);}
        }({
            "publickey": "ed8df16860f9ea62c39e844c",
            "origin": "ru"
        }));
        </script>
        -->
        <script defer src="https://forms.opensystems.ru/formLoader.js"></script>
    </body>
</html>