Windows + Lighttpd + Python краткая инструкция по запуску

    Под катом краткая инструкция по установке и настройке вышеуказанной связки. Через поиск не нашел, когда ставил для себя пришлось порыться по инету.



    Шаг первый.

    Качаем и ставим Lighttpd для Windows.

    Шаг второй.

    Качаем и ставим питон для Windows.

    Шаг третий.

    Настраиваем конфиги, идем в C:\Program Files\LightTPD\conf и правим файл lighttpd-inc.conf, а именно:

    Раскомментировать
    server.modules = (
    ...
                                 "mod_cgi",
                                 "mod_rewrite",
    ...
                                   )


    Задать полный путь к каталогу в котором будет находиться наш базовый сайт, задать нужно полностью (pytрon.exe не будет исполнять .py файлы по относительным путям) и с прямым слэшем.
    server.document-root        = "C:/Program Files/LightTPD/HTDOCS/"


    Добавить описание заголовочного файла на питоне:
    index-file.names  = ( "index.py", "index.php", "index.pl", "index.cgi",
                                    "index.html", "index.htm", "default.htm" )


    Занести питоновские файлы в исключения, чтобы не относить его к статическому контенту:
    static-file.exclude-extensions = ( ".php", ".pl", ".cgi",".py" )


    И самое главное, указываем полный путь к местанахождению интерпретатора питона:
    cgi.assign            = ( ".py" => "C:/Python27/python.exe")


    Если 80 порт уже используется каким-либо веб-сервером или приложением стоит проверить строку с привязкой к порту и изменить на свободный:
    server.port          = 81


    Запускаем Lighttpd сервер (C:\Program Files\LightTPD\TestMode.bat)

    Шаг четвертый.

    Создаем тестовый файл на питоне. Я использовал следующий код:
    
    #!C:\Python27\python.exe -u
    #!/usr/bin/env python
    
    import cgi
    import cgitb; cgitb.enable() # for troubleshooting
    print "Content-type: text/html"
    print
    
    print """
    <html>
    <head><title>Sample CGI Script</title></head>
    <body>
    <h3> Sample CGI Script </h3>
    """
    form = cgi.FieldStorage()
    message = form.getvalue("message", "(no message)")
    print """
    <p>Previous message: %s</p>
    <p>form
    form method="post" action="index.py"
    <p>message: <input type="text" name="message"/></p>
    </form>
    </body>
    </html>
    """ % cgi.escape(message)
    


    Но конечно можно ограничиться и более простым

    print "hello";


    Называем файл index.py и ложим по пути C:\Program Files\LightTPD\htdocs.

    Тестируем вбив в адресную строку:
    http://localhost:81/index.py
    , должно работать и просто
    http://localhost:81


    Тестировалось на Windows Server 2008 R2 x64. Должно по идее работать на любой версии ОС.
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 13

      +6
      Главное достоинство CGI — это его простота. Оно же — единственное. Использовать же CGI на практике абсолютно нереально, разве что вы не пользуетесь сервисом единолично, и вас не смущают тормоза. Каждый новый запрос создает новый процесс, что требует немало времени, не говоря уже о потреблении памяти. А тем более, запускается не скомпилированная программа, а тяжеленный интерпретатор.
        +1
        Lighttpd умеет и FastCGI, у которого, по идее, указанных вами недостатков нет. У меня таким образом в нем php крутится. Хотя идея запуска всего на Windows немного странная. Я понимаю, на localhost'е, для отладки еще куда ни шло. Но вряд ли человек на свою машину домашнюю Windows Server 2008 R2 поставил.
        +4
        > и с обратным слэшем

        Обратный — это в другую сторону. ;)
          –1
          Обратный привычному виндовому слэшу )
            +8
            обратный привычный виндовому обратному слэшу)
              +2
              Всё-таки исправьте)
                +1
                Подправил)
              +2
              Использовал Lighttpd+Python под Windows для централизованного репозитория Mercurial. Столкнулся с одной проблемой:
              Поскольку в Windows имена файлов «case insensative», lighttpd приводит все имена скриптов, файлов и пути к lowercase. Из-за этого, Mercurial (написанный на Python и использующий виртуальные пути, типа http://localhost/hg/MyRepo), не смог видеть репозитории, содержащие заглавные буквы в названии. Никакие игры с настройками не помогли и пришлось качать исходники, править и компилировать.
              Это было год назад, возможно сейчас этой проблемы нет, но все равно, при работе в Windows+Python будьте осторожны!
                +4
                > Windows + Lighttpd + Python

                NOOOOOOOO! ЗА ЧТОООООО??7
                • UFO just landed and posted this here

                Only users with full accounts can post comments. Log in, please.