Instalacion LAMP
Instalación de los paquetes básicos[editar]
Para tener un servidor web completamente funcional se deben instalar los siguientes programas:
- Apache (httpd): servidor web.
- apachetop: monitor de los archivos de log de Apache.
- awstats: programa para la generación de estadísticas de accesos web.
- ImageMagick: programa para el tratamiento de imágenes.
- MySQL: motor de base de datos.
- PHP: lenguaje interpretado para la generación de páginas web dinámicas.
- webalizer: programa para la generación de estadísticas de accesos web.
Además, se recomienda instalar las siguientes utilidades adicionales:
- antiword: convierte documentos MS-Word a ASCII o Postscript.
- ghostscript:intérprete y randerizador PostScript(TM).
- lynx: navegador web en modo texto.
- htmldoc: Paquete para conversion a documentos PDF.
- python-pisa:
- python-reportlab:
- pyPdf:
- python-setuptools:
La instalación se realiza de la siguiente forma:
yum install httpd apachetop mysql mysql-server \ php php-pear php-gd php-imap php-mysql php-mbstring php-pgsql php-soap php-xml php-pecl-apc \ php-xmlrpc php-intl php-mcrypt php-bcmath php-process php-ldap php-ZendFramework \ webalizer awstats perl-Geo-IP GeoIP ImageMagick ghostscript lynx htmldoc \ python-pisa python-reportlab pyPdf python-setuptools antiword php-pecl-http
Configuración de PHP[editar]
Para un correcto funcionamiento de las aplicaciones web (por ejemplo, TYPO3), se deben modificar algunos valores en la configuración de PHP. Para ello se debe editar el archivo /etc/php.ini y modificar los siguientes valores:
max_execution_time = 60 max_input_time = 90 post_max_size = 16M upload_max_filesize = 16M date.timezone = "America/Santiago"
NOTA: el parámetro date.timezone está comentado; se debe eliminar el caracter ";" al inicio de la línea.
Configuración de php-pecl-apc[editar]
Se debe editar el archivo /etc/php.d/apc.ini y modificar el valor de la variable apc.shm_size:
apc.shm_size=192M
Configuración de Apache[editar]
VirtualHost por omisión[editar]
Se debe crear el archivo /etc/httpd/conf.d/000-default.conf con el siguiente contenido
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@lazos.cl
DocumentRoot /var/www/html
ServerName nombreDelServidor.dominio
ErrorLog logs/error_log
CustomLog logs/access_log combined
</VirtualHost>
Activación del servicio[editar]
chkconfig --levels 235 httpd on /etc/init.d/httpd start
Configuración de MySQL[editar]
Activación del servicio[editar]
chkconfig --levels 235 mysqld on /etc/init.d/mysqld start
Configuración de la contraseña del administrador[editar]
Se debe utilizar la herramienta mysql_secure_installation y seguir los pasos indicados:
mysql_secure_installation
A continuación se deben responder las siguientes preguntas:
Enter current password for root (enter for none): Presionar ENTER sin escribir nada ... Set root password? [Y/n] Y New password: Ingresar la nueva contraseña de root para MySQL Re-enter new password: Repetir la contraseña Password updated successfully! ... Remove anonymous users? [Y/n] Y ... Disallow root login remotely? [Y/n] Y ... Remove test database and access to it? [Y/n] Y ... Reload privilege tables now? [Y/n] Y ... All done! If you've completed all of the above steps, your MySQL installation should now be secure. Thanks for using MySQL!
Configuración de webalizer[editar]
Se debe modificar el archivo /etc/httpd/conf.d/webalizer.conf y dejarlo de esta manera:
#
# This configuration file maps the webalizer log analysis
# results (generated daily) into the URL space. By default
# these results are only accessible from the local host.
#
Alias /usage /var/www/usage
<Location /usage>
# Order deny,allow
Order allow,deny
Allow from all
# Deny from all
# Allow from 127.0.0.1
# Allow from ::1
# # Allow from .example.com
</Location>
Posteriormente se debe recargar la configuración de Apache:
/etc/init.d/httpd reload
Con esto ya es posible acceder al sistema en la siguiente URL: http://nombreDelServidor/usage
NOTA: con esta configuración, el acceso a Webalizer estará abierto al mundo, sin restricciones.
Configuración de awstats[editar]
Configuración de estadísticas[editar]
NOTA: se debe crear un archivo de configuración para cada nombre de dominio que se utilice en el servidor; es decir, un archivo para cada VirtualHost.
Se debe editar el archivo /etc/awstats/awstats.nombreDeDominio.conf y modificar los siguientes parámetros:
LogFile="/var/log/httpd/nombreDeDominio-access_log" SiteDomain="nombreDeDominio" HostAliases="REGEX[^.*fermio\.lazos\.cl$]" #lista de alias separados por espacio DNSLookup=0 URLWithQuery=1 LoadPlugin="geoip GEOIP_STANDARD /usr/share/GeoIP/GeoIP.dat" # Se debe descomentar la línea
El paquete RPM de awstats incluye la configuración necesaria para que las estadísticas se actualicen automáticamente cada hora. Para realizar una actualización manual, se debe utilizar la siguiente instrucción:
/etc/cron.hourly/awstats
Estadísticas por día[editar]
Para poder tener una vista detallada de las estadísticas de acceso separadas por día, se debe instalar un plugin llamado awstats-day-by-day:
wget http://www.internetofficer.com/download/awstats-day-by-day.php \ --referer=http://www.internetofficer.com/download/awstats-day-by-day.php \ -O /tmp/awstats-day-by-day.zip cd /usr/share/awstats/wwwroot/js/ unzip /tmp/awstats-day-by-day.zip
En el archivo /etc/httpd/conf.d/awstats.conf se debe agregar la siguiente línea (aproximadamente en la línea 18):
Alias /awstatsjs "/usr/share/awstats/wwwroot/js/"
En el archivo /etc/awstats/awstats.nombreDeDominio.conf se deben modificar los siguientes parámetros:
HTMLHeadSection="<script language=javascript src="/awstatsjs/day-by-day-head.js"></script>" HTMLEndSection="<script language=javascript src="/awstatsjs/day-by-day-end.js"></script>"
Se debe copiar y modificar el script que realiza la actualización de los reportes de estadísticas:
cp /usr/share/awstats/tools/awstats_updateall.pl /usr/share/awstats/tools/awstats_updateall_daybyday.pl
vim /usr/share/awstats/tools/awstats_updateall_daybyday.pl (Modificar la línea 151) my $command="\"$AwstatsDir/$AwstatsProg\" -databasebreak=day -update -config=$domain";
Luego se debe agregar una tarea adicional (cron) para este script. Para ello se debe crearel archivo /etc/cron.hourly/awstats_daybyday con el siguiente contenido:
#!/bin/bash exec /usr/share/awstats/tools/awstats_updateall_daybyday.pl now -configdir="/etc/awstats" -awstatsprog="/usr/share/awstats/wwwroot/cgi-bin/awstats.pl" >/dev/null exit 0
chmod +x /etc/cron.hourly/awstats_daybyday
Finalmente se debe recargar la configuración de Apache:
/etc/init.d/httpd graceful
Configuración del acceso[editar]
Editar el archivo /etc/httpd/conf.d/awstats.conf y comentar (añadiendo el símbolo # al inicio) las siguientes líneas
# Order allow,deny # Allow from 127.0.0.1
En el mismo archivo, se debe agregar la siguiente sección para proteger las estadísticas con usuario y contraseña:
<Files "awstats.pl">
AuthUserFile /etc/awstats/.passwd
AuthGroupFile /etc/awstats/.group
AuthName "Area restringida"
AuthType Basic
require valid-user
</Files>
Posteriormente se deben configurar los usuarios permitidos de la siguiente forma:
htpasswd -c /etc/awstats/.passwd nombreDeUsuario
Esta herramienta solicitará que se ingrese dos veces la contraseña para dicho usuario.
NOTA: para agregar más usuarios, se debe utilizar la misma herramienta pero sin el parámetro -c, ya que de lo contrario se eliminarán los usuarios anteriores.
Finalmente se debe recargar la configuración de Apache:
/etc/init.d/httpd graceful
Con esto ya es posible acceder al sistema en la siguiente URL: http://nombreDelServidor/awstats/awstats.pl?config=nombreDeDominio
Configuración del cortafuegos[editar]
Para permitir el acceso al puerto 80 (HTTP), se debe agregar la siguiente línea en la sección correspondiente del archivo /etc/sysconfig/iptables:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
Para permitir el acceso al puerto 443 (HTTPS), se debe agregar la siguiente línea:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
Para permitir el acceso al puerto 3306 (MySQL), se debe agregar la siguiente línea:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
Luego se debe reiniciar el cortafuegos:
service iptables restart