安装 7.0 最小 带典型ports 10:18 2008-11-15
192.168.0.12
#学习下边的命令会更快的安装,找出安装中的错误修改方式
在/etc/resolv.conf里加上
domain dingdi.com
nameserver 219.149.194.55
nameserver 211.93.64.129
这个是dns
fetch http://sysoev.ru/nginx/nginx-0.7.19.tar.gz
fetch http://www.php.net/get/php-5.2.6.tar.gz/from/this/mirror
fetch http://php-fpm.anight.org/downloads/head/php-5.2.6-fpm-0.5.9.diff.gz
fetch http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.29-rc.tar.gz/from/http://mirror.x10.com/mirror/mysql/
fetch http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz
fetch "http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_mirror=0"
fetch "http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.7.tar.gz?modtime=1194463373&big_mirror=0"
fetch http://pecl.php.net/get/memcache-2.2.3.tgz
fetch "http://downloads.sourceforge.net/mhash/mhash-0.9.9.tar.gz?modtime=1175740843&big_mirror=0"
fetch ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.7.tar.gz
fetch http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
fetch http://home.tiscali.cz:8080/~cz210552/distfiles/webbench-1.5.tar.gz
在freebsd中,fetch 然后加网址,便可以下载套包了
ifconfig -an 查看网卡
需要启动的服务,注意你机器离得服务都有什么,我这里都写了 有的没有启动。^_^
ee /etc/rc.conf编辑网卡ip 编辑后重启
inetd_enable="YES"
sshd_enable="YES"
nfs_client_enable="YES"
#rpcbind_enable="YES"
#nfs_server_enable="YES"
apache2_enable="YES"
mysql_enable="YES"
nginx_enable="YES"
编译内核
pkg_add -r cvsup-without-gui
rehash
cd /usr
cvsup -L 2 -h cvsup3.cn.freebsd.org /usr/share/examples/cvsup/standard-supfile
cd /usr/src
make -j4 buildworld
cd /usr/src/sys/i386/conf
ls
cp GENERIC DEMO
ee DEMO
cd /usr/src
make buildkernel KERNCONF=DEMO
make installkernel KERNCONF=DEMO
reboot
单用户模式登录 选择4
mount -a
cd /usr/src
mergemaster -p
make installworld
mergemaster
一直i下去就可以
reboot
#######################################################################
1) 安装ports
ee /.cshrc
alias ls ls -Gl
set prompt = "%B%n@%m[%/]# "
setenv PACKAGEROOT ftp://ftp.tw.freebsd.org
reboot
pkg_add -r cvsup-without-gui
rehash 更新
转到 cd /usr/share/examples/cvsup 目录
编辑 ee ports-supfile
把default 指向cvsup2.cn.freebsd.org 电信
保存执行
cvsup -g -L 2 ports-supfile
以上更新ports 以上步骤网速快的话30分钟。慢的话2个小时了
查看一下更新的ports
cd /usr/ports/
ls
##################################################################
2) 安装mysql
#############################################################################################
另一种方法51数据库
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
rehash
ee /etc/rc.conf
nginx_enable="YES"
mysql_enable="YES"添加
rehash
cd /usr/local/etc/rc.d/
ls
显示mysql-server
./mysql-server start
显示starting mysql
mysql进入 exit推出
这步可以后做
#/usr/local/bin/mysqladmin -u root password '111111' ##修改root密码,newpass是你需要改的密码
关闭mysql可以使用mysqladmin -uroot -p shutdown
加入用户名密码后用
mysql -uroot -p
mima进入
root 111111
/usr/local/vhost/bin/mysqladmin -u root password '111111'
##################################################################
/usr/local/www/apache22/data
3)安装apache
cd /usr/ports/www/apache20
make install clean
cd /usr/local/etc/apache2/
ls
cp httpd.conf httpd.conf.bak1
ee httpd.conf
修改httpd.conf(这里仅列出要修改/增加的部分)
vi /usr/local/etc/apache2/httpd.conf
把KeepAlive On修改为KeepAlive Off,在下面添加
ServerLimit 2048
MaxClients增加到512
Listen 127.0.0.1:81 #由于httpd服务器不需要对外开放,仅仅处理nginx转发过来的PHP请求,所以仅仅需要监听本地的端口.
另外增加对PHP的支持
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
至于添加虚拟主机的部分将不再罗嗦,注意虚拟主机也监听本地81端口就可以了
我自己修改的配置 在httpd.conf里
cd /usr/local/etc/rc.d/
ls
./apache2 start
ee /etc/rc.conf
ls
这步可以后做装完php后启动
apache2_enable="YES"添加
#############################################################################
这个是留给info.php的代码。
/usr/local/www/apache2/data
phpinfo();
?>
##########################################################################################
4) 安装php
#cd /usr/ports/lang/php5
#make config ##配置编译参数
[X] CLI Build CLI version
[X] CGI Build CGI version
[X] APACHE Build Apache module
[ ] DEBUG Enable debug
[X]] SUHOSIN Enable Suhosin protection system
[X] MULTIBYTE Enable zend multibyte support
[ ] IPV6 Enable ipv6 support
[ ] REDIRECT Enable force-cgi-redirect support (CGI only)
[ ] DISCARD Enable discard-path support (CGI only)
[X] FASTCGI Enable fastcgi support (CGI only)
[X] PATHINFO Enable path-info-check support (CGI only)
#make install clean
# cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini ##cp php.ini配置文件
cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
##############################################################################################################
5) 安装php5-extensions
# cd /usr/ports/lang/php5-extensions/
#make config
Options for php5-extensions 1.1
-------------------------------------------------
[X] CURL CURL support
[X] FTP FTP support
[X] GD
[X] GETTEXT
[X] MBSTRING multibyte string support
[X] MCRYPT Encryption support
[X] MYSQL
[X] PCRE Perl Compatible Regular Expression support
[ ] POSIX //去掉.
[ ] SQLITE //去掉.
[X] ZIP ZIP support
[X] ZLIB
# make install clean
########################################################################################
########################################################################################
6)安装eAccelerator
cd /usr/ports/www/eaccelerator
make install clean
把以下部分添加到php.ini尾端:
ee /usr/local/etc/php.ini
extension_dir="/usr/local/lib/php/20060613/"
extension="eaccelerator.so"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.shm_size="64"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="60"
eaccelerator.shm_prune_period="60"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
eaccelerator.keys="shm_and_disk"
eaccelerator.sessions="shm_and_disk"
eaccelerator.content="shm_and_disk"
建立缓存目录以及修改权限
引用:
mkdir /tmp/eaccelerator
chmod 777 /tmp/eaccelerator
chown nobody:nobody /tmp/eaccelerator
下边的是你的虚拟主机目录,自己随便建一个
mkdir /home/ddbtbt
chown www:www /home/ddbtbt
##############################################################################
7)安装Zend Optimizer
#cd /usr/ports/devel/ZendOptimizer/
#make #不要安装,只需要下载解包
#cd /usr/ports/devel/ZendOptimizer/work/ZendOptimizer-*
#./install-tty ##会出现一个文字的安装界面,只是最后一步,不要选择apache就可以了
#ee /usr/local/etc/php.ini #插入zend的路径,一般来说,上面的安装会自动加入下面的文字,假如没有,请手动添加。
[Zend]
extension_dir="/usr/local/lib/php/20060613/"
extension="eaccelerator.so"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.shm_size="64"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="60"
eaccelerator.shm_prune_period="60"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
eaccelerator.keys="shm_and_disk"
eaccelerator.sessions="shm_and_disk"
eaccelerator.content="shm_and_disk"
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.0
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.0
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so
小提示:安装zend,在freebsd下面,目前只有支持到php5.1.x,对于php5.2.x还不能支持,因为zend还没有为php5.2.x开发版本,在网上查了好多关于解决此类的问题,但得到的结果是,zend可以顺利安装,phpinfo也显示zend正常了,但程序无法调用,即zend没有工作,也就是目前无法解决,我想只有等到zend php5.2.x的版本后,才可以解决此问题,也希望哪位已经解决此类问题的兄弟,share一下你的经验。假如你非要使用zend,那就请你将php降到5.1.x,或者你不当心已经升级了ports,那建议你可以安装php4.x,毕竟目前php4.x还通用于大部分的环境
#############################################################################
最好用第三方软件……
8)配置ftp
配置ftp(系统自带)
引用:
# ee /etc/inetd.conf
复制内容到剪贴板
代码:
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -h
引用:
# ee /etc/rc.conf
复制内容到剪贴板
代码:
inetd_enable="YES"
启动ftp
引用:
# /etc/rc.d/inetd start
sockstat -l4
adduser
ee /etc/ftpchroot
ddbtbt /home/ddbtbt
############################################################
9)nginx的安装以及配置
引用:
cd /usr/ports/www/nginx
make install
有几个module是我们需要的,要选上
引用:
HTTP module
http_addition module
http_rewrite module
http_realip module
http_stub_status module
其他的看自己需要了
ee /usr/local/etc/nginx/nginx.conf
引用:
我自己的那个nginx.conf
测试一下你的配置文件是否都正确
引用:
/usr/local/sbin/apachectl configtest
/usr/local/sbin/nginx -t
##############################################################
需要启动的服务,注意你机器离得服务都有什么,我这里都写了 有的没有启动。^_^
ee /etc/rc.conf编辑网卡ip 编辑后重启
inetd_enable="YES"
sshd_enable="YES"
nfs_client_enable="YES"
#rpcbind_enable="YES"
#nfs_server_enable="YES"
apache2_enable="YES"
mysql_enable="YES"
nginx_enable="YES"
保存
到cd /usr/local/etc/rc.d/
./apache2 start
./mysql start
./nginx start
找到你自己的虚拟主机目录就可以上传dz了
安装就不用我教了
####################################################################
nfs
在 UNIX 的世界里,二台 UNIX 系统要共享档案时,最常使用的协议是 NFS (Network File System)。NFS 是一个历史悠久的协议,它就像是 Windows 世界中的网络芳邻一样,可以让我们将另一台机器的目录当成本机的目录使用。
本章将介绍如何架设 NFS 服务器,读完本章后,您将了解下列主题:
NFS 的运作原理。
如何设定 NFS。
如何使用 NFS 服务器。
21.1 概论
NFS 是 Network File System。NFS 就好像是 UNIX 系统中的网络芳邻,您可以使用 NFS 将服务器上的资料夹汇出,让其它 UNIX 主机可以将所汇出的数据夹挂入。当您有多台 UNIX 主机时,使用 NFS 可以让您共享同一个数据夹。如此一来,同一份数据就不必放在多台机器上,而可以经由 NFS 来节省空间并达到数据的同步。使用 NFS 不仅可以分享一个系统中的目录,您也可以用来分享光驱、软盘机等装置。
由于 NFS 发展已久,它和一般档案分享协议最大的差别在于 NFS 的主要程序是内建在系统核心中,而非像 Samba、FTP 等主要的程序是安装在另一套软件上。不过这不代表 NFS 不需要任何软件就可以运行,在 FreeBSD 中,它还是需要下列几支程序的帮忙:
nfsd:用来提供客户端 NFS 服务。
mountd:用来告诉 nfsd 要分享的数据夹有哪些。nfsd 会将收到的 NFS 要求交由这支程序来执行。
rpcbind:用来告诉 NFS 客户端服务器所使用的连接埠为何。
如果您使用的是 FreeBSD 4.x,您会使用 portmap 而非 rpcbind 这支程序。
在客户端方面,要使用 NFS 服务并不需要任何 daemon,但您也可以执行 nfsiod 这支程序以提高 NFS 的效能。
21.2 NFS 设定
首先,我们要先编辑 server 端的 /etc/rc.conf ,并加入下列的设定:
# 如果您使用 FreeBSD 4.x,请使用 portmap_enable。
portmap_enable="YES"
# 由于 FreeBSD 5.x 中,portmap 这支程序己被取代为 rpcbind,
# 所以如果您使用 FreeBSD 5.x,请使用 rpcbind_enable。
rpcbind_enable="YES"
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 4"
mountd_enable="YES"
mountd_flags="-r"
在选项 nfs_server_flags 中,-u 表示我们提供 UDP 方式联机,而 -t 表示以 TCP 方式联机。如果您所要使用 NFS 的 client 都是 FreeBSD,您可以只以 TCP 联机,如此可以有较佳的效能。-n 4 表示我们一次打开四个 nfsd 的 daemon。
接着我们要设定 /etc/exports,这个档案是用来设定我们所要分享的数据夹及其权限。/etc/exports 可能长得像这个样子。
/usr/src /usr/local -maproot=root
/home -alldirs -maproot=root -network 192.168.0.0 -mask 255.255.255.0
第一个字段为所要分享的目录,如果所要分享的目录位于同一个 slice 上,则必须写在同一行。例如我们要分享的目录是 /usr/src 及 /usr/local,因为这二个目录位于同一个硬盘的分割区上,所以必须写在同一行,也就是说同一个分割区只有一种权限。在目录之后,我们会指定一些设定权限的参数,其意义如下:
参数 意义
-ro 表示 read only,只读。
-maproot=user 如果 client 以 root 存取,则将它的权限对映成本机 user 的权限。
-mapall=user 将所有 client 的存取联机对映到 user,也就是说所有人的身份都转成 user。
-alldirs 可以让使用者将该分享数据夹的任一目录做为 mount point。也就是说当我们分享的是 /usr 时,client 也可以将 /usr/include 当成挂入点来 mount。但前提是 /usr 必须是一个独立的 filesystem,也就是说 /usr 必须是独立分割成一个 slice。
-network IP -mask MASK 指定允许联机的网域。
您可以 man exports 来获得更多关于 exports 格式的信息。我们每次设定完 /etc/exports 都必须以下列指令重新启动 mountd:
# kill -HUP `cat /var/run/mountd.pid`
不过由于我们是第一次设定,所以连 mountd 都还没有启动,所以你可以选择重新开机或是执行下列指令来启动 NFS 服务。
首先是启动 RPC port map,如果您是使用 FreeBSD 4.x,请将下列 rpcbind 指令改为 portmap:
# rpcbind
# nfsd -u -t -n 4
# mountd -r
完成了 Server 端的设定后,我们还要做 client 端的设定。在 client 端的 rc.conf 中,我们要加入下列的设定:
nfs_client_enable="YES"
nfs_client_flags="-n 4"
当设定了 nfs_client_enable 为 YES 后,在开机时即会自动启动 nfsiod ,而这里的 -n 4 和 server 的设定一样,代表我们一次要启动四份 nfsiod 来做 nfs 联机。我们不一定要在 NFS client 启动 nfsiod,如果没有 nfsiod,照样可以使用,但 nfsiod 可以提高联机效率。
设定完 rc.conf 后,要重新开机才会生效,同样的,如果您不想重新开机,你可以手动执行下列指令来让 nfs client 生效:
# nfsiod -n 4
现在我们可以开始使用 NFS 了。首先,我们可以使用 showmount 这个指令来查看 server 上有哪些分享的数据夹,假设 NFS server为 192.168.1.1:
# showmount -e 192.168.1.13
Exports list on 192.168.1.1:
/home Everyone
/usr 192.168.1.2
接着我们就可以将想要挂入的数据夹 mount 进来:
# mount 192.168.1.1:/home /mnt
如果您要想在一开机就将该数据夹挂入,您可以编辑 /etc/fstab,并加入下列设定:
192.168.1.1:/home /mnt nfs rw 0 0
21.3 NFS 的限制
在使用 NFS 时,有些事我们必须特别注意。如果您 NFS server 负担相当重,也许你会发现该服务器时常没有响应,而 client 端也会因此而无法动作。这并非 FreeBSD 独有的问题,使用 NFS 时,网络卡的选择及网络整体的品质很重要。否则在 client 和 server 系统负担不一时,很容易产生没有响应的情形。
有时候我们将 mount 某台服务器的数据夹,但如果该服务器关机或是停止 NFS 服务,当您 ls 所挂入的目录时,整台机器会因而停止动作。此时除非该 NFS 服务器又开启,否则您只能重新启动了。因此,建议您 mount NFS 并完成所需的存取动作后,就立即 umount,才不会使 client hang 住。如果您希望当所 mount 的服务器发生问题时,本机可以不受到影响,您可以改用 mount_nfs 指令并加上参数 -i 及 -s。
# mount_nfs -s -i 192.168.1.1:/home /mnt
参数 -i 允许我们在使用 Ctrl+C 来中断 mount 的动作。参数 -s 是使用 soft mount 模式,当档案系统对于所 mount 的服务器操作失败时,重试几次后就不再试了。
FreeBSD下的NFS配置
服务 描述
nfsd NFS, 为来自NFS客户端的 请求服务。
mountd NFS 挂载服务,处理nfsd(8)递交过来的请求。
rpcbind 此服务允许 NFS 客户程序查询正在被 NFS 服务使用的端口。
配置NFS
NFS的配置过程相对简单。这个过程只需要 对/etc/rc.conf文件作一些简单修改。
安装rpc #cd /usr/ports/math/rpc make install clean
在NFS服务器这端,确认/etc/rc.conf 文件里头以下开关都配上了:
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 4"
rpc_statd_enable="YES"
rpc_lockd_enable="YES"
mountd_flags="-r"
只要NFS服务被置为enable,mountd 就能自动运行。
在客户端一侧,确认下面这个开关出现在 /etc/rc.conf里头:
nfs_client_enable="YES"
nfs_client_flags="-n 4"
像nfsd,-n 4告诉nfsiod运行自己的4个拷贝。
二,设置
etc/exports文件指定了哪个文件系统 NFS应该输出(有时被称为“共享”)。 /etc/exports里面每行指定一个输出的文件系统和哪些机器可以访问该文件系统。在指定机器访问权限的同时,访问选项开关也可以被指定。
格式:
[共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]
下面是一些NFS共享的常用参数:
ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
async NFS在写入数据前可以相应请求
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
hide 在NFS共享目录中不共享其子目录
no_hide 共享NFS目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squas root用户具有根目录的完全管理访问权限
anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID
配置文件/etc/exports内容如下:
$ cat /etc/exports
/home/share 192.168.1.15(rw,sync) *(ro)
配置说明: 对192.168.1.15赋予读写权限,其他机器仅有只读权限。
四.客户端配置
1.查看NFS服务器的输出
#showmount -e 192.168.1.1
2.挂载NFS服务器中的共享目录到本地目录/mnt/下
#mount -t nfs 192.168.1.1:/home /mnt/
3.卸载系统中已挂载的NFS共享目录
#umount /mnt/
4.修改fstab文件让系统启动时自动挂载NFS文件
#vi /etc/fstab
192.168.1.1:/home /mnt nfs defaults 0 0
五、安全性
---------
portmap: 111
NFS: 2049
防止使用IP欺骗和RPC重定向技术通过lo回环进行攻击以及限定授权主机:
iptables -A INPUT -p udp -d 127.0.0.1 --dport 111 -j DROP
iptables -A INPUT -p udp -d 127.0.0.1 --dport 2049 -j DROP
iptables -A INPUT -p udp -s 10.0.0.2 --dport 111 -j ACCEPT
iptables -A INPUT -p udp -s 10.0.0.2 --dport 2049 -j ACCEPT