# [HOWTO] Apache + php + mysql (servidor LAMP en 3') 5-08-2k7

## sefirotsama

A ver voy a hacer mi primer "Howto", aunque supongo que no habría sido posible hacerlo sin tener en cuenta las otras guías, sin embargo a pesar de existir ellas se me ha hecho algo complicado montar este servidor LAMP (linux + apache + mysql + php) para uso local, por lo que pretendo ayudar a quienes se planteen hacer una nueva instalación y no sepan por donde comenzar.

HOWTO Apache + php + mysql en pocos minutos

Propósito: Hacer correr un servidor apache con soporte para Mysql y PHP

Tiempo estimado: 3 minutos (tiempo de compilación a parte)

Dificultad: Baja - Media

Fecha: 5-08-2007

Versiones: apache-2.0.58-r2, dev-db/mysql-5.0.44-rc1 , php-5.2.3-r3

PREPARACIÓN

En primer lugar deberíamos asegurarnos de tener permisos de superusuario para llevar a cabo la instalación, y además actualizar portage para obtener las ultimas versiones de cada paquete:

```
root# emerge --sync
```

Una vez actualizado nos disponemos a instalar lo que necesitamos:

```
root# emerge -pv apache mysql php
```

Veremos cada paquete con sus respectivas variables USE y cuales estarán activadas si llevamos a cabo la instalación (si no sabemos que significa una variable USE concreta lo podremos saber escribiendo sencillamente euse -i USE).

Par poder llevar a cabo una instalación que pueda utilizar PHP y MYSQL y otras cosillas basicas deberiamos activar almenos estas variables:

```

root# echo "net-www/apache apache2 doc ssl" >>/etc/portage/package.use

root# echo "dev-db/mysql berkdb perl ssl" >>/etc/portage/package.use

root# echo "dev-lang/php apache2 berkdb cli crypt doc gdbm iconv mysql ncurses nls pcre readline reflection session spl ssl truetype unicode zlib" >>/etc/portage/package.use

```

Tened en cuenta que las USE pueden significar tener soporte, o no, para determinadas cosas como por ejemplo para XML. Si quieres soporte para xml en php deberías haber activado la USE xml (si lo has olvidado edita /etc/portage/package.use y añádela manualmente al paquete correspondiente).

Una vez hecho esto puede comenzar la instalación.

INSTALACIÓN

Instalar en si mismo es tan sencillo como escribir esto y esperar que acabe:

```
root# time emerge -v --color y apache mysql php
```

*nota: time antes de emerge es opcional y solamente sirve para saber cuanto tiempo ha tardado una vez acabe.

Para tener la configuración por defecto solo necesitamos escribir esto (mysql nos pedirá que contraseña queremos asignar al usuario mysql root):

```
root# emerge --config apache

root# emerge --config mysql
```

Para activar el soporte para PHP en el servidor de vemos editar /etc/conf.d/apache2 y buscar la linia donde pone APACHE2_OPTS y asegurarnos de poner al menos lo siguiente entre comillas (pueden haber más opciones y funcionará correctamente):

 *Quote:*   

> -D PHP5

 

En mi caso (puede variar) tengo puesto lo siguiente y funciona correctamente el soporte para PHP:

 */etc/conf.d/apache2 wrote:*   

> APACHE2_OPTS="-D DEFAULT_VHOST -D PHP5"

 

Con esto último nos aseguramos de que el código PHP lo interprete como tal y no como texto plano.

Si queremos que cada vez que se inicie el sistema se auto inicie el servidor apache:

```
root# rc-update add apache2 default
```

Si queremos que al iniciar el sistema se autoinicie mysql:

```
root# rc-update add mysql default
```

PROBANDO SI FUNCIONA

No es necesario que reiniciemos el sistema, tan solo con escribir lo siguiente bastará para que se inicie el servicio:

```

root# /etc/init.d/apache2 start

root# /etc/init.d/mysql start

```

Paso opcional

---------------------------------------------------------------------------------------------

Si estamos trabajando offline y queremos iniciar apache, obtendremos un error diciendo que eth0 no está activo, por lo que podremos hacer una cosilla para evitar eso y seguir trabajando con apache de manera local:

Editemos el script

```
nano -w /etc/init.d/apache2
```

Busquemos la linea que pone need net y comentemos la (poniendo # al inicio de la linea) o bien borremos la y escribamos en su lugar need net.lo

El depend() quedara más o menos así:

```
depend() {

        need net.lo

        use mysql dns logger netmount postgresql

        after sshd

}

```

Ahora ya no se nos tiene por que quejar si estamos offline y activamos apache.

---------------------------------------------------------------------------------------------

Una vez iniciados los servicios encendamos un navegador cualquiera y escribamos en la barra de direcciones http://localhost/

Si la cosa ha ido bien veremos la pagina de bienvenida de APACHE con la documentación del servidor. En ese momento es recomendable leerse la documentación

ENLACES Y DOCUMENTACIÓN

Para cualquier duda o lo que sea, por favor, leed antes la documentación y el post que cree conmis dudas antes de crear esta mini guía. 

Luego, si no lo habéis conseguido, postead aquí a ver si alguien puede ayudar.

http://gentoo-wiki.com/Apache2_Install

http://gentoo-wiki.com/Apache_Modules_PHP

https://forums.gentoo.org/viewtopic-t-564882.html

----------

## YosWinK

Quizá se me pase alguna cosa, pero tras un vistazo rápido echo en falta la línea de que activa mod_php en apache y que se encuentra en /etc/conf.d/apache2:

```

APACHE2_OPTS="-D PHP5"

```

----------

## i92guboj

Ya que esto es una guía, no estaría de más poner un juego minimo de use flags para que ande lo que la guía propone. Si no, no andará aunque se sigan todos los pasos.

Para completar con éxito esta guía es necesario al menos tener USE="apache2 mysql". Si no, el módulo para apache no se instalará, y php no podrá acceder a bases de datos mysql. Justo el tipo de fallo que hace que el novato se pierda. Adicionalmente, es necesario tener al menos una de éstas activada para apache: mpm-worker, mpm-prefork, mpm-event o mpm-peruser. No estoy seguro de si todos andan bien con php. Yo uso mpm-worker y va perfecto.

----------

## sefirotsama

6thpink, creo que eso de la USE flags ya lo tenia puesto, no? mirate el paso de instalación y dime si es eso a lo que te refieres o si crees que debería haber algo más.

 *YosWinK wrote:*   

> Quizá se me pase alguna cosa, pero tras un vistazo rápido echo en falta la línea de que activa mod_php en apache y que se encuentra en /etc/conf.d/apache2:
> 
> ```
> 
> APACHE2_OPTS="-D PHP5"
> ...

 

Gracias se me había olvidado! Corregido

----------

## i92guboj

 *sefirotsama wrote:*   

> 6thpink, creo que eso de la USE flags ya lo tenia puesto, no? mirate el paso de instalación y dime si es eso a lo que te refieres o si crees que debería haber algo más.
> 
> 

 

Todo parece estar bien, no se si no lo vi bien o tenía algo en mente cuando lo dije.  :Wink: 

Saludos.

----------

## sefirotsama

 :Laughing:   :Laughing:   :Laughing:   :Laughing: 

LA verdad es que a uno le gusta y se siente bien cuando colabora... (estoy esperando que alguien diga que le ha servido... va!!! que alguien se lo instale! xD)

Actualizada la fecha de revisión

----------

## Jsanchez

Bueno, Tengo que informarte que funciono perfectamente enseguida pude hacer andar phpMyAdmin y lo segui paso por paso (como si fueran muchos  :Rolling Eyes:  ) Les agradezco a todos.

----------

## GermanBobr

UUUyy me viene como anillo al dedo, justamente me estava por aventurar en la instalacion... Ahora lo pruebo y te cuento como me fue

----------

## GermanBobr

Y Ahoraaaa?!

```
configure: error: Berkeley DB not found.

!!! Please attach the following file when filing a report to bugs.gentoo.org:

!!! /var/tmp/portage/dev-libs/apr-util-0.9.12/work/apr-util-0.9.12/config.log

!!! ERROR: dev-libs/apr-util-0.9.12 failed.

Call stack:

  ebuild.sh, line 1615:   Called dyn_compile

  ebuild.sh, line 972:   Called qa_call 'src_compile'

  ebuild.sh, line 44:   Called src_compile

  apr-util-0.9.12.ebuild, line 50:   Called econf '--datadir=/usr/share/apr-util-0' '--with-apr=/usr' '--with-expat=/usr' '--with-gdbm' '--with-dbm=db45' '--with-berkeley-db=/usr/include/db4.5:/usr/lib64'

  ebuild.sh, line 578:   Called die

!!! econf failed

!!! If you need support, post the topmost build error, and the call stack if relevant.

!!! A complete build log is located at '/var/tmp/portage/dev-libs/apr-util-0.9.12/temp/build.log'.
```

----------

## Cereza

Prueba 

```
emerge BerkeleyDB
```

y luego vuelve a intentarlo  :Razz: 

----------

## GermanBobr

Ya lo hice y no anda

----------

## Cereza

Ese error se queja de no encontrar BerkeleyDB (que está en portage), si lo has instalado y sigue sin compilar apr-util el error será distinto ¿cual es ahora?

----------

## GermanBobr

Es exactamente el mismo error... no cambio para nada... Es más ya habia instalado BerkleyDB antes de postear xq me di cuenta q se quejaba por eso.

Es raro...

La verdad es que mi sistema esta bastante sucio... comence a instalar con ACCEPT_KEYWORDS!!!!, despues me di cuenta y recompile toda la rama system con paquetes estables. Me queda hacer lo mismo con world... pero son muchiiiisimos paquetes y ni da  :Razz: 

----------

## sefirotsama

Gracias por utilizar mi guia (me alegro que haya servido a alguien). Voy a mirar tu error a ver si te puede servir de algo. SI el problema es de que has compilado parte del sistema inestable reconfigura tu make.conf (ponlo sin el ~) y luego ejecuta:

# emerge gentoolkit && emerge --newuse --deep --color y world && emerge --depclean && revdep-rebuild && revdep-rebuild

(tardara mucho y al acabar tendras el sistema completamente recompilado)

Realmente no creo que el problema sea ese. A ver si entre todos te podemos ayudar.

Un saludo (gracias por usar mi guia).

----------

## GermanBobr

Ya se que no creo que se trate de eso... acabo de recompilar BerkeleyDB con emerge -e (eso instala el paquete con absolutamente todas las dependencias sin importar si estan instaladas o no) y sigue sin funcionar.

Esta noche voy a dejar haciendo lo que me dijiste a ver si se soluciona.

----------

## i92guboj

 *GermanBobr wrote:*   

> Ya se que no creo que se trate de eso... acabo de recompilar BerkeleyDB con emerge -e (eso instala el paquete con absolutamente todas las dependencias sin importar si estan instaladas o no) y sigue sin funcionar.
> 
> Esta noche voy a dejar haciendo lo que me dijiste a ver si se soluciona.

 

La base de datos de Berkeley de toda la vida es "db", así que emerge db es probablemente lo que te están pidiendo. Otra cosa es que el problema sea ese realmente. Pero prueba.

El paquete BerkeleyDB es un módulo perl para manejar dicha base de datos, que seguramente no tenga nada que ver con el tema.

----------

## GermanBobr

nop... ya probe emergiendo db pero todavia me sigue tirando el mismo error...  :Sad: 

----------

## aj2r

¿Hace cuánto no realizas un emerge --sync?

Si no fuese este el problema, prueba deshabilitando la USE berkdb.

----------

## gringo

 *mysql.eclass wrote:*   

> 	mysql_check_version_range "4.0 to 5.0.99.99" \
> 
> 	&& use berkdb \
> 
> 	&& elog "Berkeley DB support is deprecated and will be removed in future versions!"
> ...

 

saluetes  :Wink: 

----------

## GermanBobr

Anoche recompile absolutamente todo el sistema con emerge -e (600 paquetes recompilo  :Razz: )

Sigue tirando el mismo error...

Ahora estoy compilando sin el useflag berkdb... pero me surgio una duda: ¿De que se encarga ese paquete? ¿Va a funcionar bien el server LAMP sin berkdb?

----------

## sefirotsama

 *aj2r wrote:*   

> ¿Hace cuánto no realizas un emerge --sync?
> 
> Si no fuese este el problema, prueba deshabilitando la USE berkdb.

 

Esa use biene por defecto en el perfil de 2007.0 así que nanai...

----------

## gringo

 *Quote:*   

> Esa use biene por defecto en el perfil de 2007.0 así que nanai...

 

no sé que quieres decir con eso, pero que venga por defecto no significa que no la puedas deshabilitar.

 *Quote:*   

> ¿Va a funcionar bien el server LAMP sin berkdb?

 

el mío funciona sin problemas

saluetes

----------

## i92guboj

En efecto, los perfiles no son mas que una coleccion de use flags y alguna cosilla mas. No significa que no las puedas cambiar. De hecho, la mayoria de la gente las cambia. El servidor andara bien sin berkdb.

----------

## sefirotsama

Guia actualizada (configuración compatible con nuevas versiones)

----------

