Como usar o Python como uma linguagem de servidor da perspectiva do PHP

11

Eu sei apenas programação do lado do servidor com PHP. Para mim, escrevo algo index.phpe ligo http://localhost/index.phpe vejo os resultados do script PHP. Eu tenho usado o CakePHP e entendo que há algo que você pode fazer com a reescrita de URL, mas, em minha opinião, existe essa relação individual entre URLs e arquivos PHP no servidor.

Agora eu faço muito com Python, mas apenas utilitários de linha de comando. Eu gostaria de usar Python em vez de PHP para o meu próximo projeto. Até agora, me disseram mod_pythonque eu tenho que usar uma estrutura como Pylons ou Twisted ou até Django para obter alguma saída. Outros disseram que eu tenho apenas print()um cabeçalho HTTP e, em seguida, o script seria exibido como se eu fosse usado com PHP.

Gostaria de escrever algo que basicamente pegue apenas uma lista de diretórios e a torne bonita, para que eu possa acessar vários arquivos PDF em um navegador móvel. Eu sei como fazer isso com PHP, sei como criar um script Python que geraria o HTML. Só não sei como executar esse script quando abro http://localhost/pdfcentral/.

Como eu precisaria configurar meu servidor? É executado no Ubuntu 10.04.

Martin Ueding
fonte
Existem muitas variações que você pode usar, mas a maneira mais simples seria colocar o script Python em seu cgi-bindiretório para que o servidor saiba executá-lo e, opcionalmente, fazer um arquivo PHP redirecionar para ele, se você desejar usar um caminho diferente. Em relação ao próprio script Python, você pode seguir este procedimento: forrestbao.blogspot.com/2009/08/…
ionFish

Respostas:

9

mod_pythonnão está mais sendo desenvolvido ativamente. Embora o Apache diga que isso não significa que o projeto esteja morto -

Atualmente, o mod_python não está em desenvolvimento ativo. Isso não significa que está "morto", como algumas pessoas alegaram. Simplesmente significa que o código e o projeto estão maduros o suficiente quando é necessário muito pouco para mantê-lo.

Mas, sugere-se que você use mod_wsgi . Ou seja, se você deseja construir tudo do zero. O que eu sugiro, você não deveria, a menos que esteja usando isso como um exercício de aprendizado.

Seria melhor usar uma estrutura da Web para fazer o trabalho pesado - manipulação de roteamento, solicitações e afins

Uma lista abrangente de estruturas da Web Python está disponível aqui , mas aqui estão algumas que são populares -

  • Django - É considerado o equivalente em Python do Ruby on Rails e é bastante resistente, portanto, não seria adequado para o que você precisa.
  • Frasco - É um microframework. Ou seja, é pequeno, não atrapalha e é ideal para projetos menores que não exigem muita bateria incluída.
  • Pirâmide - É construída pelo mesmo grupo de pessoas que construiu Pylons, o que não é extinto. Está em algum lugar entre o Flask e o Django - pode ser usado como um substituto para ambos.
  • Garrafa - Essa é outra microframework e é ainda mais mínima que o Flask. É apenas um arquivo e não possui dependências (se você usar o mecanismo de modelagem interno) que não seja a biblioteca padrão; portanto, seria um bom ajuste para o que você deseja.
  • Web.py - Uma vez ativado o Reddit (que foi reescrito com novas ferramentas após ser adquirido).
  • webapp2 - é a estrutura padrão para o Google App Engine (embora você possa usar outras estruturas lá).

Destes, eu recomendaria o Flask, pois o usei e não tenho queixas. Ele também possui muitas extensões que facilitariam a vida se você quiser mais recursos no seu site.

Além disso, você precisaria de um mecanismo de modelo - para montar seu html. Jinja2 , construído pelos mesmos caras que fazem o Flask, e é bastante usado. Mas, vindo do phpdesenvolvimento da web, você pode achar o uso do Mako mais natural, o que também é bastante popular.

Aqui está uma pergunta mais abrangente sobre o desenvolvimento da Web em Python - Perguntas frequentes sobre o Python: Webdev .

elssar
fonte
11
Agora, tenho um pequeno projeto Flask em execução com o FastCGI e o lighttpd em uma máquina de teste, que também deve ser executada no servidor. Muito obrigado!
Martin Ueding
1

Achei a pergunta um pouco confusa e, se estou certo, assumo que seu principal objetivo é servir arquivos para o seu celular usando um estilo bonito?

Se isso for verdade, você não precisará executar muitos loops para configurar algo.

O Apache2 permite editar o diretório principal de listagem de arquivos para que você possa estilizá-lo da maneira que desejar.

Também existem muitos temas principais disponíveis on-line, basta pesquisar no Google por Theme for Apache2 Directory Listing, tornando-o responsivo também não seria difícil.

Aqui estão algumas informações sobre como alterar a aparência padrão do Apache

E aqui estão alguns modelos prontos para conferir, há muitos mais ....

Repos Style

Recursor

Índices

Simon Hayter
fonte
Isso parece resolver o problema inicial muito bem. Eu pensei que eu poderia usar isso como um primeiro projeto para mudar de PHP para Python. Se o projeto Python parar, vou dar uma olhada nisso. Obrigado!
Martin Ueding 30/01
De nada;)
Simon Hayter