一、在CentOS6.4环境下编译Bandwidthd和PostgreSQL需要注意顺序
(1)下载PostgreSQL
wget http://ftp.postgresql.org/pub/source/v8.4.2/postgresql-8.4.2.tar.gz
最好下载在 / 根目录下
tar -zxvf postgresql-8.4.2.tar.gz 解压缩
(2)下载Bandwidthd
wget http://nchc.dl.sourceforge.net/project/bandwidthd/bandwidthd/bandwidthd%202.0.1/bandwidthd-2.0.1.tgz
tar -zxvf bandwidthd-2.0.1.tgz
(3)安装编译需要的软件包
编译Postgresql需要
yum install gcc cpp glibc glibc-devel gcc-c++ make
编译Bandwidthd需要
yum install libpcap libpcap-devel libpng libpng-devel gd gd-devel
(4)进入postgres目录,开始编译postgres
./configure
执行后,看看有没有错误
[root@bwd postgresql-8.4.2]# ./configure
checking build system type… x86_64-unknown-linux-gnu
checking host system type… x86_64-unknown-linux-gnu
checking which template to use… linux
checking whether to build with 64-bit integer date/time support… yes
checking whether NLS is wanted… no
checking for default port number… 5432
checking for block size… 8kB
checking for segment size… 1GB
checking for WAL block size… 8kB
checking for WAL segment size… 16MB
checking for gcc… gcc
checking for C compiler default output file name… a.out
checking whether the C compiler works… yes
checking whether we are cross compiling… no
checking for suffix of executables…
checking for suffix of object files… o
checking whether we are using the GNU C compiler… yes
checking whether gcc accepts -g… yes
checking for gcc option to accept ISO C89… none needed
checking if gcc supports -Wdeclaration-after-statement… yes
checking if gcc supports -Wendif-labels… yes
checking if gcc supports -fno-strict-aliasing… yes
checking if gcc supports -fwrapv… yes
checking whether the C compiler still works… yes
checking how to run the C preprocessor… gcc -E
checking allow thread-safe client libraries… no
checking whether to build with Tcl… no
checking whether to build Perl modules… no
checking whether to build Python modules… no
checking whether to build with GSSAPI support… no
checking whether to build with Kerberos 5 support… no
checking whether to build with PAM support… no
checking whether to build with LDAP support… no
checking whether to build with Bonjour support… no
checking whether to build with OpenSSL support… no
checking for grep that handles long lines and -e… /bin/grep
checking for egrep… /bin/grep -E
checking for ld used by GCC… /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld… yes
checking for ranlib… ranlib
checking for strip… strip
checking whether it is possible to strip libraries… yes
checking for ar… ar
checking for tar… /bin/tar
checking whether ln -s works… yes
checking for gawk… gawk
checking for bison… no
configure: WARNING:
*** Without Bison you will not be able to build PostgreSQL from CVS nor
*** change any of the parser definition files. You can obtain Bison from
*** a GNU mirror site. (If you are using the official distribution of
*** PostgreSQL then you do not need to worry about this, because the Bison
*** output is pre-generated.)
checking for flex… no
configure: WARNING:
*** Without Flex you will not be able to build PostgreSQL from CVS or
*** change any of the scanner definition files. You can obtain Flex from
*** a GNU mirror site. (If you are using the official distribution of
*** PostgreSQL then you do not need to worry about this because the Flex
*** output is pre-generated.)
checking for perl… /usr/bin/perl
checking for main in -lm… yes
checking for library containing setproctitle… no
checking for library containing dlopen… -ldl
checking for library containing socket… none required
checking for library containing shl_load… no
checking for library containing getopt_long… none required
checking for library containing crypt… -lcrypt
checking for library containing fdatasync… none required
checking for library containing gethostbyname_r… none required
checking for library containing shmget… none required
checking for -lreadline… yes (-lreadline)
checking for inflate in -lz… yes
checking for ANSI C header files… yes
checking for sys/types.h… yes
checking for sys/stat.h… yes
checking for stdlib.h… yes
checking for string.h… yes
checking for memory.h… yes
checking for strings.h… yes
checking for inttypes.h… yes
checking for stdint.h… yes
checking for unistd.h… yes
checking crypt.h usability… yes
checking crypt.h presence… yes
checking for crypt.h… yes
checking dld.h usability… no
checking dld.h presence… no
checking for dld.h… no
checking fp_class.h usability… no
checking fp_class.h presence… no
checking for fp_class.h… no
checking getopt.h usability… yes
checking getopt.h presence… yes
checking for getopt.h… yes
checking ieeefp.h usability… no
checking ieeefp.h presence… no
checking for ieeefp.h… no
checking langinfo.h usability… yes
checking langinfo.h presence… yes
checking for langinfo.h… yes
checking poll.h usability… yes
checking poll.h presence… yes
checking for poll.h… yes
checking pwd.h usability… yes
checking pwd.h presence… yes
checking for pwd.h… yes
checking sys/ipc.h usability… yes
checking sys/ipc.h presence… yes
checking for sys/ipc.h… yes
checking sys/poll.h usability… yes
checking sys/poll.h presence… yes
checking for sys/poll.h… yes
checking sys/pstat.h usability… no
checking sys/pstat.h presence… no
checking for sys/pstat.h… no
checking sys/resource.h usability… yes
checking sys/resource.h presence… yes
checking for sys/resource.h… yes
checking sys/select.h usability… yes
checking sys/select.h presence… yes
checking for sys/select.h… yes
checking sys/sem.h usability… yes
checking sys/sem.h presence… yes
checking for sys/sem.h… yes
checking sys/socket.h usability… yes
checking sys/socket.h presence… yes
checking for sys/socket.h… yes
checking sys/shm.h usability… yes
checking sys/shm.h presence… yes
checking for sys/shm.h… yes
checking sys/tas.h usability… no
checking sys/tas.h presence… no
checking for sys/tas.h… no
checking sys/time.h usability… yes
checking sys/time.h presence… yes
checking for sys/time.h… yes
checking sys/un.h usability… yes
checking sys/un.h presence… yes
checking for sys/un.h… yes
checking termios.h usability… yes
checking termios.h presence… yes
checking for termios.h… yes
checking ucred.h usability… no
checking ucred.h presence… no
checking for ucred.h… no
checking utime.h usability… yes
checking utime.h presence… yes
checking for utime.h… yes
checking wchar.h usability… yes
checking wchar.h presence… yes
checking for wchar.h… yes
checking wctype.h usability… yes
checking wctype.h presence… yes
checking for wctype.h… yes
checking kernel/OS.h usability… no
checking kernel/OS.h presence… no
checking for kernel/OS.h… no
checking kernel/image.h usability… no
checking kernel/image.h presence… no
checking for kernel/image.h… no
checking SupportDefs.h usability… no
checking SupportDefs.h presence… no
checking for SupportDefs.h… no
checking netinet/in.h usability… yes
checking netinet/in.h presence… yes
checking for netinet/in.h… yes
checking for netinet/tcp.h… yes
checking readline/readline.h usability… yes
checking readline/readline.h presence… yes
checking for readline/readline.h… yes
checking readline/history.h usability… yes
checking readline/history.h presence… yes
checking for readline/history.h… yes
checking zlib.h usability… yes
checking zlib.h presence… yes
checking for zlib.h… yes
checking whether byte ordering is bigendian… no
checking for an ANSI C-conforming const… yes
checking for inline… inline
checking for preprocessor stringizing operator… yes
checking for signed types… yes
checking for working volatile… yes
checking for __func__… yes
checking whether struct tm is in sys/time.h or time.h… time.h
checking for struct tm.tm_zone… yes
checking for tzname… yes
checking for union semun… no
checking for struct sockaddr_un… yes
checking for struct sockaddr_storage… yes
checking for struct sockaddr_storage.ss_family… yes
checking for struct sockaddr_storage.__ss_family… no
checking for struct sockaddr_storage.ss_len… no
checking for struct sockaddr_storage.__ss_len… no
checking for struct sockaddr.sa_len… no
checking for struct addrinfo… yes
checking for struct cmsgcred… no
checking for struct fcred… no
checking for struct sockcred… no
checking for struct option… yes
checking for z_streamp… yes
checking for int timezone… yes
checking types of arguments for accept()… int, int, struct sockaddr *, socklen_t *
checking whether gettimeofday takes only one argument… no
checking for cbrt… yes
checking for dlopen… yes
checking for fcvt… yes
checking for fdatasync… yes
checking for getpeereid… no
checking for getpeerucred… no
checking for getrlimit… yes
checking for memmove… yes
checking for poll… yes
checking for pstat… no
checking for readlink… yes
checking for setproctitle… no
checking for setsid… yes
checking for sigprocmask… yes
checking for symlink… yes
checking for sysconf… yes
checking for towlower… yes
checking for utime… yes
checking for utimes… yes
checking for waitpid… yes
checking for wcstombs… yes
checking for posix_fadvise… yes
checking whether posix_fadvise is declared… yes
checking whether fdatasync is declared… yes
checking whether strlcat is declared… no
checking whether strlcpy is declared… no
checking whether F_FULLFSYNC is declared… no
checking for struct sockaddr_in6… yes
checking for PS_STRINGS… no
checking for snprintf… yes
checking for vsnprintf… yes
checking whether snprintf is declared… yes
checking whether vsnprintf is declared… yes
checking for isinf… yes
checking for crypt… yes
checking for getopt… yes
checking for getrusage… yes
checking for inet_aton… yes
checking for random… yes
checking for rint… yes
checking for srandom… yes
checking for strdup… yes
checking for strerror… yes
checking for strlcat… no
checking for strlcpy… no
checking for strtol… yes
checking for strtoul… yes
checking for unsetenv… yes
checking for getaddrinfo… yes
checking for getopt_long… yes
checking for rl_completion_append_character… yes
checking for rl_completion_matches… yes
checking for rl_filename_completion_function… yes
checking for replace_history_entry… yes
checking for sigsetjmp… yes
checking whether sys_siglist is declared… yes
checking for syslog… yes
checking syslog.h usability… yes
checking syslog.h presence… yes
checking for syslog.h… yes
checking for opterr… yes
checking for optreset… no
checking for strtoll… yes
checking for strtoull… yes
checking for atexit… yes
checking for fseeko… yes
checking for _LARGEFILE_SOURCE value needed for large files… no
checking test program… ok
checking whether long int is 64 bits… yes
checking for unsigned long… yes
checking size of unsigned long… 8
checking for void *… yes
checking size of void *… 8
checking for size_t… yes
checking size of size_t… 8
checking whether to build with float4 passed by value… yes
checking whether to build with float8 passed by value… yes
checking for short… yes
checking alignment of short… 2
checking for int… yes
checking alignment of int… 4
checking for long… yes
checking alignment of long… 8
checking for double… yes
checking alignment of double… 8
checking for int8… no
checking for uint8… no
checking for int64… no
checking for uint64… no
checking for sig_atomic_t… yes
checking for POSIX signal interface… yes
checking for special C compiler options needed for large files… no
checking for _FILE_OFFSET_BITS value needed for large files… no
checking for off_t… yes
checking size of off_t… 8
checking for working memcmp… yes
checking for onsgmls… no
checking for nsgmls… no
checking for openjade… no
checking for jade… no
checking for DocBook V4.2… no
checking for DocBook stylesheets… no
checking for collateindex.pl… no
checking for sgmlspl… no
checking for docbook2man…
checking if gcc supports -Wl,–as-needed… yes
configure: using CFLAGS=-O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -fwrapv
configure: using CPPFLAGS= -D_GNU_SOURCE
configure: using LDFLAGS= -Wl,–as-needed
configure: creating ./config.status
config.status: creating GNUmakefile
config.status: creating src/Makefile.global
config.status: creating src/include/pg_config.h
config.status: src/include/pg_config.h is unchanged
config.status: creating src/interfaces/ecpg/include/ecpg_config.h
config.status: src/interfaces/ecpg/include/ecpg_config.h is unchanged
config.status: linking ./src/backend/port/tas/dummy.s to src/backend/port/tas.s
config.status: linking ./src/backend/port/dynloader/linux.c to src/backend/port/dynloader.c
config.status: linking ./src/backend/port/sysv_sema.c to src/backend/port/pg_sema.c
config.status: linking ./src/backend/port/sysv_shmem.c to src/backend/port/pg_shmem.c
config.status: linking ./src/backend/port/dynloader/linux.h to src/include/dynloader.h
config.status: linking ./src/include/port/linux.h to src/include/pg_config_os.h
config.status: linking ./src/makefiles/Makefile.linux to src/Makefile.port
[root@bwd postgresql-8.4.2]#
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2013-11/92932p2.htm
PostgreSQL 的详细介绍:请点这里
PostgreSQL 的下载地址:请点这里
PostgreSQL 9.3物化视图使用 http://www.linuxidc.com/Linux/2013-09/90045.htm
使用 PostgreSQL 数据库日期类型的 4 个提示 http://www.linuxidc.com/Linux/2013-08/89472.htm
PostgreSQL删除表中重复数据行 http://www.linuxidc.com/Linux/2013-07/87780.htm
PostgreSQL缓存详述 http://www.linuxidc.com/Linux/2013-07/87778.htm
Windows平台编译 PostgreSQL http://www.linuxidc.com/Linux/2013-05/85114.htm
Ubuntu下LAPP(Linux+Apache+PostgreSQL+PHP)环境的配置与安装 http://www.linuxidc.com/Linux/2013-04/83564.htm
然后执行gmake
rm -rf ./testtablespace
mkdir ./testtablespace
gmake[2]: Leaving directory `/postgresql-8.4.2/src/test/regress’
gmake[1]: Leaving directory `/postgresql-8.4.2/src’
gmake -C config all
gmake[1]: Entering directory `/postgresql-8.4.2/config’
gmake[1]: Nothing to be done for `all’.
gmake[1]: Leaving directory `/postgresql-8.4.2/config’
All of PostgreSQL successfully made. Ready to install.
看到ready to instal 基本就成功了
等编译完成后,没有错误,再执行 gmake install
详细说明,可以看
(5)编译Bandwidthd
在编译Bandwithd前,请检查 /usr/local/pgsql/ 下是否已经有 bandwidthd需要的库和头文件了。
进入bandwidthd目录
./configure
执行configure后,看看是否有错误。注意,如果Postgresq编译有问题化,Bandwidthd编译出来的程序是不会支持Postgresql的。
make
可以通过程序文件大小判断
如果不带Postgresq支持的是11xxxx 的大小。
这2个地方必须是yes,才能编译出支持Postgrsql的程序.
make install后,程序的配置文件在 /usr/local/bandwidthd/etc 目录
####################################################
# Bandwidthd.conf
#
# Commented out options are here to provide
# documentation and represent defaults
# Subnets to collect statistics on. Traffic that
# matches none of these subnets will be ignored.
# Syntax is either IP Subnet Mask or CIDR
#subnet 10.0.0.0 255.0.0.0
#subnet 192.168.0.0/16
#subnet 172.16.0.0/12
subnet 10.0.0.0 255.255.0.0
subnet 10.1.0.0 255.255.0.0
subnet 10.2.0.0 255.255.0.0
subnet 10.3.0.0 255.255.0.0
subnet 10.4.0.0 255.255.0.0
subnet 10.5.0.0 255.255.0.0
subnet 192.168.0.0/16
subnet 172.16.25.0/24
subnet 172.16.10.0/24
subnet 172.16.11.0/24
subnet 172.16.12.0/24
subnet 172.16.13.0/24
subnet 172.16.14.0/24
subnet 172.16.15.0/24
subnet 172.16.16.0/24
subnet 172.16.17.0/24
subnet 172.16.18.0/24
subnet 172.16.19.0/24
subnet 172.16.20.0/24
subnet 172.16.31.0/24
subnet 172.16.32.0/24
subnet 172.16.33.0/24
subnet 172.16.34.0/24
subnet 172.16.35.0/24
subnet 172.16.36.0/24
pgsql_connect_string “user = postgres dbname = bandwidthd host = 127.0.0.1”
sensor_id “sensor1.cn”
# Device to listen on
# Bandwidthd listens on the first device it detects
# by default. Run “bandwidthd -l” for a list of
# devices.
dev “eth1”
###################################################
# Options that don’t usually get changed
# An interval is 2.5 minutes, this is how many
# intervals to skip before doing a graphing run
#skip_intervals 150
# Graph cutoff is how many k must be transfered by an
# ip before we bother to graph it
graph_cutoff 1024
#Put interface in promiscuous mode to score to traffic
#that may not be routing through the host machine.
promiscuous true
#Log data to cdf file htdocs/log.cdf
output_cdf true
#Read back the cdf file on startup
recover_cdf false
#Libpcap format filter string used to control what bandwidthd see’s
#Please always include “ip” in the string to avoid strange problems
filter “ip”
#Draw Graphs – This default to true to graph the traffic bandwidthd is recording
#Usually set this to false if you only want cdf output or
#you are using the database output option. Bandwidthd will use very little
#ram and cpu if this is set to false.
graph false
#Set META REFRESH seconds (default 150, use 0 to disable).
meta_refresh 150
二、如果要能成功运行Bandwidthd,还需要创建数据库
在Bandwidthd目录下,有个schema.postgresql脚本,要首先将他导入数据库
su – postgres
psql
create database bandwidthd;
[postgres@bwd bandwidthd-2.0.1]$ psql bandwidthd postgres< schema.postgresql
CREATE TABLE
CREATE INDEX
CREATE INDEX
CREATE TABLE
CREATE INDEX
CREATE INDEX
CREATE TABLE
CREATE INDEX
CREATE TABLE
CREATE INDEX
NOTICE: CREATE TABLE will create implicit sequence “sensors_sensor_id_seq” for serial column “sensors.sensor_id”
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index “sensors_pkey” for table “sensors”
CREATE TABLE
[postgres@bwd bandwidthd-2.0.1]$
重启bandwidthd 后postgresql数据库,2分钟后,数据库里就有数据了。
更多CentOS相关信息见CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14