Configuració Apache
Instal.lació Apache amb Ubuntu
Vaig al gestor de paquets Synaptic, i busco Apache
L'instalo i ja funciona:
Ara la idea és crear un directori virtual:
el primer que he de fer és crear el directori /home/joan/socrathos/web_php, d'on penjarà tota l'aplicació
El fitxer de configuració httpd.conf està a /etc/apache2, però sembla ser que ara es diu apache2.conf
Alias /socrathos/ "/home/joan/socrathos/web_php" -> NO CAL FER AIXÒ
Reinicio l'apache:
Ahora puede reiniciar Apache.
# /etc/init.d/apache2 stop # /etc/init.d/apache2 start
o bé
./apache2 restart
http://localhost/socrathos/ funciona, però hi ha un problema de permisos
compte! perquè http://localhost/socrathos no funciona s'ha de ficar el / final
ara bé, hi ha un problema de permisos
utilitzo chmod, però no és un problema de permisos en els fitxers
Apache FAQ: http://httpd.apache.org/docs/1.3/misc/FAQ.html
la documentació en línia de l'apache està a:
http://localhost/doc/apache2-doc/manual/
i precisament aquest directori virtual està definit a /etc/apache2/sites-available/default
Dins de /etc/apache2 hi ha el directori sites-available i el fitxer de configuració default, i aquí és on he de d'afegir socrathos, igual que el directori virtual /doc/
Per tant, és aquí on definiré els meus directoris virtuals. Però això no és tot, continuo tenint problemes de permisos.
La solució està en l'ajuda de l'Apache:
Why do I get a "Forbidden" message whenever I try to access a particular directory?
This message is generally caused because either
The underlying file system permissions do not allow the User/Group under which Apache is running to access the necessary files; or
The Apache configuration has some access restrictions in place which forbid access to the files.
You can determine which case applies to your situation by checking the error log.
In the case where file system permission are at fault, remember that not only must the directory and files in question be readable, but also all parent directories must be at least searchable (i.e., chmod +x /directory/path) by the web server in order for the content to be accessible.
Aquesta última frase és la solució. Faig:
chmod +x /home/ chmod +x /home/joan/ chmod +x /home/joan/socrathos/ chmod +x /home/joan/socrathos/web_php/
(no sé si calia fer-ho tot)
i ja funciona http://localhost/socrathos/prova.htm i examinar el directori
prova.php encara no funciona, doncs no està instalat el paquet de php
Problema amb la / final
quant fico http://localhost/socrathos no funciona, falta la / final:
el problema estava en el fitxer /etc/apache2/sites-available/default
on havia afegit el directori virtual de socrathos
la sintaxi correcta és:
Alias /socrathos "/home/joan/socrathos/web_php/"
el problema era que havia agafat el model del Alias /doc/, que també s'hauria de retocar o no.
2a possibilitat
La primera possibilitat per definir un site era a:
/etc/apache2/sites-available/default
La segona possibilitat és instal.lar un site directament de l'arrel.
Quan faig http://localhost, apareix el directori apache2-default/:
http://localhost/apache2-default/ -> funciona
Una altra possibilitat és definir la meva aplicació al mateix nivell que apache2-default
si miro dins de /etc/apache2/sites-available/default:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
#RedirectMatch ^/$ /apache2-default/
</Directory>
veig que /var/www/ és l'arrel del meu Apache, i aquí puc ficar directament una carpeta que contingui index.php, i funciona.
RedirectMatch ^/$ /apache2-default/ -> descomentant aquesta línia el que aconsegueixo és que quan faig http://localhost hi ha una redirecció automàtica cap a /apache2-default
amb aquesta opció no cal editar sites-available
En el Linkat del centre, les aplicacions estan instal.lades a /usr/share/apache2/assistencia i /usr/share/apache2/wiki, i s'ha d'editar un altre fitxer. Funciona una mica diferent. No sé si les diferències venen perquè el Linkat està basat en Suse o perquè és una versió de l'Apache diferent.
Anem a posar un login i pwd per entrar a l'aplicació http://localhost/socrathos/
Proteger carpetas con .htaccess y .htpasswd:
http://www.cristalab.com/tutoriales/213/proteger-carpetas-con-.htaccess-y-.htpasswd.html
htaccess establecerá el tipo de permiso necesario y qué usuarios pueden acceder a qué archivos, mientras que .htpasswd guardará el nombre de usuario y contraseña de cada uno de ellos.
fitxer .htaccess:
Este archivo lo colocaremos en la carpeta que queremos proteger: /home/joan/socrathos/web_php/ conté:
AuthUserFile /home/joan/.htpasswd AuthName "Aplicació Socrathos" AuthType Basic require user joan
por norma general el archivo de contraseñas se pone fuera del alcance de la web, es decir, fuera de la carpeta public_html o similar, como por ejemplo "/home/usuario/.htaccess". En un servidor decente y con accesso por SSH o similares es muy fácil saber cual es la ruta absoluta hacia tu web, en caso contrario puedes utilizar este pequeño php para descubrirla :
<?php
die($_SERVER["DOCUMENT_ROOT"]);
?>
require user joan -> Indica que el único usuario que puede entrar es joan, cualquier otro -aunque la contraseña sea correcta- no será válido. Tenemos variaciones de esa línea como por ejemplo :
require user joan otrousuario unusuariomas
Donde especificar 2, 3 o más usuarios. Tambien tenemos :
require valid-user
Donde podrán entrar todos los usuarios especificados en el archivo .htaccess (u otro nombre si así lo indicaste en la primera línea.
Podemos incluso proteger sólo algunos archivos de la manera :
AuthUserFile /ruta/absoluta/hacia/.htpasswd AuthName AquiPuedesPonerLoQueQuieras AuthType Basic <Files "fitxer1.html"> Require valid-user </Files> <Files "misvideosxxx.html"> Require user test123 </Files>
Como ven admite mucho juego.
fitxer .htpasswd
Me referiré a .htpasswd como el nombre del archivo, pero como ya dije anteriormente, si no lo pueden esconder de la vista pública, al menos cámbienle el nombre.
Este archivo contiene una lista de nombres de usuario y contraseñas, en formato usuario:contraseña y cada nombre-clave en una línea independiente, por ejemplo :
joan:xxxxxxxxx otrousuario:$1$UNHEaBiV$NzwYQ8NhjzIOUmFyfGyrO/
Como ven, la contraseña está encriptada, por lo general con una variación del algoritmo MD5 realizada por Apache. Pueden encontrar en Internet varios sitios en donde encriptar las contraseñas (éste por ejemplo).
Si disponemos de un servidor apache en local o acceso SSH a nuestro servidor web, podemos ejecutar el comando htpasswd para que nos cree el archivo, o nos devuelva la cadena en la misma consola :
htpasswd -nb usuario contraseña
Esta línea imprimirá en consola la cadena a agregar (manualmente) a nuestro archivo .htpasswd
htpasswd -cb .htpasswd usuario contraseña
Esta otra escribirá en el .htpasswd la cadena corespondiente. La documentación del comando htpasswd es corta pero bastante interesante.
En cualquiera de los casos, hasta el momento hemos de añadir manualmente las parejas usuario:contraseña a nuestro archivo .htpasswd, lo cual puede ser bastante engorroso, para ello podemos utilizar PHP para modificar el contenido de ese archivo, por ejemplo un script sencillo que se limita a añadir los nombres de usuario y contraseñas :
<?php
$archivo = $_SERVER["DOCUMENT_ROOT"].'/.xAF3fvV4';
$contenido = $username.":".crypt($password);
if (is_writable($archivo)) {
if (!$handle = fopen($archivo, 'a')) {
echo "No se puede abrir el archivo ($archivo)";
exit;
}
if (fwrite($handle, $contenido) === FALSE) {
echo "No se puede escribir en el archivo ($archivo)";
}
fclose($handle);
} else {
echo "El archivo $archivo no se puede escribir";
}
?>
Em situo a /home/joan, que és on ha d'estar el fitxer .htpasswd:
$ htpasswd -cb .htpasswd joan xxxx $ cat .htpasswd joan:xxxxxxxx
reiniciem el servidor:
$ sudo /etc/init.d/apache2 restart
http:/localhost/socrathos/ i ni cas No em funciona. Ni en local (estic connectat com a joan) ni des d'una altra màquina de la xarxa: http://192.168.1.130/socrathos/
Si no funciona, hem de donar permisos:
$ chmod a+r .htaccess $ chmod a+r .htpasswd
Encara no funciona
Note
If you're looking to implement this on your own web server, then you should bypass htaccess altogether and simply enter the commands into the httpd.conf (apache configuration) file and specify which directories to which this should apply. The commands that are valid within htaccess are also valid in your apache configuration file. Putting it in the apache configuration helps to speed things up and simplifies web server management.
el problema ha d'estar en la configuració de sites-available
així és com ho tinc originalment
Alias /socrathos/ "/home/joan/socrathos/web_php/"
<Directory "/home/joan/socrathos/web_php/">
Options Indexes MultiViews FollowSymLinks -> si comento aquesta línia em surt forbidden i no puc entrar al recurs
AllowOverride None -> he de posar AllowOverride all!!
Order deny,allow
#Deny from all
#Allow from 127.0.0.0/255.0.0.0 ::1/128
Allow from all
</Directory>
Solució: AllowOverride all