• Publicidad

Cómo configurar Apache

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Cómo configurar Apache

Notapor L0rd5had0w » 2008-08-09 12:53 @578

Hola, salu2 a todos. Soy nuevo en esto, en especial en CGI y no logro hacer que Apache me corra los cgi. Ya leí varios post sobre esto pero aún no me funciona. ¿Quién podría tener la amabilidad de explicarme detalladamente cómo lo configuro? Ya probé varias formas y nada... De antemano muchas gracias...
Avatar de Usuario
L0rd5had0w
Perlero nuevo
Perlero nuevo
 
Mensajes: 39
Registrado: 2008-08-09 11:02 @501
Ubicación: Guatemala, Guatemala

Publicidad

Notapor explorer » 2008-08-09 22:33 @981

Bienvenido a los foros de Perl en Español, L0rd5had0w.

¿En qué sistema operativo estás trabajando? ¿Qué versión de Apache estás usando?

Por Internet hay algunas How-to con respecto a este tema, por ejemplo, el propio de Apache.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor L0rd5had0w » 2008-08-09 23:11 @007

Gracias por responder. Pues ya logré configurarlo. Uso Linux Ubuntu 7.10. El Apache es el 2.2.8. Bueno, seguí varias instrucciones y según he leído ya está bien configurado como:

Código: Seleccionar todo
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options Indexes Includes ExecCGI
    Order allow,deny
    Allow from all
</Directory>


Ahora me da el problema con que cuando intento ejecutarlo en el explorador, ejemplo:

www.localhost/cgi-bin/Prueba1.pl

me muestra el error 403 de Apache diciendo...

You don't have permission to access /Cgi-Bin/Prueba1.pl on this server.

Según lo que he estado leyendo en la red para solucionarlo me decían que era por los permisos, entonces intente sudo chmod 755 Prueba1.pl y no me funcionó; hasta probé colocando /var/www/cgi-bin/Prueba1.pl pero aun así nada. La verdad, ya no encuentro qué hacer, que solución le podré dar... de antemano muchas gracias por el apoyo... Salu2 a todos...
Avatar de Usuario
L0rd5had0w
Perlero nuevo
Perlero nuevo
 
Mensajes: 39
Registrado: 2008-08-09 11:02 @501
Ubicación: Guatemala, Guatemala

Notapor explorer » 2008-08-09 23:27 @019

Comprueba que tengas también, en la configuración la línea

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

para que Apache traduzca la petición web al camino real donde están los CGI.

Como añadido,

AddHandler cgi-script .cgi .sh .pl .ida

para indicar que esas terminaciones son pertenecientes a CGI (realmente, no es necesario si todos los CGI están dentro del directorio indicado por <Directory>).

El error podría ser por un fallo en los permisos de ejecución, tanto del script como del directorio en donde se encuentra.

Repasa siempre los ficheros log de actividad del servidor web. Te dará más información (sobre todo, el error.log).

P.D. Cuidado con las mayúsculas.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor L0rd5had0w » 2008-08-09 23:37 @025

Así es como tengo la configuración:

Código: Seleccionar todo
AddHandler cgi-script .cgi .sh .pl .ida
ScriptAlias /cgi-bin/ /var/www/Cgi-Bin/
<Directory "/var/www/Cgi-Bin">
    AllowOverride None
    Options Indexes Includes ExecCGI
    Order allow,deny
    Allow from all
</Directory>


Te pongo en mayúscula Cgi-Bin porque así lo coloqué por omisión, y por cierto, ¿dónde está ubicado el errorlog para poderlo ver? Según estoy leyendo en otras páginas casi siempre es por falta de permisos en chmod 755 pero no sé. Gracias por responderme; espero poder ser luego de utilidad para la comunidad. Salu2, gracias...
Avatar de Usuario
L0rd5had0w
Perlero nuevo
Perlero nuevo
 
Mensajes: 39
Registrado: 2008-08-09 11:02 @501
Ubicación: Guatemala, Guatemala

Notapor explorer » 2008-08-09 23:50 @035

A ver... si pones /var/www/Cgi-Bin, quiere decir que ese directorio debe existir en tu ordenador (con esas dos mayúsculas).

¿Es así?

Yo dejaría todo con minúsculas y me quedaría más tranquilo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor L0rd5had0w » 2008-08-10 00:23 @057

Bueno, explico. Según logré leer en varias páginas decían que debería existir un directorio, /usr/local/cgi-bin/ o /usr/lib/cgi/bin, pero cuando configuraba el httpd.conf o apache2.conf me daba problema como si no los encontrara. Después creé esa carpeta en /var/www/Cgi-Bin/ y ahí me daba resultado. Únicamente me decía lo que coloqué en el otro post: que no tenía permisos...

Ahora lo coloqué solo en minúscula, como cgi-bin, y no me deja ni entrar a la carpeta. Me muestra esto...

