Professional Documents
Culture Documents
Procedimiento
Vamos a describir la instalacin de un servidor de aplicaciones web con base apache, mysql como gestor de bases de datos y PHP como lenguaje de programacin que se utilizar para la creacin de contenidos web dinmicos. Instalaremos primero el gestor de bases de datos, luego apache, ms tarde le daremos soporte PHP y finalmente se comenta la instalacin de la utilidad de administracin de Mysql a travs de web mediante phpMyAdmin.
COMO ...
Descargamos los fuentes. Comprobamos md5 Llevamos directorios temporales Descomprimimos los archivos Compilamos los fuentes Instalamos los servidores Revisamos detalles de seguridad Poner en marcha los servidores
$TEMP_MYSQL : donde hacemos la instalacin $MYSQL_DIR : directorio final de MySQL $TEMP_APACHE : directorio de instalacin $APACHE_DIR : directorio final de apache $APACHE_DOCS : directorio donde se encuentran las webs $TEMP_PHP : directorio de instalacin $PHP_DIR : directorio final de PHP Se presupone que se han descargado los fuentes de los servidores apache y mysql, as como los fuentes del lenguaje de scripting PHP. Estos archivos son: mysql-version.tar.gz httpd-version.tar.gz php-version.tar.bz2
MySQL - instalacin
groupadd mysql ;creamos el grupo mysql useradd g mysql mysql ;creamos el usuario mysql mkdir $MYSQL_DIR ; directorio final de mysql mkdir $MYSQL_DIR/conf ; por poner un sitio concreto para conf cp mysql-version.tar.gz $TEMP_MYSQL cd $TEMP_MYSQL tar xvzf mysql-version.tar.gz ;descomprimir cd mysql-version ; desde dentro del directorio ... ./configure --prefix=$MYSQL_DIR \ --sysconfdir=$MYSQL_DIR/conf \ --with-mysqld-user=mysql # make # make install # # # # # # # # #
MySQL - instalacin
Copiamos el archivo de configuracin: # # se supone que estamos en $MYSQL_DIR # cp support-files/my-small.cnf $MYSQL_DIR/conf/my.cnf Creamos enlaces simblicos : # cd /usr/local # ln s $MYSQL_DIR mysql Creamos las bases de datos iniciales de mysql # cd $MYSQL_DIR # $MYSQL_DIR/scripts/mysql_install_db --user=mysql
MySQL instalacin
Asignamos los permisos de acceso:
# # # # # cd $MYSQL_DIR chown R root . chown R mysql data chgrp R mysql . chmod R 750 . Nota: las nuevas versiones de MySQL han cambiado el directorio data por var.
Lanzamos el servidor:
# $MYSQL_DIR/bin/mysqld_safe --user=mysql \ --defaults-extra-file=$MYSQL_DIR/conf/my.cnf &
MySQL - test
Si queremos probarlo, nos conectamos como root de mysql: # mysql u root p
mysql>show databases;
Y se muestran las bases de datos creadas.
Apache - configuracin
La configuracin del servidor se hace a travs de directivas. El fichero de configuracin del servidor Apache es: $APACHE_DIR/conf/httpd.conf. httpd.conf divide en 3 secciones.
Seccin 1. Entorno global. Descripcin del funcionamiento general del servidor y rutas de acceso a otros ficheros de configuracin. Seccin 2. Entorno del servidor principal. Comportamiento predeterminado del servidor. Seccin 3. Servidores virtuales que se pueden definir en este fichero para emular diferentes servidores.
Listen puerto/dir IP. Identifica los puertos por los que el servidor aceptar peticiones entrantes. Por defecto son 80/443 para conexiones no seguras/seguras. Pidfile. Indica el archivo en el que el servidor guarda su ID de proceso. Por defecto este archivo es: var/run/httpd.pid LoadModule nom_mod ruta_mod. Carga el mdulo que le indiquemos en esa ruta. PHP ser cargado posteriormente a travs de esta directiva.
Port num. Puerto por el que escucha el servidor principal. Solo puede haber uno. User/Group nombre. Establece el nombre de usuario y el grupo para el proceso del servidor. Segn ya habamos previsto, sern apache y apache, respectivamente. ServerAdmin e-mail. Esta direccin de correo aparecer en los mensajes de error generados por el servidor.
ServerName DNS:puerto. Define el nombre de servidor y puerto que se enviar a los clientes. No debe coincidir con el nombre real de la maquina, pero debe ser un nombre de dominio que pueda ser resuelto por un servidor DNS. ServerSignature on/off/email. En un mensaje de error se muestra el nombre de la mquina y la versin de apache usada. DocumentRoot $APACHE_DOCS. Directorio que contiene los archivos HTML para enviar a los clientes en respuesta a sus peticiones. DirectoryIndex doc. Cuando se produce una peticin que termina en /, es decir, un directorio, el servidor mostrar la pgina que indiquemos aqu. Por defecto es index.html.
<IfModule mdulo> </IfModule> Crea un contenedor que se activa si se carga el mdulo especificado. UserDir ruta. Indica cual es el directorio del usuario que realiza la peticin. Cuando se produce una peticin del tipo ~user, el servidor buscar la pgina pedida en el directorio del usuario especificado en esta directiva. Ejemplo: UserdDir home/username/public_html peticin: http://exaple.com/~username/foo.html servidor accede a: /home/username/public_html/foo.html
AddModule modulo. Permite el uso de mdulos compilados que no estn activos. AddType tipoMIME extensin. Crea una asociacin entre el tipo MIME (Multimedia Internet Mail Extensin) y una extensin. Ejemplo: AddType text/html .shtml ErrorLog /ruta. Determina el archivo donde se guarda los errores que se producen en el servidor.
DefaultType tipo. Cuando se le pase un documento cuyo tipo MIME desconozca, le asignar el que indiquemos aqu. Por defecto es plain/text. Una alternativa habitual es text/html. TransferLog /ruta. Guarda informacin acerca de los datos que salen y entran al servidor. Esta opcin carga mucho la directiva. CustomLog /ruta formato. Crea un fichero de registro con el formato especificado en formato. A formato le damos formato en la directiva LogFormat.
Las diferentes opciones son: %A Direccin Ip local %h Direccin Ip remota %p Puerto TCP por el que se recibi la peticin %t Fecha y hora %b Bytes enviados %u Usuario remoto en conexiones autentificadas %v Nombre del servidor Ejemplo: LogFormat Ip del cliente = %h; hora %t miformato Customlog logs/access_log miformato
LogLevel nivel. Existen 8 niveles de error, dependiendo del que especifiquemos aqu, se guardar mas o menos informacin en el fichero de ErrorLog.
Los distintos niveles son: Debug. Guarda todo. Info. Solo guarda los mensajes de informacin. Notice. Warn. Advertencias. Error. Crit. Alert. Emerg. Solo guarda los mensajes mas graves.
ServerTokens Full | OS | Minor | Minimal | Major | Prod Determina que se enva como cabecera respuesta HTTP a cada peticin.
ServerSignature On | Off | Email Informacin adicional conteniendo un link con un email, para pginas errneas, por ejemplo.
Alias alias ruta. Permite que haya directorios fuera del DocumentRoot a los que puede acceder el servidor. Cualquier URL que acabe en el alias, ser traducida a la ruta. Ejemplo: Alias /pepe /home/pepe/web/ URL: http://server/pepe acceso: /home/pepe/web/ ScriptAlias alias ruta. Define un directorio fuera del DocumentRoot que contiene scripts y procesos del servidor. Redirect /ruta nuevaURL. Cualquier peticin del documento solicitado en la ruta, ser automticamente redirigido a la nueva ubicacin. Ejemplo: Redirect /pepe.html http://www.pepeweb.com/pepe.html
Se crean para definir y agrupar las directivas que afectan a los directorios a los que tiene acceso nuestro servidor. <Directory ruta> Options opciones AllowOverride opciones Order opciones Allow opciones Deny opciones </Directory> Este grupo de directivas, se aplican al directorio indicado. Por defecto existe un contendor para DocumentRoot.
<DirectoryMatch /ruta> </DirectoryMatch> Permite expresiones regulares en la ruta. <File fichero> </File> Solo aplica las directivas al fichero indicado Fichero htacces. Cada usuario puede configurar su sitio web mediante un htacces. ste tiene el mismo el mismo formato que httpd.conf y debe estar en el directorio en el que se quieren realizar.
None All (exceto Multiviews). Indexes. Permite ver el contenido del directorio aunque no haya pgina de inicio. Includes. Permite incluir determinadas rutas o ficheros. FollowSymLinks. Sigue los enlaces simblicos entre este directorio y otro. SymLinksIfOwnerMatch. Solo si coincide el propietario del enlace y del destino. ExcecCGI. Permite la ejecucin de scripts CGI. Multiviews. Permite la vista del directorio desde varios clientes simultaneamente.
Opciones de AllowOverride: le indica al servidor que las opciones del contenedor las tome del fichero htacces. stas ltimas anulan las opciones de options. Algunos posibles valores son: None. No permite directivas y no busca el fichero htacces All. Permite todas las directivas y busca el fichero htaccess. AuthConfig. El acceso al contenedor es a travs de clave.
Si AllowOverride es AuthConfig se necesitan tambin las directivas: AuthType [Basic | Digest] AuthName cadena AuthUserFile archivo Require user usuario Las asociaciones usuario-contrasea se guardan en archivo y usamos la utilidad... Para crear uno nuevo $APACHE_DIR/bin/htpasswd [cm] archivo username password Para eliminar un usuario del archivo de contraseas $APACHE_DIR/bin/htpasswd D username
http://httpd.apache.org/docs/2.2/es/mod/mod_auth_digest.html .
Order. allow,deny. Permite a todos los que no estn denegados. deny,allow. Deniega todo lo que no est permitido. Allow y Deny definen quin puede acceder al directorio. Los posibles valores son: All. Permite o deniega a todos. Direccin IP[/netmask][,IP[/netmask]]... Nombre de Dominio
Servidor Virtual. Permite ejecutar varios servidores dentro de la misma mquina y as alojar varios sitios en un mismo servidor. Servidor Virtual basado en nombre. A una misma direccin IP se le asignan varios dominios. A cada uno de estos dominios se les asignar un servidor virtual. (solo compatible con http v1.1). Servidor virtual basado en direccin IP. Se asocia cada servidor virtual a una dir.IP diferente. Nuestra mquina deber tener varias direcciones IP asignadas.
Para definirlo usaremos varias directivas: NameVirtualHost dir.IP:puerto. La direccin IP ser la de la mquina. Aqu se hace referencia a la maquina virtual predeterminada. <VirtualHost dir_IP:puerto></VirtualHost> Se define un contendor para las directivas de nuestro servidor virtual. La IP ser tambin del servidor. <VirtualHost_default_> </VirtualHost> Si una peticin no coincide con ninguna configuracin de ninguna mquina virtual, ste servidor ser el que la atienda. ServerAlias. A cada servidor virtual le daremos un alias que lo identifique
Permisos del usuario apache slo de lectura, excepto en aquellos directorios donde la programacin o servicios requieran escritura (uploads de archivos al servidor, directorios donde php trabaje con ficheros,...) Apache tambin necesita permisos de escritura en el directorio de sesiones de la instalacin de PHP si la programacin en php hace uso de variables de sesin. Crear un grupo desarrolladores-web con los usuarios que pueden cambiar contenidos web y hacer que el directorio $APACHE_DOCS sea del grupo desarrolladores-web, con permisos de lectura y escritura.
Se coloca en $APACHE_DOCS/robots.txt Indica a apache qu directorios son accesibles por los bots de internet en busca de archivos e informacin sobre nuestras webs. Uso: se compone de estructuras del tipo User-agent: agente Disallow: directorio Slo se permite disallow. Si se desea conceder acceso a todo se deja la lnea sin especificar ningn directorio ( Disallow: ) Posibles agentes (bots): * : para todos los agentes WebCrawler : analizador web Hay otros
Excite ArchitextSpider Altavista Scooter Lycos - Lycos_Spider_(T-Rex) Google Googlebot Alltheweb - FAST-WebCrawler/
Ejemplos:
Denegar todo acceso a nuestro web por parte de todos los bots de internet. Utilizaramos:
User agent: * Disallow: /
Denegar acceso slo al web /privado por parte de todos los bots: Denegar acceso al WebCrawler al web /intranet:
User agent: WebCrawler Disallow: /intranet User agent: * Disallow: /privado
Notas:
/ hace referencia al DocumentRoot del servidor web ($APACHE_DOCS) y no a la raiz del sistema de archivos de la mquina donde se ejecuta el servidor. Los webs a los que se hace referencia en robots.txt deben estar definidos en el fichero de configuracin del servidor.
Se encuentran en $APACHE_DIR/logs/
access_log : logea los accesos al servidor web error_log : logea los accesos errneos al servidor web.
PHP - instalacin
# mkdir $PHP_DIR # cp php-version.tar.gz $TEMP_PHP # cd $TEMP_PHP # tar xjvf php-version.tar.bz2 # cd php-version # ./configure --with-apxs2=$APACHE_DIR/bin/apxs \ --with-mysql=$MYSQL_DIR \ with-config-file-path=$APACHE_DIR/conf # make # make install
phpMyAdmin - qu es?
Es una herramienta escrita en php con la intencion de manejar la administracin de MySQL a travs de web. Con phpMyAdmin se pueden realizar todas las operaciones de mantenimiento sobre una bases de datos. La aplicacin es un conjunto de archivos en php que copiaremos en un directorio de nuestro servidor apache, de modo que cuando accedemos a esos archivos, tendremos acceso a las bbdd gestionadas por MySQL.
phpMyAdmin instalacin
Descargar desde el sitio web: http://www.phpmyadmin.net/home_page/downloads.php Descomprimimos y colocamos en el directorio de publicacin de apache. Configuramos una entrada en el archivo de configuracin de apache: Alias /phpMyAdmin $APACHE_DOCS/phpMyAdmin/ <Directory $APACHE_DOCS/phpMyAdmin/> AllowOverride None Options Indexes Order allow,deny Allow from all </Directory>
phpMyAdmin instalacin
Nota: Tras entrar por primera vez en phpMyAdmin, es recomendable dirigirse a la seccin de privilegios. Crearemos una contrasea para el usuario root, o bien y ms recomendable an crearemos a un usuario alternativo a root, con todos sus privilegios, borrando posteriormente al propio root. As evitaremos los ataques a contraseas para el root, que ya no existe.
phpMyAdmin configuracin
En el archivo $APACHE_DOCS/phpMyAdmin/config.inc.php : $cfg[PmaAbsoluteUri] = http://localhost/phpMyAdmin; $cfg[PmaAbsoluteUri_DisableWarning] = TRUE; $cfg[Servers][$i][host] = localhost; $cfg[Servers][$i][auth_type] = http; $cfg[Servers][$i][user] = ; $cfg[Servers][$i][password] = ; config|http|cookie
Nota importante: Esta configuracin presupone que al menos un usuario con privilegios de root tiene asignada contrasea. En caso contrario, habremos perdido el control del servidor mysql a travs de phpMyAdmin hasta que esta situacin se modifique.
Bibliografa Servidor Apache2 la biblia M.J. Kabir - Anaya Multimedia. Documentacin y recursos http://www.apache.org http://www.php.net http://www.mysql.com http://www.phpmyadmin.net