FreeBSD下安eaccelerator

# cd /usr/ports/www/eaccelerator
#make install clean

安装完会提示在/usr/local/etc/php.ini文件末尾添加一行zend_extension="/usr/local/lib/php/20090626/eaccelerator.so",并创建临时目录/tmp/eaccelerator.

#echo 'zend_extension="/usr/local/lib/php/20090626/eaccelerator.so"' >> /usr/local/etc/php.ini
#mkdir /tmp/eaccelerator
#chown www /tmp/ eaccelerator
#chmod 0700 /tmp/eaccelerator

FreeBSD下Ports文件目录介绍

当提到 Ports Collection 时, 第一个要说明的就是何谓 “skeleton”。 简单地说, port skeleton 是让一个程序在 FreeBSD 上简洁地编译并安装的所需文件的最小组合。 每个 port skeleton 包含:

  • 一个 Makefile。 Makefile 包括好几个部分, 指出应用程序是如何编译以及将被安装在系统的哪些地方。
  • 一个 distinfo 文件。这个文件包括这些信息: 这些文件用来对下载后的文件校验和进行检查 (使用 sha256(1)), 来确保在下载过程中文件没有被破坏。
  • 一个 files 目录。 这个目录包括在 FreeBSD 系统上编译和安装程序需要用到的补丁。 这些补丁基本上都是些小文件, 指出特定文件作了哪些修正。 它们都是纯文本的的格式,基本上是这样的 “删除第 10 行” 或 “将第 26 行改为这样 ...”, 补丁文件也被称作 “diffs”, 他们由 diff(1)程序生成。

    这个目录也包含了在编译 port 时要用到的其它文件。

  • 一个 pkg-descr 文件。 这是一个提供更多细节,有软件的多行描述。
  • 一个 pkg-plist 文件。 这是即将被安装的所有文件的列表。它告诉 ports 系统在卸载时需要删除哪些文件。

一些ports还有些其它的文件, 例如 pkg-message。 ports 系统在一些特殊情况下会用到这些文件。 如果您想知道这些文件更多的细节以及 ports 的概要, 请参阅 FreeBSD Porter's Handbook

port里面包含着如何编译源代码的指令, 但不包含真正的源代码。 您可以在网上或 CD-ROM 上获得源代码。 源代码可能被开发者发布成任何格式。 一般来说应该是一个被 tar 和 gzip 过的文件, 或者是被一些其他的工具压缩或未压缩的文件。 ports中这个程序源代码标示文件叫 “distfile”, 安装 FreeBSD port的方法还不止这两种。

摘自:http://docs.haohtml.com/FreeBSD-Manual/ports-using.html

 

在FreeBSD上架VPN笔记

摘自:http://wiki.freebsdchina.org/howto/m/mpd5_setup

在 Freebsd 上用 mpd5 构建 PPTP VPN

安装 MPD5

cd /usr/ports/net/mpd5
make install clean

在 /etc/rc.conf 中启用 mpd5 添加如下行

mpd_enable="YES"

配置 mpd pptp VPN

复制默认的 mpd.conf 配置文件

cd /usr/local/etc/mpd5/
cp mpd.conf.sample mpd.conf

修改 mpd.conf 文件中的 startup: default: pptp_server: 三块,其它的不要理睬,放在里面不要删除,因为可以通过 default: 标签来调用需要执行的模块,所以不受影响。 Continue reading

ipfw:getsockopt(IP_FW_GET):Protocol not available

本想通过防火墙限制一下,谁知输入出现下面的错误:

[root@Aaronwang ~]# ipfw show
ipfw: getsockopt(IP_FW_GET): Protocol not available

看来是我在编译内核的时候没有把IPFW编译进来,如果确信编译过了,那一定是没有reboot的问题了,我就是当时忘记reboot,才出现这个问题的.看来又要再编译一次内核了!上次内核编译是00:59:01,这次又是在半夜,看来我还真是个夜猫子!呵呵!

[root@Aaronwang ~]# uname -a
FreeBSD Aaronwang 7.2-RELEASE-p6 FreeBSD 7.2-RELEASE-p6 #5: Thu Jan 14 00:59:01 CST 2010 root@Aaron wang:/usr/obj/usr/src/sys/Aaron.wang i386

编译ipfw要在/root/Aaron.wang里面加入下列内容: Continue reading

FreeBSD IPFW 防火墙的安装和设置

IPFW本身是FreeBSD内置的,要使用IPFW设置防火墙需要重新编译FreeBSD内核。注意,因为在编译后IPFW默认拒绝所有网络服务,包括对系统本身都会拒绝,所以在配置过程中一定要小心谨慎。