You don't have permission to access /cgi-bin/ on this server.

Luego de hacer eso intenté recargar Apache para ver si surgieron efecto los cambios: sudo /etc/init.d/apache2 reload.

y me marca error:

Código: Seleccionar todo
 * Reloading web server config apache2                                                  [Sat Aug 09 23:15:57 2008] [warn] The ScriptAlias directive in /etc/apache2/apache2.conf at line 301 will probably never match because it overlaps an earlier ScriptAlias.
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName


Según lo que se entiende, que en la línea 301 está el error. Ésta es la configuración de apache2.conf, y si no mal recuerdo en esa línea coloqué esto:

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

del código:
Código: Seleccionar todo
AddHandler cgi-script .cgi .sh .pl .ida
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory /var/www/cgi-bin/>
    AllowOverride None
    Options ExecCGI FollowSymLinks -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>
Avatar de Usuario
L0rd5had0w
Perlero nuevo
Perlero nuevo
 
Mensajes: 39
Registrado: 2008-08-09 11:02 @501
Ubicación: Guatemala, Guatemala

Notapor L0rd5had0w » 2008-08-10 00:30 @062

Bueno, yo creo que lo conveniente en este caso sería que coloque el contenido de apache.conf, httpd.conf y 000-default. Tal vez ahí esté el error y como usted es conocedor de esto, identifique cuál es mi problema... disculpe el abuso pero si quiero aprender a programar CGI con Perl y por eso necesito arreglar el server Apache. De antemano, muchas gracias, salu2...

Código: Seleccionar todo
#
# Based upon the NCSA server configuration files originally by Rob McCool.
#
# This is the main Apache server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See http://httpd.apache.org/docs/2.2/ for detailed information about
# the directives.
#
# Do NOT simply read the instructions in here without understanding
# what they do.  They're here only as hints or reminders.  If you are unsure
# consult the online docs. You have been warned. 
#
# The configuration directives are grouped into three basic sections:
#  1. Directives that control the operation of the Apache server process as a
#     whole (the 'global environment').
#  2. Directives that define the parameters of the 'main' or 'default' server,
#     which responds to requests that aren't handled by a virtual host.
#     These directives also provide default values for the settings
#     of all virtual hosts.
#  3. Settings for virtual hosts, which allow Web requests to be sent to
#     different IP addresses or hostnames and have them handled by the
#     same Apache server process.
#
# Configuration and logfile names: If the filenames you specify for many
# of the server's control files begin with "/" (or "drive:/" for Win32), the
# server will use that explicit path.  If the filenames do *not* begin
# with "/", the value of ServerRoot is prepended -- so "/var/log/apache2/foo.log"
# with ServerRoot set to "" will be interpreted by the
# server as "//var/log/apache2/foo.log".
#

### Section 1: Global Environment
#
# The directives in this section affect the overall operation of Apache,
# such as the number of concurrent requests it can handle or where it
# can find its configuration files.
#

#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# NOTE!  If you intend to place this on an NFS (or otherwise network)
# mounted filesystem then please read the LockFile documentation (available
# at <URL:http://httpd.apache.org/docs-2.1/mod/mpm_common.html#lockfile>);
# you will save yourself a lot of trouble.
#
# Do NOT add a slash at the end of the directory path.
#
ServerRoot "/etc/apache2"

#
# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
#
#<IfModule !mpm_winnt.c>
#<IfModule !mpm_netware.c>
LockFile /var/lock/apache2/accept.lock
#</IfModule>
#</IfModule>

#
# PidFile: The file in which the server should record its process
# identification number when it starts.
# This needs to be set in /etc/apache2/envvars
#
PidFile ${APACHE_PID_FILE}

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300

#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100

#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 15

##
## Server-Pool Size Regulation (MPM specific)
##

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

#
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives.  See also the AllowOverride
# directive.
#

AccessFileName .htaccess

#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<Files ~ "^\.ht">
    Order allow,deny
    Allow from all
</Files>

#
# DefaultType is the default MIME type the server will use for a document
# if it cannot otherwise determine one, such as from filename extensions.
# If your server contains mostly text or HTML documents, "text/plain" is
# a good value.  If most of your content is binary, such as applications
# or images, you may want to use "application/octet-stream" instead to
# keep browsers from trying to display binary files as though they are
# text.
#
DefaultType text/plain


#
# HostnameLookups: Log the names of clients or just their IP addresses
# e.g., www.apache.org (on) or 204.62.129.132 (off).
# The default is off because it'd be overall better for the net if people
# had to knowingly turn this feature on, since enabling it means that
# each client request will result in AT LEAST one lookup request to the
# nameserver.
#
HostnameLookups Off

# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog /var/log/apache2/error.log

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn

# Include module configuration:
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf

# Include all the user configurations:
Include /etc/apache2/httpd.conf

# Include ports listing
Include /etc/apache2/ports.conf

