{"id":805,"date":"2016-06-20T09:03:18","date_gmt":"2016-06-20T17:03:18","guid":{"rendered":"http:\/\/blogs.msdn.microsoft.com\/pythonengineering\/?p=805"},"modified":"2019-02-22T09:23:14","modified_gmt":"2019-02-22T17:23:14","slug":"python-and-django-on-nano-server","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/python\/python-and-django-on-nano-server\/","title":{"rendered":"Python and Django on Nano Server"},"content":{"rendered":"<p><em>This post is contributed by Refaat Issa from the Nano Server team, and was originally posted <a href=\"https:\/\/blogs.technet.microsoft.com\/nanoserver\/2016\/05\/17\/python-django-on-nano-server\/\" target=\"_blank\">on their blog<\/a>. Nano Server has also blogged about their support for <a href=\"https:\/\/blogs.technet.microsoft.com\/nanoserver\/2016\/06\/13\/mysql-on-nano-server\/\" target=\"_blank\">MySQL<\/a> and <a href=\"https:\/\/blogs.technet.microsoft.com\/nanoserver\/2016\/05\/04\/node-js-on-nano-server\/\" target=\"_blank\">Node.js<\/a>.<\/em><\/p>\n<hr \/>\n<p><span style=\"font-family: 'Segoe UI',sans-serif\">One of Nano Server\u2019s core scenarios is to serve as a lightweight OS for born-in-the-cloud applications running in a VM or a container. Nano Server already supports <\/span><a href=\"http:\/\/blogs.iis.net\/davidso\/nano\/aspnet\"><span style=\"font-family: 'Segoe UI',sans-serif\">ASP.NET Core<\/span><\/a><span style=\"font-family: 'Segoe UI',sans-serif\"> (aka ASP.NET 5) with IIS, <\/span><a href=\"https:\/\/blogs.technet.microsoft.com\/nanoserver\/2016\/05\/04\/node-js-on-nano-server\/\"><span style=\"font-family: 'Segoe UI',sans-serif\">node.js<\/span><\/a><span style=\"font-family: 'Segoe UI',sans-serif\">, and now, we\u2019re happy to announce support for Python &amp; Django.<\/span><\/p>\n<div class=\"WordSection1\">\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">The instructions in this blog explain how to get Python &amp; Django running on Nano Server. If you want to try this on a Nano Server VM, with <\/span><a href=\"https:\/\/www.microsoft.com\/en-us\/evalcenter\/evaluate-windows-server-technical-preview?wt.mc_id=WW_CE_OMS_OO_BLOG_NONE\"><span style=\"font-family: 'Segoe UI',sans-serif\">Windows Server 2016 Technical Preview 5<\/span><\/a><span style=\"font-family: 'Segoe UI',sans-serif\"> there are three ways you can quickly get a VM:<\/span><\/p>\n<ol>\n<li><span style=\"font-family: 'Segoe UI',sans-serif\">Download the developer VHD at the above Technical Preview 5 link.<\/span><\/li>\n<li><span style=\"font-family: 'Segoe UI',sans-serif\"> <a href=\"https:\/\/blogs.technet.microsoft.com\/nanoserver\/2016\/04\/27\/nano-server-tp5-iaas-image-in-the-azure-gallery\/\">Create a VM in Azure<\/a> using the Nano Server image in the Azure Gallery. If you don\u2019t have an Azure account, you can get a free 30-day trial.<\/span><\/li>\n<li><span style=\"font-family: 'Segoe UI',sans-serif\"> Download the Technical Preview 5 ISO at the above link and then consult the <a href=\"https:\/\/technet.microsoft.com\/en-us\/library\/mt126167.aspx\">Nano Server documentation<\/a> to build a VM.<\/span><\/li>\n<\/ol>\n<p class=\"MsoNormal\" style=\"margin: 20.0pt 0in 6.0pt 0in\"><span style=\"font-size: 18.0pt;font-family: 'Calibri Light',sans-serif;color: #2e74b5\">Installing Python &amp; Django on Nano Server<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">Download Python 3.5.1 to your development machine from <\/span><a href=\"https:\/\/www.python.org\/downloads\/release\/python-351\/\"><span style=\"font-family: 'Segoe UI',sans-serif\">python.org<\/span><\/a><span style=\"font-family: 'Segoe UI',sans-serif\"> and make sure to select the <b>64-bit<\/b>\nWindows version! Follow the installation instructions.<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">Once installed, use the following PowerShell script from the ISE or a classic console, to copy the binaries to\nyour Nano Server machine:<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: orangered\">$ip<\/span><span style=\"font-size: 9.0pt;font-family: 'Lucida Console'\"> <span style=\"color: darkgray\">= <\/span><span style=\"color: darkred\">&#8220;0.0.0.0&#8221;<\/span> <span style=\"color: darkgreen\"># the IP address of your Nano Server machine<\/span><\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: orangered\">$s<\/span><span style=\"font-size: 9.0pt;font-family: 'Lucida Console'\"> <span style=\"color: darkgray\">= <\/span><span style=\"color: blue\">New-PSSession<\/span> <span style=\"color: navy\">-ComputerName<\/span>\n<span style=\"color: orangered\">$ip<\/span> <span style=\"color: navy\">-Credential <\/span><span style=\"color: blueviolet\">~\\Administrator<\/span> <\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: orangered\">$PythonInstallPath<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: darkgray\">=<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: darkred\">&#8220;<\/span><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: orangered\">$env:LOCALAPPDATA<\/span><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: darkred\">\\Programs\\Python&#8221;\n<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: darkgreen\"># this is the default installation folder &#8211; change it if you specified a different folder during installation <\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blue\">Copy-Item<\/span><span style=\"font-size: 9.0pt;font-family: 'Lucida Console'\"> <span style=\"color: navy\">-ToSession <\/span><span style=\"color: orangered\">$s<\/span> <span style=\"color: navy\">-Path<\/span> <span style=\"color: orangered\">$PythonInstallPath<\/span> <span style=\"color: navy\">-Destination <\/span><span style=\"color: darkred\">&#8220;C:\\&#8221;<\/span> <span style=\"color: navy\">-Force <\/span><span style=\"color: navy\">-Recurse<\/span><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 20.0pt 0in 6.0pt 0in\"><span style=\"font-size: 18.0pt;font-family: 'Calibri Light',sans-serif;color: #2e74b5\">Setting up your environment and running \u201cHello, world!\u201d<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">Remote into your Nano Server machine:<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blue\">Enter-PSSession<\/span><span style=\"font-size: 9.0pt;font-family: 'Lucida Console'\"> <span style=\"color: orangered\">$s<\/span>\n<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">Now add the Python folders to your path environment variable:<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: orangered\">$env:Path<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: darkgray\">+=<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: darkred\">&#8220;;C:\\Python\\Python35;C:\\Python\\Python35\\Scripts&#8221;\n<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">To make this change persist even after your Nano Server machine reboots, enter the following:<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blue\">setx<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">PATH<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: orangered\">$env:Path<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">\/M<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">Quick test:<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blue\">python<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">&#8211;version\n<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">You should see the Python version. Now, exit out of your Nano Server machine: <\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blue\">Exit-PSSession<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">Back on your development machine, use your favorite editor (I use <\/span><a href=\"http:\/\/code.visualstudio.com\/\"><span style=\"font-family: 'Segoe UI',sans-serif\">VS Code<\/span><\/a><span style=\"font-family: 'Segoe UI',sans-serif\">) and create a Python file (hello.py) with the following content:<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blue\">print<\/span><span style=\"font-size: 9.0pt;font-family: 'Lucida Console'\">(<span style=\"color: darkred\">&#8220;Hello, world!&#8221;<\/span>) <\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-family: 'Segoe UI',sans-serif\">Save the file and copy it to your Nano Server machine:<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blue\">Copy-Item<\/span><span style=\"font-size: 9.0pt;font-family: 'Lucida Console'\"> <span style=\"color: navy\">-ToSession <\/span><span style=\"color: orangered\">$s<\/span> <span style=\"color: navy\">-Path<\/span> <span style=\"color: darkred\">&#8220;.\\hello.py&#8221;<\/span> <span style=\"color: navy\">-Destination <\/span><span style=\"color: darkred\">&#8220;C:\\&#8221;<\/span> <span style=\"color: navy\">-Force<\/span><\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-family: 'Segoe UI',sans-serif\">Remote into your Nano Server machine again, and run:<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blue\">Enter-PSSession<\/span><span style=\"font-size: 9.0pt;font-family: 'Lucida Console'\"> <span style=\"color: orangered\">$s<\/span>\n<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blue\">python<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">c:\\hello.py\n<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">Congratulations on running your first Python app on Nano Server <\/span><span style=\"font-family: Wingdings\">J<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 20.0pt 0in 6.0pt 0in\"><span style=\"font-size: 18.0pt;font-family: 'Calibri Light',sans-serif;color: #2e74b5\">Installing Django and creating your first app<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">Install Django and upgrade pip on Nano Server:<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blue\">python<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: navy\">-m<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">pip<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">install<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">&#8211;upgrade<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">pip<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blue\">pip<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">install<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">django <\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">Create a new Django project. This creates a new hello folder:<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blue\">django-admin.exe<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">startproject<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">hello <\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-family: 'Segoe UI',sans-serif\">Create views.py:<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blue\">cd<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">.\\hello\\hello\n<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blue\">copy<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">.\\urls.py<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">views.py <\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blue\">psEdit<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">.\\views.py\n<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">Replace the contents of views.py with the following:<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console'\">from django.http import HttpResponse <\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console'\">def index(request): <\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console'\"> return HttpResponse(&#8220;Hello, Django! Hello, Nano Server!&#8221;)<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">Edit urls.py:<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blue\">psEdit<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">.\\urls.py\n<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">Replace the contents of urls.py with the following:<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console'\">from django.conf.urls import url <\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console'\">from django.contrib import admin <\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console'\">urlpatterns = [ <\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console'\"> # Admin <\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console'\">url(r&#8217;^admin\/&#8217;, admin.site.urls), <\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console'\"> # <\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console'\"> url(r&#8221;, &#8216;hello.views.index&#8217;), <\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console'\">] <\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">Note: The project name \u201chello\u201d is case-sensitive!<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">Open port 8000:<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blue\">netsh<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">advfirewall<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">firewall<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">add<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">rule<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">name=&#8221;TCP-Port&#8221;<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">dir=in<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">action=allow<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">protocol=TCP<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">localport=8000\n<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">Start the app:<\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blue\">cd<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">.. <\/span><\/p>\n<p class=\"MsoNormal\" style=\"background: white\"><span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blue\">python<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">.\\manage.py<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">runserver<\/span> <span style=\"font-size: 9.0pt;font-family: 'Lucida Console';color: blueviolet\">0.0.0.0:8000\n<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">Use a browser and enter the IP address of the Nano Server machine: <a href=\"http:\/\/1.2.3.4:8000\">http:\/\/1.2.3.4:8000<\/a>, followed by a colon and the port number 8000.<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">Congratulations on your first Django app!<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 20.0pt 0in 6.0pt 0in\"><span style=\"font-size: 18.0pt;font-family: 'Calibri Light',sans-serif;color: #2e74b5\">What\u2019s next?<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">First Node.js and now Python &amp; Django. These are the first in a series of app frameworks we will document how to get running on Nano Server. Let us know what your favorite app framework is, and be generous with your feedback on your Python &amp; Django experience on Nano Server.<\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;line-height: 105%\"><span style=\"font-family: 'Segoe UI',sans-serif\">Happy coding <\/span><span style=\"font-family: Wingdings\">J<\/span><\/p>\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\"><span style=\"font-family: 'Segoe UI',sans-serif\">ref@<\/span><\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This post is contributed by Refaat Issa from the Nano Server team, and was originally posted on their blog. Nano Server has also blogged about their support for MySQL and Node.js. One of Nano Server\u2019s core scenarios is to serve as a lightweight OS for born-in-the-cloud applications running in a VM or a container. Nano [&hellip;]<\/p>\n","protected":false},"author":1333,"featured_media":10119,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-805","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python"],"acf":[],"blog_post_summary":"<p>This post is contributed by Refaat Issa from the Nano Server team, and was originally posted on their blog. Nano Server has also blogged about their support for MySQL and Node.js. One of Nano Server\u2019s core scenarios is to serve as a lightweight OS for born-in-the-cloud applications running in a VM or a container. Nano [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/posts\/805","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/users\/1333"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/comments?post=805"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/posts\/805\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/media\/10119"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/media?parent=805"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/categories?post=805"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/tags?post=805"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}