内核编译方法请参考:http://docs.haohtml.com/FreeBSD-Manual/kernelconfig-building.html

Step 1,对IPFW的一些基本参数进行配置:
#cd /sys/i386/conf
//如果没有这个目录,说明你的系统没有安装Ports服务,要记得装上。
#cp GENERIC ./kernel_IPFW

用 vi 打开kernel_IPFW文件,在文件未尾加入以下个行:

options IPFIREWALL //将包过滤部分代码编译进内核。

options IPFIREWALL_VERBOSE
//启用通过Syslogd记录日志;如果没有指定这个选项,即使你在过滤规则中指定了记录包,也不会真的记录它们。
options IPFIREWALL_VERBOSE_LIMIT=10
//限制通过Syslogd记录的每项包规则的记录条数。如果你受到了大量的攻击,想记录防火墙的活动,但又不想由于Syslog洪水一般的记录将你淹没,那么这个选项将会很有用。当使用了这条规则,当规则链中的某一项达到限制数值时,它所对应的日志将不再记录下来。
options IPFIREWALL_DEFAULT_TO_ACCEPT
//注意,关键地方了,本句把默认的规则动作从“deny”改成“allow”了,作用是在默认状态下IPFW将会接受任何的数据。

输入完成后,保存,并退出。

Step 2,编译系统内核:

#/usr/sbin/config kernel_IPFW
#cd ../compile/kernel_IPFW

//注意,FreeBSD 4.X版本是../../compile/kernel_IPFW,而FreeBSD 5.X版本却是../compile/kernel_IPFW。
#make
#make install //开始编译内核。

Step 3,编辑/etc/rc.conf
加入如下参数:

firewall_enable=“YES“
//激活Firewall防火墙
firewall_script=“/etc/ipfw.conf“
//Firewall防火墙的默认脚本
firewall_type=“open“
//Firewall 自定义脚本
firewall_quiet=“NO“
//启用脚本时是否显示规则信息;假如你不再修改防火墙脚本,那么可以把这里设成“YES“。
firewall_logging_enable=“YES“

编辑/etc/syslog.conf 文件,在文件最后加入:

!ipfw
*.* /var/log/ipfw.log
//这行的作用是将IPFW的日志写到/var/log/ipfw.log/文件里。你可以为日志文件指定其它路径。

最后,重启服务器。

重启之后,你就可以用SSH登录你的服务器了,之后你可以在/etc/ipfw.conf中添加过滤规则来防止入侵了。

#options IPFIREWALL_DEFAULT_TO_ACCEPT(编译内核)

这样的设置,防火墙会处于全封闭状态,需要自定义打开端口来实现功能。

# ee /etc/ipfw.conf
增加下面内容:

#!/bin/sh

# DNS服务器与客户端的通讯端口都是udp的53号端口,因此我们只有开放自己与DNS服务器之间的53号端口进行通信即可,如果你知道自己的DNS服务器的ip地址可以把下面的any改成你的DNS地址。

# DNS
ipfw add allow udp from me to any 53 out
ipfw add allow udp from any 53 to me in

# DHCP的服务器与客户端的通讯端口是udp 67、68端口,其工作原理这里不多做介绍,如果你知道自己的DHCP服务器地址可以把其中的any改成你的DHCP服务器地址,前面两条是正常情况下的规则,如果你的DHCP服务器不是很可靠,你可以加上下面注释掉的两条,当然一般情况下这两条可以不加。

# DHCP
ipfw add allow udp from me 68 to any 67 out
ipfw add allow udp from any 67 to me 68 in
# ipfw add allow udp from any 68 to 255.255.255.255 67 out
# ipfw add allow udp from any 67 to 255.255.255.255 68 in

# 在创建与ICMP有关的规则时,只能指定ICMP数据包的type而不能指定它的code。
# 允许接受一些ICMP types (不支持codes)

# 允许双向的path-mtu
ipfw add allow icmp from any to any icmptypes 3
ipfw add allow icmp from any to any icmptypes 4

我需要考虑是否需要ping我的网络之外的主机或运行traceroute命令,由于二者都需要,并希望收到相应的应答,但我并不希望互联网上的所有用户都可以对我运行ping 或traceroute命令,因此,我需要添加下面的规则:

# 允许我对外部的主机运行ping命令,并得到相应的应答
ipfw add allow icmp from me to any icmptypes 8 out
ipfw add allow icmp from any to me icmptypes 0 in

