Instalar y configurar un servidor Apache/PHP/MySQL/PhpMyAdmin.
Redactado por Rubiño para www.ivlabs.org y www.crackergt.net
Existen múltiples formas de obtener un servidor Apache/PHP/MySQL. Se puede instalar cada componente por separado y configurar Apache para que dialogue con PHP, el cual cuenta con una API para acceder al motor de bases de datos MySQL. Por otro lado, Apache puede incluir a PHP como módulo en una configuración que impresiona más óptima. Todo ello cabe hacerlo a partir de la compilación de las fuentes mediante un método que es independiente de la distribución utilizada; aunque ello implica manejar “manualmente” las actualizaciones de seguridad. Por lo anterior es recomendable valerse de los paquetes suministrados por cada distro, en cuyo caso la manera de poner a punto el servidor queda supeditada al sistema de paquetes utilizado, puesto no todos los GNU/Linux acomodan de igual forma los ficheros de configuración.
En este documento voy a cubrir la instalación de un servidor Web en Fedora, Gentoo y Slackware, ya que son los únicos sistemas que tengo a mi disposición en este momento.
Gentoo.
ruben@MyBox ~ $ su
Contraseña:
MyBox ruben # cat >>/etc/portage/package.use
net-www/apache apache2 ssl dev-lang/php apache2 cli ctype crypt gd gdbm iconv ipv6 kerberos ldap mysql ncurses nls pcre readline reflection session spell spl truetype xml zlib -bzip2 dev-db/mysql ssl
####Presionar Control+d para salir (EOF)####
MyBox ruben # emerge –sync
MyBox ruben # emerge -uND world
MyBox ruben # emerge –depclean
MyBox ruben # revdep-rebuild
MyBox ruben # emerge apache mysql php phpmyadmin
Las USE que coloqué son a modo de ejemplo y se condicen con las que actualmente tengo activadas. Para ilustrar un poco más sobre el asunto, quiero explicar el porqué de algunas de mis elecciones:
CLI: Permite que php se pueda ejecutar por linea de comandos. Útil en testing y en el uso de scripts estilo “cron”.
PCRE, XML, CLI y ZLIB: Se precisan para que funcione el manejador de paquetes PEAR, con el que se pueden añadir muchas funcionalidades a php. Es importante notar que pear añade paquetes de con bibliotecas que contienen código php, es decir, no son funciones preconstruidas/compiladas. XML es además necesario para que php pueda parsear archivos *.xml, habitualmente usados para guardar configuraciones y otro tipo de información. Creo que es mucho mas optimo incluir ficheros *.php con arrays, pero hay casos donde no es posible elegir en que forma se nos presentan los datos, como ser en los casos donde se usan APIs desarrolladas por terceros.
SIMPLEXML y REFLECTION: Los añadi para poder instalar el framework symfony. Este necesita además PCRE y CLI.
MYSQL, POSGRES: Para conectar con estos engines. Como se vé, he quitado -berkdb ya que no necesito ese soporte.
CRYPT : Permite criptografía.
NCURSES y GTK: Php también puede utilizarse para el desarrollo de aplicaciones que se ejecutan en ordenadores de escritorio. Ncurses es una biblioteca que facilita la construcción de la interfaz gráfica de consola, y php es capaz de enlazarla; lo mismo ocurre con GTK, solo que está sirve para elaborar gráficos que se dibujan en ventanas. Como ncurses se activa por defecto, la quite mediante el signo de menos (-).
SESSION: Las sesiones son ámpliamente utilizadas en las aplicaciones web, aunque no por ello, imprescindibles. Es más, las sessiones pueden ser un verdadero dolor de cabeza ya que por cada una existe un archivo temporal. Cuando el número de estos crece lo suficiente se corre peligro de alcanzar la cantidad máxima de ficheros que pueden ser referidos por un directorio, cosa que obliga a eliminarlos (normalmente de forma manual) para evitar que el servidor caiga. Por lo anterior, es lógico que algunos deseen usar únicamente cookies, y es por ello que el soporte de sesion es opcional. Aun así recomiendo activarla ya que nunca se sabe cuando se puede necesitar un session_start().
GD: Para la generación dinámica de imágenes con php.
Slackware.
Los paquetes de mysql, apache y php se encuentran en el DVD de Slackware, y se instalan por defecto mientras no se indique lo contrario. Solo resta construir las tablas de Mysql y añadir phpmyadmin, cosa que puede hacerse con unos sencillos pasos:
Tablas mysql.
ruben@MyBox ~ $ su
Contraseña:
MyBox ruben # mysql_install_db
MyBox ruben # chown -R mysql.mysql /var/lib/mysql/
MyBox ruben # exit
Crear un directorio para alojar el paquete phpmyadmin.
ruben@MyBox ~ $ mkdir phpmyadmin && cd phpmyadmin
Descargar phpmyadmin.
ruben@MyBox ~ $ wget \
http://downloads.sourceforge.net/phpmyadmin/phpMyAdmin-2.11.5.2-all-languages.tar.bz2?modtime=1208878427&big_mirror=0
Desempaquetar el tarball en el directorio de localhost.
ruben@MyBox ~ $ su
Contraseña:
MyBox ruben # tar xjvf phpMyAdmin-* -C /var/www/htdocs/
Cambiar el nombre del directorio para que resulte más fácil de manejar.
MyBox ruben # mv /var/www/htdocs/phpMyAdmin-* /var/www/htdocs/phpmyadmin
Y crear el archivo de configuración.
MyBox ruben # cp /var/www/htdocs/phpmyadmin/config.sample.inc.php \
/var/www/htdocs/phpmyadmin/config.inc.php
Fedora.
ruben@MyBox ~ $ su
Contraseña:
MyBox ruben # yum update
MyBox ruben # yum install httpd php php-gd mysql-server php-mysql phpMyAdmin
Nota: php-gd es una librería precompiladas (builiding in) de php que permite trabajar con imágenes y es, por tanto, opcional. El paquete php-mysql es necesario para conectar a mysql desde un script php.
Gentoo.
MyBox ruben # /etc/init.d/apache2 start
MyBox ruben # /etc/init.d/mysql start
Añadiendo al runlevel por defecto para que inicien en tiempo de booteo:
MyBox ruben # rc-update add apache2 default
MyBox ruben # rc-update add mysql default
Slackware.
MyBox ruben # sh /etc/rc.d/rc.httpd start
MyBox ruben # sh /etc/rc..d/rc.mysql start
Para que arranquen por defecto durante el booteo:
MyBox ruben # chmod +x /etc/rc.d/rc.httpd
MyBox ruben # chmod +x /etc/rc..d/rc.mysql
Fedora.
MyBox ruben # service httpd restart
MyBox ruben # service mysqld start
Para que arranquen durante el booteo se usa:
chkconfig –level
Por ejemplo, para añadirlo al nivel de arranque número 5:
chkconfig –level 5 mysqld on
chkconfig –level 5 httpd on
Y para añadirlo al los niveles 3 y 5
chkconfig –level 35 mysqld on
chkconfig –level 35 httpd on
Y para quitarlos del nivel 5:
chkconfig –level 5 mysqld off
chkconfig –level 5 httpd off
Gentoo.
MyBox ruben # emerge –config apache
MyBox ruben # nano /etc/conf.d/apache2
Buscar la linea APACHE2_OPTS y añadir -D PHP. En mi caso queda así:
Reiniciar apache:
MyBox ruben # /etc/init.d/apache2 restart
Slackware.
MyBox ruben # nano /etc/httpd/httpd.conf
Buscar y decomentar (quitar la almohadilla):
Nota: Esto es para que apache cargue el módulo de php.
Buscar la sección:
DirectoryIndex index.html
Y añadir index.php luego de index.html. Sirve para que apache reconozca el archivo de inicio de phpmyadmin.
Guardar los cambios y reiniciar apache:
MyBox ruben # sh /etc/rc.d/rc.httpd restart
Fedora.
No es necesario tocar nada, mas creo oportuno acotar que los ficheros de configuración están en /etc/httpd/conf/httpd.conf.
Fedora y Slackware.
MyBox ruben # exit
ruben@MyBox ~ $ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.54-log Linux mysql-5.0.54
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> USE mysql;
mysql> UPDATE user SET password=password(‘rootpass’) WHERE user=’root’;
mysql> quit
Nota: Se usa password(‘dato’) para aplicar encriptación determinista sobre un dato. Se podría, aunque por motivos de seguridad no es recomendable, setear password como cualquier campo ordinario.
Gentoo.
Aparentemente root viene con password incluido, así que me incliné por añadir una nueva clave de la forma señalada aquí: http://www.ivlabs.org/home/?p=909
su
# Si la distro es Gentoo.
cp /var/www/localhost/htdocs/phpmyadmin/config.sample.inc.php /var/www/localhost/htdocs/phpmyadmin/config.inc.php
nano /var/www/localhost/htdocs/phpmyadmin/config.inc.php
nano /etc/phpMyAdmin/config.inc.php #—> Si la distro es Fedora.
nano /var/www/htdocs/phpmyadmin/config.inc.php #—> Si se instaló phpmyadmin de la manera propuesta para Slackware.
Buscar esta linea:
$cfg['Servers'][$i]['password']= ‘’
Y cambiar por:
$cfg['Servers'][$i]['password']= ‘passroot’
Donde passroot debe sustituirse por la clave que corresponda.
Nota: Si las citadas lineas no existen (como ocurre en la instalación desde el taball mostrada para Slackware) deben añadirse debajo de “Server Parameters”.
Guardar los cambios (Contrl +X, luego “Y” seguido de ENTER) y reiniciar apache con:
MyBox ruben # /etc/init.d/apache2 restart #Gentoo
MyBox ruben # sh /etc/rc.d/rc.httpd restart #Slackware
MyBox ruben # service httpd restart #Fedora
Gentoo.
MyBox ruben # cat >> /var/www/localhost/htdocs/script.php
();
?>
###Presionar Control+d para salir####
Slackware.
Idem Gentoo, solo que el nombre del fichero debe ser /var/www/htdocs/script.php.
Fedora.
Idem, pero el fichero es /var/www/html/script.
Nótese que /var/www/localhost/htdocs/, /var/www/htdocs/ y /var/www/html/ son los directorios donde deben alojarse los ficheros de los sitios webs en Gentoo, Slackware y Fedora respectivamente.
Gentoo.
MyBox ruben # cat >> /var/www/localhost/htdocs/script2.php
function connect ()
{
//sustituir passroot por el password de root en mysql.
$con=mysql_connect('localhost','root','passroot');
if (!$con)
{
$msj='No conecta a mysql ';
}
else
{
$msj='Conecta ';
$db=mysql_selectdb('mysql');
if (!$db)
{
$msj=$msj.'pero no logra seleccionar la base de datos';
}
else
{
$msj=$msj.'y consigue seleccionar la base de datos' ;
}
}
return $msj;
}
$var=connect();
echo '
'.$var;
?>
#### Pulsar Control+d para salir#########
Ahora para probar script2 es suficiente con cargar http://localhost/script2.php en el navegador web.
Obviamente en Slackware y Fedora solo varía el nombre del directorio al que se redirecciona la salida de cat.
En Fedora al escribir http://localhost/ en la barra de búsqueda del navegador se accede a la interface web de phpmyadmin. En cambio, en Slackware y Gentoo la url a tipear es obviamente http://localhost/phpmyadmin.
Eso es todo.


