FreeBSD Nginx 环境搭建教程.docx
- 文档编号:27228875
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:15
- 大小:35.83KB
FreeBSD Nginx 环境搭建教程.docx
《FreeBSD Nginx 环境搭建教程.docx》由会员分享,可在线阅读,更多相关《FreeBSD Nginx 环境搭建教程.docx(15页珍藏版)》请在冰豆网上搜索。
FreeBSDNginx环境搭建教程
FreeBSD+Nginx环境搭建教程
2010-03-3012:
27
2010年02月22日星期一下午05:
12
为什么要选择FreeBSD?
官方网站:
www.freebsd.org中文网站:
http:
//www.freebsd.org/zh_CN/
FreeBSD是一个优秀的unix操作系统,基于宽松的BSD协议,是完美的企业级操作系统,以重点突出性能和安全而闻名,行业领先的企业多年以来一直使用FreeBSD服务器。
具有同所有其它开源软件操作系统竞争的高级性能。
1.Unix兼容性强
2.速度快
3.极其稳定、可靠
4.强大的网络功能
5.多用户、多任务
6.使用方便(按照极好的说明文件操作)
为什么要选择Nginx?
Nginx(“enginex”)是一个高性能的HTTP和 反向代理服务器,也是一个IMAP/POP3/SMTP 代理服务器。
Nginx是由 IgorSysoev为俄罗斯访问量第二的Rambler.ru站点开发的,它已经在该站点运行超过四年多了。
Igor将源代码以类BSD许可证的形式发布。
自Nginx发布四年来,Nginx已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。
目前国内各大门户网站已经部署了Nginx,如新浪、网易、腾讯等;国内几个重要的视频分享网站也部署了Nginx,如六房间、酷6等。
新近发现Nginx技术在国内日趋火热,越来越多的网站开始部署Nginx。
Nginx是一个很牛的高性能Web和反向代理服务器,它具有有很多非常优越的特性:
∙在高连接并发的情况下,Nginx是Apache服务器不错的替代品:
Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一.能够支持高达50,000个并发连接数的响应,感谢Nginx为我们选择了 epollandkqueue作为开发模型;
∙内存消耗少:
在3万并发连接下,开启10个Nginx进程消耗150M左右内存(15M*10);
∙不要钱:
Nginx为开源软件,可以免费使用。
而购买F5BIG-IP、NetScaler等硬件负载均衡交换机刚需要十多万至几十万元人民币;
∙Nginx作为负载均衡服务器:
Nginx既可以在内部直接支持 Rails和 PHP程序对外进行服务,也可以支持作为HTTP代理服务器对外进行服务.Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal要好很多;
∙作为邮件代理服务器:
Nginx同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm描述了成功并且美妙的使用经验;
∙Nginx是一个[#installation安装]非常的简单,配置文件?
非常简洁(还能够支持perl语法),Bugs非常少的服务器:
Nginx启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动.你还能够不间断服务的情况下进行软件版本的升级;
∙稳定性高:
用于反向代理,宕机的概率微乎其微。
4GB内存的服务器+Apache(prefork模式)一般只能处理3000个并发连接,因为它们将占用3GB以上的内存,还得为系统预留1GB的内存。
Nginx0.7.51+PHP5.2.8(FastCGI)服务器在3万并发连接下,开启的10个Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M内存(20M*64=1280M),加上系统自身消耗的内存,总共消耗不到2GB内存。
如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500M。
为什么Nginx的性能要比Apache高得多?
这得益于Nginx使用了最新的epoll(Linux2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。
目前Linux下能够承受高并发访问的Squid、Memcached都采用的是epoll网络I/O模型。
处理大量的连接的读写,Apache所采用的select网络I/O模型非常低效。
下面用一个比喻来解析Apache采用的select模型和Nginx采用的epoll模型进行之间的区别:
假设你在大学读书,住的宿舍楼有很多间房间,你的朋友要来找你。
select版楼管大妈就会带着你的朋友挨个房间去找,直到找到你为止。
而epoll版楼管大妈会先记下每位同学的房间号,你的朋友来时,只需告诉你的朋友你住在哪个房间即可,不用亲自带着你的朋友满大楼找人。
如果来了10000个人,都要找自己住这栋楼的同学时,select版和epoll版楼管大妈,谁的效率更高,不言自明。
同理,在高并发服务器中,轮询I/O是最耗时间的操作之一,select和epoll的性能谁的性能更高,同样不言自明了。
安装FreeBSD7.2
操作系统的安装建议参考FreeBSDHandbook,在此仅给出链接,以避免不必要的重复劳动:
∙英文版
http:
//www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/install.html
∙中文版
.freebsd.org/doc/zh_CN.GB2312/books/handbook/install.html
安装时的注意事项
1.磁盘分区
由于是WEB服务系统,网站目录都放于/home目录下,因此home分区要有足够的空间。
以一块硬盘146G/内存4G的服务器为例,可做如下分区:
/1024M
swap4096M
/var10G
/usr20G
/home110G
/tmp1024M
2.软件包的选择
我们的WEB服务系统是要对外服务的,所以尽可能少的选择软件包,安装时建议选择Minimal,然后进入Custom选择doc,info,man,src即可。
配置1.编辑/etc/rc.conf确保有如下内容:
sshd_enable="YES"
named_enable="YES"
2.根据硬件的配置重新编译内核,编译内核的办法参考FreeBSDHandbook,这里只给出链接:
∙英文版
http:
//www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html
∙中文版
.freebsd.org/doc/zh_CN.GB2312/books/handbook/kernelconfig.html
编译后系统的性能将得到较大的提升。
获取相关开源软件包
本文中提到的所有开源软件包为截止到2009年10月20日的最新稳定版,且均从官方网站下载。
mkdir-p/home/software
cd/home/software
fetchhttp:
//sysoev.ru/nginx/nginx-0.8.24.tar.gz
fetchftp:
//ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.00.tar.gz
fetchftp:
//xmlsoft.org/libxml2/libxml2-2.7.6.tar.gz
fetch
fetchftp:
//ftp.simplesystems.org/pub/libpng/png/src/libpng-1.2.40.tar.gz
fetchhttp:
//www.ijg.org/files/jpegsrc.v7.tar.gz
fetch
fetchhttp:
//www.libgd.org/releases/gd-2.0.35.tar.gz
fetch
fetchhttp:
//php-fpm.org/downloads/php-5.2.11-fpm-0.5.13.diff.gz
fetchhttp:
//ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.tar.gz
安装Mysql5.1.40
Mysql5.1.40下载地址:
pwgroupaddmysql
pwuseraddmysql-gmysql-d/dev/null-s/sbin/nologin
tarzxvfmysql-5.1.40.tar.gz
cdmysql-5.1.40
./configure–prefix=/usr/local/webserver/mysql/–enable-assembler–with-extra-charsets=complex–enable-thread-safe-client–with-big-tables–with-readline–with-ssl–with-embedded-server–enable-local-infile–with-plugins=innobase
make&&makeinstallclean
chmod+w/usr/local/webserver/mysql
chown-Rmysql:
mysql/usr/local/webserver/mysql
cp/usr/local/webserver/mysql/support-files/my-f/usr/local/webserver/mysql/f
cd..
以mysql用户帐号的身份建立数据表
/usr/local/webserver/mysql/bin/mysql_install_db–datadir=/usr/local/webserver/mysql/data–user=mysql
创建Mysql开机启动脚本
cp/usr/local/webserver/mysql/share/mysql/mysql.server/usr/local/etc/rc.d/mysql.sh
为mysql.sh脚本设置可执行属性
chmod+x/usr/local/etc/rc.d/mysql.sh
修改/etc/rc.conf
vi/etc/rc.conf
加入以下内容
mysql_enable=”YES”
启动Mysql
/usr/local/etc/rc.d/mysql.shstart
安装Nginx
安装Nginx所需的pcre库
tarzxvfpcre-8.00.tar.gz
cdpcre-8.00
./configure
make&&makeinstallclean
cd..
安装Nginx0.8.24
tarzxvfnginx-0.8.24.tar.gz
cdnginx-0.8.24
./configure–user=www–group=www–prefix=/usr/local/webserver/nginx–with-http_stub_status_module–with-http_ssl_module
make&&makeinstallclean
cd..
创建Nginx日志目录
mkdir-p/var/log/nginx
chmod+w/var/log/nginx
chown-Rwww:
www/var/log/nginx
创建Nginx配置文件
rm-f/usr/local/webserver/nginx/conf/nginx.conf
vi/usr/local/webserver/nginx/conf/nginx.conf
输入以下内容:
userwwwwww;
worker_processes8;
error_log/var/log/nginx/error.log;
pid/var/log/nginx/nginx.pid;
worker_rlimit_nofile51200;
events{
usekqueue;
worker_connections51200;
}
http{
includemime.types;
default_typeapplication/octet-stream;
server_names_hash_bucket_size128;
client_header_buffer_size32k;
large_client_header_buffers432k;
client_max_body_size8m;
sendfileon;
tcp_nopushon;
keepalive_timeout30;
tcp_nodelayon;
fastcgi_connect_timeout300;
fastcgi_send_timeout300;
fastcgi_read_timeout300;
fastcgi_buffer_size64k;
fastcgi_buffers464k;
fastcgi_busy_buffers_size128k;
fastcgi_temp_file_write_size128k;
gzipon;
gzip_min_length1k;
gzip_buffers416k;
gzip_http_version1.1;
gzip_comp_level2;
gzip_typestext/plainapplication/x-javascripttext/cssapplication/xml
gzip_varyon;
server{
listen80;
server_namelocalhost;
root/home/excms;
indexindex.htmlindex.htmindex.php;
location~.php${
fastcgi_pass127.0.0.1:
9000;
fastcgi_indexindex.php;
fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
includefastcgi_params;
}
location/nginx_status{
stub_statuson;
access_logoff;
}
}
}
创建Nginx开机启动脚本
vi/usr/local/etc/rc.d/nginx.sh
加入以下内容
#!
/bin/sh
nginx=/usr/local/webserver/nginx/sbin/nginx
conf=/usr/local/webserver/nginx/conf/nginx.conf
case$1in
start)
echo-n"StartingNginx"
$nginx-c$conf
echo"done"
;;
stop)
echo-n"StoppingNginx"
killall-9nginx
echo"done"
;;
test)
$nginx-t-c$conf
;;
reload)
echo-n"ReloadingNginx"
psauxww|grepnginx|grepmaster|awk'{print$2}'|xargskill-HUP
echo"done"
;;
restart)
$nginxstop
$nginxstart
;;
show)
ps-aux|grepnginx
;;
*)
echo-n"Usage:
$0{start|restart|reload|stop|test|show}"
;;
esac
为nginx.sh脚本设置可执行属性
chmod+x/usr/local/etc/rc.d/nginx.sh
修改/etc/rc.conf
vi/etc/rc.conf
加入以下内容
nginx_enable=”YES”
启动Nginx
/usr/local/etc/rc.d/nginx.shstart
在不停止Nginx服务的情况下平滑变更Nginx配置
修改/usr/local/webserver/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确:
/usr/local/etc/rc.d/nginx.shtest
如果屏幕显示以下两行信息,说明配置文件正确:
theconfigurationfile/usr/local/webserver/nginx/conf/nginx.confsyntaxisok
theconfigurationfile/usr/local/webserver/nginx/conf/nginx.confwastestedsuccessfully
平滑变更Nginx配置
/usr/local/etc/rc.d/nginx.shreload
安装GD
安装zlib
tarzxvfzlib-1.2.3.tar.gz
cdzlib-1.2.3
./configure
make&&makeinstallclean
cd..
安装libpng
tarzxvflibpng-1.2.40.tar.gz
cdlibpng-1.2.40
./configure
make&&makeinstallclean
cd..
安装jpeg
tarzxvfjpegsrc.v7.tar.gz
cdjpeg-7
./configure–prefix=/usr/local/jpeg7-enable-shared-enable-static
make&&makeinstallclean
cd..
安装freetype
tarzxvffreetype-2.3.11.tar.gz
cdfreetype-2.3.11
./configure
make&&makeinstallclean
cd..
安装gd2.0.35
tarzxvfgd-2.0.35.tar.gz
cdgd-2.0.35
./configure--prefix=/usr/local/gd2--with-jpeg=/usr/local/jpeg7--width-png--width-zlib--width-freetype
make&&makeinstallclean
cd..
安装libxml2
tar-zxvflibxml2-2.7.6.tar.gz
cdlibxml2-2.7.6
./configure
make&&makeinstallclean
cd..
安装PHP5.2.11
编译安装PHP5.2.11所需的支持库libiconv
tarzxvflibiconv-1.13.tar.gz
cdlibiconv-1.13
./configure–prefix=/usr/local
make&&makeinstallclean
cd..
编译安装PHP(FastCGI模式)
tarzxvfphp-5.2.11.tar.gz
gzip-cdphp-5.2.11-fpm-0.5.13.diff.gz|patch-dphp-5.2.11-p1
cdphp-5.2.11
./configure–prefix=/usr/local/webserver/php–with-config-file-path=/usr/local/webserver/php/etc–with-mysql=/usr/local/webserver/mysql–with-iconv-dir–with-freetype-dir–with-jpeg-dir–with-png-dir–with-zlib–with-gd–enable-gd-native-ttf–with-libxml-dir–enable-xml–disable-rpath–enable-discard-path–enable-safe-mode–enable-bcmath–enable-shmop–enable-sysvsem–enable-inline-optimization–with-curlwrappers–enable-mbregex–enable-fastcgi–enable-fpm–enable-force-cgi-redirect–enable-mbstring–with-openssl–enable-pcntl–enable-sockets
makeZEND_EXTRA_LIBS=’-liconv’
makeinstallclean
cpphp.ini-dist/usr/local/webserver/php/etc/php.ini
cd..
安装ZendOptimizer
ZendOptimizer官方下载地址:
tarzxvfZendOptimizer-3.3.9-freebsd6.0-i386.tar.gz
cdZendOptimizer-3.3.3-freebsd6.0-i386
ln-s/usr/lib/libc.so/usr/lib/libc.so.6
ln-s/usr/lib/libcrypt.so/usr/lib/libcrypt.so.3
ln-s/usr/lib/libutil.so/usr/lib/libutil.so.5
ln-s/usr/lib/libm.so/usr/lib/libm.so.4
./install-tty
cd..
安装过程中的提示全默认就可以,指定php.ini文件路
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FreeBSD Nginx 环境搭建教程 环境 搭建 教程