# 允许我运行traceroute命令
ipfw add allow icmp from any to any icmptypes 11 in

# ICMP type 8是一个查询请求,ICMP type 0是对查询请求的应答。由于我只允许反复地发出请求并接受应答,从而我可以ping别人而别人不能ping我。

如果想让别人也能ping自己的话,则需要把上面的规则反一下
ipfw add allow icmp from any to me icmptype 8 in
ipfw add allow icmp from me to nay icmptype 0 out

# 在运行traceroute命令时,就会向外发出UDP数据包。如果希望能够获得所有应答信息,我还必须允许系统接受所有的CMP type 11数据包。

# TCP类型服务
# 只允许向外发送信息包
ipfw add check-state
ipfw add deny tcp from any to any in established
ipfw add allow tcp from any to any out setup keep-state

 

# 允许ssh等tcp端口的服务
ipfw add allow tcp from any to me 21,22,80,3306 in
ipfw add allow tcp from me 22 to any out
# 由于web服务通过80端口进来,但是出去的数据是随机的,所以还得再加一条:
ipfw add allow tcp from me to any out

options IPFIREWALL_DEFAULT_TO_ACCEPT(编译内核)

这样的设置 ,防火墙处于全开放状态,需要自定义关闭端口来实现功能。

编辑/etc/ipfw.conf配置文件

封闭mysql数据库端口3306

ipfw add deny tcp from any to me 3360 in

######### TCP ##########
ipfw add 00001 deny log ip from any to any ipopt rr
ipfw add 00002 deny log ip from any to any ipopt ts
ipfw add 00003 deny log ip from any to any ipopt ssrr
ipfw add 00004 deny log ip from any to any ipopt lsrr
ipfw add 00005 deny tcp from any to any in tcpflags syn,fin
# 这5行是过滤各种扫描包

 

ipfw add 10001 allow tcp from any to 10.10.10.1 80 in # 向整个Internet开放http服务。
ipfw add 10002 allow tcp from any to 10.10.10.1 21 in
# 向整个Internet开放ftp服务。
ipfw add 10000 allow tcp from 1.2.3.4 to 10.10.10.1 22 in
# 向Internet的xx.xx.xx.xx这个IP开放SSH服务。也就是只信任这个IP的SSH登陆。
# 如果你登陆服务器的IP不固定,那么就要设为:

add 10000 allow tcp from any to 10.10.10.1 22 in

 

add 19997 check-state
add 19998 allow tcp from any to any out keep-state setup
add 19999 allow tcp from any to any out

#这三个组合起来是允许内部网络访问出去,如果想服务器自己不和Internet进行tcp连接出去,可以把19997和19998去掉。(不影响Internet对服务器的访问)

 

########## UDP ##########
add 20001 allow udp from any 53 to 10.10.10.1

# 允许其他DNS服务器的信息进入该服务器,因为自己要进行DNS解析嘛~
add 29999 allow udp from any to any out

# 允许自己的UDP包往外发送。

########## ICMP #########
add 30000 allow icmp from any to any icmptypes 3
add 30001 allow icmp from any to any icmptypes 4
add 30002 allow icmp from any to any icmptypes 8 out
add 30003 allow icmp from any to any icmptypes 0 in
add 30004 allow icmp from any to any icmptypes 11 in
#允许自己ping别人的服务器。也允许内部网络用router命令进行路由跟踪

FreeBSD下IPFW防火墙的开启与关闭:http://blog.haohtml.com/archives/5549

freebsd+php+memcache、memcached安装和使用

来源:http://www.lifecrunch.biz/archives/55

Memcache 介绍

memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图 像、视频、文件以及数据库检索的结果等。Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。起初作 者编写它可能是为了提高动态网页应用,为了减轻数据库检索的压力,来做的这个缓存系统。它的缓存是一种分布式的,也就是可以允许不同主机上的多个用户同时 访问这个缓存系统, 这种方法不仅解决了共享内存只能是单机的弊端,同时也解决了数据库检索的压力,最大的优点是提高了访问获取数据的速度!基于memcache作者对分布式 cache的理解和解决方案。 memcache完全可以用到其他地方 比如分布式数据库, 分布式计算等领域。

Memcache官方网站:http://www.danga.com/memcached

Memcached服务器端安装:

freebsd下服务器端的memcached使用ports安装非常简单, Continue reading

freebsd系统top命令中的THR表示的意思

mysql 正常情况下THR是17-30之间,有时侯会突然升到100以上

PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
852 mysql 17 102 0 519M 293M ucond 1 93:42 12.06% mysqld
1587 www 1 4 0 65256K 15224K accept 2 0:04 0.05% php-cgi

其中thr表示“该进程所拥有的线程数。”

对于Top命令介绍请参考:http://blog.haohtml.com/archives/4681

[教程]FreeBSD下安装proftpd带匿名登陆和使用MySQL用户验证的Quota磁盘限额安装教程

配置文件是根据原来版本的基础上修改的,所以有些指令可能默认配置文件里没有了,但并不影响使用。

一.安装MySQL

安装教程请参考:http://blog.haohtml.com/archives/435

二.安装proftpd

#cd /usr/ports/ftp/proftpd-mysql
#make install clean

安装的时候会要求选择proftpd要安装的模块,选择好mysql和quota,其他的根据情况选择.这里系统默认安装的是proftpd-1.3.3d.tar.bz2.

配置系统自启动proftpd服务,用vi编辑/etc/rc.conf配置文件,在末尾加入一行:

proftpd_enable=”YES” Continue reading

FreeBSD软件安装卸载工具--Ports和Packages详解!

摘抄并简体化此文,与初学同仁共享。

==================================

FNP:FAQ - Ports and Packages v 1.5
2004.08.20 Table of Contents

1、如何只抓取 tarball?
2、如何仅做到解开 tarball的步骤?
3、如何仅做到解开 tarball 并补上官方提供的 patch?
4、如何安装一个新的 port?
5、如何安装一个新的 port,并将打包(package)起来?
6、如何打包一个 port,并将其所有相依的 ports 也打包起来?
7、如何对一个已经安装的 port 打包?
8、如何清理 ports 编辑期间所产生的暂存资料?
9、如何清理 ports 编辑期间所产生的暂存资料,以及其相对应的 tarball?
10、如何在安装 ports 前查询所需依赖/相关的套件?
11、如何移除已安装的 ports?
12、如何一并移除所相依的 ports?
13、如何重新安装已安装过的 ports?
14、如何以关键字搜寻 ports?
15、如何升级已安装的 ports?
16、如何查询目前系统安装了哪些套件?
17、如何查询目前系统有没有安装这个关键字的套件?
18、如何查询某个档案是属於哪些套件?
19、如何查询某个套件安装了哪些档案?
20、如何安装旧版的 ports?
21、如何更新 ports Mk?
22、如何解决安装 ports 时出现 sed -i 的错误?
23、如何列出所有可以升级的 ports?
24、如何得知 ports system 对某个 ports 所提供的编译叁数?
25、如何手动加入编译 ports 的叁数?
26、如何指定 ports 的安装路径?  Continue reading

FreeBSD下安装mysql支持GBK字符集

在FreeBSD下安装mysql支持GBK字符集:

#cd/usr/ports/databases/mysql51-server
# make WITH_CHARSET=gbk WITH_XCHARSET=all WITH_PROC_SCOPE_PTH=yes BUILD_OPTIMIZED=yes BUILD_STATIC=yes SKIP_DNS_CHECK=yes WITHOUT_INNODB=yes install clean
# cp /usr/local/share/mysql/my-small.cnf /etc/my.cnf
mysqld中加入bind_address=127.0.0.1
#rehash
#mysql_install_db
#chown –R mysql:mysql /var/db/mysql
#/usr/local/etc/rc.d/mysql-server forcestart
#/usr/local/bin/mysqladmin -u root password 'new-password'

有的教程说还需要同时指定"WITH_COLLATION=gbk_chinese_ci"这一项,我没有加上,不知道以后会不会有问题出现的.

Mysql 支持的字符集简介

mysql 服务器可以支持多种字符集(可以用 show character set 命令查看所有 mysql 支持的字符集),在同一台服务器、同一个数据库、甚至同一个表的不同字段都可以指定使用不同的字符集,相比 oracle 等其他数据库管理系统,在同一个数据库只能使用相同的字符集,mysql 明显存在更大的灵活性。
mysql 的字符集包括字符集( CHARACTER )和校对规则( COLLATION )两个概念。字符集是用来定义 mysql 存储字符串的方式,校对规则则是定义了比较字符串的方式。字符集和校对规则是一对多的关系 , MySQL 支持 30 多种字符集的 70 多种校对规则。

每个字符集至少对应一个校对规则。可以用 SHOW COLLATION LIKE 'utf8%'; 命令查看 相关字符集的校对规则。

来源:http://blogold.chinaunix.net/u/18630/showart_1148914.html