Entendi!
PythonHandler mod_python.publisher
precisa ser
PythonHandler mod_python.cgihandler
Então você pode executar o Python como CGI.
O Apache instalado e a raiz da Web padrão era / var / www Eu queria mudar o cgi-bin para algum lugar dentro do / var / www, mas não posso. Funciona apenas em / usr / lib / cgi-bin.
Eu até tentei colocar um diretório webroot no meu diretório home com um cgi-bin nele e fiz as mudanças de acordo com o conf. mas a única maneira de funcionar é quando as configurações do cgi-bin apontam para / usr / lib / cgi-bin.
VirtualHost:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
#DocumentRoot /var/www
DocumentRoot /home/aj/public_html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
#<Directory /var/www/>
<Directory /home/aj/public_html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On
</Directory>
ScriptAlias /cgi-bin/ /home/aj/public_html/cgi-bin/
#ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
#<Directory /usr/lib/cgi-bin/>
<Directory /home/aj/public_html/cgi-bin/>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel debug
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
O log do Apache tem esse erro:
script not found or unable to stat: /home/aj/public_html/cgi-bin
Mais algumas informações:
Depois de fazer um comando "ps -AF | grep" recebi o resultado de volta e acho que os processos do Apache estão rodando como root ou www-data. Aqui está o despejo:
root 22762 1 0 8543 8952 0 00:30 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 22764 22762 0 8669 5928 0 00:30 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 22765 22762 0 8543 5152 0 00:30 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 22766 22762 0 8669 5928 0 00:30 ? 00:00:00 /usr/sbin/apache2 -k start
Por favor ajude. Obrigado.
Se a conta de usuário na qual o Apache está sendo executado (guest? nobody?) não tiver acesso a /home/aj/public/cgi-bin
, você verá esse erro.
Analise as configurações Usuário e Grupo no httpd.conf
e examine também a saída deste comando:
ls -ld /home/aj /home/aj/public_html /home/aj/public_html/cgi-bin
O usuário do Apache seria capaz de ver o diretório cgi-bin?
De que maneira o uso de, e. /var/www/cgi-bin
não funciona?
Houve alguma mensagem de erro na inicialização ou você viu um erro no navegador ao enviar uma solicitação para um script?
Possivelmente você tenha o mesmo problema com /var/www
do seu diretório pessoal; ou seja, o processo do Apache não tem acesso a essa pasta.
Observe que tudo isso é conjectura até sabermos quais contas e permissões de usuário estão em vigor.
Se cou é proficiente com strace, sugiro que você execute uma instância não bifurcada do httpd através do strace e veja porque os erros aparecem. Strace dirá se é problema de permissão ou caminho errado.
Tags apache-http-server