Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ao usar o IIS (Serviços de Informações da Internet) como um servidor Web em um computador Windows (incluindo máquinas virtuais do Windows no Azure), você precisa configurar o aplicativo Web Python para permitir que o IIS processe corretamente o código Python. A configuração é realizada por meio de configurações no arquivo web.config para o aplicativo Web Python. Este artigo descreve como definir as configurações necessárias.
Pré-requisitos
Python instalado no Windows. Para executar um aplicativo Web, primeiro instale sua versão necessária do Python diretamente no computador host do Windows, conforme descrito em Instalar interpretadores do Python.
- Identifique o local do interpretador de python.exe. Para conveniência, você pode adicionar esse local à variável de ambiente PATH.
Pacotes necessários instalados. Para um host dedicado, você pode usar o ambiente global do Python para executar seu aplicativo em vez de um ambiente virtual. Assim, você pode instalar todos os requisitos do aplicativo no ambiente global executando o comando
pip install -r requirements.txt
.
Definir web.config para apontar para o interpretador do Python
O arquivo web.config para seu aplicativo Python instrui o servidor Web do IIS (versão 7 ou posterior) em execução no Windows sobre como ele deve lidar com solicitações do Python por meio de HttpPlatformHandler (recomendado) ou FastCGI. As versões do Visual Studio 2015 e anteriores fazem essas modificações automaticamente. Para o Visual Studio 2017 e posterior, você deve modificar o arquivo web.config manualmente.
Se o projeto ainda não contiver um arquivo web.config , você poderá adicionar um clicando com o botão direito do mouse no diretório do projeto, selecionando Adicionar > Novo Item e pesquisando web.config ou criando um arquivo XMLweb.config em branco.
Opção 1: Configurar o HttpPlatformHandler
O módulo HttpPlatform passa conexões de soquete diretamente para um processo autônomo do Python. Essa passagem permite que você execute qualquer servidor Web desejado, mas requer um script de inicialização que execute um servidor Web local. Essa abordagem geralmente é feita usando uma estrutura Web do Python, como Flask ou Django. Especifique o script no <httpPlatform>
elemento do arquivo web.config . O atributo processPath
aponta para o interpretador python da extensão do site. O arguments
atributo aponta para o script de inicialização que executa um servidor Web local, nesse caso runserver.py e todos os argumentos que você deseja fornecer:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="PythonHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="c:\python36-32\python.exe"
arguments="c:\home\site\wwwroot\runserver.py --port %HTTP_PLATFORM_PORT%"
stdoutLogEnabled="true"
stdoutLogFile="c:\home\LogFiles\python.log"
startupTimeLimit="60"
processesPerApplication="16">
<environmentVariables>
<environmentVariable name="SERVER_PORT" value="%HTTP_PLATFORM_PORT%" />
</environmentVariables>
</httpPlatform>
</system.webServer>
</configuration>
Neste exemplo, a variável de ambiente HTTP_PLATFORM_PORT
contém a porta na qual o servidor local deve aguardar conexões de localhost
. Este exemplo também mostra como criar outra variável de ambiente, SERVER_PORT
. Você pode criar e atribuir variáveis de ambiente conforme necessário.
Opção 2: Configurar o manipulador FastCGI
Como alternativa, você pode usar o FastCGI para configurar seus aplicativos. FastCGI é uma interface que funciona no nível da solicitação. O IIS recebe conexões de entrada e encaminha cada solicitação para um aplicativo WSGI (Interface de Gateway do Servidor Web) em execução em um ou mais processos persistentes do Python.
Nota
Embora você possa configurar seu projeto usando FastCGI, recomendamos usar HttpPlatformHandler para configurar seus aplicativos porque o projeto WFastCGI não é mais mantido e pode resultar em bugs.
Para usar o FastCGI, primeiro instale e configure o pacote wfastcgi, conforme descrito em pypi.org/project/wfastcgi/.
Em seguida, modifique o arquivo web.config do aplicativo para incluir os caminhos completos para o executável python.exe e o arquivo wfastcgi.py na chave PythonHandler
. As etapas a seguir pressupõem que o Python está instalado na pasta c:\python36-32 do e o código do aplicativo está na pasta c:\home\site\wwwroot. Ajuste esses valores para seus caminhos adequadamente.
Modifique a
PythonHandler
entrada no arquivo web.config para que o caminho corresponda ao local de instalação do Python. Para obter mais informações, consulte Referência de configuração do IIS no iis.net.<system.webServer> <handlers> <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="c:\python36-32\python.exe|c:\python36-32\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/> </handlers> </system.webServer>
<appSettings>
Na seção do arquivo web.config, adicione chaves paraWSGI_HANDLER
,WSGI_LOG
(opcional) ePYTHONPATH
:<appSettings> <add key="PYTHONPATH" value="c:\home\site\wwwroot"/> <!-- The handler here is specific to Bottle; see the next section. --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/> <add key="WSGI_LOG" value="c:\home\LogFiles\wfastcgi.log"/> </appSettings>
Esses valores de
<appSettings>
estão disponíveis para seu aplicativo como variáveis de ambiente:- O valor da chave
PYTHONPATH
pode ser estendido livremente, mas deve incluir a raiz do aplicativo. - A chave
WSGI_HANDLER
deve apontar para um aplicativo WSGI importável do seu aplicativo. - A chave
WSGI_LOG
é opcional, mas é recomendada para depurar o aplicativo.
- O valor da chave
Defina a
WSGI_HANDLER
entrada no arquivo web.config conforme apropriado para a estrutura que você está usando:Bottle: adicione parênteses após o valor
app.wsgi_app
, conforme mostrado neste exemplo. Os parênteses são necessários porque o objeto é uma função em vez de uma variável. Você pode ver a sintaxe no arquivo app.py .<!-- Bottle apps only --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/>
Flask: altere o valor de
WSGI_HANDLER
para<project_name>.app
, em que<project_name>
corresponde ao nome do seu projeto. Você pode encontrar o identificador exato examinando afrom <project_name> import app
instrução no arquivo runserver.py . Por exemplo, se o projeto for chamado FlaskAzurePublishExample, a entrada será exibida da seguinte maneira:<!-- Flask apps only: Change the project name to match your app --> <add key="WSGI_HANDLER" value="FlaskAzurePublishExample.app"/>
Django: duas alterações são necessárias para o arquivo web.config para projetos do Django.
Altere o valor do
WSGI_HANDLER
paradjango.core.wsgi.get_wsgi_application()
. O objeto está no arquivo wsgi.py .<!-- Django apps only --> <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>
Adicione a entrada a seguir imediatamente após a entrada da chave
WSGI_HANDLER
. Substitua o valorDjangoAzurePublishExample
pelo nome do seu projeto:<add key="DJANGO_SETTINGS_MODULE" value="django_iis_example.settings" />
Somente aplicativos Django: no arquivo de settings.py do projeto do Django, adicione o domínio da URL do site ou o
ALLOWED_HOSTS
endereço IP à entrada. Substitua '1.2.3.4' por sua URL ou endereço IP:# Change the URL or IP address to your specific site ALLOWED_HOSTS = ['1.2.3.4']
Se você não adicionar a URL aos resultados da matriz, verá o seguinte erro:
DisallowedHost at / Invalid HTTP_HOST header: '<site URL>'. You might need to add '<site URL>' to ALLOWED_HOSTS.
Quando a matriz estiver vazia, o Django permitirá automaticamente 'localhost'
e '127.0.0.1'
como hosts. Se você adicionar a URL de produção, esses sites de hospedagem não serão permitidos automaticamente. Por esse motivo, talvez você queira manter cópias separadas de desenvolvimento e produção do arquivo settings.py ou usar variáveis de ambiente para controlar os valores de runtime.
Implantar no IIS ou em uma máquina virtual do Windows
Quando você tiver o arquivo deweb.config correto em seu projeto, poderá publicar no computador que está executando o IIS no Gerenciador de Soluções. Clique com o botão direito do mouse no projeto, selecione Publicar e selecione IIS, FTP etc.. Nessa situação, o Visual Studio copia apenas os arquivos de projeto para o servidor. Você é responsável por todas as configurações do lado do servidor.