FreeBSD上搭建squid代理mysql认证服务器

首先我要感谢hj的帮助,不管是在我学习Linux上,还是FreeBSD上虽然更多的是java上 。
接着声明一下,本人的语文水平很不好,写的文档可能比较糟糕,但是看在我辛辛苦苦作了好几个通宵的份上希望有人在转载时注名出处 http://www.jnull.com/jive/thread.jsp?nav=false&forum=7&thread=943 和作者wjp,还有第一段感谢的人 。^_^谢谢 。

文档的开头先介绍一下我为什么用这些东西作为代理服务器的开发 。

一.我试用了squid,socks5,wingate,kingate,觉得squid适用像我们学校这种单位应用 。
它在性能和节省带宽,提高访问速度上很有优势 。
二.我用的操作系统是FreeBSD,虽然我是BSD的超级菜鸟,但是在浏览squid的FAQ时看到,squid可能在FreeBSD上运行是比较快的,加上hj的极力推荐,我相信FreeBSD不会让大家失望的 。
三.刚开始我用的是NSCA这种认证,这也是,中文文档比较多的一种认证方式,但是我觉得它的开发很困难,我是不懂怎么写一个htpasswd的,像改密码,什么的都比较,困难 。而且我的直觉上觉的mysql认证会比NSCA快,所以我选用了mysql,还有朋友用LDAP的,很遗憾因为我不会搭建LDAP服务器,就没有用它,感觉上LDAP的表现也会同样出色的 。

以上就是我选用这三个组合的原因,不知各位大侠同意否 。

操作系统和软件的安装,本人学FreeBSD没有一个星期,全靠hj的帮助,还有FreeBSD手册才搞定得,我装的是FreeBSD4.8从ftp.freeBSD.org上下载的mini版,大家可以参考FreeBSD的手册 http://people.freebsdchina.org/kinki 我现在会的就是能把FreeBSD安装完,设好ip上网,大家肯定比我厉害^_^ 。

现在的BSD上是没有squid和mysql的,我先安装squid 。我是用ports安装的(如果你不会和我一样菜的话,我建议你仔细读一下 http://www.jnull.com/jive/thread.jsp?forum=7&thread=183&tstart=45&trange=15 这篇文章,我相信你也会喜欢ports的): BSD# cd /usr/ports/www/squid
BSD# make install
BSD# make clean 如果你能上网的话那么squid就装完了 。我现在装的是squid2.5这个版本的,这个版本和2.4比在认证上有了很大的改变 。接着是mysql了 。
BSD# cd /usr/ports/databases/mysql323-server
BSD# make install
BSD# make clean 同样的easy,哈哈!我太喜欢ports了 。我装的是mysql3-23-58这个版本 。接下来去下载squid的认证模块 http://people.fsn.hu/~airween/mysql_auth/mysql_auth-0.5.tar.gz 我把它放在/tmp下(这儿是e文的文档http://people.fsn.hu/~airween/mysql_auth/ ) 。
BSD# tar -zxvf mysql_auth-0.5.tar.gz
BSD# cd mysql_auth-0.5
BSD# make
BSD# make install 当你make时可能会出错,问题出在Makefile这个文件上,那个mysql_auth的作者他libmysqlclIEnts.a这两个文件的位置和我的这两个文件的位置不同就会出错,我贴出我刚开始的错误 BSD# make
gcc -I/usr/local/include -L/usr/local/lib -c src/mysql_auth.c
gcc -I/usr/local/include -L/usr/local/lib -c src/confparser.c
gcc -I/usr/local/include -L/usr/local/lib -c src/mypasswd.c
gcc -o mysql_auth src/mysql_auth.c src/confparser.c -lmysqlclient -I/usr/local/include -L/usr/local/lib
/usr/libexec/elf/ld: cannot find -lmysqlclient
*** Error code 1

Stop in /tmp/10-13/mysql_auth-0.5. 以上就是那两个文件不对的错误,我是重新修改了Makefile的以下是Makefile的内容 CC = gcc
CFLAGS = -I/usr/local/include -L/usr/local/lib
LDFLAGS = -lmysqlclient
SRC = https://www.rkxy.com.cn/dnjc/src
OBJS = $(SRC)/mysql_auth.o $(SRC)/confparser.o $(SRC)/mypasswd.o
INSTALL = /usr/bin/install
CONF = $(SRC)/mysql_auth.conf
all : mysql_auth mypasswd
clean:
rm -rf src/*.o *.o mysql_auth mypasswd

mysql_auth: $(OBJS)
$(CC) -o $@ $(SRC)/mysql_auth.c $(SRC)/confparser.c $(LDFLAGS) $(CFLAGS)

mypasswd: $(OBJS)
$(CC) -o $@ $(SRC)/mypasswd.c $(SRC)/confparser.c $(LDFLAGS) $(CFLAGS)

推荐阅读