Tutorial - Servidor doméstico

Apache - PHP - MySQL - phpMyAdmin - SMTP

A través de este tutoríal instalaremos un servidor de páginas web con base de datos MySQL, administrada desde un entorno web ( phpMyAdmin ) y finalizaremos con la instalación opcional de un servidor de correo saliente ( SMTP ) Todo ello para un sistema operativo Windows XP, 2000, 2003.
Podremos instalar los programas por separado, en esta pagina podremos los links de enlaces o como en mi caso use el programa AppServer, que instala todos los programas necesarios para instalar el servidor. En este caso todos los programas serán instalados en C:\AppServ, tambiem podremos usar PHPTriad que es similar al anterior o FoxServ, todos son similares pero yo e usado AppServer.

TENGALO EN CUENTA QUE PARA LAS MODIFICACIONES, USAREMOS EN TODOS LOS CASOS LA BARRA " / " Y EN NINGUN CASO USAMOS LA BARRA " \ "

Si instalamos los programas por separado el servidor será instalado en :

C:\apache\htdocs

Si lo instalamos por medio del programa Appserv, el servidor será:

C:\AppServ\www

En nuestro servidor, en donde pondremos nuestras páginas web con formato PHP.
Para no tener que configurar todos las configuraciones manualmente y si usted a instalado AppServer Win32 - 2.3.0 o los siguientes programas:

- Apache WebServer Version 1.3.29
- PHP Script Language Version 4.3.4
- MySQL Database Version 4.0.16
- Zend Optimizer Version 2.1.0a
- phpMyAdmin Database Manager Version 2.5.4

Puede descargar la configuraciones abajo descriptas solo copiando y pegando en las carpetas correspondientes.
Pulse Aquí para descargar las configuraciones.
Si prefiere configurar el servidor paso a paso manualmente, lea todo el articulo descripto mas abajo.
Aclarado esto empezaremos con el tutorial, recuerde que lo mismo que ve en el archivo de descarga es lo mismo que usted configurara manualmente.

Apache 1.3

Instalación de Apache 1.3

Descargaremos el Apache en su versión para Windows, para ello entramos en esta página: http://httpd.apache.org/dist/httpd/binaries/win32/.

En la cual buscamos la descarga apache_1.3.28-win32-x86-no_src.msi, descargamos y ejecutamos el instalador.

En una pantalla se nos piden:

Network Domain, ponemos: 127.0.0.1
Server name, ponemos: 127.0.0.1
Administrator´s Email Address, se refiere al Correo-e del administrador, puedes poner el que quieras.
Seleccionamos la opción: Run when started manually, only for me y pulsamos Next...

Por defecto el Apache se instala en: C:\Archivos de programa\Apache Group\Apache\.

Para arrancar el Apache debes entrar en Inicio - Todos los programas - Apache HTTP Server - Start Apache in Console. Una vez arrancado podrás ver una ventana de MSDOS, para cerrar el Apache cierra esta ventana.

PHP4

Instalación de PHP4

Antes de nada asegúrate de que el Apache está cerrado.

Instalaremos la versión 4.3.3, el archivo en cuestión: php-4.3.3-Win32.zip, localizado en: http://www.php.net/get/php-4.3.3-Win32.zip/from/a/mirror. Iniciamos la dercarga y guardamos en el escritorio para posteriormente descomprimirlo y copiar los archivos a la carpeta que especificamos a continuación.

Una vez descargado, creamos en el disco local C:\ la carpeta php, que quedaría C:\php\, ahí copiamos los archivos.

Entramos en C:\php\ y copiamos el archivo php4ts.dll a la carpeta C:\WINDOWS\System32\, igualmente cogemos los archivos de la carpeta C:\php\dlls\ y los copiamos a C:\WINDOWS\System32\.

Configuración del archivo php.ini
Puede ver todas las sintaxis de PHP. Pulsando Aqui

El siguiente paso es configurar el archivo php.ini. Entramos en C:\php\ y buscamos el archivo php.ini-dist el cual lo renombramos a php.ini. Editamos este archivo con el mismo Bloc de notas o para una mejor búsqueda con el WordPad, si dispones de el.

Búscamos la linea register_globals = Off, ahí sustituimos Off por On.

Indicamos a PHP dónde se guardan las extensiones. Buscamos extension_dir y le ponemos la carpeta que contiene los archivos php_xxx.dll, que por defecto es la carpeta C:\php\extensions\.

Debe quedar extension_dir = c:/php/extensions/, fíjate en la inclinación de las barras.

Vamos a activar las extensiones, para lo cual buscamos Windows Extensions para ello les quitamos el ; de delante.

Debe quedar:

extension=php_bz2.dll
extension=php_cpdf.dll
extension=php_crack.dll
extension=php_curl.dll
extension=php_db.dll
extension=php_dba.dll
extension=php_dbase.dll
extension=php_dbx.dll
extension=php_domxml.dll
extension=php_exif.dll
extension=php_fdf.dll
extension=php_filepro.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_hyperwave.dll
extension=php_iconv.dll
;extension=php_ifx.dll
extension=php_iisfunc.dll
extension=php_imap.dll
extension=php_interbase.dll
extension=php_java.dll
extension=php_ldap.dll
extension=php_mbstring.dll
;extension=php_mcrypt.dll
extension=php_mhash.dll
extension=php_mime_magic.dll
extension=php_ming.dll
extension=php_mssql.dll
extension=php_msql.dll
;extension=php_oci8.dll
extension=php_openssl.dll
;extension=php_oracle.dll
extension=php_pdf.dll
extension=php_pgsql.dll
extension=php_printer.dll
extension=php_shmop.dll
;extension=php_snmp.dll
extension=php_sockets.dll
;extension=php_sybase_ct.dll
extension=php_w32api.dll
extension=php_xmlrpc.dll
extension=php_xslt.dll
extension=php_yaz.dll
extension=php_zip.dll


Si te fijas algunas tienen el ; delante, ya que algunas extensiones requieren de librerias que no estan disponibles en esta distribución de PHP. Por lo que no las activamos.

Para hacer pruebas con Upload de archivos via HTTP, vamos a indicar el directorio donde los archivos se almacenarán temporalmente. Primero creamos en C:\php\ una carpeta llamada uploads, que quedaría C:\php\uploads\. En segundo lugar buscamos upload_tmp_dir y le damos la ruta de esta carpeta que hemos creado.

La linea quedaría: upload_tmp_dir = c:/php/uploads/.

Ahora para trabajar con sesiones creamos dentro de C:\php\ otra carpeta llamada sessions, que quedaría C:\php\sessions\. Buscamos session.save_path, y editamos la linea de tal forma que quede: session.save_path = c:/php/sessions/.

Cerramos el archivo php.ini y guardamos los cambios, posteriormente lo copiamos a la carpeta C:\WINDOWS\.

Configuración httpd.conf de Apache 1,3

El siguiente paso es decirle a Apache que tenemos el PHP.
Puede ver todas las sintaxis de Apache Pulsando Aqui

Entramos en C:\Archivos de programa\Apache Group\Apache\conf\ y localizamos el archivo httpd.config, lo abrimos con el Bloc de notas o con el WordPad, para editarlo.

Buscamos Dynamic Shared Object (DSO) Support, que es donde se cargan los módulos, hasta llegar a unas lineas similares a estas:

# Example:
# LoadModule foo_module modules/mod_foo.so
#


Debajo de # añadimos esta linea:
LoadModule php4_module c:/php/sapi/php4apache.dll
.

Tiene que quedar asi:

# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule php4_module c:/php/sapi/php4apache.dll

Ahora buscamos ClearModuleList y nos aparece:

ClearModuleList
#AddModule mod_vhost_alias_c


Lo editamos de tal forma que quede:

ClearModuleList
AddModule mod_php4.c
#AddModule mod_vhost_alias.c

El siguiente paso es para que al entrar en un directorio de nuestro servidor nos ejecute el archivo predeterminado. Se ejecutarán por orden; si no encuentra el primero, pasa al segundo; si no está el segundo, pasa al tercero, y así sucesivamente hasta que si no encuentra ninguno entonces da error.

Buscamos IfModule mod_dir.c, y nos aparece estas lineas:

<IfModule mod_dir.c>
DirectoryIndex index.html
</IfModule>


La linea central la sustituimos por:

DirectoryIndex index.html index.htm index.php index.php3 index.phtml

De esta forma le decimos que busque primero, como puedes ver, el index.html si no se encuentra pasa a buscar index.htm, index.php...

Ahora a continuación de la linea central colocamos:

AddType application/x-httpd-php .php .php3 .phtml
AddType application/x-httpd-php-source .phps


Estas hacen que si queremos mostrar el código fuente, se mostrara en color el código PHP.

Todo quedaría de esta forma:

<IfModule mod_dir.c>
DirectoryIndex index.html index.htm index.php index.php3 index.phtml
AddType application/x-httpd-php .php .php3 .phtml
AddType application/x-httpd-php-source .phps
</IfModule>


Ahora en C:\ creamos una carpeta llamada Apache donde dentro de esta crearemos otra www, de tal forma que quede; C:\Apache\www\, donde en la carpeta www colocaremos las páginas webs que creemos.

Posteriormente de nuevo en httpd.config, buscamos DocumentRoot y nos aparece:

DocumentRoot "C:/Archivos de programa/Apache Group/Apache/htdocs"

Por lo que le vamos a decir a Apache dónde guardamos nuestras páginas webs, que será en la carpeta www del directorio Apache de C:\, como hemos dicho.

Para ello, lo escribimos en la linea que nos apareció en la búsqueda de DocumentRoot:

DocumentRoot "C:/Apache/www/"

Ya podemos cerrar httpd.config guardando los cambios.

Configuración httpd.conf para Apache 2.0.X

Si utiliza AppServer, deje los programas originales no actualice a las nuevas versiones para no tener problemas
Buscamos " Dynamic Shared Object (DSO) Support ", que es donde se cargan los módulos. Y encontramos hasta un ejemplo:

# Example:
# LoadModule foo_module modules/mod_foo.so
#

Y añadimos debajo:

LoadModule php4_module c:/php/sapi/php4apache2.dll

De tal manera que tiene que quedar asi:

# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule php4_module c:/php/sapi/php4apache2.dll

El directorio predeterminado para guardar nuestras páginas es el htdocs del Apache:

C:\Archivos de programa\Apache Group\Apache\htdocs\

Pero podemos cambiarlo fácilmente. Buscamos DocumentRoot y nos sale esto:

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#

DocumentRoot "C:/Archivos de programa/Apache Group/Apache/htdocs"

Y sustituimos la carpeta htdocs del Apache por la que queramos. Todos los archivos que vayas a probar con el Apache deberán estar localizados en esta carpeta. Por ejemplo:

DocumentRoot "C:/miweb/"

Por lo que construiremos toda nuestra página dentro de ese directorio, que equivale al directorio raíz de nuestro host local.

Ahora buscamos el DirectoryIndex y nos sale algo como esto:

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
# The index.html.var file (a type-map) is used to deliver content-
# negotiated documents. The MultiViews Option can be used for the
# same purpose, but it is much slower.
#
DirectoryIndex index.html index.html.var

Modificamos la última línea para que si entramos en un directorio http://127.0.0.1/directorio/ nos autoejecute el index predeterminado (si existe) y no nos salga un mensaje de error. Puedes usar más nombres si lo prefieres. Se ejecutarán por orden: si no encuentra el primero, pasa al segundo; si no está el segundo, pasa al tercero, y así sucesivamente hasta que si no encuentra ninguno entonces da error. En la siguiente línea, si en nuestro directorio tenemos un index.htm y un index.php, por defecto se ejecutará el index.htm ya que está antes.

DirectoryIndex index.html index.htm index.php index.php3 index.phtml index.html.var

Ahora le añadimos estas líneas:

AddType application/x-httpd-php .php .php3 .phtml
AddType application/x-httpd-php-source .phps

La primera indica las extensiones que serán reconocidas. La segunda sirve para que si entras en una página loquesea.phps entonces se muestra el código PHP a color, muy útil si queremos por ejemplo mostrar el código fuente PHP a color en una página. De tal forma que al final todo quede así:

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
# The index.html.var file (a type-map) is used to deliver content-
# negotiated documents. The MultiViews Option can be used for the
# same purpose, but it is much slower.
#
DirectoryIndex index.html index.htm index.php index.php3 index.phtml index.html.var
AddType application/x-httpd-php .php .php3 .phtml
AddType application/x-httpd-php-source .phps

Ya podemos cerrar httpd.config guardando los cambios.

El archivo info.php

Abrimos el Bloc de notas y escribimos:

<?
phpinfo();
?>


Pulsamos en Archivo - Guardar como..., en Nombre ponemos info.php y en Tipo seleccionamos Todos los archivos. Lo guardamos dentro de la carpeta que anteriormente hemos creado www, localizada en C:\Apache\www\.

Ahora arrancamos el Apache, para ello entramos en Inicio - Todos los programas - Apache HTTP Server - Start Apache in Console, y nos aparece la ventana de MSDOS, la dejamos abierta. Posteriormente en la barra de direcciones del navegador escribes: http://localhost/info.php o http://127.0.0.1/info.php

A través de esto visualizamos una página de información de php, con el logo. Esta página nos informa del PHP que tenemos instalado.

Si sale esta página es que todo está bien.

MySQL

Instalación de MySQL

Vamos a hacer la instalación de la versión 4.0.16 o posterior, entramos en http://www.mysql.com/, posteriormente entramos en el apartado Downloads y buscamo MySQL 4.0. Una vez dentro de esta página vamos bajando hasta llegar a Windows downloads, ahí podemos ver Windows 95/98/NT/2000/XP/2003, pulsamos en Pick a mirror. Dentro de esta página seleccionamos el servidor HTTP que nos interese y pulsamos en HTTP, e iniciamos la descarga. Le damos a guardar y lo ubicamos en el escritorio.

Mientras se descarga vamos a crear una nueva carpeta llamada mysql dentro del directorio php de C:\, osea debe quedar: C:\php\mysql\.

Una vez finalizada la descarga, lo descomprimimos. Posteriormente abrimos la carpeta que hemos descomprimido y buscamos el Setup, e iniciamos la instalación. Cuando se pregunte la ruta de la instalación, aparece por defecto: C:\mysql, esto lo sustituimos por C:\php\mysql para realizar la instalación en la carpeta que hemos creado.

Finalizada la instalación, entramos en C:\php\mysql\bin\, y localizamos el archivo winmysqladmin.exe lo ejecutamos, doble click. Una vez ejecutado nos pide un nombre de usuario y contraseña, introducimos, por ejemplo: usuario y clave.

Ahora cerramos todo y reiniciamos WINDOWS, para tenerlo todo un poco más claro. Una vez reiniciado fíjate que durante unos segundos aparece la pantalla de MySQL, esto es debido a que por defecto dentro de Inicio - Todos los programas - Inicio, se ha creado el acceso directo WinMySQLadmin, lo dejamos ahí, ya sabes que cuando enciendas el ordenador se arranca automáticamente MySQL.

phpMyAdmin

Instalación de phpMyAdmin

phpMyAdmin es una utilidad que nos sirve para interactuar con una base de datos, en este caso MySQL, desde un entorno web. Está escrita en PHP, por lo que necesitamos tener instalado y arrancado Apache y MySQL para poder trabajar con ella.

En primer lugar vamos a crear una nueva carpeta en www del directorio Apache del disco local C:\ la llamaremos phpmyadmin por lo que la ruta sería: C:\Apache\www\phpmyadmin\. En esta carpeta recién creada vamos a copiar los archivos que descargaremos a continuación.

Para la descarga de archivos entramos en: http://www.phpmyadmin.net/ y accedemos a Downloads, aquí localizamos la descarga phpMyAdmin-2.5.4-php.zip. Seleccionamos el servidor para la descarga y guardamos en el escritorio. Una vez finalizada la descarga descomprimimos los archivos y los copiamos en la carpeta phpmyadmin que anteriormente hemos creado, C:\Apache\www\phpmyadmin\.

Configuración del archivo config.inc.php

Entramos en C:\Apache\www\phpmyadmin\ y localizamos en archivo config.inc.php lo abrimos con nuestro editor de texto para editar lo siguiente:

Buscamos la linea $cfg['PmaAbsoluteUri'] = ''; y escribimos de tal forma de que esta linea quede así:

$cfg['PmaAbsoluteUri'] = 'http://localhost/phpmyadmin/';

Ahora buscamos la linea $cfg['blowfish_secret'] = ''; y ponemos, una cadena de caracteres cualquiera, que servirá de semilla para la encriptación de contraseñas al usar la autentificación con cookies:

$cfg['blowfish_secret'] = 'puedes poner lo que quieras';

Cerramos y guardamos los cambios.

Configurando los usuarios del servidor MySQL

Nuestro usuario de MySQL por defecto es root sin password. Con esto podría valernos para hacer pruebas utilizando MySQL en nuestro host local, pero vamos a crear un usuario y borrar aquellos que no nos interese, para de esta forma disponer de un nivel de seguridad aceptable.

Antes de nada arrancamos Apache y MySQL. Escribimos en la barra de direcciones de nuestro navegador: http://localhost/phpmyadmin/ y seguimos los siguientes pasos:

Pinchamos en el enlace Privilegios y en la siguiente pantalla le damos a Agregar nuevo usuario.

En la pantalla que entramos se nos pide:

Nombre de usuario: aquí escribimos usuario.

Servidor: Podemos seleccionar el campo Cualquier servidor ( Si seleccionamos esta opción el campo de texto queda vacio, no se pone nada ) para entrar desde cualquier ordenador ó seleccionamos Local ( En este caso ponemos en el campo de texto localhost, si no aparece automáticamente ) para entrar únicamente desde nuestro ordenador, donde tenemos instalado MySQL.

Contraseña: aquí escribimos clave.

Re-escriba: aquí re-escribimos clave.

Privilegios globales: Le damos todos los permisos y privilegios, marcando todas las casillas que aparecen.

Pulsamos Continúe.

Ahora, en la pantalla que entramos, pulsamos en Privilegios de nuevo, y en la página que nos dirige marcamos aquellos usuarios que queremos eliminar. En la opción Retire a los usuarios seleccionados marcamos la casilla Borre a los usuarios y vueva a cargar los privilegios posteriormente. A continuación pulsamos Continúe

Por último en la pantalla que entramos, al final de la página, abajo del todo aparece una Nota, leela y pulsa el enlace que contiene la nota: Cargar la página de privilegios nuevamente. Nos dirige a una página que nos dara un error, esto es debido a que tenemos que editar de nuevo el archivo config.inc.php, cierra el navegador, y apaga el servidor Apache.

Entramos otra vez en C:\Apache\www\phpmyadmin\ y localizamos en archivo config.inc.php lo abrimos con nuestro editor de texto para editarlo de nuevo.

Buscamos las lineas:

$cfg['Servers'][$i]['auth_type']
$cfg['Servers'][$i]['user']
$cfg['Servers'][$i]['password']

En la primera linea podemos poner config para que no nos pida contraseña al entrar ( Sólo si somos el único usuario que va a disponer de este phpMyAdmin ), o si queremos que nos la pida ponemos http para autentificación HTTP o cookie para autentificación y navegación con cookies. Esta última, cookie, es la más recomendada.

En la segunda linea ponemos el nombre de usuario que hemos creado: usuario.

Por último en la tercera linea colocamos la contraseña creada: clave.

De tal forma que quede:

$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'usuario';
$cfg['Servers'][$i]['password'] = 'clave';

Cerramos y guardamos los cambios.

Arrancamos Apache y MySQL, accedes a la dirección http://localhost/phpmyadmin/, si pusistes config, entraras diréctamente al panel de administración. En cambio si pusistes http o cookie se te pedirá el usuario y contraseña, posteriormente te redirige al panel de administración. El usuario y contraseña serán las que pusiste al crear el usuario: usuario y clave.

En nuestros script que usen MySQL usaremos el usuario y contraseña que hemos creado, de tal forma que al hacer la conexión a MySQL debe quedar algo similar a esto:

<?php
mysql_connect("127.0.0.1","usuario","clave");
?>

Si nos decidimos por instalar un portal prefablicado como PHP Nuke o un foro, o cualquier aplicación en la que nos solicitan un host, usuario y contraseña, los datos que deberemos indicar son esos tres: 127.0.0.1 o localhost como host, usuario como usuario y clave como contraseña.

Hasta aquí si todo lo hemos realizado corréctamente, ya tenemos en nuestra máquina un completo servidor de páginas webs, con bases de datos MySQL, administrada desde un entorno web, phpMyAdmin. Osea un todopoderoso conjunto de herramientas para la programación de aplicaciones webs.

SMTP

Instalación opcional

Si queremos que nuestras páginas PHP envien correos electrónicos, utilizando la función mail() para sistemas de recomendaciones, contacto u otras aplicaciones de correo saliente. Podemos instalar un servidor SMTP, con estos servidores podremos enviar correos desde PHP, pero no podremos recibir ya que se tratan de servidores SMTP ( Enviar ) y no POP/IMAP ( Recibir ).

Configuración del archivo php.ini

Vamos a abrir con nuestro editor de texto el archivo php.ini localizado en C:\php\, éste viene por defecto configurado para un servidor de correo instalado en el localhost, pero se le puede cambiar la variable sendmail_from, que se encarga de poner el remitente que le aparecerá a la persona que recibe el correo si no lo especificamos en las cabeceras, en el campo FROM, de la función mail() de nuestras páginas PHP.

Buscamos las lineas:

[mail function]
; For Win32 only.
SMTP = localhost

; For Win32 only.
sendmail_from = me@localhost.com


Podemos cambiar sendmail_from colocando el remitente que quieras, por ejemplo: usuario@micorreo.com

De tal forma que quede:

[mail function]
; For Win32 only.
SMTP = localhost

; For Win32 only.
sendmail_from = usuario@micorreo.com

Cerramos, guardamos los cambios y copiamos el archivo, php.ini, a C:\WINDOWS\ de nuevo, lo sobreescribimos.

Instalación de un servidor de correo saliente SMTP

Un buen servidor sería el QK SMTP Server lo encontramos en http://www.qksoft.com/, descargar en Download now y empezar la instalación. No hay que modificar nada en este programa, sólo hay que tenerlo abierto y el Apache arrancado y ya podemos enviar correos mediante PHP.

Probando el servidor SMTP

Abrimos el Bloc de notas y escribimos:

<?php
$sfrom="remitente@correo.com"; //Remitente
$sdestinatario="destinatario@correo.com"; //Destinatario
$ssubject="Test SMTP"; //Asunto
$shtml="El servidor de correo SMTP funciona correctamente."; //Mensaje
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
$sheader=$sheader."Mime-Version: 1.0\n";
$sheader=$sheader."Content-Type: text/html";
mail($sdestinatario,$ssubject,$shtml,$sheader);
?>


Cambias remitente@correo.com que será el que aparece como remitente del correo y destinatario@correo.com que será el buzón de correo donde llegara este Test SMTP.

Pulsamos en Archivo - Guardar como..., en Nombre ponemos TestSMTP.php y en Tipo seleccionamos Todos los archivos. Lo guardamos dentro de la carpeta www, localizada en C:\Apache\www\.

Arranca el Apache y abre el programa SMTP que hemos instalado, en este caso QK SMTP Server, entra en Inicio - Todos los programas - QK SMTP Server - QK SMTP Server...

En la barra de direcciones del navegador escribes: http://localhost/TestSMTP.php o http://127.0.0.1/TestSMTP.php nada más entrar en esta página se ejecuta el script y se envia el correo. Posteriormente dirigete al buzón de correo que pusiste en $sdestinatario, para ver si a llegado el correo con éxito. Si actualizas la página se envia de nuevo el correo.

MFO Navegandaluz.com