Está en: » Blog »

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

Elevamos la seguridad de mysql realizando un sismple asistente

mysql_secure_installation

Activamos los servicios para que inicien automáticamente:

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

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 mimail@mail.com
    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.

Discussion

  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)…

Deje su comentario

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





Pings para esta entrada