- 浏览: 152265 次
- 来自: ...
文章分类
- 全部博客 (122)
- 工作日志 (6)
- jive学习 (3)
- Hibernate 学习 (4)
- Spring 学习 (5)
- JAVA 基础学习 (14)
- 网上JAVA好帖子 (2)
- 生活小常识 (12)
- 设计模式学习 (1)
- Struts学习 (4)
- java转贴网址 (13)
- 盈利模式 (2)
- 技术探索 (8)
- Linux资料 (4)
- 博客好文章 (3)
- 业务或管理学习 (6)
- 项目管理资料 (14)
- 开源框架学习 (4)
- java 可视化开发 (1)
- 配置MYsql问题-1045的具体方法 (1)
- dasfd (0)
- 人际关系 沟通表达 (1)
- Android 学习 (4)
- web (1)
- DDD 资料 (1)
- 餐饮资料 (1)
- 项目管理工具 (2)
最新评论
-
hanmiao:
看看人家的文章里排版多整齐,阅读起来也方便。http://yz ...
数据结构_用JAVA实现单链表 -
hanmiao:
太乱了,就不会用代码高亮把它格式化下么?
数据结构_用JAVA实现单链表 -
simpletrc:
引用引用[imgnbnnnnnnnnnn][/img]
JAVA国际化的实现 -
喜太狼:
数据结构_用JAVA实现单链表 -
alask2011:
在myeclipse里面struts2.2.1配置core和x ...
在MyEclipse显示struts2源码和doc文档及自动完成功能
http://www.neeboo.com/jishuwenzhang/fuwuqi/Linuxfuwuqi/2009/0614/747.html
关键字:nginx 负载均衡
http://doc1.fehot.com/1/N/35auviL.html
memcached集群负载均衡
http://simblog.vicp.net/?p=105
http://www.zzbaike.com/wiki/Nginx%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1
http://www.blogjava.net/daniel-tu/archive/2008/12/29/248883.html
注:在相对比较大的网站,节约下来的服务器成本无疑是客观的。而有些小型网站往往服务器不多,如果采用 Apache 这类传统 Web 服务器,似乎也还能撑过去。但有其很明显的弊端: Apache 在处理流量爆发的时候(比如爬虫或者是 Digg 效应) 很容易过载,这样的情况下采用 Nginx 最为合适。
建议方案:
Apache 后台服务器(主要处理php及一些功能请求 如:中文url)
Nginx 前端服务器(利用它占用系统资源少得优势来处理静态页面大量请求)
Lighttpd 图片服务器
总体来说,随着nginx功能得完善将使他成为今后web server得主流.
一个简单的Nginx负载均衡的示例
http://safe.atimg.com/html/jishuziliao/caozuoxitong/20100113/83.html
原生Windows版本nginx的安装与使用体会
http://bbs.linuxtone.org/thread-2553-1-1.html
Nginx 常见应用技术指南[Nginx Tips] 第二版
http://jerryllx.iteye.com/blog/451599
nginx负载均衡和lvs负载均衡的比较分析
http://www.sudone.com/nginx/nginx_vs_lvs.html
编者按:Nginx是目前比较重要的开源性负载均衡技术,新浪、网易、六间房等很多网站都将Nginx部署进自己的网站系统架构,并解决部分问题。本文是作者长期的实战经验,很有参考价值。
本文是我撰写的关于搭建“Nginx + PHP(FastCGI)”Web服务器的第4篇文章。本系列文章作为国内最早详细介绍 Nginx + PHP 安装、配置、使用的资料之一,为推动 Nginx 在国内的发展产生了积极的作用。
众网站纷纷重视Nginx
这是一篇关于Nginx 0.7.x系列版本的文章,安装、配置方式与第3篇文章相差不大,但配置参数有不同。Nginx 0.7.x系列版本虽然为开发版,但在很多大型网站的生产环境中已经使用。
Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。
Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中包括新浪博客、新浪播客、网易新闻等门户网站频道,六间房、56.com等视频分享网站,Discuz!官方论坛、水木社区等知名论坛,豆瓣、YUPOO相册、海内SNS、迅雷在线等新兴Web 2.0网站。
我生产环境下的两台Nginx + PHP5(FastCGI)服务器,跑多个一般复杂的纯PHP动态程序,单台Nginx + PHP5(FastCGI)服务器跑PHP动态程序的处理能力已经超过“700次请求/秒”,相当于每天可以承受6000万(700*60*60*24=60480000)的访问量(更多信息见此),而服务器的系统负载也不高:
如何获取相关开源程序?
安装步骤:
(系统要求:Linux 2.6+ 内核,本文中的Linux操作系统为CentOS 5.1,另在RedHat AS4上也安装成功)
一、获取相关开源程序:
1、利用CentOS Linux系统自带的yum命令安装、升级所需的程序库(RedHat等其他Linux发行版可从安装光盘中找到这些程序库的RPM包,进行安装):
sudo -s LANG=C yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel |
2、RedHat等其他Linux发行版可从安装光盘中找到这些程序库的RPM包(事先可通过类似“rpm -qa | grep libjpeg”的命令查看所需的RPM包是否存在,通常是“xxx-devel”不存在,需要安装)。RedHat可以直接利用CentOS的RPM包安装,以下是RPM包下载网址:
①、RedHat AS4 & CentOS 4 http://mirror.be10.com/centos/4/os/i386/CentOS/RPMS/ ②、RedHat AS5 & CentOS 5 http://mirror.be10.com/centos/5/os/i386/CentOS/ ③、RPM包搜索网站 http://rpm.pbone.net/ http://www.rpmfind.net/ |
3、下载程序源码包:
本文中提到的所有开源软件为截止到2008年8月28日的最新稳定版。
mkdir -p /data0/software cd /data0/software wget http://sysoev.ru/nginx/nginx-0.7.14.tar.gz wget http://www.php.net/get/php-5.2.6.tar.gz/from/this/mirror wget http://php-fpm.anight.org/downloads/head/php-5.2.6-fpm-0.5.8.diff.gz #wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.26-rc.tar.gz/from/http://mirror.x10.com/mirror/mysql/ wget linux/mysql/mysql-5.1.26-rc.tar.gz">http://blog.s135.com/soft/linux/mysql/mysql-5.1.26-rc.tar.gz wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz #wget "http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_mirror=0" wget http://mirror.optus.net/sourceforge/m/mc/mcrypt/libmcrypt-2.5.8.tar.gz #wget "http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.7.tar.gz?modtime=1194463373&big_mirror=0" wget http://mirror.optus.net/sourceforge/m/mc/mcrypt/mcrypt-2.6.7.tar.gz wget http://pecl.php.net/get/memcache-2.2.3.tgz #wget "http://downloads.sourceforge.net/mhash/mhash-0.9.9.tar.gz?modtime=1175740843&big_mirror=0" wget http://mirror.optus.net/sourceforge/m/mh/mhash/mhash-0.9.9.tar.gz wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.7.tar.gz wget |
PHP5安装、配置内容
二、安装PHP 5.2.6(FastCGI模式)
1、编译安装PHP 5.2.6所需的支持库:
tar zxvf libiconv-1.12.tar.gz cd libiconv-1.12/ ./configure --prefix=/usr/local make make install cd ../ tar zxvf libmcrypt-2.5.8.tar.gz tar zxvf mhash-0.9.9.tar.gz cp /usr/local/lib/libmcrypt.* /usr/lib tar zxvf mcrypt-2.6.7.tar.gz |
2、编译安装MySQL 5.1.26-rc
/usr/sbin/groupadd mysql /usr/sbin/useradd -g mysql mysql tar zxvf mysql-5.1.26-rc.tar.gz cd mysql-5.1.26-rc/ ./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 make && make install chmod +w /usr/local/webserver/mysql chown -R mysql:mysql /usr/local/webserver/mysql cp support-files/my-medium.cnf /usr/local/webserver/mysql/my.cnf cd ../ |
附:以下为附加步骤,如果你想在这台服务器上运行MySQL数据库,则执行以下两步。如果你只是希望让PHP支持MySQL扩展库,能够连接其他服务器上的MySQL数据库,那么,以下两步无需执行。
①、以mysql用户帐号的身份建立数据表: |
3、编译安装PHP(FastCGI模式)
tar zxvf php-5.2.6.tar.gz gzip -cd php-5.2.6-fpm-0.5.8.diff.gz | patch -d php-5.2.6 -p1 cd php-5.2.6/ ./configure --prefix=/usr/local/webserver/php --with-config-file-path=/usr/local/webserver/php/etc --with-mysql=/usr/local/webserver/mysql --with-mysqli=/usr/local/webserver/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl sed -i 's#-lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt#& -liconv#' Makefile make make install cp php.ini-dist /usr/local/webserver/php/etc/php.ini cd ../ |
4、编译安装PHP5扩展模块
tar zxvf memcache-2.2.3.tgz cd memcache-2.2.3/ /usr/local/webserver/php/bin/phpize ./configure --with-php-config=/usr/local/webserver/php/bin/php-config make make install cd ../ tar jxvf eaccelerator-0.9.5.3.tar.bz2 |
5、修改php.ini文件
手工修改:查找/usr/local/webserver/php/etc/php.ini中的extension_dir = "./" 修改为extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/" 并在此行后增加以下几行,然后保存: extension = "memcache.so" 再查找output_buffering = Off 自动修改:若嫌手工修改麻烦,可执行以下shell命令,自动完成对php.ini文件的修改: |
6、配置eAccelerator加速PHP:
mkdir -p /usr/local/webserver/eaccelerator_cache vi /usr/local/webserver/php/etc/php.ini |
按shift+g键跳到配置文件的最末尾,加上以下配置信息:
[eaccelerator] zend_extension="/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so" eaccelerator.shm_size="128" eaccelerator.cache_dir="/usr/local/webserver/eaccelerator_cache" eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="1" eaccelerator.debug="0" eaccelerator.filter="" eaccelerator.shm_max="0" eaccelerator.shm_ttl="300" eaccelerator.shm_prune_period="120" eaccelerator.shm_only="0" eaccelerator.compress="1" eaccelerator.compress_level="9" |
修改配置文件:
vi /etc/sysctl.conf |
输入以下内容:
kernel.shmmax = 134217728 |
然后执行以下命令使配置生效:
/sbin/sysctl -p |
7、创建www用户和组,以及供blog.s135.com和www.s135.com两个虚拟主机使用的目录:
/usr/sbin/groupadd www -g 48 /usr/sbin/useradd -u 48 -g www www mkdir -p /data0/htdocs/blog chmod +w /data0/htdocs/blog chown -R www:www /data0/htdocs/blog mkdir -p /data0/htdocs/www chmod +w /data0/htdocs/www chown -R www:www /data0/htdocs/www |
8、创建php-fpm配置文件(php-fpm是为PHP打的一个FastCGI管理补丁,可以平滑变更php.ini配置而无需重启php-cgi):
在/usr/local/webserver/php/etc/目录中创建php-fpm.conf文件: rm -f /usr/local/webserver/php/etc/php-fpm.conf vi /usr/local/webserver/php/etc/php-fpm.conf |
输入以下内容(如果您安装 Nginx + PHP 用于程序调试,请将以下的<value name="display_errors">0</value>改为<value name="display_errors">1</value>,以便显示PHP错误信息,否则,Nginx 会报状态为500的空白错误页):
All relative paths in this config are relative to php's install prefix <section name="global_options"> Pid file Error log file Log level When this amount of php processes exited with SIGSEGV or SIGBUS ... ... in a less than this interval of time, a graceful restart will be initiated. Time limit on waiting child's reaction on signals from master Set to 'no' to debug fpm </section> <workers> <section name="pool"> Name of pool. Used in logs and stats. Address to accept fastcgi requests on. <value name="listen_options"> Set listen(2) backlog Set permissions for unix socket, if one used. Additional php.ini defines, specific to this pool of workers. Unix user of processes Unix group of processes Process manager settings Sets style of controling worker process count. Sets the limit on the number of simultaneous requests that will be served. Settings group for 'apache-like' pm style Sets the number of server processes created on startup. Sets the desired minimum number of idle server processes. Sets the desired maximum number of idle server processes. </value> </value> Time limit on waiting execution of single request Set open file desc rlimit Set max core size rlimit Chroot to this directory at the start Chdir to this directory at the start Redirect workers' stdout and stderr into main error log. How much requests each process should execute before respawn. Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect. Pass environment variables like LD_LIBRARY_PATH </section> </workers> </configuration> |
9、启动php-cgi进程,监听127.0.0.1的9000端口,进程数为200(如果服务器内存小于3GB,可以只开启64个进程),用户为www:
ulimit -SHn 51200 /usr/local/webserver/php/sbin/php-fpm start |
注:/usr/local/webserver/php/sbin/php-fpm还有其他参数,包括:start|stop|quit|restart|reload|logrotate,修改php.ini后不重启php-cgi,重新加载配置文件使用reload。
安装、配置Nginx 0.7.14
三、安装Nginx 0.7.14
1、安装Nginx所需的pcre库:
tar zxvf pcre-7.7.tar.gz cd pcre-7.7/ ./configure make && make install cd ../ |
2、安装Nginx
tar zxvf nginx-0.7.14.tar.gz cd nginx-0.7.14/ ./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module make && make install cd ../ |
3、创建Nginx日志目录
mkdir -p /data1/logs chmod +w /data1/logs chown -R www:www /data1/logs |
4、创建Nginx配置文件
①、在/usr/local/webserver/nginx/conf/目录中创建nginx.conf文件: rm -f /usr/local/webserver/nginx/conf/nginx.conf vi /usr/local/webserver/nginx/conf/nginx.conf |
输入以下内容:
#limit_zone crawler $binary_remote_addr 10m; server #limit_conn crawler 20; location ~ .*\.(php|php5)?$ |
②、在/usr/local/webserver/nginx/conf/目录中创建fcgi.conf文件:
vi /usr/local/webserver/nginx/conf/fcgi.conf |
输入以下内容:
fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; fastcgi_param QUERY_STRING $query_string; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param REMOTE_ADDR $remote_addr; # PHP only, required if PHP was built with --enable-force-cgi-redirect |
5、启动Nginx
ulimit -SHn 51200 /usr/local/webserver/nginx/sbin/nginx |
四、配置开机自动启动Nginx + PHP
vi /etc/rc.local |
在末尾增加以下内容:
ulimit -SHn 51200 /usr/local/webserver/php/sbin/php-fpm start /usr/local/webserver/nginx/sbin/nginx |
五、优化Linux内核参数
vi /etc/sysctl.conf |
在末尾增加以下内容:
net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 300 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.ip_local_port_range = 5000 65000 |
使配置立即生效:
/sbin/sysctl -p |
六、在不停止Nginx服务的情况下平滑变更Nginx配置
(1)、修改/usr/local/webserver/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确:
/usr/local/webserver/nginx/sbin/nginx -t |
如果屏幕显示以下两行信息,说明配置文件正确:
the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok the configuration file /usr/local/webserver/nginx/conf/nginx.conf was tested successfully |
(2)、这时,输入以下命令查看Nginx主进程号:
ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ' ' '{print $2}' |
屏幕显示的即为Nginx主进程号,例如:
6302 |
这时,执行以下命令即可使修改过的Nginx配置文件生效:
kill -HUP 6302 |
或者无需这么麻烦,找到Nginx的Pid文件:
kill -HUP `cat /usr/local/webserver/nginx/nginx.pid` |
发表评论
-
项目管理 网上资料
2014-04-13 09:22 0软件部门经理具备的素质 http://hgx615.itey ... -
如何开展工作
2013-04-05 09:55 536http://zhidao.baidu.com/questio ... -
软件项目验收
2013-04-02 21:31 737关键词:软件项目验收标准 软件项目验收实施办法 http:/ ... -
学会拒绝,学会提要求
2013-01-08 12:08 708别人要你做什么,你就做什么,最后会变成苦力。别人需要你时就出现 ... -
领导者需要警惕的六大日常决策陷阱
2010-06-20 10:08 725http://yangzb.iteye.com/blog/68 ... -
如何带平均年龄小的团队
2010-06-20 10:04 699http://jackyrong.iteye.com/blog ... -
Apache负载均衡+Tomcat集群
2010-05-04 23:05 856http://weijie.blog.51cto.com/34 ... -
利用LVS+Keepalived 实现高性能高可用负载均衡
2010-05-04 22:41 818http://wenku.baidu.com/view/06e ... -
Java项目不同开发阶段的工具选择
2010-03-08 10:20 1620http://peter9.iteye.com/blog/6 ... -
项目开发经验 转载
2010-03-08 09:21 834http://yanmouse.iteye.com/blog/ ... -
团队管理-思考 转载
2010-03-08 09:18 681http://rrsy23.iteye.com/blog/60 ... -
项目管理初(1) 转载
2010-03-08 09:09 687http://bbobchen.iteye.com/blog/ ... -
系统分析与设计 转载
2010-03-08 08:54 748一、系统开发生命周期 ... -
今天终于决定了项目经理 转载
2010-03-08 08:51 654今天终于决定了项目经理 文章分类:软件开发管理 ...
相关推荐
Nginx实现负载均衡 web均衡负载 webservice负载均衡 Nginx实现负载均衡配制全说明 为了多台后台的web、webservice服务能均衡负载,可以使用nginx进行处理 1)配置文件全配制ok 2)有两个完整的web服务做例子,可以...
动态管理nginx负载均衡.zip动态管理nginx负载均衡.zip动态管理nginx负载均衡.zip动态管理nginx负载均衡.zip动态管理nginx负载均衡.zip动态管理nginx负载均衡.zip动态管理nginx负载均衡.zip动态管理nginx负载均衡.zip...
Nginx 是一款开源且高性能的 Web ...总结,Nginx 的负载均衡搭建及配置涉及了系统环境准备、Nginx 特性介绍、安装步骤以及基础配置。通过合理的配置,Nginx 可以有效地分发流量,提高服务器的运行效率和系统的可用性。
### Nginx负载均衡实现 #### 一、负载均衡概念及必要性 负载均衡是一种用于在网络环境中分散工作负载的技术,通常用于改善网络性能、提高可用性和最大化资源利用。当单台服务器难以应对高流量和并发请求时,负载...
在传统的nginx负载均衡配置中,并未直接提供后端服务器健康检查的功能,但nginx提供了几个重要的指令来帮助我们设置超时和重试机制,来间接保障服务的可用性。例如,proxy_connect_timeout指令用于设置nginx尝试连接...
基于lua的nginx自定义负载均衡基于lua的nginx自定义负载均衡
nginx经常用到的负载均衡的5种策略,注意细节,部分属性不能一起使用。
Nginx不仅作为静态资源服务器,还可以作为7层负载均衡服务器,通过配置反向代理和负载均衡策略,如轮询、权重分配等,将请求分发到不同的后端服务器,提高系统的可用性和响应速度。 【PHP与FastCGI的结合】 Nginx...
【Nginx与Apache对比】 ...总结,Nginx的高性能、低资源消耗以及出色的反向代理和负载均衡能力,使其成为搭建Web服务器的优选,尤其在处理高并发连接和动态内容时,相比于Apache展现出显著的优势。
【Nginx 0.7.x + PHP5.2.10(FastCGI)搭建胜过Apache十倍的Web服务器】 Nginx是一个高性能的HTTP和反向代理服务器,同时也支持IMAP/POP3/SMTP代理服务。由Igor Sysoev为Rambler.ru站点开发,并以其出色的性能和...
在IT行业中,Linux环境下的Nginx服务器因其高效、稳定和强大的反向代理及负载均衡功能而被广泛应用。本文将详细解析"Linux下Nginx负载均衡"这一主题,包括Nginx的基本概念、配置原理以及如何在Linux系统中设置负载...
**Nginx负载均衡配置详解** Nginx是一款高性能的HTTP和反向代理服务器,它以其轻量级、高并发的特性在Web服务领域广泛应用。其中,Nginx的负载均衡功能是其重要特性之一,它能有效地分散网络流量,提高系统可用性和...
【标题】:“Nginx负载均衡部署” 在现代Web服务架构中,负载均衡扮演着至关重要的角色,它能够有效地分发网络流量,提高系统可用性和响应速度,防止单点故障。Nginx作为一款高性能的HTTP和反向代理服务器,常常被...
负载均衡是Nginx的一个重要功能,它可以将客户端的请求分发到多个服务器上,从而提高系统的处理能力和扩展性。下面详细解释Nginx负载均衡的配置方法以及负载均衡策略。 首先,要配置Nginx与Tomcat实现负载均衡,...
在阿里云服务器上搭建Nginx负载均衡,可以有效地分发请求到多台后端服务器,降低单台服务器的压力,提高服务的稳定性和可靠性。 首先,我们需要准备一台阿里云服务器,操作系统推荐使用CentOS 7.6。在进行负载均衡...