#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
# If you are behind a reverse proxy, you might want to change %h into %{X-Forwarded-For}i
#
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

#
# ServerTokens
# This directive configures what you return as the Server HTTP response
# Header. The default is 'Full' which sends information about the OS-Type
# and compiled in modules.
# Set to one of:  Full | OS | Minor | Minimal | Major | Prod
# where Full conveys the most information, and Prod the least.
#
ServerTokens Full

#
# Optionally add a line containing the server version and virtual host
# name to server-generated pages (internal error documents, FTP directory
# listings, mod_status and mod_info output etc., but not CGI generated
# documents or custom error documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of:  On | Off | EMail
#
ServerSignature On



#
# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
#
# Some examples:
#ErrorDocument 500 "The server made a boo boo."

#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
#

#
# Putting this all together, we can internationalize error responses.
#
# We use Alias to redirect any /error/HTTP_<error>.html.var response to
# our collection of by-error message multi-language collections.  We use
# includes to substitute the appropriate text.
#
# You can modify the messages' appearance without changing any of the
# default HTTP_<error>.html.var files by adding the line:
#
#   Alias /error/include/ "/your/include/path/"
#
# which allows you to create your own set of files by starting with the
# /usr/share/apache2/error/include/ files and copying them to /your/include/path/,
# even on a per-VirtualHost basis.  The default include files will display
# your Apache version number and your ServerAdmin email address regardless
# of the setting of ServerSignature.
#
# The internationalized error documents require mod_alias, mod_include
# and mod_negotiation.  To activate them, uncomment the following 30 lines.

#    Alias /error/ "/usr/share/apache2/error/"
#
#    <Directory "/usr/share/apache2/error">
#        AllowOverride None
#        Options IncludesNoExec
#        AddOutputFilter Includes html
#        AddHandler type-map var
#        Order allow,deny
#        Allow from all
#        LanguagePriority en cs de es fr it nl sv pt-br ro
#        ForceLanguagePriority Prefer Fallback
#    </Directory>
#
#    ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
#    ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
#    ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
#    ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
#    ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
#    ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
#    ErrorDocument 410 /error/HTTP_GONE.html.var
#    ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
#    ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
#    ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
#    ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
#    ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
#    ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
#    ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
#    ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
#    ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
#    ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var



# Include of directories ignores editors' and dpkg's backup files,
# see README.Debian for details.

# Include generic snippets of statements
Include /etc/apache2/conf.d/

# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/
# Include the cgi
AddHandler cgi-script .cgi .sh .pl .ida
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory /var/www/cgi-bin/>
    AllowOverride None
    Options ExecCGI FollowSymLinks -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>


En el httpd.conf, el código es de la línea 300 donde empieza el AddHandler...
y el otro código podría ser el del archivo 000-default que está ubicado en /etc/apache2/sites-enabled/. Sería igual a esto:

Código: Seleccionar todo
NameVirtualHost *
<VirtualHost *>
   ServerAdmin webmaster@localhost
   
   DocumentRoot /var/www/
   <Directory />
      Options FollowSymLinks
      AllowOverride None
   </Directory>
   <Directory /var/www/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      Allow from all
   </Directory>
   AddHandler cgi-script .cgi .sh .pl .ida
   ScriptAlias /cgi-bin/ /var/www/cgi-bin/
   <Directory "/var/www/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 warn

   CustomLog /var/log/apache2/access.log combined
   ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Allow from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>


Bueno, como dije antes, disculpe el abuso pero ya no encuentro qué hacer. Si me puede ayudar se lo agradecería de todo corazón salu2...
Avatar de Usuario
L0rd5had0w
Perlero nuevo
Perlero nuevo
 
Mensajes: 39
Registrado: 2008-08-09 11:02 @501
Ubicación: Guatemala, Guatemala

Notapor explorer » 2008-08-10 00:34 @065

Cada vez que hagas un cambio, en la configuración, haz un reload del Apache. No es necesario si se hacen cambios en los directorios o ficheros a los que se accede.

Lo normal es que el directorio donde están los cgi tenga permiso de ejecución (755). Y que los mismos cgi tengan a su vez permisos de ejecución (755 también).

El error que muestras indica que ese ScriptAlias está definido en otro sitio del fichero de configuración o en otro fichero de configuración (Apache suele leer varios ficheros, pero todos estarán dentro de /etc/apache2). La segunda parte del error dice que hay un problema con la definición de la variable ServerName, dentro del fichero de configuración y/o con la resolución de ese nombre.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor explorer » 2008-08-10 00:44 @072

Efectivamente, está doblada la definición de la parte CGI...

Yo dejaría esa parte solo en el httpd.conf.

Y haría un
Código: Seleccionar todo
ls -l /var/www/cgi-bin
para comprobar que existe realmente ese directorio y qué permisos tiene.

Estoy en el chat de #perlenespanol y en el messenger por si necesitas asistencia.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Siguiente

Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 10 invitados