systemadmin.es > DBA > Instalación de un servidor LAMP II (MySQL 5.5)

Instalación de un servidor LAMP II (MySQL 5.5)

Para instalar un servidor LAMP moderno debemos pasar de instalar MySQL 5.1 a instalar la última versión estable de MySQL: La versión 5.5.

Uno de los cambios más destacados es el nuevo sistema de compilación mediante cmake substituyendo al clásico configure. Es por esto que deberemos instalar los siguientes paquetes (o equivalentes):

yum install cmake -y
yum install ncurses-devel -y

A continuación descargamos el código fuente y lo descomprimimos en /usr/local/src:

cd /usr/local/src
wget 'http://www.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.8.tar.gz/from/http://mirrors.ircam.fr/pub/mysql/'
tar xzf mysql-5.5.8.tar.gz 
cd mysql-5.5.8

A continuación deberemos indicar a cmake dónde queremos instalar el MySQL mediante:

  • MYSQL_DATADIR: Dónde queremos que deje los ficheros de datos (datafiles) de la base de datos.
  • CMAKE_INSTALL_PREFIX: Dónde queremos instalar los ficheros binarios y otros ficheros necesarios del MySQL

Seguimos haciendo con el cmake con los parámetros que nos vaya mejor y compilamos e instalamos:

cmake . -DMYSQL_DATADIR=/var/mysql/ -DENABLE_DEBUG_SYNC=0 \
        -DCMAKE_INSTALL_PREFIX=/usr/local/mysql55 \
        -DWITH_UNIT_TESTS=0
make && make install

A continuación deberemos preparar el fichero de configuración a partir del fichero my-medium.cnf y preparar los permisos del sistema:

cp support-files/my-medium.cnf /etc/my.cnf
ln -s /usr/local/mysql55 /usr/local/mysql
groupadd mysql
useradd -g mysql mysql
cd /usr/local/mysql
chown -R mysql .
chgrp -R mysql .
mkdir /var/mysql -p
chown mysql. /var/mysql/
mkdir /var/log/mysql -p
chown mysql. /var/log/mysql/
sed -i 's/^#skip-networking/skip-name-resolve/' /etc/my.cnf
sed -i 's/^log-bin/#log-bin/' /etc/my.cnf
sed -i 's/^binlog_format/#binlog_format/' /etc/my.cnf
sed -i 's/skip-federated//' /etc/my.cnf
sed -i 's#^\[mysqld\]#\[mysqld\]\nuser = mysql#' /etc/my.cnf
sed -i 's/\(#innodb_lock_wait_timeout.*\)/\1\ninnodb_file_per_table\ninnodb_flush_method=O_DIRECT\n\n#slow queries\nlong_query_time=1\nslow_query_log=1\n/' /etc/my.cnf
/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/var/mysql

Seguimos añadiendo al PATH los binarios del MySQL y regenerando el /etc/ld.so.cache:

ln -s /usr/local/mysql/lib /usr/local/mysql/lib64
sed -i 's#unset pathmunge#pathmunge /usr/local/mysql/bin\nunset pathmunge#' /etc/profile
echo "alias mysql='mysql -p\$(cat /var/mysql/.mysql.root.pass)'" >> /etc/profile
. /etc/profile
echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf.d/mysql.conf
ldconfig

A continuación generamos la contraseña para root con pwgen y levantamos el daemon de MySQL:

pwgen 20 > /var/mysql/.mysql.root.pass
chmod 600 /var/mysql/.mysql.root.pass
mkdir -p /usr/local/supervise/mysql/
cat > /usr/local/supervise/mysql/run <<EOF
#!/bin/bash
exec /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
EOF
chmod +x /usr/local/supervise/mysql/run
ln -s /usr/local/supervise/mysql/ /service/
sleep 5

Finalmente definimos la contraseña generada y limpiamos:

/usr/local/mysql/bin/mysqladmin -u root password $(cat /var/mysql/.mysql.root.pass)
/usr/local/mysql/bin/mysqladmin -u root -h 127.0.0.1 password $(cat /var/mysql/.mysql.root.pass)
echo 'delete from mysql.user where Password="";' | mysql
echo 'flush privileges;' | mysql

3 comments to “Instalación de un servidor LAMP II (MySQL 5.5)”

  1. Jordi, si te quieres evitar el trabajo de compilar, hace unas semanas liberamos el proyecto PowerStack, un repositorio para CentOS con las últimas versiones del stack LAMP.

    El proyecto trata de ser algo mas que un repositorio con las últimas versiones de LAMP, cuento algo mas en este post:

    http://woop.es/2011/02/presentacion-powerstack/

    P.D: para la siguiente release tenemos pensado incluir algunos de los parches que has publicado, como por ejemplo el de los timestamps para max_used_connections, ya te avisaré 😉

    Saludos!!

  2. Lo vi el otro día 😛

    Soy bastante maniático con la forma que están compiladas las cosas y dónde están las cosas, pero le daré un vistazo seguro 🙂

  3. Hola Jordi,

    Si te animas a probarlo el feedback será bienvenido 🙂

    Los paquetes tienen la misma estructura que el upstream RHEL, es decir: el paquete tiene el mismo nombre, los ficheros están en el mismo sitio, se compila con las mismas opciones/flags, etc.. si lo pruebas y ves que algo no te gusta (como las compilaciones y rutas que dices), lo comentas para ver si lo podemos cambiar.. no es un proyecto cerrado 😉

    Saludos!

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>