跟着ArthurXF学FreeBSD40——配置IPFW防火墙
2008/01/07 19:22 ArthurXF
FreeBSD操作系统本身带有二种内置的IP信息包检查机制:ipfw和ipfilter。在创建决定允许哪些信息包进入系统、哪些信息包会被拒之系统门外的规则集方面,二种机制各有自己独特的语法。而在这里我们将使用ipfw配置FreeBSD系统的防火墙。
IPFW本身是FreeBSD内置的,要使用IPFW设置防火墙需要重新编译FreeBSD内核。注意,因为在编译后IPFW默认拒绝所有网络服务,包括对系统本身都会拒绝,所以在配置过程中一定要小心谨慎。
1.对IPFW的一些基本参数进行配置:
2.编译系统内核:
3.加入系统启动项
重启之后,你就可以用SSH登录你的服务器了,之后你可以在/etc/ipfw.conf中添加过滤规则来防止入侵了。
4.加入规则
下面的规则只是一个例子。
5.常用命令
6.ipfw生效
此文章有ArthurXF倾情奉献,谢谢支持!
现在ArthurXF本人正在搞PHP等技术培训,如果想学习的人可以跟我联系。另外培训的招生简章在这个网址,想了解的可以去看看。加我QQ:29011218交流也可。
PHP培训招生简章
IPFW本身是FreeBSD内置的,要使用IPFW设置防火墙需要重新编译FreeBSD内核。注意,因为在编译后IPFW默认拒绝所有网络服务,包括对系统本身都会拒绝,所以在配置过程中一定要小心谨慎。
1.对IPFW的一些基本参数进行配置:
引用
#cd /sys/i386/conf
//如果没有这个目录,说明你的系统没有安装Ports服务,要记得装上。
#cp GENERIC ./ArthurXF_IPFW
用 vi 打开ArthurXF_IPFW文件,在文件未尾加入以下个行
options IPFIREWALL //通知操作系统的内核检查每个IP数据包,将它们与规则集进行比较
options IPFIREWALL_FORWARD
options IPDIVERT //启用由ipfw divert使用的转向IP套接字。这一选项需要与natd联合使用。
options IPFIREWALL_VERBOSE //启用通过Syslogd记录日志;如果没有指定这个选项,即使你在过滤规则中指定了记录包,也不会真的记录它们。
options IPFIREWALL_VERBOSE_LIMIT=10 //限制通过Syslogd记录的每项包规则的记录条数。如果你受到了大量的攻击,想记录防火墙的活动,但又不想由于Syslog洪水一般的记录将你淹没,那么这个选项将会很有用。当使用了这条规则,当规则链中的某一项达到限制数值时,它所对应的日志将不再记录下来。
options IPSTEALTH //启动支持秘密转发的代码,这一选项在使防火墙不被traceroute和类似工具发现时很有用。
options IPFIREWALL_DEFAULT_TO_ACCEPT //注意,关键地方了,本句把默认的规则动作从“deny”改成“allow”了,作用是在默认状态下IPFW将会接受任何的数据。
options ACCEPT_FILTER_DATA
options ACCEPT_FILTER_HTTP //接受过滤器中的静态连接
options ICMP_BANDLIM //ICMP_BANDLIM根据带宽限制产生icmp错误。一般情况下我们需要这个选项,它有助于你的系统免受D.O.S.攻击。
另外提供一些优化参数,可以不加的,仅供参考
options PQ_HUGECACHE //为1024k二级缓存的CPU提供支持
options PQ_LARGECACHE //为512k二级缓存的CPU提供支持
options PQ_MEDIUMCACHE //为256k二级缓存的CPU提供支持
options PQ_SMALLCACHE //为128k二级缓存的CPU提供支持
options CPU_ATHLON_SSE_HACK
options CPU_ENABLE_SSE //为Athlon系列CPU提供SSE支持
options CPU_SUSP_HLT //打开CPU空闲节能。
options CPU_UPGRADE_HW_CACHE
options CPU_WT_ALLOC
options NO_MEMORY_HOLE
上面有些参数,不是每个系统都会通过编译的,如果哪条出错了,就把哪条删除即可。
输入完成后,保存,并退出。
//如果没有这个目录,说明你的系统没有安装Ports服务,要记得装上。
#cp GENERIC ./ArthurXF_IPFW
用 vi 打开ArthurXF_IPFW文件,在文件未尾加入以下个行
options IPFIREWALL //通知操作系统的内核检查每个IP数据包,将它们与规则集进行比较
options IPFIREWALL_FORWARD
options IPDIVERT //启用由ipfw divert使用的转向IP套接字。这一选项需要与natd联合使用。
options IPFIREWALL_VERBOSE //启用通过Syslogd记录日志;如果没有指定这个选项,即使你在过滤规则中指定了记录包,也不会真的记录它们。
options IPFIREWALL_VERBOSE_LIMIT=10 //限制通过Syslogd记录的每项包规则的记录条数。如果你受到了大量的攻击,想记录防火墙的活动,但又不想由于Syslog洪水一般的记录将你淹没,那么这个选项将会很有用。当使用了这条规则,当规则链中的某一项达到限制数值时,它所对应的日志将不再记录下来。
options IPSTEALTH //启动支持秘密转发的代码,这一选项在使防火墙不被traceroute和类似工具发现时很有用。
options IPFIREWALL_DEFAULT_TO_ACCEPT //注意,关键地方了,本句把默认的规则动作从“deny”改成“allow”了,作用是在默认状态下IPFW将会接受任何的数据。
options ACCEPT_FILTER_DATA
options ACCEPT_FILTER_HTTP //接受过滤器中的静态连接
options ICMP_BANDLIM //ICMP_BANDLIM根据带宽限制产生icmp错误。一般情况下我们需要这个选项,它有助于你的系统免受D.O.S.攻击。
另外提供一些优化参数,可以不加的,仅供参考
options PQ_HUGECACHE //为1024k二级缓存的CPU提供支持
options PQ_LARGECACHE //为512k二级缓存的CPU提供支持
options PQ_MEDIUMCACHE //为256k二级缓存的CPU提供支持
options PQ_SMALLCACHE //为128k二级缓存的CPU提供支持
options CPU_ATHLON_SSE_HACK
options CPU_ENABLE_SSE //为Athlon系列CPU提供SSE支持
options CPU_SUSP_HLT //打开CPU空闲节能。
options CPU_UPGRADE_HW_CACHE
options CPU_WT_ALLOC
options NO_MEMORY_HOLE
上面有些参数,不是每个系统都会通过编译的,如果哪条出错了,就把哪条删除即可。
输入完成后,保存,并退出。
2.编译系统内核:
引用
#cd /usr/src
#make kernel KERNCONF=ArthurXF_IPFW
//开始编译内核。
#make kernel KERNCONF=ArthurXF_IPFW
//开始编译内核。
3.加入系统启动项
引用
#vi /etc/rc.conf
加入如下参数:
firewall_enable="YES"
//激活Firewall防火墙
firewall_script="/etc/rc.firewall"
//Firewall防火墙的默认脚本
firewall_type="/etc/ipfw.conf"
//Firewall 自定义脚本
firewall_quiet="NO"
//启用脚本时是否显示规则信息;假如你不再修改防火墙脚本,那么可以把这里设成“YES“。
firewall_logging_enable="YES"
#vi /etc/syslog.conf 文件,在文件最后加入:
!ipfw
*.* /var/log/ipfw.log
//这行的作用是将IPFW的日志写到/var/log/ipfw.log/文件里。你可以为日志文件指定其它路径。
最后,重启服务器。
加入如下参数:
firewall_enable="YES"
//激活Firewall防火墙
firewall_script="/etc/rc.firewall"
//Firewall防火墙的默认脚本
firewall_type="/etc/ipfw.conf"
//Firewall 自定义脚本
firewall_quiet="NO"
//启用脚本时是否显示规则信息;假如你不再修改防火墙脚本,那么可以把这里设成“YES“。
firewall_logging_enable="YES"
#vi /etc/syslog.conf 文件,在文件最后加入:
!ipfw
*.* /var/log/ipfw.log
//这行的作用是将IPFW的日志写到/var/log/ipfw.log/文件里。你可以为日志文件指定其它路径。
最后,重启服务器。
重启之后,你就可以用SSH登录你的服务器了,之后你可以在/etc/ipfw.conf中添加过滤规则来防止入侵了。
4.加入规则
下面的规则只是一个例子。
引用
vi /etc/ipfw.conf
将下面的内容复制进去
#!/bin/sh
fwcmd="/sbin/ipfw"
#${fwcmd} -f flush
######### TCP ##########
${fwcmd} add 001 deny tcp from any to any in tcpflags syn,fin
######### DNS ##########
${fwcmd} add 100 pass all from any to any via lo0
${fwcmd} add 110 deny all from any to 127.0.0.0/8
${fwcmd} add 120 deny ip from 127.0.0.0/8 to any
${fwcmd} add 130 pass all from me to me
${fwcmd} add 1000 allow all from me to 202.96.209.5
${fwcmd} add 1000 allow all from me to 202.96.209.133
${fwcmd} add 1000 allow all from 202.96.209.5 to me
${fwcmd} add 1000 allow all from 202.96.209.133 to me
######### www ssh ftp mail ##########
${fwcmd} add 500 check-state
${fwcmd} add 10000 pass tcp from any to me 80 in setup keep-state
${fwcmd} add 10000 pass tcp from any to me 443 in setup keep-state
${fwcmd} add 10002 allow tcp from any to me 22 in setup keep-state
${fwcmd} add 10003 pass all from any to me 21 in setup keep-state
${fwcmd} add 10004 pass all from me to any 21 out setup keep-state
${fwcmd} add 10005 pass tcp from any to me 25 in setup keep-state
${fwcmd} add 10006 pass tcp from me to any 25 out setup keep-state
################################
${fwcmd} add 20000 allow all from any to any 53 setup keep-state
${fwcmd} add 20001 allow tcp from me to any out setup keep-state
${fwcmd} add 20002 allow all from me to any out setup keep-state
${fwcmd} add 20003 allow all from any to me in setup keep-state
######### ICMP #################
${fwcmd} add 30000 allow icmp from any to any icmptypes 3
${fwcmd} add 30001 allow icmp from any to any icmptypes 4
${fwcmd} add 30002 allow icmp from any to any icmptypes 8 out
${fwcmd} add 30003 allow icmp from any to any icmptypes 0 in
${fwcmd} add 30004 allow icmp from any to any icmptypes 11 in
${fwcmd} add 50000 deny all from any to any
中间那些80,443等都是服务的端口号,可以根据需要修改的。
将下面的内容复制进去
#!/bin/sh
fwcmd="/sbin/ipfw"
#${fwcmd} -f flush
######### TCP ##########
${fwcmd} add 001 deny tcp from any to any in tcpflags syn,fin
######### DNS ##########
${fwcmd} add 100 pass all from any to any via lo0
${fwcmd} add 110 deny all from any to 127.0.0.0/8
${fwcmd} add 120 deny ip from 127.0.0.0/8 to any
${fwcmd} add 130 pass all from me to me
${fwcmd} add 1000 allow all from me to 202.96.209.5
${fwcmd} add 1000 allow all from me to 202.96.209.133
${fwcmd} add 1000 allow all from 202.96.209.5 to me
${fwcmd} add 1000 allow all from 202.96.209.133 to me
######### www ssh ftp mail ##########
${fwcmd} add 500 check-state
${fwcmd} add 10000 pass tcp from any to me 80 in setup keep-state
${fwcmd} add 10000 pass tcp from any to me 443 in setup keep-state
${fwcmd} add 10002 allow tcp from any to me 22 in setup keep-state
${fwcmd} add 10003 pass all from any to me 21 in setup keep-state
${fwcmd} add 10004 pass all from me to any 21 out setup keep-state
${fwcmd} add 10005 pass tcp from any to me 25 in setup keep-state
${fwcmd} add 10006 pass tcp from me to any 25 out setup keep-state
################################
${fwcmd} add 20000 allow all from any to any 53 setup keep-state
${fwcmd} add 20001 allow tcp from me to any out setup keep-state
${fwcmd} add 20002 allow all from me to any out setup keep-state
${fwcmd} add 20003 allow all from any to me in setup keep-state
######### ICMP #################
${fwcmd} add 30000 allow icmp from any to any icmptypes 3
${fwcmd} add 30001 allow icmp from any to any icmptypes 4
${fwcmd} add 30002 allow icmp from any to any icmptypes 8 out
${fwcmd} add 30003 allow icmp from any to any icmptypes 0 in
${fwcmd} add 30004 allow icmp from any to any icmptypes 11 in
${fwcmd} add 50000 deny all from any to any
中间那些80,443等都是服务的端口号,可以根据需要修改的。
5.常用命令
引用
加载规则 sh /etc/ipfw.conf
显示规则 ipfw show
显示规则 ipfw show
6.ipfw生效
引用
要让ipfw自启动生效,就需要修改一下。
#vi /etc/rc.conf
修改为
firewall_script="/etc/ipfw.conf"
firewall_quiet="YES" //安静模式
重起就好了。
#vi /etc/rc.conf
修改为
firewall_script="/etc/ipfw.conf"
firewall_quiet="YES" //安静模式
重起就好了。
此文章有ArthurXF倾情奉献,谢谢支持!
现在ArthurXF本人正在搞PHP等技术培训,如果想学习的人可以跟我联系。另外培训的招生简章在这个网址,想了解的可以去看看。加我QQ:29011218交流也可。
PHP培训招生简章
跟着ArthurXF学FreeBSD39——用ports配置extmail邮件服务
2008/01/07 17:24 ArthurXF
以下部分内容摘自http://www.extmail.org,这里我重新整理了安装和配置方法,历尽千辛万苦,希望能够给大家带来更多方便,此文由ArthurXF倾情奉献,谢谢支持!
ExtMail Solution 是一个基于优秀开源软件的电子邮件系统解决方案,核心部件包括了Postfix, Amavisd-new, ClamAV, ExtMail 和ExtMan, Courier系列软件。是一个功能相对比较齐全的免费电子邮件系统。以下是其主要的特性列表:
支持SMTP/POP3/IMAP/HTTP协议
支持SMTPs/POP3s/IMAPs/HTTPs协议
支持SMTP认证及ESMTP
可支持大容量邮箱(大于1GB)
高速Web界面访问邮箱
完整的Web管理后台
在线服务端病毒过滤
内建内容过滤
SMTP行为识别垃圾邮件
支持大量反垃圾邮件技术
图形化邮件日志分析
支持别名/多域/域管理员等
支持网络磁盘/POP3邮件
支持读/写HTML格式邮件
支持定制模板及多语言
支持邮件列表管理,基于WEB端
整个邮件解决方案由如下软件组成:
功能模块 内容 备注
操作系统(OS) FreeBSD 6.x FreeBSD是一个优秀的unix操作系统,基于宽松的BSD协议
邮件传输代理(MTA) Postfix 2.3 使用2.3,ports中的postfix已经是最新的2.3版
数据库/目录服务 OpenLDAP 2.3 可选MySQL或其他LDAP ,本文以MySQL为蓝本
邮件投递代理(MDA) maildrop 2.0.x 支持过滤和强大功能
Web帐户管理后台 ExtMan-0.2beta3 支持无限域名、无限用户
POP3 服务器 Courier-IMAP 支持pop3/pop3s/imap/imaps,功能强大,可根据需要选择
WebMail 系统 ExtMail-1.0beta3 支持多语言、全部模板化,功能基本齐全
防病毒软件(Anti-Virus) ClamAV 0.88 最热门的开源杀毒软件
SMTP阶段反垃圾邮件工具 Spam Locker 0.083 基于SMTP行为识别的Antispam软件,大量可选插件
内容过滤器 Amavisd-new 2.4.x Content-Filter软件,支持与clamav/sa的挂接
内容级别的反垃圾邮件工具 SpamAssassin 著名的SA,可以支持大量规则,但速度较慢
SMTP认证库 Cyrus SASL 2.1x 标准的SASL实现库,可以支持Courier authlib
其他数据认证库 Courier Authlib 0.58 authlib是maildrop, courier-imap等服务的关键部件
日志分析及显示 mailgraph_ext 在ExtMan中已经包含了
Web 服务器 Apache 2.2.x 最新版的apache服务器,默认支持ssl模块
maillist软件 Mailman2.1.x 功能强大的邮件列表软件,支持基于web的管理
1.安装前的准备
2.courier-imap POP3/IMAP安装配置
Courier-IMAP是一个提供POP3、IMAP服务的程序,能够很方便的配置使其支持加密协议POP3s、IMAPs。并良好的支持Maildir。
3.安装 Cyrus-SASL2
4.Postfix的安装和配置-MTA
MTA在邮件系统中处于非常重要的位置,他负责接收其他人给你发的信,并且负责把你的信转发到目的地。选择一个靠谱的MTA对建立邮件来说意义重大,因此我们使用Postfix!! :-)。另外MTA部分在邮件系统中的开发难度是最高的,起到的作用也是最大的,因此我们也常拿MTA的名字来称呼自己的邮件系统。
5.安装extman
ExtMan是一个基于Web的邮件帐号管理系统。可以通过他来管理邮件帐号、管理员帐号和域名等,默认的超级用户是 root@extmail.org,密码是extmail。ExtMan还集成了mailgraph,可以ExtMan内看到整个邮件系统的相关状态流量图。使用ExtMan来管理您的邮件系统将使工作变得更加轻松。
现在ArthurXF本人接受上海非凡进修学院邀请,开班授课,教学内容有PHP、CSS、FREEBSD网络等技术培训,如果想学习的人可以跟我联系。另外培训的招生简章在这个网址,想了解的可以去看看。加我QQ:29011218交流也可。
PHP培训招生简章
>>
ExtMail Solution 是一个基于优秀开源软件的电子邮件系统解决方案,核心部件包括了Postfix, Amavisd-new, ClamAV, ExtMail 和ExtMan, Courier系列软件。是一个功能相对比较齐全的免费电子邮件系统。以下是其主要的特性列表:
支持SMTP/POP3/IMAP/HTTP协议
支持SMTPs/POP3s/IMAPs/HTTPs协议
支持SMTP认证及ESMTP
可支持大容量邮箱(大于1GB)
高速Web界面访问邮箱
完整的Web管理后台
在线服务端病毒过滤
内建内容过滤
SMTP行为识别垃圾邮件
支持大量反垃圾邮件技术
图形化邮件日志分析
支持别名/多域/域管理员等
支持网络磁盘/POP3邮件
支持读/写HTML格式邮件
支持定制模板及多语言
支持邮件列表管理,基于WEB端
整个邮件解决方案由如下软件组成:
功能模块 内容 备注
操作系统(OS) FreeBSD 6.x FreeBSD是一个优秀的unix操作系统,基于宽松的BSD协议
邮件传输代理(MTA) Postfix 2.3 使用2.3,ports中的postfix已经是最新的2.3版
数据库/目录服务 OpenLDAP 2.3 可选MySQL或其他LDAP ,本文以MySQL为蓝本
邮件投递代理(MDA) maildrop 2.0.x 支持过滤和强大功能
Web帐户管理后台 ExtMan-0.2beta3 支持无限域名、无限用户
POP3 服务器 Courier-IMAP 支持pop3/pop3s/imap/imaps,功能强大,可根据需要选择
WebMail 系统 ExtMail-1.0beta3 支持多语言、全部模板化,功能基本齐全
防病毒软件(Anti-Virus) ClamAV 0.88 最热门的开源杀毒软件
SMTP阶段反垃圾邮件工具 Spam Locker 0.083 基于SMTP行为识别的Antispam软件,大量可选插件
内容过滤器 Amavisd-new 2.4.x Content-Filter软件,支持与clamav/sa的挂接
内容级别的反垃圾邮件工具 SpamAssassin 著名的SA,可以支持大量规则,但速度较慢
SMTP认证库 Cyrus SASL 2.1x 标准的SASL实现库,可以支持Courier authlib
其他数据认证库 Courier Authlib 0.58 authlib是maildrop, courier-imap等服务的关键部件
日志分析及显示 mailgraph_ext 在ExtMan中已经包含了
Web 服务器 Apache 2.2.x 最新版的apache服务器,默认支持ssl模块
maillist软件 Mailman2.1.x 功能强大的邮件列表软件,支持基于web的管理
1.安装前的准备
引用
vi /etc/rc.conf
确保有如下内容:
sshd_enable="YES"
named_enable="YES"
sendmail_enable="NONE"
vi /etc/resolv.conf
将第一条nameserver设置成为
nameserver 127.0.0.1
注意不是修改,是新增一条。
然后执行命令。
cd /etc/namedb/ && sh make-localhost
确保有如下内容:
sshd_enable="YES"
named_enable="YES"
sendmail_enable="NONE"
vi /etc/resolv.conf
将第一条nameserver设置成为
nameserver 127.0.0.1
注意不是修改,是新增一条。
然后执行命令。
cd /etc/namedb/ && sh make-localhost
2.courier-imap POP3/IMAP安装配置
Courier-IMAP是一个提供POP3、IMAP服务的程序,能够很方便的配置使其支持加密协议POP3s、IMAPs。并良好的支持Maildir。
引用
cd /usr/ports/mail/courier-imap/
make config
选择下面的选项
OPENSSL
TRASHQUOTA
AUTH_MYSQL
保存退出后执行
make install clean
Authlib的配置
vi /usr/local/etc/authlib/authdaemonrc
内容类似如下:
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=5
authdaemonvar=/var/run/authdaemond
subsystem=mail
DEBUG_LOGIN=0
DEFAULTOPTIONS="wbnodsn=1"
LOGGEROPTS=""
安装成功后,执行下面的命令,给authdaemond增加所有人的执行权限
chmod +x /var/run/authdaemond
vi /usr/local/etc/authlib/authmysqlrc
内容类似如下:
MYSQL_SERVER localhost
MYSQL_USERNAME postfix
MYSQL_PASSWORD postfix
MYSQL_DATABASE postfix
#MYSQL_PORT 0
MYSQL_OPT 0
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD 'vmail'
MYSQL_GID_FIELD 'vmail'
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD '/usr/local/virtual'
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir
配置支持POP3s
cp /usr/local/etc/courier-imap/pop3d.cnf.dist /usr/local/etc/courier-imap/pop3d.cnf
配置支持IMAPs
cp /usr/local/etc/courier-imap/imapd.cnf.dist /usr/local/etc/courier-imap/imapd.cnf
配置系统自动启动
echo 'courier_authdaemon="YES"' >> /etc/rc.conf
echo 'courier_imap_imapd_enable="YES"' >> /etc/rc.conf
echo 'courier_imap_pop3d_enable="YES"' >> /etc/rc.conf
make config
选择下面的选项
OPENSSL
TRASHQUOTA
AUTH_MYSQL
保存退出后执行
make install clean
Authlib的配置
vi /usr/local/etc/authlib/authdaemonrc
内容类似如下:
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=5
authdaemonvar=/var/run/authdaemond
subsystem=mail
DEBUG_LOGIN=0
DEFAULTOPTIONS="wbnodsn=1"
LOGGEROPTS=""
安装成功后,执行下面的命令,给authdaemond增加所有人的执行权限
chmod +x /var/run/authdaemond
vi /usr/local/etc/authlib/authmysqlrc
内容类似如下:
MYSQL_SERVER localhost
MYSQL_USERNAME postfix
MYSQL_PASSWORD postfix
MYSQL_DATABASE postfix
#MYSQL_PORT 0
MYSQL_OPT 0
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD 'vmail'
MYSQL_GID_FIELD 'vmail'
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD '/usr/local/virtual'
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir
配置支持POP3s
cp /usr/local/etc/courier-imap/pop3d.cnf.dist /usr/local/etc/courier-imap/pop3d.cnf
配置支持IMAPs
cp /usr/local/etc/courier-imap/imapd.cnf.dist /usr/local/etc/courier-imap/imapd.cnf
配置系统自动启动
echo 'courier_authdaemon="YES"' >> /etc/rc.conf
echo 'courier_imap_imapd_enable="YES"' >> /etc/rc.conf
echo 'courier_imap_pop3d_enable="YES"' >> /etc/rc.conf
3.安装 Cyrus-SASL2
引用
cd /usr/ports/security/cyrus-sasl2
make config
选择下面选项
AUTHDAEMOND
LOGIN
PLAIN
CRAM
DIGEST
OTP
NTLM
编辑smtp配置
vi /usr/local/lib/sasl2/smtpd.conf
将下面内容加入:
pwcheck_method:authdaemond
log_level:3
mech_list:PLAIN LOGIN
authdaemond_path:/var/run/authdaemond/socket
make config
选择下面选项
AUTHDAEMOND
LOGIN
PLAIN
CRAM
DIGEST
OTP
NTLM
编辑smtp配置
vi /usr/local/lib/sasl2/smtpd.conf
将下面内容加入:
pwcheck_method:authdaemond
log_level:3
mech_list:PLAIN LOGIN
authdaemond_path:/var/run/authdaemond/socket
4.Postfix的安装和配置-MTA
MTA在邮件系统中处于非常重要的位置,他负责接收其他人给你发的信,并且负责把你的信转发到目的地。选择一个靠谱的MTA对建立邮件来说意义重大,因此我们使用Postfix!! :-)。另外MTA部分在邮件系统中的开发难度是最高的,起到的作用也是最大的,因此我们也常拿MTA的名字来称呼自己的邮件系统。
引用
cd /usr/ports/mail/postfix
make config
选择下面的选项
PCRE
SASL2
TLS
MYSQL
VDA
TEST
退出,开始安装
make install clean
加入系统启动选项
echo 'sendmail_enable="NO"' >> /etc/rc.conf
echo 'sendmail_submit_enable="NO"' >> /etc/rc.conf
echo 'sendmail_outbound_enable="NO"' >> /etc/rc.conf
echo 'sendmail_msp_queue_enable="NO"' >> /etc/rc.conf
echo 'postfix_enable="YES"' >> /etc/rc.conf
echo postfix: root >> /etc/aliases
替换掉系统带的sendmail程序
mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
cp /usr/local/sbin/sendmail /usr/sbin/sendmail
编辑/etc/periodic.conf
vi /etc/periodic.conf
加入下面的内容
daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"
make config
选择下面的选项
PCRE
SASL2
TLS
MYSQL
VDA
TEST
退出,开始安装
make install clean
加入系统启动选项
echo 'sendmail_enable="NO"' >> /etc/rc.conf
echo 'sendmail_submit_enable="NO"' >> /etc/rc.conf
echo 'sendmail_outbound_enable="NO"' >> /etc/rc.conf
echo 'sendmail_msp_queue_enable="NO"' >> /etc/rc.conf
echo 'postfix_enable="YES"' >> /etc/rc.conf
echo postfix: root >> /etc/aliases
替换掉系统带的sendmail程序
mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
cp /usr/local/sbin/sendmail /usr/sbin/sendmail
编辑/etc/periodic.conf
vi /etc/periodic.conf
加入下面的内容
daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"
5.安装extman
ExtMan是一个基于Web的邮件帐号管理系统。可以通过他来管理邮件帐号、管理员帐号和域名等,默认的超级用户是 root@extmail.org,密码是extmail。ExtMan还集成了mailgraph,可以ExtMan内看到整个邮件系统的相关状态流量图。使用ExtMan来管理您的邮件系统将使工作变得更加轻松。
引用
cd /usr/ports/mail/extman
make install clean
因为有很多数据是来自extman/docs的,直接从ports安装没有文档,所以我们要从网站上直接下载这个软件。
wget http://www.chifeng.name/dist/extman/extman-0.2.3.tar.gz
tar zxvf extman-0.2.3.tar.gz
cd extman-0.2.3.tar.gz/docs
cp mysql_virtual_alias_maps.cf /usr/local/etc/postfix/
cp mysql_virtual_mailbox_maps.cf /usr/local/etc/postfix/
cp mysql_virtual_domains_maps.cf /usr/local/etc/postfix/
cp mysql_virtual_limit_maps.cf /usr/local/etc/postfix/
这四个文件的内容不需要修改的。但是用户名、密码和表名都必须是extmail,否则就要改了。
1)建立数据库结构,进行数据表初始化,供邮件系统使用
mysql -uroot -p < extmail.sql
2)建立相应的账户,指定其权限
mysql -uroot -p < init.sql
make install clean
因为有很多数据是来自extman/docs的,直接从ports安装没有文档,所以我们要从网站上直接下载这个软件。
wget http://www.chifeng.name/dist/extman/extman-0.2.3.tar.gz
tar zxvf extman-0.2.3.tar.gz
cd extman-0.2.3.tar.gz/docs
cp mysql_virtual_alias_maps.cf /usr/local/etc/postfix/
cp mysql_virtual_mailbox_maps.cf /usr/local/etc/postfix/
cp mysql_virtual_domains_maps.cf /usr/local/etc/postfix/
cp mysql_virtual_limit_maps.cf /usr/local/etc/postfix/
这四个文件的内容不需要修改的。但是用户名、密码和表名都必须是extmail,否则就要改了。
1)建立数据库结构,进行数据表初始化,供邮件系统使用
mysql -uroot -p < extmail.sql
2)建立相应的账户,指定其权限
mysql -uroot -p < init.sql
现在ArthurXF本人接受上海非凡进修学院邀请,开班授课,教学内容有PHP、CSS、FREEBSD网络等技术培训,如果想学习的人可以跟我联系。另外培训的招生简章在这个网址,想了解的可以去看看。加我QQ:29011218交流也可。
PHP培训招生简章
跟着ArthurXF学FreeBSD38——搭建用mysql管理的ftp服务
2008/01/05 11:31 ArthurXF
我们用Mysql数据库管理ftp帐号,是多么的方便啊。这里使用Pure-ftpd + Mysql + Pureftpd_php_manager架设FTP,本文由ArthurXF倾情奉献,谢谢支持!
1.用ports安装pure-ftpd
2添加ftp用户和组
3.建立mysql数据库
注意:arthurxf是密码,如果有需要请修改。
将上面的内容,保存成为pureftpd.sql后,执行下面的命令
4.安装pureftpd_php_manager
5.配置pureftpd-mysql.conf
6.配置Pureftpd
7.随系统启动
8.加密pureftpd_php_manager目录
此文章由ArthurXF倾情奉献,谢谢支持!
现在ArthurXF本人正在搞PHP等技术培训,如果想学习的人可以跟我联系。另外培训的招生简章在这个网址,想了解的可以去看看。加我QQ:29011218交流也可。
PHP培训招生简章
1.用ports安装pure-ftpd
引用
cd /usr/ports/ftp/pure-ftpd
make config
[X] LDAP Support for users in LDAP directories 支持LDAP路径
[X] MYSQL Support for users in MySQL database 支持MYSQL数据库管理
[X] PAM Support for PAM authentication 支持PAM验证
[ ] PGSQL Support for users in PostgreSQL database 支持PostgreSQL数据库管理
[X] PRIVSEP Enable privilege separation 支持特权分离
[X] PERUSERLIMITS Per-user concurrency limits 同时ftp用户限制
[X] THROTTLING Bandwidth throttling 带宽限制
[X] BANNER Show pure-ftpd welcome upon session start 登录ftp服务器显示欢迎广告
[X] UPLOADSCRIPT Support uploadscript daemon 支持上传后台程序
[X] UTF8 Support for charset conversion (expreimental) 支持字符转换
[X] SENDFILE Support for the sendfile syscall 支持sendfile系统调用
将上面的选择,具体的作用,请参看解释,可根据需要选择。
make install clean
make config
[X] LDAP Support for users in LDAP directories 支持LDAP路径
[X] MYSQL Support for users in MySQL database 支持MYSQL数据库管理
[X] PAM Support for PAM authentication 支持PAM验证
[ ] PGSQL Support for users in PostgreSQL database 支持PostgreSQL数据库管理
[X] PRIVSEP Enable privilege separation 支持特权分离
[X] PERUSERLIMITS Per-user concurrency limits 同时ftp用户限制
[X] THROTTLING Bandwidth throttling 带宽限制
[X] BANNER Show pure-ftpd welcome upon session start 登录ftp服务器显示欢迎广告
[X] UPLOADSCRIPT Support uploadscript daemon 支持上传后台程序
[X] UTF8 Support for charset conversion (expreimental) 支持字符转换
[X] SENDFILE Support for the sendfile syscall 支持sendfile系统调用
将上面的选择,具体的作用,请参看解释,可根据需要选择。
make install clean
2添加ftp用户和组
引用
pw groupadd ftpusers -g 2001
pw useradd ftp -u 2001 -g ftpusers -s /sbin/nologin
mkdir -p /home/ftp
chown ftp /home/ftp
pw useradd ftp -u 2001 -g ftpusers -s /sbin/nologin
mkdir -p /home/ftp
chown ftp /home/ftp
3.建立mysql数据库
引用
CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost' IDENTIFIED BY 'arthurxf';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost.localdomain' IDENTIFIED BY 'arthurxf';
FLUSH PRIVILEGES;
USE pureftpd;
DROP TABLE IF EXISTS ftpd;
CREATE TABLE ftpd (
User varchar(16) NOT NULL default '',
status enum('0','1') NOT NULL default '0',
Password varchar(64) NOT NULL default '',
Uid varchar(11) NOT NULL default '-1',
Gid varchar(11) NOT NULL default '-1',
Dir varchar(128) NOT NULL default '',
ULBandwidth smallint(5) NOT NULL default '0',
DLBandwidth smallint(5) NOT NULL default '0',
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default '*',
QuotaSize smallint(5) NOT NULL default '0',
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost' IDENTIFIED BY 'arthurxf';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost.localdomain' IDENTIFIED BY 'arthurxf';
FLUSH PRIVILEGES;
USE pureftpd;
DROP TABLE IF EXISTS ftpd;
CREATE TABLE ftpd (
User varchar(16) NOT NULL default '',
status enum('0','1') NOT NULL default '0',
Password varchar(64) NOT NULL default '',
Uid varchar(11) NOT NULL default '-1',
Gid varchar(11) NOT NULL default '-1',
Dir varchar(128) NOT NULL default '',
ULBandwidth smallint(5) NOT NULL default '0',
DLBandwidth smallint(5) NOT NULL default '0',
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default '*',
QuotaSize smallint(5) NOT NULL default '0',
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;
注意:arthurxf是密码,如果有需要请修改。
将上面的内容,保存成为pureftpd.sql后,执行下面的命令
/usr/local/bin/mysql < ./pureftpd.sql
4.安装pureftpd_php_manager
引用
下载我配置好的pureftpd_php_manager包
cd /usr/local/www/
wget http://www.bizeway.net/attachment/pureftpd_php_manager.tar
tar xzvf pureftpd_php_manager.tar
cd /usr/local/www/
wget http://www.bizeway.net/attachment/pureftpd_php_manager.tar
tar xzvf pureftpd_php_manager.tar
5.配置pureftpd-mysql.conf
引用
cd /usr/local/etc
vi pureftpd-mysql.conf
将下面的内容复制到pureftpd-mysql.conf,保存退出
MYSQLSocket /tmp/mysql.sock
MYSQLServer localhost
MYSQLPort 3306
MYSQLUser pureftpd
MYSQLPassword arthurxf
MYSQLDatabase pureftpd
MYSQLCrypt cleartext
MYSQLGetPW SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetUID SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetGID SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetDir SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
如果你没改动第3步中的的'arthurxf'密码,那你就什么都不需要修改,可以直接使用了。如果你修改过了,就要将MYSQLPassword arthurxf 中的arthurxf修改成你自己设置的密码。
vi pureftpd-mysql.conf
将下面的内容复制到pureftpd-mysql.conf,保存退出
MYSQLSocket /tmp/mysql.sock
MYSQLServer localhost
MYSQLPort 3306
MYSQLUser pureftpd
MYSQLPassword arthurxf
MYSQLDatabase pureftpd
MYSQLCrypt cleartext
MYSQLGetPW SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetUID SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetGID SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetDir SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
如果你没改动第3步中的的'arthurxf'密码,那你就什么都不需要修改,可以直接使用了。如果你修改过了,就要将MYSQLPassword arthurxf 中的arthurxf修改成你自己设置的密码。
6.配置Pureftpd
引用
cd /usr/local/etc
cp pure-ftpd.conf.sample pure-ftpd.conf
我们只需要修改下面几个参数即可
vi pure-ftpd.conf
# Cage in every user in his home directory
# 限制每个用户到自己的根目录
ChrootEveryone yes
# Disallow anonymous connections. Only allow authenticated users.
# 取消anonymous用户
NoAnonymous yes
# MySQL configuration file (see README.MySQL)
# pureftpd-mysql.conf文件的位置
MySQLConfigFile /usr/local/etc/pureftpd-mysql.conf
# 服务监听的IP 地址和端口。(缺省是所有IP地址和21端口) ,不修改
# Bind 127.0.0.1,21
#只写一个数字为端口号
Bind 2221
cp pure-ftpd.conf.sample pure-ftpd.conf
下面是完整pure-ftpd的中文配置文件,共大家学习之用
############################################################
# #
# Configuration file for pure-ftpd wrappers #
# #
############################################################
# 如果你想要使用配置文件代替命令行选项来运行 Pure-FTPd ,请运行下面的命令:
#
# /usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf
#
# RPM 缺省使用另外一个配置文件:
# /etc/sysconfig/pure-ftpd
#
# 请不要忘了浏览一下 http://www.pureftpd.org/documentation.html 的
# 文档,查看全部的选项列表。
# 限制所有用户在其主目录中
ChrootEveryone yes
# 如果前一个指令被设置为了 "no",下面组的成员(GID)就不受主目录的限制了。而其他的用户还是
# 会被限制在自己的主目录里。如果你不想把任何用户限制在自己的主目录里,只要注释掉 ChrootEveryone
# 和 TrustedGID 就可以了。
# TrustedGID 100
# 兼容ie等比较非正规化的ftp客户端
BrokenClientsCompatibility no
# 服务器总共允许同时连接的最大用户数
MaxClientsNumber 50
# 做为守护(doemon)进程运行(Fork in background)
Daemonize yes
# 同一IP允许同时连接的用户数(Maximum number of sim clients with the same IP address)
MaxClientsPerIP 8
# 如果你要记录所有的客户命令,设置这个指令为 "yes"。
# This directive can be duplicated to also log server responses.
VerboseLog no
# 即使客户端没有发送 '-a' 选项也列出隐藏文件( dot-files )。
DisplayDotFiles yes
# 不允许认证用户 - 仅作为一个公共的匿名FTP。
AnonymousOnly no
# 不允许匿名连接,仅允许认证用户使用。
NoAnonymous no
# Syslog facility (auth, authpriv, daemon, ftp, security, user, local*)
# 缺省的功能( facility )是 "ftp"。 "none" 将禁止日志。
SyslogFacility ftp
# 定制用户登陆后的显示信息(Display fortune cookies)
# FortunesFile /usr/share/fortune/zippy
# 在日志文件中不解析主机名。日志没那么详细的话,就使用更少的带宽。在一个访问量很大
# 的站点中,设置这个指令为 "yes" ,如果你没有一个能工作的DNS的话。
DontResolve yes
# 客户端允许的最大的空闲时间(分钟,缺省15分钟)
MaxIdleTime 15
# LDAP 配置文件 (参考 README.LDAP)
# LDAPConfigFile /etc/pureftpd-ldap.conf
# MySQL 配置文件 (参考 README.MySQL)
# MySQLConfigFile /etc/pureftpd-mysql.conf
# Postgres 配置文件 (参考 README.PGSQL)
# PGSQLConfigFile /etc/pureftpd-pgsql.conf
# PureDB 用户数据库 (参考 README.Virtual-Users)
# PureDB /etc/pureftpd.pdb
# pure-authd 的socket 路径(参考 README.Authentication-Modules)
# ExtAuth /var/run/ftpd.sock
# 如果你要启用 PAM 认证方式, 去掉下面行的注释。
# PAMAuthentication yes
# 如果你要启用 简单的 Unix系统 认证方式(/etc/passwd), 去掉下面行的注释。
# UnixAuthentication yes
# 请注意,LDAPConfigFile, MySQLConfigFile, PAMAuthentication 和
# UnixAuthentication 这些指令只能被使用一次,不过,他们能被混合在一起用。例如:如果你使用了
# MySQLConfigFile 和 UnixAuthentication,那么 SQL 服务器将被访问。如果因为用户名未找
# 到而使 SQL 认证失败的话,就会在/etc/passwd 和 /etc/shadow 中尝试另外一种认证,如果因
# 为密码错误而使 SQL 认证失败的话,认证就会在此结束了。认证方式由它们被给出来的顺序而被链
# 接了起来。
# 'ls' 命令的递归限制。第一个参数给出文件显示的最大数目。第二个参数给出最大的子目录深度。
LimitRecursion 2000 8
# 允许匿名用户创建新目录?
AnonymousCanCreateDirs no
# 如果系统被 loaded 超过下面的值,匿名用户会被禁止下载。
MaxLoad 4
# 被动连接响应的端口范围。- for firewalling.
# PassivePortRange 30000 50000
# 强制一个IP地址使用被动响应( PASV/EPSV/SPSV replies)。 - for NAT.
# Symbolic host names are also accepted for gateways with dynamic IP
# addresses.
# ForcePassiveIP 192.168.0.1
# 匿名用户的上传/下载的比率。
# AnonymousRatio 1 10
# 所有用户的上传/下载的比率。
# This directive superscedes the previous one.
# UserRatio 1 10
# 不接受所有者为 "ftp" 的文件的下载。例如:那些匿名用户上传后未被本地管理员验证的文件。
AntiWarez yes
# 服务监听的IP 地址和端口。(缺省是所有IP地址和21端口)
# Bind 127.0.0.1,21
# 匿名用户的最大带宽(KB/s)。
# AnonymousBandwidth 8
# 所有用户的最大带宽(KB/s),包括匿名用户。
# Use AnonymousBandwidth *or* UserBandwidth, both makes no sense.
# UserBandwidth 8
# 新建目录及文件的属性掩码值。<文件掩码>;:<目录掩码>; .
# 177:077 if you feel paranoid.
Umask 133:022
# 认证用户允许登陆的最小组ID(UID) 。
MinUID 100
# 仅允许认证用户进行 FXP 传输。
AllowUserFXP yes
# 对匿名用户和非匿名用户允许进行匿名 FXP 传输。
AllowAnonymousFXP no
# 用户不能删除和写点文件(文件名以 '.' 开头的文件),即使用户是文件的所有者也不行。
# 如果 TrustedGID 指令是 enabled ,文件所属组用户能够访问点文件(dot-files)。
ProhibitDotFilesWrite no
# 禁止读点文件(文件名以 '.' 开头的文件) (.history, .ssh...)
ProhibitDotFilesRead no
# 永不覆盖文件。当上传的文件,其文件名已经存在时,自动重命名,如: file.1, file.2, file.3, ...
AutoRename no
# 不接受匿名用户上传新文件( no = 允许上传)
AnonymousCantUpload no
# 仅允许来自以下IP地址的非匿名用户连接。你可以使用这个指令来打开几个公网IP来提供匿名FTP,
# 而保留一个私有的防火墙保护的IP来进行远程管理。你还可以只允许一内网地址进行认证,而在另外
# 一个IP上提供纯匿名的FTP服务。
#TrustedIP 10.1.1.1
# 如果你要为日志每一行添加 PID 去掉下面行的注释。
# LogPID yes
# 使用类似于Apache的格式创建一个额外的日志文件,如:
# fw.c9x.org - jedi [13/Dec/1975] "GET /ftp/linux.tar.bz2" 200 21809338
# 这个日志文件能被 www 流量分析器处理。
# AltLog clf:/var/log/pureftpd.log
# 使用优化过的格式为统计报告创建一个额外的日志文件。
# AltLog stats:/var/log/pureftpd.log
# 使用标准的W3C格式创建一个额外的日志文件。(与大部分的商业日志分析器兼容)
# AltLog w3c:/var/log/pureftpd.log
# 不接受 CHMOD 命令。用户不能更改他们文件的属性。
# NoChmod yes
# 允许用户恢复和上传文件,却不允许删除他们。
# KeepAllFiles yes
# 用户主目录不存在的话,自动创建。
# CreateHomeDir yes
# 启用虚拟的磁盘限额。第一个数字是最大的文件数。
# 第二个数字是最大的总的文件大小(单位:Mb)。
# 所以,1000:10 就限制每一个用户只能使用 1000 个文件,共10Mb。
# Quota 1000:10
# 如果你的 pure-ftpd 编译时加入了独立服务器( standalone )支持,你能够改变 pid 文件
# 的位置。缺省位置是 /var/run/pure-ftpd.pid 。
# PIDFile /var/run/pure-ftpd.pid
# 如果你的 pure-ftpd 编译时加入了 pure-uploadscript 支持,这个指令将会使 pure-ftpd
# 发送关于新上传的情况信息到 /var/run/pure-ftpd.upload.pipe,这样 pure-uploadscript
# 就能读然后调用一个脚本去处理新的上传。
# CallUploadScript yes
# 这个选项对允许匿名上传的服务器是有用的。当 /var/ftp 在 /var 里时,需要保留一定磁盘空间
# 来保护日志文件。当所在磁盘分区使用超过百分之 X 时,将不在接受新的上传。
MaxDiskUsage 99
# 如果你不想要你的用户重命名文件的话,就设置为 'yes' 。
# NoRename yes
# 是 'customer proof' : 工作区(workaround)反对普通的客户错误,类似于:'chmod 0 public_html' 的错误。
# 那是一个有效的命令,不过,将导致无知的客户所定他们自己的文件,将使你的技术支持忙于愚蠢的的问题中。
# 如果你确信你所有的用户都有基本的Unix知识的话,这个特性将没什么用了。不过,如果你是一个主机提供商
# 的话,启用它。
CustomerProof yes
# 每一个用户的并发限制。只有在添加了 --with-peruserlimits 编译选项进行编译后,这个指令才起
# 作用。(大部分的二进制的发布版本就是例子)
# 格式是 : <每一个用户最大允许的进程>;:<最大的匿名用户进程>;
# 例如: 3:20 意思是同一个认证用户最大可以有3个同时活动的进程。而且同时最多只能有20个匿名用户进程。
# PerUserLimits 3:20
############################################################
# #
# Configuration file for pure-ftpd wrappers #
# #
############################################################
# 如果你想要使用配置文件代替命令行选项来运行 Pure-FTPd ,请运行下面的命令:
#
# /usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf
#
# RPM 缺省使用另外一个配置文件:
# /etc/sysconfig/pure-ftpd
#
# 请不要忘了浏览一下 http://www.pureftpd.org/documentation.html 的
# 文档,查看全部的选项列表。
# 限制所有用户在其主目录中
ChrootEveryone yes
# 如果前一个指令被设置为了 "no",下面组的成员(GID)就不受主目录的限制了。而其他的用户还是
# 会被限制在自己的主目录里。如果你不想把任何用户限制在自己的主目录里,只要注释掉 ChrootEveryone
# 和 TrustedGID 就可以了。
# TrustedGID 100
# 兼容ie等比较非正规化的ftp客户端
BrokenClientsCompatibility no
# 服务器总共允许同时连接的最大用户数
MaxClientsNumber 50
# 做为守护(doemon)进程运行(Fork in background)
Daemonize yes
# 同一IP允许同时连接的用户数(Maximum number of sim clients with the same IP address)
MaxClientsPerIP 8
# 如果你要记录所有的客户命令,设置这个指令为 "yes"。
# This directive can be duplicated to also log server responses.
VerboseLog no
# 即使客户端没有发送 '-a' 选项也列出隐藏文件( dot-files )。
DisplayDotFiles yes
# 不允许认证用户 - 仅作为一个公共的匿名FTP。
AnonymousOnly no
# 不允许匿名连接,仅允许认证用户使用。
NoAnonymous no
# Syslog facility (auth, authpriv, daemon, ftp, security, user, local*)
# 缺省的功能( facility )是 "ftp"。 "none" 将禁止日志。
SyslogFacility ftp
# 定制用户登陆后的显示信息(Display fortune cookies)
# FortunesFile /usr/share/fortune/zippy
# 在日志文件中不解析主机名。日志没那么详细的话,就使用更少的带宽。在一个访问量很大
# 的站点中,设置这个指令为 "yes" ,如果你没有一个能工作的DNS的话。
DontResolve yes
# 客户端允许的最大的空闲时间(分钟,缺省15分钟)
MaxIdleTime 15
# LDAP 配置文件 (参考 README.LDAP)
# LDAPConfigFile /etc/pureftpd-ldap.conf
# MySQL 配置文件 (参考 README.MySQL)
# MySQLConfigFile /etc/pureftpd-mysql.conf
# Postgres 配置文件 (参考 README.PGSQL)
# PGSQLConfigFile /etc/pureftpd-pgsql.conf
# PureDB 用户数据库 (参考 README.Virtual-Users)
# PureDB /etc/pureftpd.pdb
# pure-authd 的socket 路径(参考 README.Authentication-Modules)
# ExtAuth /var/run/ftpd.sock
# 如果你要启用 PAM 认证方式, 去掉下面行的注释。
# PAMAuthentication yes
# 如果你要启用 简单的 Unix系统 认证方式(/etc/passwd), 去掉下面行的注释。
# UnixAuthentication yes
# 请注意,LDAPConfigFile, MySQLConfigFile, PAMAuthentication 和
# UnixAuthentication 这些指令只能被使用一次,不过,他们能被混合在一起用。例如:如果你使用了
# MySQLConfigFile 和 UnixAuthentication,那么 SQL 服务器将被访问。如果因为用户名未找
# 到而使 SQL 认证失败的话,就会在/etc/passwd 和 /etc/shadow 中尝试另外一种认证,如果因
# 为密码错误而使 SQL 认证失败的话,认证就会在此结束了。认证方式由它们被给出来的顺序而被链
# 接了起来。
# 'ls' 命令的递归限制。第一个参数给出文件显示的最大数目。第二个参数给出最大的子目录深度。
LimitRecursion 2000 8
# 允许匿名用户创建新目录?
AnonymousCanCreateDirs no
# 如果系统被 loaded 超过下面的值,匿名用户会被禁止下载。
MaxLoad 4
# 被动连接响应的端口范围。- for firewalling.
# PassivePortRange 30000 50000
# 强制一个IP地址使用被动响应( PASV/EPSV/SPSV replies)。 - for NAT.
# Symbolic host names are also accepted for gateways with dynamic IP
# addresses.
# ForcePassiveIP 192.168.0.1
# 匿名用户的上传/下载的比率。
# AnonymousRatio 1 10
# 所有用户的上传/下载的比率。
# This directive superscedes the previous one.
# UserRatio 1 10
# 不接受所有者为 "ftp" 的文件的下载。例如:那些匿名用户上传后未被本地管理员验证的文件。
AntiWarez yes
# 服务监听的IP 地址和端口。(缺省是所有IP地址和21端口)
# Bind 127.0.0.1,21
# 匿名用户的最大带宽(KB/s)。
# AnonymousBandwidth 8
# 所有用户的最大带宽(KB/s),包括匿名用户。
# Use AnonymousBandwidth *or* UserBandwidth, both makes no sense.
# UserBandwidth 8
# 新建目录及文件的属性掩码值。<文件掩码>;:<目录掩码>; .
# 177:077 if you feel paranoid.
Umask 133:022
# 认证用户允许登陆的最小组ID(UID) 。
MinUID 100
# 仅允许认证用户进行 FXP 传输。
AllowUserFXP yes
# 对匿名用户和非匿名用户允许进行匿名 FXP 传输。
AllowAnonymousFXP no
# 用户不能删除和写点文件(文件名以 '.' 开头的文件),即使用户是文件的所有者也不行。
# 如果 TrustedGID 指令是 enabled ,文件所属组用户能够访问点文件(dot-files)。
ProhibitDotFilesWrite no
# 禁止读点文件(文件名以 '.' 开头的文件) (.history, .ssh...)
ProhibitDotFilesRead no
# 永不覆盖文件。当上传的文件,其文件名已经存在时,自动重命名,如: file.1, file.2, file.3, ...
AutoRename no
# 不接受匿名用户上传新文件( no = 允许上传)
AnonymousCantUpload no
# 仅允许来自以下IP地址的非匿名用户连接。你可以使用这个指令来打开几个公网IP来提供匿名FTP,
# 而保留一个私有的防火墙保护的IP来进行远程管理。你还可以只允许一内网地址进行认证,而在另外
# 一个IP上提供纯匿名的FTP服务。
#TrustedIP 10.1.1.1
# 如果你要为日志每一行添加 PID 去掉下面行的注释。
# LogPID yes
# 使用类似于Apache的格式创建一个额外的日志文件,如:
# fw.c9x.org - jedi [13/Dec/1975] "GET /ftp/linux.tar.bz2" 200 21809338
# 这个日志文件能被 www 流量分析器处理。
# AltLog clf:/var/log/pureftpd.log
# 使用优化过的格式为统计报告创建一个额外的日志文件。
# AltLog stats:/var/log/pureftpd.log
# 使用标准的W3C格式创建一个额外的日志文件。(与大部分的商业日志分析器兼容)
# AltLog w3c:/var/log/pureftpd.log
# 不接受 CHMOD 命令。用户不能更改他们文件的属性。
# NoChmod yes
# 允许用户恢复和上传文件,却不允许删除他们。
# KeepAllFiles yes
# 用户主目录不存在的话,自动创建。
# CreateHomeDir yes
# 启用虚拟的磁盘限额。第一个数字是最大的文件数。
# 第二个数字是最大的总的文件大小(单位:Mb)。
# 所以,1000:10 就限制每一个用户只能使用 1000 个文件,共10Mb。
# Quota 1000:10
# 如果你的 pure-ftpd 编译时加入了独立服务器( standalone )支持,你能够改变 pid 文件
# 的位置。缺省位置是 /var/run/pure-ftpd.pid 。
# PIDFile /var/run/pure-ftpd.pid
# 如果你的 pure-ftpd 编译时加入了 pure-uploadscript 支持,这个指令将会使 pure-ftpd
# 发送关于新上传的情况信息到 /var/run/pure-ftpd.upload.pipe,这样 pure-uploadscript
# 就能读然后调用一个脚本去处理新的上传。
# CallUploadScript yes
# 这个选项对允许匿名上传的服务器是有用的。当 /var/ftp 在 /var 里时,需要保留一定磁盘空间
# 来保护日志文件。当所在磁盘分区使用超过百分之 X 时,将不在接受新的上传。
MaxDiskUsage 99
# 如果你不想要你的用户重命名文件的话,就设置为 'yes' 。
# NoRename yes
# 是 'customer proof' : 工作区(workaround)反对普通的客户错误,类似于:'chmod 0 public_html' 的错误。
# 那是一个有效的命令,不过,将导致无知的客户所定他们自己的文件,将使你的技术支持忙于愚蠢的的问题中。
# 如果你确信你所有的用户都有基本的Unix知识的话,这个特性将没什么用了。不过,如果你是一个主机提供商
# 的话,启用它。
CustomerProof yes
# 每一个用户的并发限制。只有在添加了 --with-peruserlimits 编译选项进行编译后,这个指令才起
# 作用。(大部分的二进制的发布版本就是例子)
# 格式是 : <每一个用户最大允许的进程>;:<最大的匿名用户进程>;
# 例如: 3:20 意思是同一个认证用户最大可以有3个同时活动的进程。而且同时最多只能有20个匿名用户进程。
# PerUserLimits 3:20
我们只需要修改下面几个参数即可
vi pure-ftpd.conf
# Cage in every user in his home directory
# 限制每个用户到自己的根目录
ChrootEveryone yes
# Disallow anonymous connections. Only allow authenticated users.
# 取消anonymous用户
NoAnonymous yes
# MySQL configuration file (see README.MySQL)
# pureftpd-mysql.conf文件的位置
MySQLConfigFile /usr/local/etc/pureftpd-mysql.conf
# 服务监听的IP 地址和端口。(缺省是所有IP地址和21端口) ,不修改
# Bind 127.0.0.1,21
#只写一个数字为端口号
Bind 2221
7.随系统启动
引用
vi /etc/rc.conf
加入下面的内容
pureftpd_enable="YES"
然后重起即可。
或者使用命令启动
/usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf
加入下面的内容
pureftpd_enable="YES"
然后重起即可。
或者使用命令启动
/usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf
8.加密pureftpd_php_manager目录
引用
为了避免外人非法进入管理我们的ftp。我们必须对ftp的管理目录做验证处理。
修改apache的httpd.conf,加入下面的语句
本来还需要进入/usr/local/www/pureftpd_php_manager/配置.passwd文件,我那个包里面已经配置了,所以这里就不再重复了。
接下来操作
cd /usr/local/etc
htpasswd -bc pureftpd.passwd arthur 123456
然后重起apache,访问http://你的ip/ftpamdin,需要用户名和密码就说明配置成功了。
修改apache的httpd.conf,加入下面的语句
Alias /ftpamdin "/usr/local/www/pureftpd_php_manager/"
<Directory "/usr/local/www/pureftpd_php_manager/">
deny from all
Options None
AllowOverride AuthConfig
Order deny,allow
</Directory>
<Directory "/usr/local/www/pureftpd_php_manager/">
deny from all
Options None
AllowOverride AuthConfig
Order deny,allow
</Directory>
本来还需要进入/usr/local/www/pureftpd_php_manager/配置.passwd文件,我那个包里面已经配置了,所以这里就不再重复了。
接下来操作
cd /usr/local/etc
htpasswd -bc pureftpd.passwd arthur 123456
然后重起apache,访问http://你的ip/ftpamdin,需要用户名和密码就说明配置成功了。
此文章由ArthurXF倾情奉献,谢谢支持!
现在ArthurXF本人正在搞PHP等技术培训,如果想学习的人可以跟我联系。另外培训的招生简章在这个网址,想了解的可以去看看。加我QQ:29011218交流也可。
PHP培训招生简章
跟着ArthurXF学FreeBSD37——ports安装ZendOptimizer
2008/01/04 01:19 ArthurXF
此文章由ArthurXF倾情奉献,谢谢支持!
1.安装
cd /usr/ports/devel/ZendOptimizer
make
make install
2.编辑php.ini
在php.ini中加入
[Zend]
zend_optimizer.optimization_level=15
zend_extension_manager.optimizer="/usr/local/lib/php/20060613-zts/Optimizer"
zend_extension_manager.optimizer_ts="/usr/local/lib/php/20060613-zts/Optimizer_TS"
zend_extension="/usr/local/lib/php/20060613-zts/ZendExtensionManager.so"
zend_extension_ts="/usr/local/lib/php/20060613-zts/ZendExtensionManager_TS.so"
然后调用phpinfo()输出结果,如果看到下面的字样,那么就说明安装成功了。
with Zend Optimizer v3.3.0, Copyright (c) 1998-2007, by Zend Technologies
现在ArthurXF本人正在搞PHP等技术培训,如果想学习的人可以跟我联系。另外培训的招生简章在这个网址,想了解的可以去看看。加我QQ:29011218交流也可。
PHP培训招生简章
1.安装
cd /usr/ports/devel/ZendOptimizer
make
make install
2.编辑php.ini
在php.ini中加入
[Zend]
zend_optimizer.optimization_level=15
zend_extension_manager.optimizer="/usr/local/lib/php/20060613-zts/Optimizer"
zend_extension_manager.optimizer_ts="/usr/local/lib/php/20060613-zts/Optimizer_TS"
zend_extension="/usr/local/lib/php/20060613-zts/ZendExtensionManager.so"
zend_extension_ts="/usr/local/lib/php/20060613-zts/ZendExtensionManager_TS.so"
然后调用phpinfo()输出结果,如果看到下面的字样,那么就说明安装成功了。
with Zend Optimizer v3.3.0, Copyright (c) 1998-2007, by Zend Technologies
现在ArthurXF本人正在搞PHP等技术培训,如果想学习的人可以跟我联系。另外培训的招生简章在这个网址,想了解的可以去看看。加我QQ:29011218交流也可。
PHP培训招生简章
跟着ArthurXF学FreeBSD36——ports安装apache+mysql+php
2008/01/02 15:42 ArthurXF
很多朋友不太习惯使用集成包安装,都来问我一些用ports安装apache+mysql+php的问题,我这里就重新写一篇文章,来解决这些问题。此文章由ArthurXF倾情奉献,谢谢支持。
一、安装mysql51
二、安装apache22+php5
以上文章是由ArthurXF倾情奉献,谢谢支持!
现在ArthurXF本人正在搞PHP等技术培训,如果想学习的人可以跟我联系。另外培训的招生简章在这个网址,想了解的可以去看看。加我QQ:29011218交流也可。
PHP培训招生简章?php>
一、安装mysql51
引用
先添加mysql组和mysql用户
pw addgroup mysql
pw adduser mysql
开始安装
cd /usr/ports/databases/mysql51-server/
make
make thread-safe-client=enable dtrace=disable assembler=enable with_big_tables=yes with_embedded_server=yes with_local_infile=yes with_plugins=partition,innobase,myisammrg WITH_CHARSET=utf8 WITH_XCHARSET=all WITH_COLLATION=utf8_general_ci WITH_PROC_SCOPE_PTH=yes BUILD_OPTIMIZED=yes BUILD_STATIC=yes SKIP_DNS_CHECK=yes install clean // 设定编码字符集为utf-8
cp /usr/local/share/mysql/my-large.cnf /etc/my.cnf
//服务器内存1G,但是与apache在一起/usr/local/share/mysql下面有5个my-xxxx.cnf文件
因为如果你安装系统的时候默认分配空间的话/var一般的空间比例很小,也就3G,对于大数据库的话,肯定是不够用的,所以我们这里把数据库搬到/usr去,一般/usr的空间都是最大的,这样可以保证数据库空间充足。
搬mysql数据库需要操作下面的命令,如果不搬这个可以跳过。本文适合最新的FreeBSD6.2,其他版本可能文件名会有变化,请自行查找
vi /etc/rc.conf
增加
mysql_dbdir="/usr/local/db/mysql"
重起服务器,再执行下面的命令。
cd /usr/local
mysql_install_db --user=mysql --datadir=/usr/local/db/mysql/data #建立数据库目录
mysqld_safe & #启动mysql
pw addgroup mysql
pw adduser mysql
开始安装
cd /usr/ports/databases/mysql51-server/
make
make thread-safe-client=enable dtrace=disable assembler=enable with_big_tables=yes with_embedded_server=yes with_local_infile=yes with_plugins=partition,innobase,myisammrg WITH_CHARSET=utf8 WITH_XCHARSET=all WITH_COLLATION=utf8_general_ci WITH_PROC_SCOPE_PTH=yes BUILD_OPTIMIZED=yes BUILD_STATIC=yes SKIP_DNS_CHECK=yes install clean // 设定编码字符集为utf-8
cp /usr/local/share/mysql/my-large.cnf /etc/my.cnf
//服务器内存1G,但是与apache在一起/usr/local/share/mysql下面有5个my-xxxx.cnf文件
my-small.cnf 最小配置安装,内存<=64M,数据数量最少
my-medium.cnf 32M<内存<64M,或者内存有128M,但是数据库与web服务器公用内存
my-large.cnf 内存=512M
my-huge.cnf 1G<内存<2G,服务器主要运行mysql
my-innodb-heavy-4G.cnf innodb格式数据大于4G的
my-medium.cnf 32M<内存<64M,或者内存有128M,但是数据库与web服务器公用内存
my-large.cnf 内存=512M
my-huge.cnf 1G<内存<2G,服务器主要运行mysql
my-innodb-heavy-4G.cnf innodb格式数据大于4G的
因为如果你安装系统的时候默认分配空间的话/var一般的空间比例很小,也就3G,对于大数据库的话,肯定是不够用的,所以我们这里把数据库搬到/usr去,一般/usr的空间都是最大的,这样可以保证数据库空间充足。
搬mysql数据库需要操作下面的命令,如果不搬这个可以跳过。本文适合最新的FreeBSD6.2,其他版本可能文件名会有变化,请自行查找
vi /etc/rc.conf
增加
mysql_dbdir="/usr/local/db/mysql"
重起服务器,再执行下面的命令。
cd /usr/local
mysql_install_db --user=mysql --datadir=/usr/local/db/mysql/data #建立数据库目录
mysqld_safe & #启动mysql
二、安装apache22+php5
引用
#cd /usr/ports/www/apache22/
选择你需要安装的模块
#make config
如果你的服务器是多个CPU的,可以把Apache以worker模式运行,则需要修改Makefile文件。
# ee Makefile
将WITH_MPM?= prefork # or worker, event, itk改成:
WITH_MPM?= worker # or worker, event, itk
开始安装了
# make install clean
安装php5
cd /usr/ports/lang/php5/
make config #选择php的模块,一定要选择apache module,否则不会自动安装到apahce里面的,那样php就不会执行的。
make
make install clean
安装php5-extensions
cd /usr/ports/lang/php5-extensions/
make config #选择php的扩展模块
make
make install clean
配置/usr/local/etc/apache/httpd.conf:
修改
DirectoryIndex index.html index.htm index index.php index.phps
如果你需要修改网站根目录,就修改下面两个地方,下面仅仅是个例子,大家可根据需要自行修改,确保一致即可。
DocumentRoot "/usr/local/www/web"
Options Indexes FollowSymLinks
去掉Indexes可以限制浏览你的主页目录
加入
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps #可不加
*注意:第二行主要为查看php代码用,加上的话web目录下的所有扩展名为.phps的文件在被浏览器访问时都显示其源代码
配置/usr/local/etc/php.ini:
cd /usr/local/etc/
cp php.ini-recommended php.ini
vi php.ini
在error_reporting = E_ALL前面加上;
将error_reporting = E_ALL & ~E_NOTICE前面的;去掉
*将报错信息设置改成去掉notice
upload_max_filesize = 2M
上传最大文件尺寸可根据需要修改
date.timezone = CST
设置服务器时区为中国的时区
apachectl start
echo "" > /usr/loacl/www/data/info.php
可能你的apache启动的时候和我一样会报这样的错误:
[Wed Jan 02 19:54:30 2008] [warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter
解决这个错误,执行如下操作:
kldload accf_http
grep accf /boot/defaults/loader.conf
显示内容如下
accf_data_load="NO" # Wait for data accept filter
accf_http_load="NO" # Wait for full HTTP request accept filter #将这个"NO"改成"YES"
vi /boot/defaults/loader.conf
找到Other modules 就可以找到accf_http_load了。
访问http://服务器的IP/info.php,如果有php的说明文件说明基本的php+apache2已经工作正常!
开机后自动启动:
echo 'mysql_enable="YES" ' >> /etc/rc.conf
echo 'apache22_enable="YES" ' >> /etc/rc.conf
以便开机后自动启动mysql apache
如果启动不了,就执行下面的命令
cp /usr/local/share/mysql/mysql.server /usr/local/etc/rc.d/mysql.sh
这样mysql就可以自动执行了。
选择你需要安装的模块
#make config
如果你的服务器是多个CPU的,可以把Apache以worker模式运行,则需要修改Makefile文件。
# ee Makefile
将WITH_MPM?= prefork # or worker, event, itk改成:
WITH_MPM?= worker # or worker, event, itk
开始安装了
# make install clean
安装php5
cd /usr/ports/lang/php5/
make config #选择php的模块,一定要选择apache module,否则不会自动安装到apahce里面的,那样php就不会执行的。
make
make install clean
安装php5-extensions
cd /usr/ports/lang/php5-extensions/
make config #选择php的扩展模块
make
make install clean
配置/usr/local/etc/apache/httpd.conf:
修改
DirectoryIndex index.html index.htm index index.php index.phps
如果你需要修改网站根目录,就修改下面两个地方,下面仅仅是个例子,大家可根据需要自行修改,确保一致即可。
DocumentRoot "/usr/local/www/web"
Options Indexes FollowSymLinks
去掉Indexes可以限制浏览你的主页目录
加入
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps #可不加
*注意:第二行主要为查看php代码用,加上的话web目录下的所有扩展名为.phps的文件在被浏览器访问时都显示其源代码
配置/usr/local/etc/php.ini:
cd /usr/local/etc/
cp php.ini-recommended php.ini
vi php.ini
在error_reporting = E_ALL前面加上;
将error_reporting = E_ALL & ~E_NOTICE前面的;去掉
*将报错信息设置改成去掉notice
upload_max_filesize = 2M
上传最大文件尺寸可根据需要修改
date.timezone = CST
设置服务器时区为中国的时区
apachectl start
echo "" > /usr/loacl/www/data/info.php
可能你的apache启动的时候和我一样会报这样的错误:
[Wed Jan 02 19:54:30 2008] [warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter
解决这个错误,执行如下操作:
kldload accf_http
grep accf /boot/defaults/loader.conf
显示内容如下
accf_data_load="NO" # Wait for data accept filter
accf_http_load="NO" # Wait for full HTTP request accept filter #将这个"NO"改成"YES"
vi /boot/defaults/loader.conf
找到Other modules 就可以找到accf_http_load了。
访问http://服务器的IP/info.php,如果有php的说明文件说明基本的php+apache2已经工作正常!
开机后自动启动:
echo 'mysql_enable="YES" ' >> /etc/rc.conf
echo 'apache22_enable="YES" ' >> /etc/rc.conf
以便开机后自动启动mysql apache
如果启动不了,就执行下面的命令
cp /usr/local/share/mysql/mysql.server /usr/local/etc/rc.d/mysql.sh
这样mysql就可以自动执行了。
以上文章是由ArthurXF倾情奉献,谢谢支持!
现在ArthurXF本人正在搞PHP等技术培训,如果想学习的人可以跟我联系。另外培训的招生简章在这个网址,想了解的可以去看看。加我QQ:29011218交流也可。
PHP培训招生简章?php>