Con el servidor web de Apache podemos acotar el ancho de banda mediante el módulo mod_bw.En este ejemplo de instalación y uso que presento, se ha modificado el fichero de configuración de apache para este propósito, de manera que el ratio de transferencia sea distinto según el directorio al que accede la URL solicitada.
He divido el artículo en dos partes: La primera corresponde a esta entrada en la que se lleva a cabo un upgrade de la versión de apache. En la próxima entrada presentaré la instalación y uso del mod_bw propiamente dicho.
Para el upgrade he utilizado el comando rpm de toda la vida. Los que seguimos prefiriendo Debian (y basados en) como distribución Linux, estamos (mal?) acostumbrados con apt y derivados en lo que se refiere a herramientas de gestión de paquetes. Personalmente no me fío demasiado de yum o up2date (especialmente si he de desinstalar o hacer un downgrade) así que con Redhat suelo arremangarme y tiro de rpm para no perder el control de lo que se está haciendo en el sistema.
[root@localhost ~]# rpm -qa|grep httpd
httpd-2.0.52-9.ent
httpd-manual-2.0.52-9.ent
httpd-suexec-2.0.52-9.ent
system-config-httpd-1.3.1-1
- Creo un directorio donde almacenar los rpms
[root@localhost ~]# cd /usr/src
[root@localhost src]# ls
[root@localhost src]# mkdir rpms
[root@localhost src]# cd rpms
- Copio allí los rpm e instalo
[root@localhost rpms]# rpm -Uvh httpd-2.0.52-28.ent.i386.rpm apr-0.9.4-24.5.i386.rpm httpd-manual-2.0.52-28.ent.i386.rpm httpd-suexec-2.0.52-28.ent.i386.rpm
warning: httpd-2.0.52-28.ent.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e error: Failed dependencies: httpd = 2.0.52-9.ent is needed by (installed) mod_ssl-2.0.52-9.ent.i386
- Me da error debido a mod_ssl, que no me hace falta en esta instalación, así que lo quito.
[root@localhost rpms]# rpm -e mod_ssl-2.0.52
- Try again
[root@localhost rpms]# rpm -Uvh httpd-2.0.52-28.ent.i386.rpm apr-0.9.4-24.5.i386.rpm httpd-manual-2.0.52-28.ent.i386.rpm httpd-suexec-2.0.52-28.ent.i386.rpm
warning: httpd-2.0.52-28.ent.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e Preparing...
########################################### [100%] 1:apr ########################################### [ 25%] 2:httpd-suexec ########################################### [ 50%] 3:httpd-manual ########################################### [ 75%] 4:httpd ########################################### [100%]
- Instalo código fuente
[root@localhost rpms]# rpm -ivh httpd-2.0.52-28.ent.src.rpm
warning: httpd-2.0.52-28.ent.src.rpm: V3 DSA signature: NOKEY, key ID db42a60e error: cannot create %sourcedir /usr/src/redhat/SOURCES
[root@localhost rpms]# mkdir -p /usr/src/redhat/SOURCES
[root@localhost rpms]# rpm -ivh httpd-2.0.52-28.ent.src.rpm
warning: httpd-2.0.52-28.ent.src.rpm: V3 DSA signature: NOKEY, key ID db42a60e 1:httpd ########################################### [100%]
- Descomprimo código fuente
[root@localhost rpms]# cd /usr/src/redhat/SOURCES
[root@localhost SOURCES]# gunzip httpd-2.0.52.tar.gz
[root@localhost SOURCES]# tar xvf httpd-2.0.52.tar
...
httpd-2.0.52/test/test_select.c httpd-2.0.52/test/tcpdumpscii.txt httpd-2.0.52/test/time-sem.c httpd-2.0.52/test/check_chunked httpd-2.0.52/test/.indent.pro httpd-2.0.52/test/test_limits.c httpd-2.0.52/VERSIONING
[root@localhost SOURCES]#
- Compilo source code (configure, luego make y finalmente make install)
[root@localhost SOURCES]# cd httpd-2.0.52
[root@localhost httpd-2.0.52]# ls
ABOUT_APACHE Apache.dsw buildconf configure.in include libhttpd.dsp modules README support acconfig.h apachenw.mcp.zip CHANGES docs INSTALL LICENSE NOTICE README.platforms test acinclude.m4 build config.layout emacs-style InstallBin.dsp Makefile.in NWGNUmakefile server VERSIONING Apache.dsp BuildBin.dsp configure httpd.spec LAYOUT Makefile.win os srclib
[root@localhost httpd-2.0.52]# ./configure
- Si no lo hay, se quejará de compilador de C. Lo instalamos:
[root@localhost rpms]# pwd
/usr/src/rpms
[root@localhost rpms]# ls
apr-0.9.4-24.5.i386.rpm glibc-headers-2.3.4-2.i386.rpm httpd-2.0.52-28.ent.src.rpm gcc-3.4.3-9.EL4.i386.rpm glibc-kernheaders-2.4-9.1.87.i386.rpm httpd-manual-2.0.52-28.ent.i386.rpm glibc-devel-2.3.4-2.i386.rpm httpd-2.0.52-28.ent.i386.rpm httpd-suexec-2.0.52-28.ent.i386.rpm
[root@localhost rpms]# rpm -ivh gcc-3.4.3-9.EL4.i386.rpm glibc-devel-2.3.4-2.i386.rpm glibc-headers-2.3.4-2.i386.rpm glibc-kernheaders-2.4-9.1.87.i386.rpm warning: gcc-3.4.3-9.EL4.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e Preparing... ########################################### [100%] 1:glibc-kernheaders ########################################### [ 25%] 2:glibc-headers ########################################### [ 50%] 3:glibc-devel ########################################### [ 75%] 4:gcc ########################################### [100%]
- Retry, pero mejor indico el directorio de apache en --prefix
[root@localhost rpms]# cd /usr/src/redhat/SOURCES/httpd-2.0.52
[root@localhost httpd-2.0.52]# ./configure --prefix=/opt/apache2.0.52
...
creating os/os2/Makefile creating os/Makefile creating os/unix/Makefile creating server/Makefile creating support/Makefile creating srclib/pcre/Makefile creating test/Makefile config.status: creating docs/conf/httpd-std.conf config.status: creating docs/conf/ssl-std.conf config.status: creating include/ap_config_layout.h config.status: creating support/apxs config.status: creating support/apachectl config.status: creating support/dbmmanage config.status: creating support/envvars-std config.status: creating support/log_server_status config.status: creating support/logresolve.pl config.status: creating support/phf_abuse_log.cgi config.status: creating support/split-logfile config.status: creating build/rules.mk config.status: creating include/ap_config_auto.h config.status: executing default commands
- Compruebo si ha acabado bien
[root@localhost httpd-2.0.52]# echo $?
0
- Tras configure, make y make install
[root@localhost httpd-2.0.52]# make
Making all in srclib make[1]: Entering directory `/usr/src/redhat/SOURCES/httpd-2.0.52/srclib' Making all in apr make[2]: Entering directory `/usr/src/redhat/SOURCES/httpd-2.0.52/srclib/apr' Making all in strings ... make[1]: Entering directory `/usr/src/redhat/SOURCES/httpd-2.0.52' /usr/src/redhat/SOURCES/httpd-2.0.52/srclib/apr/libtool --silent --mode=compile gcc -g -O2 -pthread -DLINUX=2 -D_REENTRANT -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_SVID_SOURCE -D_GNU_SOURCE -DAP_HAVE_DESIGNATED_INITIALIZER -I/usr/src/redhat/SOURCES/httpd-2.0.52/srclib/apr/include -I/usr/src/redhat/SOURCES/httpd-2.0.52/srclib/apr-util/include -I/usr/src/redhat/SOURCES/httpd-2.0.52/srclib/apr-util/xml/expat/lib -I. -I/usr/src/redhat/SOURCES/httpd-2.0.52/os/unix -I/usr/src/redhat/SOURCES/httpd-2.0.52/server/mpm/prefork -I/usr/src/redhat/SOURCES/httpd-2.0.52/modules/http -I/usr/src/redhat/SOURCES/httpd-2.0.52/modules/filters -I/usr/src/redhat/SOURCES/httpd-2.0.52/modules/proxy -I/usr/src/redhat/SOURCES/httpd-2.0.52/include -I/usr/src/redhat/SOURCES/httpd-2.0.52/modules/generators -I/usr/src/redhat/SOURCES/httpd-2.0.52/modules/dav/main -prefer-non-pic -static -c modules.c && touch modules.lo /usr/src/redhat/SOURCES/httpd-2.0.52/srclib/apr/libtool --silent --mode=link gcc -g -O2 -pthread -DLINUX=2 -D_REENTRANT -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_SVID_SOURCE -D_GNU_SOURCE -DAP_HAVE_DESIGNATED_INITIALIZER -I/usr/src/redhat/SOURCES/httpd-2.0.52/srclib/apr/include -I/usr/src/redhat/SOURCES/httpd-2.0.52/srclib/apr-util/include -I/usr/src/redhat/SOURCES/httpd-2.0.52/srclib/apr-util/xml/expat/lib -I. -I/usr/src/redhat/SOURCES/httpd-2.0.52/os/unix -I/usr/src/redhat/SOURCES/httpd-2.0.52/server/mpm/prefork -I/usr/src/redhat/SOURCES/httpd-2.0.52/modules/http -I/usr/src/redhat/SOURCES/httpd-2.0.52/modules/filters -I/usr/src/redhat/SOURCES/httpd-2.0.52/modules/proxy -I/usr/src/redhat/SOURCES/httpd-2.0.52/include -I/usr/src/redhat/SOURCES/httpd-2.0.52/modules/generators -I/usr/src/redhat/SOURCES/httpd-2.0.52/modules/dav/main -export-dynamic -L/usr/src/redhat/SOURCES/httpd-2.0.52/srclib/apr-util/xml/expat/lib -o httpd modules.lo modules/aaa/mod_access.la modules/aaa/mod_auth.la modules/filters/mod_include.la modules/loggers/mod_log_config.la modules/metadata/mod_env.la modules/metadata/mod_setenvif.la modules/http/mod_http.la modules/http/mod_mime.la modules/generators/mod_status.la modules/generators/mod_autoindex.la modules/generators/mod_asis.la modules/generators/mod_cgi.la modules/mappers/mod_negotiation.la modules/mappers/mod_dir.la modules/mappers/mod_imap.la modules/mappers/mod_actions.la modules/mappers/mod_userdir.la modules/mappers/mod_alias.la modules/mappers/mod_so.la server/mpm/prefork/libprefork.la server/libmain.la os/unix/libos.la /usr/src/redhat/SOURCES/httpd-2.0.52/srclib/pcre/libpcre.la /usr/src/redhat/SOURCES/httpd-2.0.52/srclib/apr-util/libaprutil-0.la /usr/src/redhat/SOURCES/httpd-2.0.52/srclib/apr-util/xml/expat/lib/libexpat.la /usr/src/redhat/SOURCES/httpd-2.0.52/srclib/apr/libapr-0.la -lrt -lm -lcrypt -lnsl -lpthread -ldl make[1]: Leaving directory `/usr/src/redhat/SOURCES/httpd-2.0.52'
[root@localhost httpd-2.0.52]# echo $?
0
[root@localhost httpd-2.0.52]# make install
... mkdir /opt/apache2.0.52/error Installing icons mkdir /opt/apache2.0.52/icons mkdir /opt/apache2.0.52/logs Installing CGIs mkdir /opt/apache2.0.52/cgi-bin Installing header files Installing man pages and online manual mkdir /opt/apache2.0.52/man mkdir /opt/apache2.0.52/man/man1 mkdir /opt/apache2.0.52/man/man8 mkdir /opt/apache2.0.52/manual Installing build system files make[1]: Leaving directory `/usr/src/redhat/SOURCES/httpd-2.0.52'
[root@localhost httpd-2.0.52]# echo $?
0


Inglés a castellano
Anglès a català
Deja tu comentario