Está en: » Artículos »

Servidor LAMP en openSuse

Servidor LAMP en openSuse

LAMP - Linux Apache Mysql Php

Para sistemas Windows existen aplicaciones todo en uno que te instalan apache, mysql y php de una forma muy fácil y sencilla; para GNU/Linux y mac, tambien existen dichos paquetes, pero para el caso de GNU/Linux, es más sencillo, práctico y útil instalar dichos servicios desde los repositorios de nuestra distribución. En esta ocasión, me centraré en openSuse.

Bueno, pasemos manos a la obra:

Nos pasamos a administrador:

su

Instalamos los paquetes:

zypper refresh
zypper install mysql mysql-client apache2 apache2-mod_fcgid php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dom php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-mysql php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-zlib php5-exif php5-fastcgi php5-pear php5-sysvmsg php5-sysvshm ImageMagick curl apache2-mod_php5

Activamos los módulos de apache que hemos instalado (por defecto se suelen activar, pero así nos aseguramos):

a2enmod suexec
a2enmod rewrite
a2enmod ssl
a2enmod actions
a2enmod fcgid

Iniciamos y activamos los servicios para que inicien automáticamente al inicio:

chkconfig --add apache2
chkconfig --add mysql
/etc/init.d/apache2 start
/etc/init.d/mysql start

Elevamos la seguridad de mysql realizando un sismple asistente

mysql_secure_installation

Con esto y en principio, ya tenemos el servidor funcionando. Realmente fácil y sencillo.

Para afinar un poco más, haremos unas ligeras modificaciones a la configuración de php. Dicha configuración se refleja en el archivo /etc/php5/apache2/php.ini :

Para habilitar el etiquetado corto de la programación de php, lo haremos en la variable:

short_open_tag = on

Los parámetros de memoria límite para cada script así como el tiempo máximo de ejecución se configuran con las variables:

max_execution_time = 60     ; Maximum execution time of each script, in seconds
memory_limit = 64M      ; Maximum amount of memory a script may consume (128MB)

Para los reportes de error en aplicaciones php, podemos definir que se debe mostrar en pantalla. En un servidor en producción, se deberá configurar para que no se muestren, pero en un servidor de desarrollo, es muy útil que muestre absolutamente todos los errores/advertencias para correjirlos:

error_reporting = E_ALL
display_errors = On
log_errors = On

Es muy importante que aunque estemos en un servidor en producción, ‘logueemos’ los errores para poder revisarlos.

Estos son los principales cambios que se suelen configurar. De todas formas, siéntase libre de revisar todo el archivo (tan bien documentado). Sería una buena idea que hiciese una copia del mismo por lo que pueda pasar.

Si necesitamos «hosts virtuales», añadir un nuevo «sitio virtual» a nuestro Apache es algo realmente sencillo. Para cada sitio, deberemos tener un archivo en /etc/apache2/vhosts.d; Dentro de dicha ruta tenemos un archivo de ejemplo (vhost.template) el cual nos puede guiar. Por ejemplo, voy a definir un «sitio virtual» con dominio midominio.com:

cp /etc/apache2/vhosts.d/vhost.template /etc/apache2/vhosts.d/midominio.com.conf
vim /etc/apache2/vhosts.d/midominio.com.conf

Es imprescindible que el nombre del archivo que definamos termine en .conf
Deberemos hacer los cambios que necesitemos. En mi caso, he dejado el archivo así:

    ServerAdmin [email protected]
    ServerName midominio.com

    DocumentRoot /srv/www/midominio.com/web

        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all

    ErrorLog /srv/www/midominio.com/logs/error_log
    CustomLog /srv/www/midominio.com/logs/access_log combined

    HostnameLookups Off
    UseCanonicalName Off
    ServerSignature On

    ScriptAlias /cgi-bin/ "/srv/www/midominio.com/cgi-bin/"

        AllowOverride None
        Options +ExecCGI -Includes
        Order allow,deny
        Allow from all

Una vez terminado, y ya que he definido una estructura personalizada, deberemos crear las rutas especificadas:

mkdir /srv/www/midominio.com/web
mkdir /srv/www/midominio.com/logs
mkdir /srv/www/midominio.com/cgi-bin

En la subcarpeta web, guardaremos toda la aplicación. En logs, se guardarán los registros de acceso y errores de este «sitio virtual». Por último los scripts cgi ya no se suelen utilizar, por lo que podríamos omitir el crear esta carpeta siempre y cuando no la definamos en el archivo de configuración anterior.

