Servidor LAMP administrado por un usuario

Instalar un servidor LAMP en Debian, Mint y Ubuntu.

En esta oportunidad veremos como instalar un servidor LAMP (Linux, Apache, MySql, PHP) de una forma muy sencilla y rápida que funciona en la mayoría de las versiones de Debian, Ubuntu, y Mint.

Todo se basa en un solo comando, tasksel. Tasksel es una herramienta disponible en sistemas Ubuntu/Debian que permite instalar paquetes de software de forma coordinada. Lo importante es que nos permitirá instalar nuestro servidor LAMP en unos minutos.

Primero debemos instalar la herramienta tasksel. Podemos utilizar el gestor gráfico de paquetes synaptic, para comprobar si tasksel esta instalado en el sistema. Si no es así, podemos instalarla con synaptic. Si preferimos el terminal, emplearemos este comando:

sudo apt-get install tasksel

Luego ejecutar la aplicación en el terminal:

sudo tasksel

Veremos un menú como este.

seleccion-de-lamp-server-en-tasksel

Seleccionaremos la opción LAMP server, y pulsamos sobre <Aceptar>. Empezara la instalación durante la cual se presentará una ventana para introducir la contraseña del usuario root de MySql.

progreso-de-la-instalacion-de-lamp

Cuando termine,verificaremos la instalación de los componentes abriendo nuestro navegador de internet, y escribiendo http://localhost en la barra de direcciones. Deberíamos ver lo siguiente:

mensaje-de-bienvenida-de-apache

Para verificar si PHP funciona, podemos hacer lo siguiente:

sudo gedit /var/www/info.php

Escribimos la siguiente línea:

<?php phpinfo(); ?>

Guardamos y salimos. Después escribimos en la barra de direcciones de nuestro navegador http://localhost/info.php, y deberíamos ver algo similar a:

info-proporcionada-por-php

Con esto ya tenemos instalado nuestro Apache, MySql, y PHP de forma rápida y sencilla. Ahora solo queda configurarlo adecuadamente.

Solo falta instalar phpmyadmin para disponer de una herramienta que permita gestionear nuestras bases de datos mysql. Se hace con el comando:

sudo apt-get install phpmyadmin

Durante la instalación pedirá seleccionar un servidor web al que phpmyadmin estará vinculado. Seleccionaremos apache de la lista de servidores que se ofrece. Posteriormente pedirá las contraseñas de configuraciones comunes que utilizará phpmyadmin. Para probar que phpmyadmin se ha configurado correctamente, abriremos el navegador y escribiremos en la barra de direcciones http://localhost/phpmyadmin. Deberá aparecer la pantalla de identificación de phpmyadmin.

pantalla-de-login-de-phpmyadmin

Cuando phpmyadmin se ejecute bien, debemos añadir la siguiente linea al final del archivo /etc/apache2/apache2.conf:

ServerName localhost

Esto evitará que aparezca el mensaje Could not reliably determine the server’s fully qualified domain name cuando reiniciamos el servicio de apache:

sudo /etc/init.d/apache2 restart

Instalar un servidor LAMP en derivados de Debian, Mint y Ubuntu.

Si vuestra distribución de linux no es Debian, Mint, o Ubuntu, pero se basa en una de ellas, podemos instalar Apache, MySQL, PHP, y phpMyAdmin desde un terminal con varios comandos.

Instalar MySQL Server.

En un terminal como usuario root introduciremos la siguiente orden:

#apt-get install mysql-server mysql-client

Durante la instalación se pedirá la contraseña del usuario root de MySQL. Una vez instalado MySQL aumentaremos su seguridad con este comando:

 #mysql_secure_installation

Instalar Apache2.

Para instalar Apache2 introduciremos esta orden como usuario root en un terminal:

#apt-get install apache2 apache2-utils apache2-mpm-prefork

Habilitaremos los módulos de escritura y deflate de apache con:

#a2enmod rewrite

#a2enmod deflate

Instalar PHP5 y algunas extensiones recomendadas.

Para instalar PHP5 y algunas extensiones imprescindibles para producción, escribiremos estas ordenes en un terminal:

#apt-get install php5 php5-mysql libapache2-mod-php5

#apt-get install php5-adodb php5-curl php5-gd php-pear php5-imagick php5-sqlite php5-tidy php5-xmlrpc php5-mcrypt

 #php5enmod mcrypt

 #/etc/init.d/apache2 restart

Instalar phpMyAdmin y Sendmail.

Para instalar phpMyAdmin escribiremos este comando en el terminal como root:

#apt-get install phpmyadmin

Durante la instalación phpMyAdmin pedirá que lo vinculemos a un servidor web. Elegiremos Apache. A la pregunta de que si queremos usar dbconfig-common para configurar phpMyAdmin, elegiremos que si. También pedirá la contraseña del administrador de la base de datos y de la propia aplicación phpMyAdmin.

Normalmente también instalo y configuro Sendmail como servicio SMTP en el servidor. Esto lo podéis seguir en este otro artículo. La instalación de Sendmail se hace con el siguiente comando:

#apt-get install sendmail mailutils sendmail-bin

Con esto ya tendremos a punto el servidor LAMP en nuestra distribución derivada de Debian, Mint o Ubuntu.

Cambiar el puerto de escucha de apache.

Supongamos que queremos cambiar el puerto 80 de servicio de apache por el 8080. Para ello cambiaremos en el archivo/etc/apache2/ports.conf estas dos lineas:

 NameVirtualHost *:80

 Listen 80

 Por estas:

 NameVirtualHost *:8080

 Listen 8080

 Y en el archivo /etc/apache2/sites-enabled/000-default cambiaremos el puerto de las paginas que se sirvan:

 VirtualHost *:8080

 Reiniciamos el servicio apache desde el terminal, y listo:

 sudo /etc/init.d/apache2 restart

Tendremos que modificar las reglas del router y del cortafuegos al puerto asignado a apache, si vamos a acceder desde internet.

Habilitar el acceso remoto a MySql.

Para permitir el acceso remoto es necesario modificar el fichero de configuración de mysql. La ubicación del fichero de configuración puede variar de un sistema a otro, pero normalmente esta en /etc/mysql/my.cnf. Abrimos el fichero como con un editor gráfico:

sudo gedit /etc/mysql/my.cnf

Comentamos la linea situada dentro de la sección [mysqld]:

bind-address = 127.0.0.1

O bien la modificamos por esta otra:

bind-address = 0.0.0.0

Después accedemos como usuario root al servidor mysql, y asignamos permiso al usuario que accederá de forma remota ejecutando los siguientes comando:

grant all privileges on *.* to 'usuario'@'%' identified by 'password' with grant option;

flush privileges;

donde:

‘usuario’ es el usuario de mysql que accederá desde el exterior

‘password’ es la contraseña de dicho usuario

Finalmente reiniciamos el servicio:

sudo /etc/init.d/mysql restart

Cambiar los permisos predeterminados de apache.

La mayoría de las veces administro los sitios con un único usuario que accede vía ftp para crear sitios, y subir paginas web. A este usuario también le doy acceso ssh para facilitar las tareas de administración de los sitios web que crea. Cuando la configuración de apache, mysql, phpmyadmin, vsftpd, y openssh-server esta ajustada, pongo a prueba el servidor lamp creando dos bases de datos mysql para wordpress y un joomla, que subo vía ftp e instalo desde un pc situado fuera de la ubicación física del servidor. Si todo va bien durante la instalación de wordpres y joomla, el servidor lamp ya esta listo para producción.

Al usuario que utilizo para administrar las páginas web del servidor, le asigno el grupo principal www-data de apache. De esta forma los archivos y carpetas creados por este usuario vía ftp, y ssh, tienen a www-data como grupo propietario. Para facilitar más la administración a este usuario, asigno permisos 002 con umask a apache, vsftpd, y openssh-server. Esto asigna permisos 775 a los directorios, y 664 a los archivos creados por ftp o ssh para este usuario. Como el grupo propietario de los archivos y directorios que se crean es www-data, y tiene permisos de escritura, apache no tiene problemas para gestionarlos. Una vez instalado el servidor lamp, siempre doy la propiedad del directorio /var/www al usuario con el que hago las gestiones. También asigno el grupo www-data a dicho directorio, y cambio sus permisos a 775 para que el grupo www-data tenga acceso total al mismo.

# chown -R webuser /var/www

# chgrp -R www-data /var/www

# chmod 775 /var/www

# cd /var/www

# find . -type d -exec chmod 775  {} \;

# find . -type f -exec chmod 664  {} \;

Para aplicar la máscara 002 al servicio de apache, hay que editar el archivo de configuración envvars:

 sudo gedit /etc/apache2/envvars

Añadimos la siguiente línea al final:

 umask 002

Esto forzará a que el servicio de apache asigne permisos 775 a los directorios que crea, y permisos 664 a los archivos que también crea.

Grabamos, y reiniciamos apache:

 sudo /etc/init.d/apache2 restart

También aplico la instrucción local_umask=002 en el archivo /etc/vsftpd.conf del servidor vsftpd, para que asigne los mismos permisos que apache a los archivos y directorios. Y por último añado la instrucción umask 002 en el archivo/home/nombre_del_usuario/.profile para que en las conexiones ssh se apliquen los mismo permisos. El objetivo es igualar el sistema de permisos para este usuario en apache, vsftpd, y ssh.

Y hasta aqui llega el resumen de los cambios que hago cuando quiero gestionar los sitios web de un servidor lamp, con un único usuario. Espero que sirva de ayuda a quien lo necesite.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies. Puede obtener más información sobre las cookies aquí. ACEPTAR

Aviso de cookies