wm.mnox[at]gmail.com
Suscribirse a mis feeds
febrero 12th, 2009 at 4:14 pm
Hola enhorabuena por la pagina me ayudo en cierto modo.. ya que tengo un problema con el phpmyadmin trabajo sobre slackware y me da el siguiente fallo:
no se pudo cargar la extensión mcrypt,por favor revise su configuración de PHP.
quisiera migrar los datos de ese dominio a un dominio propio en mi pc pero me da error en la base de datos, me dice que no se pudo acceder y nose si el problema sera ese fallo que me da. Un saludo y gracias!
febrero 13th, 2009 at 7:35 am
La solución es sencilla, recompilar php con soporte mcrypt.
Saludos.
febrero 14th, 2009 at 8:49 am
Podrias ser un poco mas conciso en la respuesta? nose como recompilar php con soporte para mcrypt jeje. Gracias!
febrero 15th, 2009 at 5:33 pm
Es muy fácil:
#Descarga el tarball de php y:
tar -zxvf php-.tar.gz
cd php-
./configure –help
#Busca las opciones que necesites.Ejemplo:
./configure –with-mysql –with-mcrypt
#Luego compila:
make
#E instala:
make install
febrero 16th, 2009 at 8:54 am
Te comento.. tengo mi pagina web en un hosting que antes era gratuito y ahora me van a empezar a cobrar y queria pasar mi web a mi propio pc en el cual ya tengo configurado el servidor web.
Lo que queria hacer es pasar mi pagina que esta en WordPress a mi servidor (mi pc).
El hosting me proporcionaba phpmyadmin y exporte la base de datos en un archivo.sql.
Desde mi pc le doy a importar con phpmyadmin y me realiza las consultas con exito, sin embargo cuando le doy a actualizar mi web me saca lo siguiente:
Error al intentar establecer una conexión con la base de datos.
No se si tendra algo que ver en mi hosting tengo como usuario de la base de datos “josfpexo_joomla” con una contraseña
En mi pc tengo como usuario a “root” con otra contraseña
Si es asi como podria crear el usuario josfpexo_joomla para gestionar la base de datos?¿ Tengo slackware 12.1, gracias por tu ayuda, se agradece el que respondas tan rapido!! Un saludo.
febrero 17th, 2009 at 9:44 am
Cita de sebastian:
“No se si tendra algo que ver en mi hosting tengo como usuario de la base de datos “josfpexo_joomla†con una contraseña
En mi pc tengo como usuario a “root†con otra contraseña”
Por supuesto, tienes que usar el nombre de usuario y password de motor sql local. Puedes hacer: 1) Cambiar el nombre de usuario y password de mysql para que se corresponda con el que usabas en el servidor de alojamiento compartido ó 2) Modificar los parámetros de conexión a mysql en el código de WordPress.
Nunca miré el código de aquel CMS así que no tengo mucho idea, pero puedo revisarlo en cuanto tenga algo de tiempo.
Saludos.
febrero 17th, 2009 at 1:55 pm
Ya lo consegui, gracias a que me cree el usuario desde mysql e importe la base de datos desde phpmyadmin. Te digo como:
//PARA CREAR EL USUARIO SIN PRIVILEGIOS
mysql> GRANT USAGE ON *.* TO josfpexo_root IDENTIFIED BY ‘contraseña’;
Query OK, 0 rows affected (0,00 sec)
//PARA CONCEDER TODOS LOS PERMISOS AL USUARIO SOBRE LA BASE DE DATOS
mysql> GRANT ALL ON josfpexo_joomla.* TO josfpexo_root;
Por si algun dia se necesita
Ahora tengo otro pequeño problema mi servidor web lo tengo alojado en http://bastiher.dyndns.info (ya que tengo ip dinamica y me resuelva la ip) le doy y me carga perfecta la pagina pero cuando le doy a algun enlace me redirecciona automaticamente a mi otro dominio http://www.bastiher.es, nose si sabras porque puede ser… de todas formas muchas gracias por la ayuda prestada enserio!!
febrero 18th, 2009 at 11:35 am
Fíjate si en el template html existe un enlace base como este:
En ese caso solo deberías cambiarlo por el nuevo dominio.
marzo 7th, 2009 at 1:34 am
[...] tutorial (es algo antiguo pero puede servir) o este otro, si deseas para fedora, Gentoo, slackware, este tutorial esta más que intersante, este tema esta algo extendido, asi que si usas cualquier otra [...]
agosto 6th, 2009 at 2:12 pm
men necesito una pekeña ayuda estoy creando un server de eudemons y nesecito q alguien me diga como ponerle mi ip a el phpadmin si es que se le pone claro esta
si me lo pueden enviar a el msn mucho mejor porq es dificil xD
abril 10th, 2010 at 4:42 pm
Me fue de gran utilidad, te pasaste!!!!
salu2!!! desde Fedora
noviembre 23rd, 2010 at 12:51 am
[...] http://www.ivlabs.org/home/?p=946 Categorías:Tutoriales LikeBe the first to like this post. Comentarios (0) [...]
enero 11th, 2011 at 2:10 pm
hola, muy bueno tu post, te hago una consulta. Yo tengo fedora e instale todo al pie de la letra. Anda todo bien al parecer, pero a la hora de embeber código php entre código html, el servidor local no lo interpreta, no se mi explico, voy a poner un ejemplo para que se entienda; por ejemplo tengo un archivo index.php con el siguiente código:
index.php
hola!!!
Espero haber sido claro, te doy las gracias de antemano.-