• Publicidad

Instalación Perl y Apache

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Instalación Perl y Apache

Notapor yomismo » 2010-10-27 19:59 @874

Hola.

Tengo un caos con un script CGI que ya no sé si lo tengo bien o mal el servidor :(

Estoy usando Ubuntu Server. LAMP y he instalado cuatro cosillas bien hasta que me topé con cgi-bin que creo que lo hago, bien hasta he visto un vídeo de la instalacción en árabe :D No hay ninguno más xD Pues el caso es que hago todo igual, paso los archivos en binario, doy permisos, me voy al navegador y me sale un archivo tipo HTML de código que lo puedo hasta editar :shock:

Realmente estoy empezando un poco leyendo por aquí, por allá; no tengo mucha experiencia; hasta ahora me había ido bien. Con esto no sé qué realmente tengo que hacer. Tampoco sé seguro si es compatible con localhost.

Os dejo los requisitos y la instalación en inglés a ver si puedo conseguir instalarlo.

Muchas gracias de antemano.

Requirements:

* Perl > 5.005 ver.
* LWP, DBI, DBD::mysql Perl modules
* MySQL database >= 4.1 ver.
* Apache mod_rewrite module, mod_headers module (optional)
* .htaccess files enabled
* GD lib, GD perl module (optional)

If you don't have any Perl modules, you can install them through SSH console manually:
perl -MCPAN -e shell
install LWP
install DBI
install DBD::mysql
install GD


1) Copy all files and folders from "cgi-bin" into your cgi-bin folder (folder where perl scripts running)
Copy all files and folders from "htdocs" into your htdocs (public_html) folder (folder with HTML files)

NOTE: use binary mode for FTP when uploading files.
NOTE: try to open /files/index.html in your browser. If you get 500 error then comment one-by-one first 6 lines in .htaccess to figure out what line gives error.

2) Set install.cgi permissions to 755. Then open it in your browser (e.g. http://server.com/cgi-bin/install.cgi)
Follow the instructions so all 4 steps will be OK.

3) After complete install delete install.cgi, install.sql files for security reasons.

4) If XFS installed in subfolder (e.g. http://www.site.com/xfs) then change relative URLs in .htaccess file in htdocs to ones containing subfolder.
If you don't have .htaccess support on your sever you can copy .htaccess source to htdocs options in httpd.conf and restart Apache.

5) Directly after install you'll get message "there are no servers available for upload" on index page.
That's correct. Now let's add first FileServer.
Login with admin account and go to "Server Management" section, click "Add new server".

6) Now go to the "Site Settings" section and set up your server configuration.

7) Add cron.pl script to your crontab to run it every hour.
Sample: 0 * * * * cd /var/www/cgi-bin;./cron.pl >/dev/null 2>&1

8 ) Edit Templates/comparison.html static template with your actual info about Premium Features
Adjuntos
INSTALL.rar
(2.33 KiB) 76 veces
yomismo
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2010-10-27 19:40 @861

Publicidad

Re: Instalación Perl y Apache

Notapor danimera » 2010-10-27 20:55 @913

Bueno, ¿pero cuál es el problema que tienes en sí?

¿Qué es lo que no puedes lograr? Debes ser más claro con lo que deseas, para poder responderte...
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Re: Instalación Perl y Apache

Notapor yomismo » 2010-10-27 21:31 @938

Gracias por contestar.

Pues cómo sería la manera adecuada de instalarlo.

Contra más, más me lío. Según leo en tutoriales hace falta meterlo en la carpeta Perl los archivos cgi pero en la instalación del script, éste en concreto no dice nada de eso; dice algo de Perl scripts running, y ahí me pierdo.

Cómo sería la manera adecuada de hacerlo funcionar.

Muchas gracias de antemano.

Adjunto el script
http://www.multiupload.com/7M1EIBZ5CB

Si no se puede poner, por favor borrarlo sin previo aviso.

Un saludo.
yomismo
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2010-10-27 19:40 @861

Re: Instalación Perl y Apache

Notapor explorer » 2010-10-28 04:25 @226

El servidor web, normalmente, tiene configurado un directorio especial donde sabe que los ficheros, en lugar de mostrarlos al usuario, debe ejecutarlos. A esa carpeta se le suele llamar cgi-bin, pero no siempre.

Debes entrar en la configuración del servidor web y ver cómo realmente se llama esa carpeta.

