Open numeroteca opened 4 years ago
Mi configuración de Apache /etc/apache2/apache2.conf
:
https://gist.github.com/numeroteca/37460e94fd4a67f01d87c08249241693
Por favor, ¿me podrías indicar cuales son los permisos del directorio /home/numeroteca/data/t-hoarder/web/scripts/ y del fichero tweets_talk_cgi.py?
Estos son los permisos:
drwxr-xr-x /home/numeroteca/data/t-hoarder/web/scripts/
-rwxr-xr-x tweets_talk_cgi.py
Son los permisos correctos. Voy aprobar tu apache2.conf en mi servidor cambiando la ubicación de los datos
Mira a ver si es esto <Directory "/home/numeroteca/data/t-hoarder/web/scripts"> Options +ExecCGI
#PythonHandler mod_python.publisher
**AddHandler cgi-script .pl**
Order allow,deny
Allow from all
</Directory>
debería ser AddHandler cgi-script .py
Tampoco me funciona esto. Se me había quedado el .pl de cuando traté de hacer este tutorial con un hello world con perl que no llegó a funcionar. De hecho creo que tengo que intentar que funcione eso para poder seguir adelante.
He cargado tu apache2.conf en mi servidor y funciona. Debe ser algo de la instalación de apache que te falte. Hay que verificar que está incluido el módulo de cgi.
Mira si existe el fichero /usr/lib/apache2/modules/mod_cgi.so Es el fichero que intenta cargar el cgi.load
En vista de que nada me funciona y de que parece ser un problema de la instalaci'on de apache, he desistalado, purgado y vuelto a instalar.
Una vez instalado he ejecutado sudo a2enmod cgi
para activar CGI, me dice:
Your MPM seems to be threaded. Selecting cgid instead of cgi.
Enabling module cgid.
To activate the new configuration, you need to run:
systemctl restart apache2
Que quiere decir según esto que:
Si ejecuto sudo a2enmod cgid
dice que
Module cgid already enabled
Entonces ¿en qué archivo tengo que indicar que los .py sean ejecutados como CGI? ¿en serve-cgi-bin.conf
,000-default.conf
o en /etc/apache2/apache2.conf
o en varios?
con este código:
ScriptAlias "/scripts/" "/home/numeroteca/data/t-hoarder/web/scripts/"
<Directory /home/numeroteca/data/t-hoarder/web/scripts/>
Options +ExecCGI
AddHandler cgi-script .py
Order allow,deny
Allow from all
</Directory>
En mi instalación de apache2 solo tuve que configurar el apache2.conf e incluir el modulo CGI. El enlace que me indicas es de un problema detectado hace cuatro años. https://askubuntu.com/questions/683126/1404-your-mpm-seems-to-be-threaded-selecting-cgid-instead-of-cgi-module-cgid en la versión 14 de Ubuntu Yo instalé un servidor apache2 hace menos de un año sin ningún problema sobre ubuntu 18 LTS Yo solo modificaría apache2.conf tal como lo tienes ahora que funciona en mi servidor
@skotperez sugiere, sin haber entrado a estudiar el tema en profundidad, que puede tener que ver con la versión de python que apache puede ejecutar, si es 2 y pido la 3 o viceversa.
Así es como lo configuró él para instalar Django, por si tuviera que ver. Este código va en el virtual hort:
WSGIDaemonProcess poll user=nombreusuario group=nombreusuario maximum-requests=1000 request-timeout=10 home=/home/nombreusuario/www/themes/django-poll/poll
WSGIProcessGroup poll
WSGIScriptAlias /polls /home/nombreusuario/www/themes/django-poll/poll/poll/wsgi.py process-group=poll
<Directory "/home/nombreusuario/www/themes/django-poll/poll/poll">
<Files wsgi.py>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Files>
</Directory>
Para instalar Django en entorno virtual: sudo pip3 install virtualenvwrapper
Luego hay que añadir las siguientes líneas a ~/.bashrc:
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS=' -p /usr/bin/python3 '
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh
Para crear un nuevo entorno virtual: mkvirtualenv my_django_environment
Para interactuar con el entorno virtual:
deactivate — Exit out of the current Python virtual environment
workon — List available virtual environments
workon name_of_environment — Activate the specified Python virtual environment
rmvirtualenv name_of_environment — Remove the specified environment.
He cambiado de instalación de Ubuntu, ahora estoy con la 20.04 y me vuelve a dar el mismo error. No sé muy bien qué mirar más.
Avances:
tweets_talk_cgi.py
t-hoarder/web/scripts/tweets_talk_cgi.py
tienen que modificarse:
dir_base='/home/numeroteca/t-hoarder/web/'
home='http://localhost/'
En mi caso localhost porque así lo tengo configurado en local.
por aclarar cómo compaginar esto con actualizar t-hoarder.
make_experiment
Ojo, el archivo /t-hoarder/blob/master/scripts/make_experiment ha cambiado su última línea, así no hay que cambiar los permisos para que /t-hoarder/scripts/join_results.py
tenga permisos de ejecución.
Pasó /hace un año, no lo había visto) de
join_results.py ${experiment} --dir_in ${root_directory}/t-hoarder/store/${experiment} --dir_out ${root_directory}/t-hoarder/web/${experiment}
a
python2.7 ${root_directory}/t-hoarder/scripts/join_results.py ${experiment} --dir_in ${root_directory}/t-hoarder/store/${experiment} --dir_out ${root_directory}/t-hoarder/web/${experiment}
Como llevo un tiempo sin actualizar t-hoarder algunos cambios de make_experiment
no los tengo actualizados.
En cualquier caso, el procesado de tuits funciona, el problema parece estar relacionado con hacer correr CGI en mi servidor local.
Estoy tratando de hacer funcionar el procesado que hace t-hoarder de todos los archivos comprimidos (.tar.gz) de un experimento. He documentado en la wiki parte del proceso.
Me está costando hacerlo funcionar por un problema de configuración de CGI. Caad vez que acedo a la web del experimento me sale el archivo tweets_talk_cgi.py como si lo quisiera descargar: en vez de ejecutarlo.
He seguido este manual https://httpd.apache.org/docs/2.4/es/howto/cgi.html y este otro https://code-maven.com/set-up-cgi-with-apache
Usaré este hilo para documentar cómo tengo configurado todo a ver si consigo hacerlo funcionar.
En /etc/apache2/conf-available$ mi archivo
serve-cgi-bin.conf
es:En
/etc/apache2/mods-enabled
tengo: lrwxrwxrwx 1 root root 26 jun 19 17:29 cgi.conf -> ../mods-available/cgi.conf lrwxrwxrwx 1 root root 26 jun 10 16:53 cgi.load -> ../mods-available/cgi.loady en
/etc/apache2/mods-available
tengo: lrwxrwxrwx 1 root root 24 jun 19 17:30 cgi.conf -> ../mods-enabled/cgi.conf -rw-r--r-- 1 root root 115 oct 10 2018 cgid.conf -rw-r--r-- 1 root root 60 oct 10 2018 cgid.load -rw-r--r-- 1 root root 58 oct 10 2018 cgi.loadSí, hay una doble liga recursiva, sí.
Seguiré informando :) @congosto