2013-06-26 3 views
1

Я пытаюсь настроить LAMP-сервер в своей лаборатории, и мне не удается заставить Apache выполнять файлы .py. Вместо этого он просто загружает их. Сначала я подумал, что мой заголовок might be wrong, но когда я его изменил, к сожалению, я все еще не выполняю .py. С положительной стороны я могу загрузить сайт, запустить PHP и CRUD MySQL. Я думаю, проблема может заключаться в том, как я настраиваю свой виртуальный хост. Вот apache2.conf:Настройка Apache на Ubuntu LAMP Server для выполнения Python в виртуальном хосте

<VirtualHost *:80> 
    Alias "/SiteIwant" "/var/www/SiteIwant" 
    ServerName localhost 
    DocumentRoot /var/www/SiteIwant 
    CustomLog /var/www/SiteIwant/my_access.log combined 
    ErrorLog /var/www/SiteIwant/my_error.log 
     AddType application/x-httpd-php .php 
     SetEnv LD_LIBRARY_PATH /etc/init.d/mysql 
    <Directory /var/www/SiteIwant> 
     Options None ExecCGI 
     AddHandler cgi-script .cgi .pl .py 
     #AddHandler mod_python .py 
     DirectoryIndex index.php 
     AllowOverride AuthConfig 
     Order deny,allow 
     Deny from All 
      Allow from 999.999.999.0/24 #anonymized for posting here, but working 
    </Directory> 
# <Directory /var/www/SiteIwant/cgi/> 
    # AllowOverride All 
    # Options +ExecCGI +SymLinksIfOwnerMatch 
    # Order allow,deny 
    # Allow from all 
    #</Directory> 
</VirtualHost> 

Я пробовал и без спецификации на папке CGI, и я chkmod +rwx *.py в /var/www/SiteIwant/cgi. Просто для ударов (после этого не помогло), я также изменил режим интерпретатора python в/usr/bin и/usr/local/bin до + rwx.

Все остальное в файле apache2.conf, как это происходит из текущей установки Ubuntu Server-LAMP.

Я чувствую себя очень застрявшим и, как будто мне не хватает чего-то глупого/маленького.

Редактировать: Должно ли быть действительно задано на сервере Ошибка?

Если я положил AddHandler cgi-script .cgi .pl .py за пределы виртуального хоста, я получаю ошибку разрешения 403, несмотря на chmod 777 в этой папке.

ответ

1

поздно ответ, я получил через там и получил эту работу, добавив ExecCGI в опции каталога, или для большей безопасности, как это:

<Directory /path/to/www/yourfile.py> 
Options +ExecCGI 
</Directory> 
+0

Большое спасибо за рытье. Это работало как шарм. Это закрытая сеть, поэтому я не слишком беспокоюсь о безопасности, но почему это было бы более безопасно? –

+1

В моем примере я разрешил только _/path/to/www/yourfile.py_ выполнять CGI, поэтому даже если вредоносный файл помещается в тот же каталог, он не будет выполняться веб-сервером. – Albirew

0

У вас установлен и включен модуль apache wsgi?

+0

Я не знаю, короткий ответ, я пытаясь проверить сейчас. Я, конечно, не делал этого вручную, если он не был включен в установку LAMP. –

+0

Я думаю, вы, возможно, говорите о mod_wsgi, и в этом случае я не думаю, что это так. Должен ли я установить его? Просто смотрите здесь: https://help.ubuntu.com/community/HelpOnInstalling/ApacheWithModWSGI Я бы не подумал, что это необходимо? –

0

Это утверждение в виртуальный хост и/или глобальной конфигурации должно быть достаточно (и вы его в вашей конфигурации):

AddHandler cgi-script .py 

ли вы перезагрузить Apache после изменения конфигурации? Если это не сработает, вы должны проверить журнал ошибок вашего веб-сервера, он должен дать некоторые подсказки о причине проблемы.

Кроме того, вы не описали, что происходит, когда вы посещаете URL-адрес хостинга скрипта python, появляется ли сообщение об ошибке?

+0

Когда вы посещаете скрипт python, он просто загружает питон и отображает его в виде обычного текста. Кажется, что ошибка не генерируется (в журнале также). И, похоже, у меня есть обработчик, добавленный в конфигурацию vhost. –

+1

Быстрый тест говорит мне, что этого должно быть достаточно. Проверьте разрешения файла (читаемый и исполняемый с помощью uid, который использует веб-сервер), и если ваш оператор находится в правом vhost. –

+0

Что касается перезагрузки, я запускал sudo apache2ctl restart, это то же самое? –