En mi sistema, en el fichero httpd.conf viene:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
## CGI's
AddHandler cgi-script .cgi .sh .pl .ida
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
ScriptAlias /cgi/     /usr/lib/cgi-bin/
<Directory /usr/lib/cgi-bin/>
    AllowOverride None
    Options ExecCGI FollowSymLinks -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
y ahí veo que se trata de la carpeta /usr/lib/cgi-bin. Pero no es la única: en las definiciones de los dominios virtuales o en los directorios de los usuarios también se permite el uso de los cgi:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
<Directory /home/*/public_html/cgi-bin>
        AllowOverride Options
        Options +ExecCGI
        SetHandler cgi-script
</Directory>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Son esas las carpetas (las que tienen marcadas con la opción ExecCGI) a las que se refieren las instrucciones de instalación.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Instalación Perl y Apache

Notapor yomismo » 2010-10-28 12:44 @572

Gracias por la respuesta.

Mi fallo empieza en que los programas que voy probando se ponen en el directorio .usuario/web. Voy metiendo ahí los archivos por FTP y hasta ahí, bien.

El FTP no me da la opción de ir a más directorios de los que creo yo en index/usuario. Mediante terminal sí que puedo acceder. ¿Cómo podría acceder a las demás carpetas del sistema en FTP para colocar los archivos?

Un saludo.
yomismo
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2010-10-27 19:40 @861

Re: Instalación Perl y Apache

Notapor explorer » 2010-10-28 13:31 @605

Es muy posible que el servicio FTP esté enjaulado, por lo que solo te dejará navegar por los directorios que se supone que te son suficientes para la instalación de un servicio web completo. Pero esto es algo que depende del alojamiento que tengas contratado.

Deberás mandar la consulta al administrador del sistema o a la empresa que te da el servicio de alojamiento, para preguntar cómo y dónde tienes que colocar los cgi.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Instalación Perl y Apache

Notapor yomismo » 2010-10-28 13:50 @618

Estoy usando LAMP en localhost.

Acabo de instalar ProFTPd. En teoría dando permisos se tendría que ver lo demás, ¿no?

Saludos.
yomismo
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2010-10-27 19:40 @861

Re: Instalación Perl y Apache

Notapor explorer » 2010-10-28 13:55 @621

Si estás en localhost, eso quiere decir que es tu propia máquina, así que no tiene sentido usar FTP para copiar/mover ficheros en tu propia máquina.

Usa los comandos del sistema gráfico (el entorno de ventanas), o desde la línea de comandos, los comandos cp, mv, etc.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Instalación Perl y Apache

Notapor yomismo » 2010-10-28 15:00 @666

Como lo tengo exactamente.

Ubuntu server sin entorno instalado, LAMP...

Windows usando winscp, de ahí puedo mover, editar, crear a los directorios /home/user.

Ahora mismo lo que intento es tener acceso total desde winscp a todas las carpetas donde tengo todos los archivos es en Windows.

Bueno, este tema ya lo tengo medio solucionado; voy a ver qué tal con el programa.
yomismo
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2010-10-27 19:40 @861

Re: Instalación Perl y Apache

Notapor yomismo » 2010-10-28 16:11 @716

Bueno, lo de arriba, solucionado; encontrado el directorio, pero no es visible ese directorio en localhost.

He movido al directorio user/web, permisos 755, y me sigue saliendo igual un documento de código :(

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use CGI::Carp qw(fatalsToBrowser);
  4. use lib '.';
  5. use DBI;
  6. use XFileConfig;
  7. use Session;
  8. use CGI qw(param);
  9. my $ok = "<br><b style='background:#1a1;color:#fff;padding:2px;'>OK</b>";
  10.  
  11. my $ses = Session->new;
  12. my $f = $ses->f;
  13.  
  14. if($f->{site_settings})
  15. {
  16.    my @fields = qw(temp_dir upload_dir htdocs_dir);
  17.    $f->{temp_dir}   = "$f->{cgi_path}/temp";
  18.    $f->{upload_dir} = "$f->{cgi_path}/uploads";
  19.    $f->{htdocs_dir} = "$f->{site_path}/files";
  20.    my $conf;
  21.    open(F,"XFSConfig.pm")||$ses->message("Can't read XFSConfig");
  22.    $conf.=$_ while <F>;
  23.    close F;
  24.    for my $x (@fields)
  25.    {
  26.       my $val = $f->{$x};
  27.       $conf=~s/$x\s*=>\s*(\S+)\s*,/"$x => '$val',"/e;
  28.    }
  29.    open(F,">XFSConfig.pm")||$ses->message("Can't write XFSConfig");
  30.    print F $conf;
  31.    close F;
  32. }
  33.  
  34. if($f->{save_sql_settings} || $f->{site_settings})
  35. {
  36.    my @fields = $f->{save_sql_settings} ? qw(db_host db_login db_passwd db_name pasword_salt) : qw(site_url site_cgi site_path);
  37.    my $conf;
  38.    open(F,"XFileConfig.pm")||$ses->message("Can't read XFileConfig");
  39.    $conf.=$_ while <F>;
  40.    close F;
  41.    $f->{pasword_salt} = $ses->randchar(12);
  42.    $f->{dl_key}       = $ses->randchar(10);
  43.    for my $x (@fields)
  44.    {
  45.       my $val = $f->{$x};
  46.       $conf=~s/$x\s*=>\s*(\S+)\s*,/"$x => '$val',"/e;
  47.    }
  48.    open(F,">XFileConfig.pm")||$ses->message("Can't write XFileConfig");
  49.    print F $conf;
  50.    close F;
  51.    $ses->redirect('install.cgi');
  52. }
  53.  
  54. if($f->{create_sql})
  55. {
  56.    my $db = $ses->db;
  57.    open(FILE,"install.sql")||$ses->message("Can't open create.sql");
  58.    my $sql;
  59.    $sql.=$_ while <FILE>;
  60.    $sql=~s/CREATE TABLE/CREATE TABLE IF NOT EXISTS/gis;
  61.    $db->Exec($_) for split(';',$sql);
  62.    $db->Exec("INSERT INTO Users (usr_login,usr_email,usr_password,usr_created,usr_adm) VALUES (?,?,ENCODE(?,?),NOW(),1)",$f->{usr_login},$f->{usr_email},$f->{usr_password},$c->{pasword_salt});
  63.    $ses->redirect('install.cgi');
  64. }
  65.  
  66.  
  67. print"Content-type:text/html\n\n";
  68. print"<HTML><BODY style='font:13px Arial;'><h2>XFileSharingPro Installation Script</h2>";
  69. print"<b>1) Permissions Check</b><br><br>";
  70. my $perms = {
  71.                'logs.txt'       => 0666,
  72.                'ipn_log.txt'    => 0666,
  73.                'fs.cgi'         => 0755,
  74.                'index.cgi'      => 0755,
  75.                'ipn.cgi'        => 0755,
  76.                'cron.pl'        => 0755,
  77.                'dl.pl'          => 0755,
  78.                'upload.cgi'     => 0755,
  79.                'upload_status.cgi' => 0755,
  80.                'api.cgi'        => 0755,
  81.                'XFileConfig.pm' => 0666,
  82.                'XFSConfig.pm'   => 0666,
  83.                'temp'           => 0777,
  84.                'uploads'        => 0777,
  85.                "$c->{site_path}/files"    => 0777,
  86.                "$c->{site_path}/captchas" => 0777,
  87.             };
  88. my @arr;
  89. for(keys %{$perms})
  90. {
  91.    next unless -e $_;
  92.    chmod $perms->{$_}, $_;
  93.    my $chmod = (stat($_))[2] & 07777;
  94.    my $chmod_txt = sprintf("%04o", $chmod);
  95.    push @arr, "<b>$_</b> : $chmod_txt : ".( $chmod == $perms->{$_} ? 'OK' : "<u>ERROR: should be ".sprintf("%04o",$perms->{$_})."</u>" );
  96. }
  97.  
  98. chmod 0666, "$c->{site_path}/.htaccess" if -f "$c->{site_path}/.htaccess";
  99. print join '<br>', @arr;
  100. if( grep{/ERROR/}@arr )
  101. {
  102.    print"<br><br><u>Fix errors above and refresh this page</u>";
  103. }
  104. else
  105. {
  106.    print"<br><br>All permissions are correct.$ok";
  107. }
  108.    
  109.  
  110. print"<hr>";
  111.  
  112. print"<b>2) MySQL Settings</b><br><br>";
  113. my $dbh=DBI->connect("DBI:mysql:database=$c->{db_name};host=$c->{db_host}",$c->{db_login},$c->{db_passwd}) if $c->{db_name} && $c->{db_host};
  114. if($dbh)
  115. {
  116.    print"MySQL Settings are correct. Can connect to DB.$ok";
  117. }
  118. else
  119. {
  120. print<<EOP
  121. Can't connect to DB with current settings: $DBI::errstr<br><br>
  122. <Form method="POST">
  123. <input type="hidden" name="save_sql_settings" value="1">
  124. MySQL Host:<br>
  125. <input type="text" name="db_host" value="$c->{db_host}"><br>
  126. MySQL DB Username:<br>
  127. <input type="text" name="db_login" value="$c->{db_login}"><br>
  128. MySQL DB Password:<br>
  129. <input type="text" name="db_passwd" value="$c->{db_passwd}"><br>
  130. MySQL DB Name:<br>
  131. <input type="text" name="db_name" value="$c->{db_name}"><br><br>
  132. <input type="submit" value="Save MySQL Settings">
  133. </Form>
  134. EOP
  135. ;
  136. }
  137.  
  138. print"<hr>";
  139.  
  140. print"<b>3) MySQL tables create & Admin account</b><br><br>";
  141.  
  142. if(!$dbh)
  143. {
  144.   print"Fix MySQL settings above first.";
  145. }
  146. else
  147. {
  148.   my $sth=$dbh->prepare("DESC Files");
  149.   my $rc=$sth->execute();
  150.   if($rc)
  151.   {
  152.      print"Tables created successfully.$ok";
  153.   }
  154.   else
  155.   {
  156. print<<EOP
  157. <form method="POST">
  158. <input type="hidden" name="create_sql" value="1">
  159. Admin login:<br><input type="text" name="usr_login"><br>
  160. Admin password:<br><input type="text" name="usr_password"><br>
  161. Admin E-mail:<br><input type="text" name="usr_email"><br><br>
  162. <input type="submit" value="Create MySQL Tables & Admin Account">
  163. </form>
  164. EOP
  165. ;
  166.   }
  167. }
  168.  
  169. print"<hr><b>4) Site URL / Path Settings</b><br><br>";
  170. if($c->{site_url} && $c->{site_cgi} && -d $c->{site_path})
  171. {
  172.   print"Settings are correct.$ok";
  173.   print"<br><br><b>Login as admin and add FileServer now: <a href='$c->{site_url}/login.html'>$c->{site_url}/login.html</a></b>";
  174. }
  175. else
  176. {
  177.   my $path = $ENV{DOCUMENT_ROOT};
  178.   my ($cgipath) = $ENV{SCRIPT_FILENAME}=~/^(.+)\//;
  179.   my $url_cgi = 'http://'.$ENV{HTTP_HOST}.$ENV{REQUEST_URI};
  180.   $url_cgi=~s/\/[^\/]+$//;
  181.   my $url = 'http://'.$ENV{HTTP_HOST};
  182.  
  183.   $url = $c->{site_url}||$url;
  184.   $url_cgi = $c->{site_cgi}||$url_cgi;
  185.   $path = $c->{site_path}||$path;
  186. print<<EOP
  187. <form method="POST">
  188. <input type="hidden" name="site_settings" value="1">
  189. htdocs folder URL:<br>
  190. <input type="text" name="site_url" value="$url" size=48> <small>No trailing slash</small><br>
  191. cgi-bin folder URL:<br>
  192. <input type="text" name="site_cgi" value="$url_cgi" size=48> <small>No trailing slash</small><br>
  193. cgi-bin disk path:<br>
  194. <input type="text" name="cgi_path" value="$cgipath" size=48><br>
  195. htdocs disk path:<br>
  196. <input type="text" name="site_path" value="$path" size=48><br>
  197. <br>
  198. <input type="submit" value="Save site settings">
  199. </form>
  200. EOP
  201. ;
  202.  
  203. }
  204.  
  205. print"<hr><b>5) Manually Remove install files</b><br><br>install.cgi<br>install.sql<br>convert.cgi<br>convert.sql";
Coloreado en 0.008 segundos, usando GeSHi 1.0.8.4
Última edición por yomismo el 2010-10-28 16:23 @724, editado 1 vez en total
yomismo
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2010-10-27 19:40 @861

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado