Configurar CentOS 6.2 para desarrollo web

Después de descargar y instalar la última versión de CentOS, hay que instalar y configurar una serie de paquetes. Se calcula que se han activado dos dispositivos de red: un adaptador puente, y un adaptador sólo-anfitrión. Si se quiere configurar los adaptadores de red, hay que crear unos archivos:

vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
TYPE=Ethernet
HWADDR=08:00:27:b4:d7:97
PEERDNS=yes
vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
BROADCAST=192.168.56.255
IPADDR=192.168.56.101
NETMASK=255.255.255.0
NETWORK=192.168.56.0
HWADDR=08:00:27:07:19:1c
TYPE=Ethernet
GATEWAY=192.168.56.1
IPV6INIT=no
USERCTL=no

Tambien esta el asistente que puede ayudar:

system-config-network

Y para poder trabajar más cómodos, configuraremos el servidor de SSH para que este activo desde el arranque:

chkconfig --levels 235 sshd on

Hay una herramienta interactiva para seleccionar que servicios arrancar o no en el inicio del sistema:

ntsysv

Ahora, una vez conectados por SSH, primero una actualización completa:

yum update -y

Instalación de componentes necesarios para instalar “Guest Additions”:

yum -y install \
gcc \
make \
kernel-headers \
kernel-devel

Instalación de “Guest Additions”. Seleccionar la opción del menú y seguir los siguientes comandos:

mkdir /media/VirtualBoxGuestAdditions
mount -r /dev/cdrom /media/VirtualBoxGuestAdditions
cd /media/VirtualBoxGuestAdditions
./VBoxLinuxAdditions.run

Añadiendo repositorios y actualizando ( último EPEL: http://mirror.uv.es/mirror/fedora-epel/6/i386/repoview/epel-release.html):

rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
 
yum upgrade

Editar el fichero /etc/yum.repos.d/remi.repo, para cambiar el valor de enable, y añadir la prioridad al final de la sección de [remi]:

enable=1
priority=3

Instalando todos los componentes necesarios:

yum install -y \
php \
php-common \
php-gd \
php-cli \
php-mysql \
php-devel \
php-mbstring \
php-xml \
php-pdo \
php-mssql \
php-mcrypt \
php-process \
php-intl \
mysql-server \
mysql \
samba \
htop \
git \
tig \
subversion \
gettext \
memcached \
java-1.6.0-openjdk \
php-pear \
php-pear-phing \
php-pecl-xdebug \
php-pecl-apc \
php-pecl-memcache \
php-pecl-memcached \
zlib-devel \
tree
pecl upgrade-all
pear upgrade-all

Para instalar Subversion 1.7:

wget http://svn-ref.assembla.com/svn-clients/SVN_1.7.2_clients/CentOS-6-Subversion%201.7.2_client-64bit.rpm
yum localinstall --nogpgcheck CentOS-6-Subversion\ 1.7.2_client-64bit.rpm

Habilitando para que arranque desde inicio Apache, MySQL y Samba:

chkconfig --levels 235 mysqld on
chkconfig --levels 235 httpd on
chkconfig --levels 235 smb on

Deshabilitando el firewall IPTables:

chkconfig iptables off

Dar permisos al usuario de Apache para el directorio Document Root:

chown apache.apache /var/www/html/

Crear un usuario para desarrollar:

useradd developer -g apache -N
passwd developer
smbpasswd -a developer

Para darle permisos para ejecutar comando como root, hay que añadir la siguiente línea en el fichero /etc/sudoers:

developer      ALL=(ALL)       NOPASSWD: ALL

Para crear carpetas compartidas, se puede utilitzar la opción que da VirtualBox, o a través de Samba.

Configuración de Samba para poder acceder desde Windows. Modificar el archivo /etc/samba/smb.cnf y añadir:

[html]
    comment = WWW
    path = /var/www/html
    read only = no
    guest ok = no
    browseable = yes
    valid users = developer
    create mask = 0644
    force create mode = 0600
    security mask = 0555
    force security mode = 0600
[pear]
    comment = PEAR
    path = /usr/share/pear
    read only = yes
    guest ok = yes
    browseable = yes

Un posible problema es que este el firewall activado. A parte de desactivar el IPTABLES, hay que poner en modo permisivo el SElinux:

vim /etc/selinux/config
SELINUX=permissive

Y posteriormente reiniciar el servidor.

Para configurar las carpetas compartidas de VirtualBox, hay que crear las carpetas que se quieran ( por ejemplo html y home) con el checkbox “Hacer permanente”, pero no marcar la opción de montado automático, ya que sino nos creará las carpetas automáticamente en /media en el próximo reinicio. Una vez creadas las carpetas en el host, hay que ejecutar los siguientes comandos para montar las carpetas en el guest:

mount -t vboxsf html /var/www/html
mount -t vboxsf home /home/developer
 

Una vez comprobado que funciona, hay que automatizar el montado. Para ello hay que editar el fichero /etc/fstab y añadir las siguientes líneas:

home                    /home/developer         vboxsf  defaults,uid=developer,gid=apache        0 0
html                    /var/www/html           vboxsf  defaults,uid=developer,gid=apache        0 0

Respecto MySQL, se puede ejecutar el asistente “mysql_secure_installation“.  O también se puede realizar manual.

Asignar password al usuario ‘root’ de MySQL:

mysqladmin -u root password 12345678

Consultar los usuarios creados en MySQL, para eliminar los usuarios que no queramos:

SELECT user, host FROM mysql.user;
DROP USER ''@'localhost';
DROP USER ''@'localhost.localdomain';
DROP USER 'root'@'localhost.localdomain';
DROP USER 'root'@'::1';
DROP USER 'root'@'127.0.0.1';

Crear el usuario para acceder desde fuera de la máquina:

CREATE USER 'root'@'%' IDENTIFIED BY '12345678';
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;

En el fichero /etc/my.cnf añadiremos parámetros para establecer todo en UTF8:

[mysqld]
log_slow_queries=/var/log/mysqld.slow.log
long_query_time=2
 
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_general_ci
 
[mysql]
default-character-set=utf8

Cambiar parámetros en la configuración de Apache, en el fichero /etc/httpd/conf/httpd.conf:

KeepAlive On
NameVirtualHost *:80

Crear un virtualhost por defecto, para las peticiones que no estan encaminadas. Crear un fichero en /etc/httpd/conf.d/_default.conf:

    DocumentRoot /var/www/html/default/httpdocs
    ServerName example.com
 
    ErrorLog  /var/www/html/default/logs/error.log
    CustomLog "|/usr/sbin/rotatelogs /var/www/html/default/logs/access-%Y-%m-%d.log 86400" common

Cambiar parámetros en la configuración de PHP, en el fichero /etc/php.ini:

memory_limit = 128Mb
error_reporting = E_ALL | E_STRICT
display_errors = On
html_errors = On
date.timezone = Europe/Madrid
expose_php = Off

Cambiar parámetros en la configuración de XDebug, en el fichero /etc/php.d/xdebug.ini:

xdebug.dump.GET = *
xdebug.dump.POST = *
xdebug.dump.SERVER = REMOTE_ADDR, REQUEST_METHOD, SCRIPT_FILENAME, QUERY_STRING
xdebug.dump.SESSION = *
 
xdebug.cli_color = 1
 
xdebug.collect_params = 4
xdebug.collect_return = On
 
xdebug.var_display_max_children = 300
xdebug.var_display_max_data = 1000
xdebug.var_display_max_depth = 7
 
;xdebug.show_local_vars = On
 
xdebug.remote_enable=On
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
 
xdebug.auto_trace = Off
xdebug.trace_format = 2
 
xdebug.scream = On
 
xdebug.profiler_enable = Off
xdebug.profiler_output_name = cachegrind.out.%H.%t.xt

Modificar el comportamiento de Vim, editando el archivo ~/.vimrc:

:set number
:set tabstop=4
:set shiftwidth=4
:set expandtab
:set fileencodings=utf-8
:set incsearch

Añadir alias y configuraciones a Git, editando el archivo ~/.gitconfig:

[core]
    autocrlf = input
 
[alias]
    co = checkout
    ci = commit
    st = status
    br = branch
    h = log --graph --date=iso --pretty=format:'%Cgreen%h%Creset %Cblue%ad%Creset | %s%Cgreen%d%Creset %C(yellow)[%an]%Creset'
    ha = log --graph --date=iso --all --pretty=format:'%Cgreen%h%Creset %Cblue%ad%Creset | %s%Cgreen%d%Creset %C(yellow)[%an]%Creset'
    hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
    type = cat-file -t
    dump = cat-file -p
    df = diff
    dfs = diff --staged
    pr = pull --rebase
    save = stash save
    savem = stash save --keep-index
    recover = stash pop --index
    recoverf = !git stash show -p | git apply && git stash drop
    undo = reset --hard
 
[color]
    ui = auto

Crear unos alias personalizados, editando el fichero ~/.bashrc:

alias docroot="cd /var/www/html"
alias virhosts="cd /etc/httpd/conf.d"
 
alias rsthttpd="sudo service httpd restart"
alias rstmysqld="sudo service mysqld restart"
 
umask 0002

Crear un virtualhost por defecto, para las peticiones que vayan a hosts que no tenemos controlados. Crear el archivo /etc/httpd/conf.d/_default.conf:

    DocumentRoot /var/www/html/default/httpdocs
    ServerName example.com
 
    ErrorLog  /var/www/html/default/logs/error.log
    CustomLog /var/www/html/default/logs/access.log common

Faltaría crear las carpetas /var/www/html/default/logs,  /var/www/html/default/httpdocs y un fichero  /var/www/html/default/httpdocs/index.php con un mensaje.

Para los demás VirtualHosts, crearemos un fichero en /etc/httpd/conf.d

    DocumentRoot /var/www/html/otroblogmas.com/httpdocs
    ServerName otroblogmas.com
    ServerAlias www.otroblogmas.com
 
    SetEnv APPLICATION_ENV "development"
    ErrorLog  /var/www/html/otroblogmas.com/logs/error.log
    CustomLog "|/usr/sbin/rotatelogs /var/www/html/otroblogmas.com/logs/access-%Y-%m-%d.log 86400" common

6 comentarios en “Configurar CentOS 6.2 para desarrollo web

  1. Estimado, después de usar el comando VIM, cómo salgo de él, cómo grabo y sigo en el login del sistema, te comento es la primera vez que intento trabajar con Linux, monté CentOS en modo no gráfico y estoy tratando de conectarme a Internet, luego montar KDE o Gnome, así que conozco poco de este sistema, antes usé Unix, pero ningún comando me lo reconoce, espero tus comentarios.

  2. Excelente como lo explicas. Voy a probarlo, he instalado el centos en una maquina virtual creada con Centos 6.2, no se si sera exactamente igual pero ire siguiendo cada uno de tus pasos. Muchas gracias.

  3. Hola Lucio,
    creo que usas :wq
    w=guardar
    q=salida

    por otro lado, hoy probare :D
    usare la versiòn 6.3, espero todo salga bien.
    saludos.
    Ros~

  4. tengo problemas con el centos 6.2 no puedo ingresar por ssh ni por internet menos por la red lan que puede ser.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>