FreeBSD 5.4 安装笔记(web+ftp+ipfw+ssh) 作者:rendian

时间:2008-08-06 00:14:00  类别:freebsd 安装  作者:zqliangzm

关于稳定性请参考: http://pws.6600.org/icbc/sysinfo/ 系统的详细信息。
0.关于FreeBSD分区 (适合40G-80G )
/      512Mb
swep      2048Mb
/tmp      1024M
/var    10240Mb (如果数据库不使用默认的路径,大小为:2048Mb 即可)
/usr      10240Mb
/home   剩余全部
1. 系统安装和选择:
是否设置机器SLIP/PPP 网络设备-----NO (不需要,稍后手动配置ADSL)
是否设置机器为网关GATEWAY——NO(我们是web server,不是网关)
是否设置机器为inetd超级服务器和network服务——NO(我们有ssh和pureftpd,不需要inetd)
是否需要设置sshd——YES(我们将通过这种较为安全模式远程控制服务器)
是否设置为anonymous FTP——NO(我们不需要匿名的FTP服务这种用途)
是否设置为NFS SERVER/CLIENT——NO(我们不是这个用途)
是否需要设置system console——NO 默认的挺好,刚开始的学的就不必改了。
是否设置这台系统的time -----YES
选择亚洲---中国---北京时区——按照提示选择即可,会提示你北京时间缩写是"CST"
是否需要LINUX兼容性——YES(或许我会为服务器安装一些LINUX软件,例如CS SERVER )
是否需要配置鼠标——NO(我看不出来作为一个托管在电信的webserver有什么必要配置鼠标)
是否需要添加用户——添加一个吧,根据提示添加即可,用户组写成wheel,以便你可以用这个用户远程登录服务器后su到root进行管理。添加完这个用户之后,会问你要root的密码,输入即可。如果不添加用户,会直接让你设置root的密码。
安装后的PACKAGE和CONTRIBUTION选择
PACKAGE是已经编译好的二进制包,可以直接运行。默认标准安装完之后,作为WEBSERVER,我看了一下也就需要net下的cvsup(在线升级用)和archivers下的unzip(某些zip包可能会用到)这两个包。选中后执行安装,就会把它们装到系统里。
随后进入CONTIBUTION里安装代码。强烈建议各位一定要把src代码全部选中。src下有很多分类,甚至包括game。我自己在学习FREEBSD的时候,编译总是缺这个那个,后来学乖了,把SRC全装了之后,就好了很多,编译时很少提示错误了,而且将来cvsup也有好处。另一个就是ports,不用说,也是要全装的。我在这里,就是选择了src和ports。选中后执行安装,就会把它们安装到系统里了。
调试:ADSL部分 我的卡是:xl0
ee /etc/rc.conf 加入:
#auto adsl by rendian
network_interfaces="xl0 lo0"
gateway_enable="YES"
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES"
ppp_profile="adsl"
ee /etc/resolv.conf 加入:
domain xpdd.net 我的米
nameserver   202.102.192.68 安徽DNS1
nameserver   202.102.199.68 安徽DNS2
ee /etc/ppp/ppp.conf 加入:
default:
set log phase tun command
enable dns
adsl:
set device PPPoE:xl0
set speed sync
set mru 1492
set mtu 1492
set dial
set login
add default HISADDR
set authname a2838496       我的帐号
set authkey a24444        我的密码
然后,启动ADSL : ppp -background adsl 看看ifconfig 吧.找到了公网IP了。
启用:希望的动态米
cd /root
ee ddns.sh内容!
#!/bin/sh
fetch "http://user:password@members.3322.org/dyndns/update?system=dyndns&hostname=pws.8800.org&wildcard=OFF"
退出!(user,password 请改为自己的)
chmod 744 ddns.sh
**********************************************
然后输入crontab -e (修改cron的命令)
VI 编辑器
**********************************
MAILTO=""
*/5 * * * * /root/ddns.sh
插入以上 !!wq
**********************************
或者用ee去编辑 /var/cron/tabs/root 文件加入上面内容! 然后保存退出。
查看计划任务:
crontab –l
2. 立刻同步你的src源代码和ports代码,然后编译、定制内核
为了加快搜索速度建议修改 make.conf 文件
#ee /etc/make.conf //修改/etc/make.conf文件 设定首先尝试从国内的freebsd镜像站下载软件,在后面加入 :
MASTER_SITE_OVERRIDE=ftp://ftp2.cn.FreeBSD.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}
保存退出.
cd /usr/ports/net/cvsup-without-gui
make install clean (速度慢,建议:/stand/sysinstall 的CD或FTP方式安装)
系统安装完后的第一步,是进行CVSUP,立刻同步你的src源代码和ports代码。
cd /usr/src/share/examples/cvsup
ee stable-supfile (编辑升级服务器,建议使用国内的如:cvsup.cn.freebsd.org)
cvsup stable-supfile
cvsup -g -L 2 stable-supfile  同步代码 stable
ee ports-supfile (编辑升级服务器,建议使用国内的如:cvsup.cn.freebsd.org)
cvsup ports-supfile
cvsup -g -L 2 ports-supfile  同步PORTS代码
这个升级过程大约也要30分钟左右。至此,所有的代码升级完毕。
下面开始编译内核
#cd /usr/src
#make buildworld 编译
开始一个30分钟左右的编译过程,如果编译没有什么问题,继续:
#make installworld 安装内核
即可更新系统为最新版,随后就可以重启机器了。Reboot
启动后定制内核:
# cd /usr/src/sys/i386/conf
# mkdir /home/bak
# cp GENERIC /home/bak/ICBCDD  
# ln -s /home/bak/ICBCDD (快捷方式)
备份一个内核ICBCDD ,然后编辑ICBCDD(快捷方式),然后再安装定制的ICBCDD
cd /usr/src
make buildkernel KERNCONF=ICBCDD
这个编译过程大概要20分钟,编译完先不要着急install,先备份一下旧内核,以免有意外。
#cd /boot
#cp -R kernel kernel.old
随后安装内核:
cd /usr/src
make installkernel KERNCONF=ICBCDD
3. 安装pure-ftpd软件,使用pure-db 默认已经选择(PAM 就是).
cd /usr/ports/ftp/pure-ftpd
make config (rmconfig) 查看配置 (删除配置)
去掉:BANNER    Show pure-ftpd welcome upon session start
make WITH_LANG=simplified-chinese install (加入:简体中文)
make clean
ee /etc/rc.conf 加入:
mysql_enable="YES"
apache2_enable="YES"
pureftpd_enable="YES"
重新启动
修改pure-ftpd.conf配置文件,增加pureftpd.pdb认证.
cd /usr/local/etc
cp pure-ftpd.conf.sample pure-ftpd.conf
ee /usr/local/etc/pure-ftpd.conf
找到# PureDB   /etc/pureftpd.pdb 把#掉支掉,路径是/usr/local/etc/pureftpd.pdb
其他需要修改的参数如下:
禁止匿名登录:
NoAnonymous yes
允许上传人修改文件名:
NoRename no
允许登录用户使用chmod指令
NoChmod no (324行)
使用者可刪除文件
KeepAllFiles no (330行)
自动建立帐户的home dir
CreateHomeDir yes (336行) 一定要改,否则无法自动创建目录。
# 限制每个用户到自己的根目录
ChrootEveryone yes
好了。就这么简单。就和系统帐号完全分离了。
如果你想即系统帐号又和puredb 帐号同时使用请在pure-ftpd.conf 打开:
UnixAuthentication     yes
自启动把/usr/local/etc/rc.d/pure-ftpd.sh.sample 改名去掉.sample 即可!
启动服务器:/usr/local/etc/rc.d/pure-ftpd.sh start
下面建一个pure-ftpd的用户,可以使用FTP了.
#pure-pw useradd 用户名 -u 用户身份 -g 用户组 -D 登陆目录 –m 更新数据库
/usr/local/bin/pure-pw useradd rendian -u 800 -g 800 -D /home/ftp/rendian -m
输入密码: (2次)
如果修改rendian 为:
修改 rendian 用户的down: 200K,up:100K,空间大小1024M 同一IP 2个线程
pure-pw usermod rendian -f pureftpd.passwd -u 800 -g 800 -t 1000 -T 1000 -N 1024 -y 2 –m
创建pureftpd.pdb数据库:
/usr/local/bin/pure-pw mkdb /usr/local/etc/pureftpd.pdb
====================================================================
查看在线用户:pure-ftpwho
pure-pw 参数如下:
*******************************************************************
pure-pw useradd <login用户> [-f <passwd file密码文件>] -u <uid用户ID> [-g <gid组ID>]
      -D/-d <home directory D锁定目录,d不锁定> [-c <gecos>]
      [-t <download bandwidth下载速度K>] [-T <upload bandwidth上传速度K>]
      [-n <max number of files最大文件数目>] [-N <max Mbytes空间大小M>]
      [-q <upload ratio>] [-Q <download ratio>]
      [-r <allow client ip>/<mask>] [-R <deny client ip>/<mask>]
      [-i <allow local ip>/<mask>] [-I <deny local ip>/<mask>]
      [-y <max number of concurrent sessions同一IP的线程>]
      [-z <hhmm>-<hhmm>时间段] [-m升级数据库立即生效]