Así, cada vez que necesitemos un sitio virtual nuevo en nuestro servidor, bastaría con sacar una copia de este archivo y cambiar los datos que necesitemos.

Por supuesto, cada vez que cambiemos alguna configuración de apache, hay que recargarlo para que la adopte. Como no es un sitio en producción, recomiendo reiniciarlo con (como root):

/etc/init.d/apache2 restart

Para terminar, «la guinda» que nos queda es phpMyAdmin. Me decanto por esta aplicación ya que es la más extendida en los servicios de hosting y una gran aplicación.

Para instalarla, lo podemos hacer fácilmente mediante:

One Click Install (instalación con un click)

Una vez instalado, podemos acceder mediante http://localhost/phpMyAdmin (o la ip/nombre del equipo donde lo hemos instalado).

Es probable que nos reporte: El archivo de configuración ahora necesita salvoconducto (una frase secreta) (blowfish_secret).

Para este caso, deberemos editar el archivo de configuración /srv/www/htdocs/phpMyAdmin/config.inc.php y actualizar:

$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Debemos especificar alguna «frase aleatoria» para la encriptación. Estaría bien que contuviese letras, números y todo tipo de caracteres (a excepción de las comillas simples). Esto no es ningún tipo de contraseña y no necesitaremos recordarlo, así que siéntase libre de «chaporrotear las teclas».

Si este archivo no existe, deberemos copiar el archivo de ejemplo y hacer las modificaciones pertinentes:

cp /srv/www/htdocs/phpMyAdmin/config.sample.inc.php /srv/www/htdocs/phpMyAdmin/config.inc.php

Con estos pasos, ya tenemos funcionando un servidor perfecto para pre-producción. Ahora sólo nos quedaría combinarlo con alguna solución para compartir el sistema de ficheros mediante NFS o Samba y un servidor DNS local y fácil de administrar.

Por cierto, la ruta por defecto es /srv/www/htdocs/. Es lógico que vuestro usuario no tenga permisos en esa carpeta, así que para establecerlos, ejecutaremos (como root):

chown - R tu_nombre_de_usuario /srv

Con esto, hemos establecido todos los permisos de la carpeta www (servidor web) y ftp (servidor ftp) a nuestro usuario.

Comentarios

  1. Anónimo dice:

    Excelente tutorial. Lo probaré, pues utilizo openSuse 11.2 y me sucede algo extraño. Instalé LAMP desde la interfaz gráfica de Yast, utilizando el patrón de paquetes LAMP ya preparado por el equipo de Suse. Todo funcionó correctamente Apache, PHP y MySQL. Sin embargo, cuando coloqué la carpeta con los archivos en /srv/www/htdocs para visualizarlos en el navegador, me funciona todo salvo los javascripts. Exactamente igual sucede si ubico los archivos en /home/username/public_html/ . No es problema del navegador (el mismo resultado en Firefox, Konqueror y Opera), pues he probado esos archivos pero con XAMPP y la página se muestra absolutamente correcta. He revisado los archivos de configuración de Apache y PHP, aparentemente no encuentro nada que impida que se ejecuten los javascripts. He activado el «logueo» de errores y reproduciendo el fallo mientras ejecuto tail -f de los logs. Nada, no canta ningún error. Supongo que el equipo de Suse habrá implementado alguna medida de seguridad en el patrón de paquetes de LAMP, que difiere de la instalación estándar y yo no alcanzo a verlo.

  2. No entiendo muy bien lo que te ocurre. Vamos, que sí que entiendo el problema pero no el qué está ocurriendo.

    ¿tienes los javascript en archivos separados? En este caso, ¿si intentas cargar el javascript directamente desde la url carga? Puedes ver el código fuente (crtl+u) y picar sobre el archivo js para cargarlo.

    En principio, apache cuando recibe una petición a un archivo, si este existe, lo entrega. Comprueba bien que la url al archivo js esté correcta (la mayoría de UNIX al igual que GNU/Linux diferencian los nombre con mayúscula y minúscula.

  3. alexis dice:

    Muy buen tutorial me ha servido muchisimo gracias por compartir tu conocimiento y felicitaciones por tu pagina hay cosas interesantes que me pueden servir en mi segundo intento por adentrarme a este facinante mundo de GNU- Linux, saludos

  4. @alexis
    Gracias por tu agradecimiento (¡viva la recursividad!).
    Sería un gran consuelo para las horas dedicadas a cada artículo el ayudar a migrar a todos los que se interesen por el fantástico mundo GNU.
    Saludos (y bienvenido)…

  5. Jose Manuel dice:

    Gracias por el tutorial, lo acabo de instalar y va perfecto, exepto en que en mi caso al ejecutar ‘mysql_secure_installation’me salia el error ‘ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysql/mysql.sock’ (2)
    Enter current password for root (enter for none):
    Aborting! ‘, hasta que lo ejecute nuevamente despues de instalar los servicios de Apache y MySQl y ahora si funciono perfectamente.
    Saludos.

  6. @Jose Manuel
    Upssss… Cierto
    Hay que ejecutar el comando después de levantar mysql. Ya he corregido el detalle…

  7. Marvin Aguilar UTEC dice:

    Para resolver el problema de los scripts, en tu servidor suse … es que debes descargar el archivo de java de los repositorios o desde la pagina … descargalos e instala el programa y luego nos comentas …

  8. @Marvin Aguilar UTEC
    Dudo bastante sobre esa solución.
    Ten en cuenta que su problema es que no «funcionan los javascript» y es código que interpreta el navegador, no el servidor; por lo tanto, el instalar java en el servidor, no soluciona el problema.
    Es como si no se viesen las imágenes e instalásemos gimp en el servidor (algo absurdo como comprenderás).

    Seguramente era algún problema con la url de dicho script (aunque me da a mí que nos quedaremos con la duda)…

  9. Jorge dice:

    HOla, el tuto, me funciono perfecto, excelente aporte. Solo queria consultarte como habilitar un ftp para subir archivos del sistema y una particion para que pueda ser usada en windows y compartida dentro de la red.
    Gracias.

  10. Estrella dice:

    Hola ya lo instale tal y como lo dices y todo fue prefecto, pero a la hora de ejecutar http://localhost/ me sale

    ¡Acceso prohibido!

    Usted no tiene permiso para accesar a la dirección solicitada. Existe la posibilidad de que el directorio este protegido contra lectura o que no exista la documentación requerida.

    Por favor contacte con el webmaster en caso de que usted crea que existe un error en el servidor.
    Error 403
    localhost
    Thu May 13 07:34:08 2010
    Apache/2.2.13 (Linux/SUSE)

    Me falta algo por configurar?? saludos

  11. @Estrella
    En el 80% de las veces que se recibe este error suele ser o porque no se encuentra el archivo por defecto para mostrar o por falta de permisos.

    Seguramente tu raiz de proyecto sea /srv/www. Comprueba que dentro haya un archivo index.html (por ejemplo). Comprueba también que tenga permisos de lectura para el usuario apache (dale de momento permisos de lectura para todos (su -c chmod -R +r /srv/www/) y prueba de nuevo.

  12. William dice:

    Hola, muchas gracias por el tuto esta exelente.

    Tengo el mismo error que Estrella revise /srv/www y no aparece el archivo index.html como se puede solucionar este problema y muchas gracias por tu ayuda.

  13. @William
    Perdona la demora en contestar. Si no aparece este archivo, sólo hay que crearlo con el contenido que desees (lógicamente, debe ser un archivo html).

    Un saludo

  14. Frankofe dice:

    Cordial saludo me podrian decir como configuro los permisos tengo lamp en ubuntu 10.04

    no se si tenga que ver que cambie la carpeta raiz (la cambie para no estar digitando el pass del administrador)

    Gracias

  15. Con el comando chown cambias el propietario. Ej:
    chown -R usuario /ruta/a/establecer
    El -R es para que lo haga recursivamente (todo lo que contenga esa ruta).

    Con chmod cambias los permisos. Ej:
    chmod -R u+w /ruta/a/establecer
    u es de usuario
    g de grupo
    o de otros
    + asigna permiso
    – desasigna permiso
    r permiso de lectura
    w permiso de escritura
    x permiso de ejecución

    Mezclando esos datos, lo haces fácilmente.

    Aquí tienes un post dedicado a principiantes (donde se explica mejor todo esto)
    https://miguelcarmona.com/blog/comandos-gnulinux-para-principiantes/

  16. anthony dice:

    Hola Miguel!
    He probado instalar LAMPP en Ubuntu y tengo
    problema con configuracion de vhost.
    En el el archivo /opt/lampp/etc/httpd.conf:
    descomiento # y despues:
    no existe archivo etc/extra/httpd-vhosts.conf
    y al reiniciar llamp me sale error:
    Warning: DocumentRoot [/www/docs/dummy-host.example.com] does not exist
    Warning: DocumentRoot [/www/docs/dummy-host2.example.com] does not exist

    He probado varias veces desinstalar lampp, pero lo mismo. Tengo Ubuntu 10.04, puede que hay que configurar otros directorios o donde esta el problema. Si podrian ayudar me, porfavor¿?

  17. @anthony
    No he usado nunca sistemas «lamp empaquetados» para usar directamente en ningún linux. Sí es cierto que en windows facilitan muchísimo las cosas, pero en linux es realmente sencillo hacer la puesta en marcha y suele quedar mejor integrado que estos «empaquetados».

    De todas formas, según aprecio tu paquete LAMPP está instalado en /opt por lo que todos los archivos de configuración y demás deben partir de esta carpeta. Si te tira errores de archivos no encontrados, revisa que esté bien en esa ruta.

    Por otra parte, los errores que te tira es que no existen esas rutas, que tienen toda la pinta de ser sitios de ejemplo de apache ya configurados. Supongo que estas configuraciones se encuentran en /opt/etc/apache/sites-enabled (digo supongo porque no lo he comprobado ni he usado nunca LAMPP).

    A unas malas y si no das con esos archivos de hosts virtuales, crea las rutas y ya no debería tirarte ese error.

    Saludos, suerte y recomendación de que uses LAMP instalando los paquetes de tu sistema.

  18. ansbsn dice:

    gracias.
    Ya tengo solucionado. Tenias razón tenia error en la ruta de los archivos y unas configuraciones de loocalhost.
    /opt/lampp/etc/extra/httpd-vhosts.conf

    Saludos.

  19. Me alegra que fuese eso y ya quede solucionado…

  20. Roberto Arcos dice:

    Hola buen tutorial
    me preguntaba leyendo otras guías sobre host virtuales, hacen referencia a modificar el archivo HOST, que se encuentra en /etc, en función a los dominios virtuales que tengamos, para asignar direcciones ip a dichos nombres.

    por ejemplo:
    #local
    127.0.0.1 localhost
    #empresa1
    127.0.0.2 http://www.dominio1.com
    #empresa2
    127.0.0.3 http://www.dominio2.com
    #empresa3
    127.0.0.4 http://www.dominio3.com

    veo que tu no lo has considerado, lo pregunto porque confunde un poco que algunas personas lo consideren y otras no. Gracias

  21. @Roberto Arcos
    El añadir esos dominios al archivo hosts es simplemente para que al introducir ese nombre, sepa la dirección ip que hay que resolver.

    Como habrás apreciado, este «mini-howto» está más orientado a implementar un pequeño servidor local en una máquina a parte de la que usamos como escritorio (o una virtual), por lo que necesitaríamos modificar el archivo hosts en cada equipo cada vez que añadamos un dominio lo cual es algo engorroso.
    Por eso yo recomiendo el uso de un servidor DNS en vez de esa solución. Lógicamente tiene más trabajo pero a la larga nos reporta muchos más beneficios internos a nuestra red.

    De todas formas, para aquellos que sólo deseen pocos hosts virtuales o lo implementan en su equipo de escritorio, es una gran opción el utilizar el archivo hosts. Eso sí, no está bien el formato que has indicado.

    Si lo implementamos en la misma máquina desde la que trabajamos:

    127.0.0.1 localhost dominio1.com dominio2.eu dominio3.es

    Si es para otra máquina en la red:

    127.0.0.1 localhost
    192.168.x.x dominio1.com dominio2.net dominio3.org

    Lógicamente 192.168.x.x hay que sustituirlo con la ip de dicho equipo y si necesitamos http://www.dominio1.com, habrá que añadirlo también.

    Y para que se entienda un poco para qué sirve este archivo, cuando un equipo solicita un nombre de dominio, el sistema operativo mira en el archivo hosts y si lo encuentra ahí, retorna la ip asociada; en caso contrario, lo solicita al servidor dns.

    Y por último (y así de cabeza porque no tengo un windows a mano para probarlo), en windows el archivos hosts se encuentra en c:\windows\system32\drivers\etc\hosts. Editadlo con el blog de notas o algún editor que no deje formato (como notepad++). A partir de Windows 7 no permite guardar directamente sobre ese archivo por lo que hay que copiarlo a otra ubicación (escritorio por ejemplo) modificarlo y volver a copiarlo a su ruta sobreescribiendo el original).

  22. danielillo dice:

    muy bn tutorial me sirvio mucho!!!

Deje su comentario

Previsualización de comentario
  1. Anónimo dice:





Pings para esta entrada