Servidor LAMP en openSuse
Enviado por miguelcarmona :: 18 de enero de 2010
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:
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.