freebsd下安装Nginx

安装  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




你可能感兴趣的:(freebsd)