Соглашения по каталогам и именам файлов

Прежде всего, сценарии CGI должны быть помещены в каталог, который веб-сервер распознает как каталог программ, и им должны даваться имена, которые сервер распознает как имена сценариев CGI. Для использования с локальным веб-сервером, задействованным в этой главе, сценарии должны помещаться в специальный подкаталог cgi-bin и иметь расширение .py. На сервере, использовавшемся для опробования примеров во втором издании книги, напротив, CGI-сценарии должны были помещаться в каталог public_html, как обычные файлы HTML, а имена файлов сценариев должны были оканчиваться расширением .cgi, а не .py. Некоторые серверы допускают расширения .py имен файлов и могут распознавать другие каталоги программ, но в этом они могут существенно отличаться друг от друга, иногда в зависимости от настроек, установленных для сервера или для пользователя.

Соглашения по выполнению

Поскольку сценарии CGI должны выполняться веб-сервером от имени произвольных пользователей в Сети, их файлам также требуется дать право на выполнение, чтобы пометить их как программы, и разрешение на выполнение должно быть дано остальным пользователям. На большинстве серверов это можно сделать командой оболочки chmod 0755 filename.

На некоторых серверах сценарии CGI также должны начинаться со строки #! , определяющей интерпретатор Python, который будет выполнять программный код в файле. Текст после #! в первой строке просто указывает путь к выполняемому файлу Python на сервере. Подробнее об этой специальной первой строке читайте в главе 3 и обязательно ознакомьтесь с соглашениями, действующими на вашем сервере, если он работает не под управлением Unix.

Некоторые серверы могут требовать наличие этой строк, даже если они работают не под управлением Unix. Большинство сценариев CGI в этой книге содержат строку #! на тот случай, если когда-нибудь они будут выполняться в Unix-подобных системах, — наш локальный веб-сервер при выполнении в Windows просто игнорирует первую строку, интерпретируя ее как комментарий Python.

Следует отметить одну тонкость: как было показано выше в книге, специальная первая строка в выполняемых текстовых файлах обычно может содержать либо жестко определенный путь к интерпретатору Python (например, #!/usr/bin/python), либо вызов программы env (например, #!/usr/bin/env python), которая определяет местонахождение Python по значениям переменных окружения (например, $PATH). Однако прием с env менее полезен в сценариях CGI, так как значения их переменных окружения будут соответствовать пользователю «nobody» (а не вашим настройкам), что разъясняется в следующем абзаце.

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий