A lo largo de este artículo voy a explicar la manera de hacer funcionar Apache junto con el lenguaje de programación PHP, estando orientado a la distribución del sistema operativo GNU/Linux Fedora 9 (de la que por cierto, dentro de muy pronto va a salir la nueva versión, Fedora 11, llamada “Leonidas”), no habiendo cambios significativos bajo otras distribuciones en los procedimientos que se detallan a continuación. He adjuntado, además, una serie de tips y configuraciones fácilmente aplicables que nos harán la vida más fácil para trabajar con estas aplicaciones.
¿Qué es Apache?
Apache es un servidor web HTTP de código abierto desarrollado desde 1995 escrito en C y multiplataforma, muy extendido en su uso actualmente. Se distribuye bajo una licencia de tipo Apache, y puede ser descargado desde su página web o desde los repositorios de nuestra distribución GNU/Linux. Su última versión es la 2.2.11.
¿Qué podemos hacer con él?
Aparte de su uso en servidores usados para páginas de internet, Apache es una herramienta interesante que, combinada con diferentes herramientas, puede sernos útil a la hora de aprender acerca de las diferentes vulnerabilidades web en un entorno controlado. También puede ser utilizado para desarrollar aplicaciones en lenguajes de programación que requieren de un servidor, véase PHP, lenguaje en el que nos vamos a centrar es esta guía.
¿Qué es PHP?

Logotipo de PHP
PHP es un potente lenguaje de programación interpretado, multiparadigma, multiplataforma y orientado al desarrollo web, siendo su última versión la 5.2.9-2. Se publica bajo una licencia de tipo PHP License, la cual es considerada software libre por parte de la FSF. Su sintaxis es muy parecida a la de los lenguajes de programación C o Perl. En su web hay mucha documentación interesante, y más información acerca del lenguaje.
Comenzamos
Bien, una vez aclarados los conceptos principales en cuanto a definición y aplicaciones del software, voy a proceder a la explicación en sí.
Lo primero que debemos hacer es descargar e instalar correctamente el paquete “httpd”. Desde la terminal (con privilegios de superusuario):
yum install httpd
Con esto, se instalarán los paquetes necesarios para ejecutar Apache. Para evitar confusiones, me gustaría indicar que la instalación no genera ningún tipo de acceso directo en el menú.
Antes de probar si la instalación ha sido realizada correctamente, es muy conveniente configurar debidamente o deshabilitar SELinux, como mínimo, durante las pruebas que hagamos con Apache, ya que muchas veces provoca conflictos con él alterando su funcionamiento.
Esto se puede hacer de la siguiente forma:
Sistema-Administración-SELinux Management – Deshabilitamos SELinux
Ahora toca instalar PHP. Desde la terminal, y con privilegios de superusuario:
yum install php
Y con esto tendremos instalado PHP. Este paquete tampoco genera ningún tipo de entrada en los menús del sistema.
Ahora que tenemos instalado y configurado lo necesario, vamos a hacer una prueba para ver si todo funciona correctamente. Para ejecutar Apache, nos vamos a:
Sistema – Administración – Servicios
Estamos accediendo a una zona de configuración del sistema, por lo que nos hará falta introducir nuestra contraseña de root antes de poder cambiar nada. Una vez allí, hacemos click con el ratón encima del servicio “httpd”, posteriormente marcamos las opciones “Enable” y “Start”. Para desactivar el servicio, en la misma ventana marcamos las opciones de parar y deshabilitar el servicio.
Vale, ya tenemos funcionando el Apache. Ahora, para probarlo, nos vamos al navegador e introducimos en la barra de direcciones “localhost”. Inmediatamente debería abrirse la página de bienvenida de Apache en Fedora, lo cual significa que hemos instalado todo correctamente.
Los archivos que queramos ejecutar han de ser copiados al directorio /var/www/html/. Para acceder a este directorio necesitamos privilegios de root en nuestro sistema, y puede resultar fastidioso tener que utilizar la consola continuamente para copiar cualquier archivo, por lo que voy a compartir un pequeño tip que me comentó Lix hace tiempo. Gracias a esto, desde nuestro usuario normal podremos acceder a ese directorio con total libertad, cosa que se agredece debido a la constante utilización del mismo, ya que resulta mucho más cómodo.
Simplemente introducimos en la terminal (con privilegios de superusuario):
chown -R tu-user:tu-user /var/www/html/
Para que no andéis introduciendo comandos a ciegas, voy a dar una breve explicación de este comando:
- chown: Sirve para cambiar el propietario de un archivo o directorio (en nuestro caso, /var/www/html/).
- -R: Se utiliza para que todos los archivos y subdirectorios de /var/www/html/ se incluyan en la acción del comando.
- tu-user:tu-user: Es el usuario al que se le asigna el directorio.
- /var/www/html/: El directorio que queremos que le sea asignado al usuario en cuestión.
Con esto, haremos mucho más cómodo el trabajo con Apache. A continuación voy a dar un simple ejemplo de uso con un archivo real, “pruebas.php”, para que se termine de entender su uso. Lo primero, tenemos que crear un archivo llamabo “pruebas.php” o similar, siempre y cuando tenga la extensión .php. Editamos el archivo con Gedit o con el editor de texto que tengamos a mano, y añadimos el siguiente contenido:
<html>
<body>
<?php
echo “Probando en PHP”;
?>
</body>
</html>
Una vez hecho esto, guardamos el archivo y lo movemos a /var/www/html/. Luego desde el navegador escribimos la siguiente dirección:
localhost/pruebas.php
Con esto se debería de ejecutar el archivo, mostrando en la pantalla “Probando en PHP”. Y con este sencillo ejemplo final, doy por finalizado este artículo, que espero haya sido de mucha utilidad, ya que no hay demasiada información sobre cómo manejar de forma eficaz este tipo de software, y aún menos en distribuciones concretas.


9 comments
Comments feed for this article
Junio 20, 2009 a 3:21 pm
julian
hola hice los mismo pero con fedora core 11 y los archivos php no los interpreta ??? hice un html sencillo y si lo vi los php no ??? hay algo mas para configurar
Junio 22, 2009 a 4:11 pm
Lix
Comprobaste que el servicio de apache (httpd) estaba iniciado?
Colocaste los archivos php en el directorio de var/www/html ?
Julio 30, 2009 a 6:19 pm
Wilner Mena aguilar
Hola. Si no los vez es por que no instalaste php, el httpd, es decir apache es solo un servidor web y para que funciones bien las extenciones .php debes de instalar php, puedes usar el comando yum install php5 para instalar.
Agosto 9, 2009 a 4:57 am
boliboli
buenas.. he instalado fedora 11 en mi equipo, este trajo preinstalado el apache, pero resulta que cuando ejecuto desde la consola, yum install php , se descargan varios paquete q a la hora de ser instalados me informa de errores de dependencia. la lista es larga, ¿que puedo hacer en este caso?
Agosto 9, 2009 a 4:59 am
boliboli
Running rpm_check_debug
ERROR with rpm_check_debug vs depsolve:
rpmlib(PayloadIsXz) se necesita para glib2-2.21.4-3.fc12.i686
rpmlib(PayloadIsXz) se necesita para glibc-devel-2.10.90-12.i686
rpmlib(PayloadIsXz) se necesita para gdb-6.8.50.20090803-2.fc12.i686
rpmlib(PayloadIsXz) se necesita para glibc-common-2.10.90-12.i686
rpmlib(PayloadIsXz) se necesita para DeviceKit-disks-005-4.fc12.i686
rpmlib(PayloadIsXz) se necesita para openssh-server-5.2p1-17.fc12.i686
rpmlib(PayloadIsXz) se necesita para python-libs-2.6.2-1.fc12.i686
rpmlib(PayloadIsXz) se necesita para nash-6.0.92-2.fc12.i686
rpmlib(PayloadIsXz) se necesita para device-mapper-multipath-0.4.9-4.fc12.i686
rpmlib(PayloadIsXz) se necesita para libpurple-2.6.0-0.10.20090806.fc12.i686
rpmlib(PayloadIsXz) se necesita para libgnomecups-0.2.3-7.fc12.i686
rpmlib(PayloadIsXz) se necesita para parted-1.9.0-9.fc12.i686
rpmlib(PayloadIsXz) se necesita para e2fsprogs-libs-1.41.8-5.fc12.i686
rpmlib(PayloadIsXz) se necesita para libwpg-0.1.3-4.fc12.i686
rpmlib(PayloadIsXz) se necesita para gnupg2-2.0.12-2.fc12.i686
rpmlib(PayloadIsXz) se necesita para glibc-2.10.90-12.i686
rpmlib(PayloadIsXz) se necesita para cyrus-sasl-lib-2.1.22-25.fc12.i686
rpmlib(PayloadIsXz) se necesita para wvdial-1.60-10.fc12.i686
rpmlib(PayloadIsXz) se necesita para cups-1:1.4-0.rc1.12.fc12.i686
rpmlib(PayloadIsXz) se necesita para paps-0.6.8-10.fc12.i686
rpmlib(PayloadIsXz) se necesita para libudev-145-4.fc12.i686
rpmlib(PayloadIsXz) se necesita para curl-7.19.5-9.fc12.i686
rpmlib(PayloadIsXz) se necesita para pilot-link-2:0.12.4-2.fc12.i686
rpmlib(PayloadIsXz) se necesita para libcom_err-1.41.8-5.fc12.i686
rpmlib(PayloadIsXz) se necesita para pidgin-2.6.0-0.10.20090806.fc12.i686
rpmlib(PayloadIsXz) se necesita para libss-1.41.8-5.fc12.i686
rpmlib(PayloadIsXz) se necesita para util-linux-ng-2.16-3.fc12.i686
rpmlib(PayloadIsXz) se necesita para ntp-4.2.4p7-4.fc12.i686
rpmlib(PayloadIsXz) se necesita para lua-5.1.4-4.fc12.i686
rpmlib(PayloadIsXz) se necesita para cyrus-sasl-2.1.22-25.fc12.i686
rpmlib(PayloadIsXz) se necesita para rmt-1:0.4-0.3.b42.fc12.i686
rpmlib(PayloadIsXz) se necesita para lftp-3.7.14-5.fc12.i686
rpmlib(PayloadIsXz) se necesita para libcurl-7.19.5-9.fc12.i686
rpmlib(PayloadIsXz) se necesita para gnupg-1.4.9-6.fc12.i686
rpmlib(PayloadIsXz) se necesita para nfs-utils-1:1.2.0-8.fc12.i686
rpmlib(PayloadIsXz) se necesita para libuuid-2.16-3.fc12.i686
rpmlib(PayloadIsXz) se necesita para kpartx-0.4.9-4.fc12.i686
rpmlib(PayloadIsXz) se necesita para dump-1:0.4-0.3.b42.fc12.i686
rpmlib(PayloadIsXz) se necesita para quota-1:3.17-5.fc12.i686
rpmlib(PayloadIsXz) se necesita para gnome-vfs2-2.24.1-6.fc12.i686
rpmlib(PayloadIsXz) se necesita para libwvstreams-4.6-4.fc12.i686
rpmlib(PayloadIsXz) se necesita para readline-6.0-2.fc12.i686
rpmlib(PayloadIsXz) se necesita para cyrus-sasl-plain-2.1.22-25.fc12.i686
rpmlib(PayloadIsXz) se necesita para openssh-clients-5.2p1-17.fc12.i686
rpmlib(PayloadIsXz) se necesita para libbdevid-python-6.0.92-2.fc12.i686
rpmlib(PayloadIsXz) se necesita para polkit-0.93-3.fc12.i686
rpmlib(PayloadIsXz) se necesita para cups-libs-1:1.4-0.rc1.12.fc12.i686
rpmlib(PayloadIsXz) se necesita para sqlite-3.6.14.2-2.fc12.i686
rpmlib(PayloadIsXz) se necesita para openssh-askpass-5.2p1-17.fc12.i686
rpmlib(PayloadIsXz) se necesita para openssl-0.9.8k-7.fc12.i686
rpmlib(PayloadIsXz) se necesita para libsmbclient-0:3.4.0-0.41.fc12.1.i686
rpmlib(PayloadIsXz) se necesita para ftp-0.17-51.fc12.i686
rpmlib(PayloadIsXz) se necesita para lvm2-2.02.50-2.fc12.i686
rpmlib(PayloadIsXz) se necesita para samba-winbind-0:3.4.0-0.41.fc12.1.i686
rpmlib(PayloadIsXz) se necesita para python-2.6.2-1.fc12.i686
rpmlib(PayloadIsXz) se necesita para abiword-1:2.7.8-2.fc12.i686
rpmlib(PayloadIsXz) se necesita para device-mapper-multipath-libs-0.4.9-4.fc12.i686
rpmlib(PayloadIsXz) se necesita para ghostscript-8.70-1.fc12.i686
rpmlib(PayloadIsXz) se necesita para python-decorator-3.0.1-3.fc12.noarch
rpmlib(PayloadIsXz) se necesita para openssh-5.2p1-17.fc12.i686
rpmlib(PayloadIsXz) se necesita para php-common-5.3.0-5.fc12.i686
rpmlib(PayloadIsXz) se necesita para udev-145-4.fc12.i686
rpmlib(PayloadIsXz) se necesita para eggdbus-0.5-2.i686
rpmlib(PayloadIsXz) se necesita para bc-1.06-35.fc12.i686
rpmlib(PayloadIsXz) se necesita para mkinitrd-6.0.92-2.fc12.i686
rpmlib(PayloadIsXz) se necesita para krb5-auth-dialog-0.10-2.fc12.i686
rpmlib(PayloadIsXz) se necesita para libgnomeprint22-2.18.6-3.fc12.i686
rpmlib(PayloadIsXz) se necesita para krb5-libs-1.7-5.fc12.i686
rpmlib(PayloadIsXz) se necesita para samba-common-0:3.4.0-0.41.fc12.1.i686
rpmlib(PayloadIsXz) se necesita para glibc-headers-2.10.90-12.i686
rpmlib(PayloadIsXz) se necesita para pyparted-2.1.1-1.fc12.i686
rpmlib(PayloadIsXz) se necesita para grubby-7.0.1-2.fc12.i686
rpmlib(PayloadIsXz) se necesita para libabiword-1:2.7.8-2.fc12.i686
rpmlib(PayloadIsXz) se necesita para pam_krb5-2.3.7-2.fc12.i686
rpmlib(PayloadIsXz) se necesita para php-5.3.0-5.fc12.i686
rpmlib(PayloadIsXz) se necesita para neon-0.28.5-2.fc12.i686
rpmlib(PayloadIsXz) se necesita para evolution-data-server-2.27.5-1.fc12.i686
rpmlib(PayloadIsXz) se necesita para php-cli-5.3.0-5.fc12.i686
rpmlib(PayloadIsXz) se necesita para device-mapper-libs-1.02.35-2.fc12.i686
rpmlib(PayloadIsXz) se necesita para device-mapper-1.02.35-2.fc12.i686
rpmlib(PayloadIsXz) se necesita para cyrus-sasl-md5-2.1.22-25.fc12.i686
rpmlib(PayloadIsXz) se necesita para libgudev1-145-4.fc12.i686
rpmlib(PayloadIsXz) se necesita para e2fsprogs-1.41.8-5.fc12.i686
rpmlib(PayloadIsXz) se necesita para ntpdate-4.2.4p7-4.fc12.i686
rpmlib(PayloadIsXz) se necesita para krb5-workstation-1.7-5.fc12.i686
rpmlib(PayloadIsXz) se necesita para libblkid-2.16-3.fc12.i686
Complete!
(1, [u'Please report this error in http://yum.baseurl.org/report'])
Septiembre 5, 2009 a 8:20 am
Argel Esquivel Diaz
Muchas gracias, la información bastante clara y muy útil.
Saludos
Septiembre 23, 2009 a 10:04 pm
Geovani Martinez
Muchas gracias por toda esta informacion, me funciono muy bien
Octubre 6, 2009 a 6:32 am
Camilo Segura
Hola a todos, la informacion esta muy buena, segui los pasos y funciono correctamente.
Muchas gracias
Octubre 16, 2009 a 6:11 pm
Rafael
Hola
alguien me puede ayudar a configurar un servidor DNS utilizando apache y saber que es lo que necesito por favor.
gracias que tengan un excelente dia