pure-pw usermod <login> -f <passwd file> -u <uid> [-g <gid>]
      -D/-d <home directory> -[c <gecos>]
      [-t <download bandwidth>] [-T <upload bandwidth>]
      [-n <max number of files>] [-N <max Mbytes>]
      [-q <upload ratio>] [-Q <download ratio>]
      [-r <allow client ip>/<mask>] [-R <deny client ip>/<mask>]
      [-i <allow local ip>/<mask>] [-I <deny local ip>/<mask>]
      [-y <max number of concurrent sessions>]
      [-z <hhmm>-<hhmm>] [-m]
pure-pw userdel <login> [-f <passwd file>] [-m]
pure-pw passwd <login> [-f <passwd file>] [-m]
pure-pw show  <login> [-f <passwd file>]
pure-pw mkdb  [<puredb database file> [-f <passwd file>]]
pure-pw list  [-f <passwd file>]
-d <home directory> : chroot user (recommended)
-D <home directory> : don't chroot user
-<option> '' : set this option to unlimited
-m : also update the /usr/local/etc/pureftpd.pdb database
For a 1:10 ratio, use -q 1 -Q 10
To allow access only between 9 am and 6 pm, use -z 0900-1800
benben2006-03-05 18:55
4.安装mysql4,apache2,php4,zend, eaccelerator软件
cd /usr/ports/databases/mysql40-server
make install clean (如果修改路径,请修改:ee Makefile文件)
安装完后产生启动脚本在 /usr/local/etc/rc.d/mysql-server.sh
看Mysql服务是否已经启动。
# ls | grep mysql
如果有返回信息,就表示Mysql已经启动了,如果没有启动,运行以下命令。
/usr/local/etc/rc.d/mysql-server.sh start
如果你要停止Mysql服务。
/usr/local/etc/rc.d/mysql-server.sh stop
确认服务启动后,我们来测试数据库运行是否正常:
(注:默认情况下Mysql的用户是root,密码为空,所以请立即登录Mysql修改root用户的密码)
mysql
出现下面内容表示运行正常。
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 16 to server version: 4.0.18
Type 'help;' or '\h' for help. Type '\c' to clear the buffer. ee
mysql>
输入exit退出Mysql。
为Mysql的root用户设置一个口令123456
mysqladmin -u root password "123456” (/usr/local/bin/mysqladmin -u root password "123456")
mysql -uroot –p 登陆,提示输入密码!
在 /usr/local/share/mysql下有好几个配置示例文件,选择一个适合的拷贝到 /etc/my.cnf
>>my-small.cnf # <= 64M
>>my-medium.cnf # 32M - 64M
>>my-large.cnf # memory = 512M
>>my-huge.cnf # 1G-2G
>>my-innodb-heavy-4G.cnf # 4GB
按照这个规则选择一个合适的文件,比如:
cp my-large.cnf /etc/my.cnf
ee /etc/my.cnf
在[mysqld]下面加入
bind-address = 127.0.0.1 //安全起见,只允许本机连接数据库
max_connections = 500 //最大连接数
max_user_connections = 65535 //最大用户连接数,这个设定可以省略
/usr/local/etc/rc.d/mysql-server.sh start //使用脚本启动mysql服务
/usr/local/bin/mysqld_safe &//也可以直接使用这个指令启动mysql服务
另外,如果你需要使用mysqlhotcopy快速备份工具,还需要安装/usr/ports/databases/mysql40-scripts
Make install clean
mysql备份脚本
#!/bin/sh
#This is a ShellScript For Auto MYSQL DB Backup
#Powered by rendian
#2006-02-23
#Setting start
DBName=bbs
DBUser=root
DBPasswd=yourpassword
BackupPath=/bak/bakup/db/
TmpPath=/bak/tmp/
LogFile=/bak/surain/admintools/bakupdb.log
#Setting End
同样的,由ports装apache,也不会有什么困难:
cd /usr/ports/www/apache20
make install [如果使用:mod-php4的话clean暂时不要加上]
/usr/local/bin/apachectl start
编辑系统配置文件:
ee /usr/local/etc/apache2/httpd.conf
改到:/home/ftp/rendian/
关于apache日志轮询。
服务器至今运行了一个半月了,硬盘并不大,日志问题成了困扰我的一个大问题。可惜开始我还是不太会用cron及cronolog,终于搞好了,和大家分享一下吧。我是这么做的:
首先下载cronolog包,通过ssh传到server上,解包安装,默认就会很好的安装了。
#tar -zxvf cronolog-1.6.2.tar.gz
#cd cronolog-1.6.2
#./configure
#make install
然后打开httpd.conf
#ee /usr/local/etc/apache2/httpd.conf
到虚拟主机的设置部分,把log日志记录改成如下的写法:
CustomLog "|/usr/local/sbin/cronolog /var/xpdd/log/access%w.log" common
ErrorLog "|/usr/local/sbin/cronolog /var/xpdd/log/error%w.log"
再运行 crontab -e指令,给cron加入如下两个任务:
或者:ee去编辑 ee /var/cron/tabs/root
0 5 * * * /bin/rm /var/xpdd/log/access`date -v-6d +\%w`.log
10 5 * * * /bin/rm /var/xpdd/log/error`date -v-6d +\%w`.log
重启apache,以后的日志将每天做一个备份,并且只保留1周的了。
Apachectl restart
ports装 php4, php4-extensions
接下来安装php4.4.2和php4-extensions。进入下面目录
cd /usr/ports/lang/php4
make install clean
然后进入下面目录:
cd /usr/ports/lang/php4-extensions
make install clean
然后编辑HTTPD.CONF 加入PHP4的支持:
ee /usr/local/etc/apache2/httpd.conf 文件,然后在274行(LoadModule php4_module   libexec/apache2/libphp4.so)下面加入:
#php support
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
随后设置网站默认启动页允许为index.php。同样在httpd.conf里编辑,不必退出。找到
DirectoryIndex index.html index.html.var
添加index.php进去,为: DirectoryIndex index.htm index.html index.php
另外,一个访问量较大的网站,apache默认的150连接肯定是不行的。
具体操作如下。寻找:
<IfModule prefork.c>;
找到这段之后,按照上述帖子的推荐值修改为:
<IfModule prefork.c>;
StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 1500 (这个要大于256,ServerLimit 2000这个参数必须同时有)
MaxRequestsPerChild 10000
</IfModule>;
至此,httpd.conf的设置完成。可以保存退出了。
工作还没有完,给php设置ini。如果没什么特殊要求,可以直接使用默认推荐的php.ini。
#cd /usr/local/etc
#cp php.ini-recommeded php.ini
然后修改一下php.ini 的一些参数如:内存使用,程序运行的时间等
session.save_path = /tmp/session
chmod 744 session
下面是禁止函数如下:
exec,system,shell_exec,passthru,proc_open,proc_get_status,chroot,escapeshellcmd,escapeshellarg,phpinfo (popen函数与系统信息phpsysinfo 有关,不能被禁止)
此时,重启机器,http方式访问这台服务器,例如http://192.168.0.1,就能看到apache2的页面了。 此时,可以用ee在服务器默认的web目录里写一个简单的php测试页面,例如
#ee /usr/local/www/data/index.php 文件里面只有这么一行代码:
<? phpinfo(); ?>; 此时再访问http://192.168.0.1,就可以看到本机的php页面信息了。
安装,Zend,通过FTP 上传这个程序进行安装,最后再安装 eaccelerator 加速器.
Zend
tar -zxvf ZendOptimizer-2.6.2-FreeBSD5.4-i386.tar.gz
#cd ZendOptimizer-2.6.2-FreeBSD5.4-i386
#./install.sh
完毕!
cd /usr/ports/www/ eaccelerator
make install clean
*****************************************************************************
You have installed the eaccelerator package.
Edit /usr/local/etc/php.ini and add:
zend_extension="/usr/local/lib/php/20020429/eaccelerator.so"
建立:
Then create the cache directory:
mkdir /tmp/eaccelerator
chown www /tmp/eaccelerator
chmod 0700 /tmp/eaccelerator
修改属性.
IPFW 放火墙
方法一:加入内核中。速度快 || 方法二:启动加载。方便
1.在内核中加入后编译
options  IPFIREWALL
options  IPFIREWALL_VERBOSE
options  IPFIREWALL_VERBOSE_LIMIT=50
options  IPFIREWALL_DEFAULT_TO_ACCEPT (注意不需要)
# 接受过滤器中的静态连接
options ACCEPT_FILTER_DATA
options ACCEPT_FILTER_HTTP
针对 IPv6
options  IPV6FIREWALL
options  IPV6FIREWALL_VERBOSE
options  IPV6FIREWALL_VERBOSE_LIMIT
options  IPV6FIREWALL_DEFAULT_TO_ACCEPT (注意)
我们使用方法二:启动加载。调试方便
1.在 /etc/rc.conf 中加入:
firewall_enable="YES"
firewall_script="/etc/ipfw.conf"
#firewall_logging="YES" 目的就是:/etc/sysctl.conf 中的net.inet.ip.fw.verbose=1
2.在/etc/sysctl.conf
net.inet.ip.fw.verbose=1 (启动日志)
net.inet.ip.fw.verbose_limit=5 (同一个信息只记录5次)
配置 ee /etc/syslog.conf
在最下面加入:ipfw.log 的路径
!ipfw
*.*      /var/log/ipfw.log
三、关于ipfw.conf 语法
# ee /etc/ipfw.conf
我添加如下规则:基本适合web+ssh+ftp+sendmail
######## TCP ##################
ipfw add 0005 deny tcp from any to any in tcpflags syn,fin
######### www ssh ftp ##########
ipfw add 10002 allow tcp from any to me 80 in
ipfw add 10003 allow tcp from any to me 22 in
ipfw add 10004 allow tcp from any to me 21 in
ipfw add 10005 allow tcp from any to me 20 in
ipfw add 10006 allow tcp from any to me 25 in
################################
ipfw add 19008 allow tcp from me to any out setup keep-state
ipfw add 19009 allow all from me to any out
ipfw add 20000 allow udp from any 53 to me    #dns for ping wwwsohu.com
######### ICMP #################
ipfw add 30000 allow icmp from any to any icmptypes 3
ipfw add 30001 allow icmp from any to any icmptypes 4
ipfw add 30002 allow icmp from any to any icmptypes 8 out
ipfw add 30003 allow icmp from any to any icmptypes 0 in
ipfw add 30004 allow icmp from any to any icmptypes 11 in
####################################


特别推荐

广而告之