Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. 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 Windows no Azure), você precisa configurar o aplicativo Web Python para habilitar o IIS a processar 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 foi instalado no Windows. Para executar um aplicativo Web, primeiro instale sua versão necessária do Python diretamente na máquina host Windows, conforme descrito em Instalar interpretadores Python.
- Identifique a localização do intérprete
python.exe. Por conveniência, você pode adicionar esse local à sua variável de ambiente PATH.
- Identifique a localização do intérprete
Pacotes necessários instalados. Para um host dedicado, você pode usar o ambiente Python global para executar seu aplicativo em vez de um ambiente virtual. Assim, você pode instalar todos os requisitos do seu aplicativo no ambiente global executando o comando
pip install -r requirements.txt.
Defina web.config para apontar para o interpretador Python
O arquivo web.config para seu aplicativo Python instrui o servidor Web IIS (versão 7 ou posterior) em execução no Windows sobre como ele deve lidar com solicitações Python por meio de HttpPlatformHandler (recomendado) ou FastCGI. As versões 2015 e anteriores do Visual Studio fazem essas modificações automaticamente. Para o Visual Studio 2017 e posterior, você deve modificar o arquivo web.config manualmente.
Se o seu projeto ainda não contém um arquivo web.config, você pode adicionar um clicando com o botão direito do mouse no diretório do projeto, selecionando Adicionar > Novo Item e procurando por web.config ou criando um arquivo XML web.config em branco.
Opção 1: Configurar o HttpPlatformHandler
O módulo HttpPlatform passa conexões de soquete diretamente para um processo Python autônomo. Essa passagem permite que você execute qualquer servidor Web que desejar, mas requer um script de inicialização que execute um servidor Web local. Essa abordagem geralmente é feita usando um framework web Python, como Flask ou Django. Você especifica o script no elemento <httpPlatform> do arquivo web.config. O atributo processPath aponta para o interpretador Python da extensão de site. O atributo arguments aponta para o script de inicialização que executa um servidor Web local, neste caso runserver.py, e quaisquer argumentos que você queira 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 escutar 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 de solicitação. O IIS recebe conexões de entrada e encaminha cada solicitação para um aplicativo WSGI em execução em um ou mais processos Python persistentes.
Observação
Embora possa configurar o seu projeto utilizando FastCGI, recomendamos usar HttpPlatformHandler para configurar os seus aplicativos, pois 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 esteja instalado na pasta c:\python36-32 e que o código do aplicativo esteja na pasta c:\home\site\wwwroot. Ajuste esses valores para seus caminhos de acordo.
Modifique a entrada
PythonHandlerno arquivoweb.configpara que o caminho corresponda ao local de instalação do Python. Para obter mais informações, consulte Referência de Configuração do IIS (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>Na seção
<appSettings>do arquivoweb.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>Estes valores
<appSettings>estão disponíveis para seu aplicativo como variáveis de ambiente:- O valor da chave
PYTHONPATHpode ser estendido livremente, mas deve incluir a raiz do seu aplicativo. - A chave
WSGI_HANDLERdeve apontar para um aplicativo WSGI importável do seu aplicativo. - A chave
WSGI_LOGé opcional, mas é recomendada para depurar seu aplicativo.
- O valor da chave
Defina a entrada
WSGI_HANDLERno arquivo deweb.configconforme 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 e não uma variável. Você pode ver a sintaxe no arquivoapp.py.<!-- Bottle apps only --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/>Flask: Altere o valor
WSGI_HANDLERpara<project_name>.apponde<project_name>corresponde ao nome do seu projeto. Você pode encontrar o identificador exato observando a instruçãofrom <project_name> import appno arquivorunserver.py. Por exemplo, se o projeto for nomeadoFlaskAzurePublishExample, a entrada aparecerá 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.configpara projetos Django.Altere o valor
WSGI_HANDLERparadjango.core.wsgi.get_wsgi_application(). O objeto está no arquivowsgi.py.<!-- Django apps only --> <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>Adicione a seguinte entrada imediatamente após a entrada para a chave
WSGI_HANDLER. Substitua o valorDjangoAzurePublishExamplepelo nome do seu projeto:<add key="DJANGO_SETTINGS_MODULE" value="django_iis_example.settings" />
aplicações Django apenas: No ficheiro
settings.pydo projeto Django, adicione o domínio do URL do seu site ou o endereço IP à entradaALLOWED_HOSTS. Substitua '1.2.3.4' pelo seu 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 sua 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 está vazia, o Django permite automaticamente 'localhost' e '127.0.0.1' como hosts. Se adicionar a sua URL de produção, esses sites de hospedagem não serão automaticamente permitidos. Por esse motivo, convém manter cópias separadas de desenvolvimento e produção do arquivo settings.py ou usar variáveis de ambiente para controlar os valores de tempo de execução.
Implantar no IIS ou em uma máquina virtual do Windows
Quando você tiver o arquivo de web.config correto em seu projeto, poderá publicar no computador que está executando o IIS a partir de Gerenciador de Soluções. Clique com o botão direito do rato no projeto, selecione Publicare depois selecione IIS, FTP, etc.. Nessa situação, o Visual Studio copia apenas os arquivos de projeto para o servidor. Você é responsável por toda a configuração do lado do servidor.