Nginx介绍
首先我想向大家介绍下Nginx,目的是扫盲,如果大家对Nginx已经有所了解,以下直接略去,直接进入安装。
简介
Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用nginx网站用户有:新浪、网易、 腾讯,另外知名的微网志Plurk也使用nginx。
优点
nginx map
Nginx 可以在大多数 Unix like OS 上编译运行,并有 Windows 移植版。目前 Nginx 的1.0.9稳定版已经于2011年11月1日发布,开发版本已完成的为1.3.0,如果新建站点,建议使用最新稳定版作为生产版本,已有站点升级急迫性不高。Nginx 的源代码使用 2-clause BSD-like license。 Nginx 是一个很牛的高性能Web和反向代理服务器,它具有很多非常优越的特性: 在高连接并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。 Nginx作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。 作为邮件代理服务器:Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last. fm 描述了成功并且美妙的使用经验。
Nginx 是一个安装非常的简单,配置文件非常简洁(还能够支持perl语法),Bugs非常少的服务器:Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。
更多内容就不一一介绍了,有兴趣的同学自己去问“百度哥”。
Nginx安装
环境:linux redhat6.0
第一步:安装java,tomcat,并配置环境变量。
我是把jdk-6u26-linux-i586.bin、apache-tomcat-6.0.26.tar.gz两个安装文件放到了/usr/local目录下,故安装(不会安装bin文件和解压的同学自己多玩下Linux,这里就不介绍了)完成后我的环境变量增加配置为:
JAVA_HOME=/usr/local/jdk1.6.0_26
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
保存退出后一定要记得source一下让配置文件生效哦,启动tomcat并输入http://localhost:8080,如果看到猫的页面即tomcat和jdk安装成功。(应用虚拟机的同学,要是想在本地主机访问虚拟机中的tomcat服务,需要修改虚拟机中tomcat的服务端口,原因自己体会,不解释)。 新建文件目录/home/www为网站存放目录,设置server.xml文件,在Host name="localhost"处将appBase=的指向路径改为/home/www/web创建index.jsp至/home/www/web/ROOT,内容为:“My web!”
第二步:安装gcc编译器
也许有的同学会问,为什么要配置gcc环境呢?答案很简单,因为Nginx底层是C++实现的,所以不装C环境是不行滴(由此看出还是JAVA好),我是通过挂载安装镜像在安装镜像中安装的gcc包(安装包在Packages目录下),按如下方法安装,注意顺序一定不能错,因为有包依赖。
# rpm -ivh glibc-common-2.12-1.25.el6.x86_64.rpm#rpm-ivhkernel-headers-2.6.32-131.0.15.el6.x86_64.rpm
#rpm-ivhlibgcc-4.4.5-6.el6.x86_64.rpm
#rpm-ivhglibc-2.12-1.25.el6.x86_64.rpm
#rpm-ivhlibgomp-4.4.5-6.el6.x86_64.rpm
#rpm-ivhnscd-2.12-1.25.el6.x86_64.rpm
#rpm-ivhglibc-headers-2.12-1.25.el6.x86_64.rpm
#rpm-ivhglibc-devel-2.12-1.25.el6.x86_64.rpm
#rpm-ivhmpfr-2.4.1-6.el6.x86_64.rpm
#rpm-ivhppl-0.10.2-11.el6.x86_64.rpm
#rpm-ivhcloog-ppl-0.15.7-1.2.el6.x86_64.rpm
#rpm-ivhcpp-4.4.5-6.el6.x86_64.rpm
#rpm-ivhgcc-4.4.5-6.el6.x86_64.rpm
注:以上是安装gcc,软件安装顺序不能错。
******************************************
#rpm-ivhlibstdc++-4.4.5-6.el6.x86_64.rpm
#rpm-ivhlibstdc++-devel-4.4.5-6.el6.x86_64.rpm
#rpm-ivhgcc-c++-4.4.5-6.el6.x86_64.rpm
注:以上是安装gcc-c++ 第三步:安装Nginx
1、上传nginx-0.7.63.tar.gz至/usr/local 2、执行如下命令解压nginx:
#cd /usr/local
#tar zxvf nginx-
0.7
.
63
.tar.gz
3、编译安装nginx
<code class="plain">#cd nginx-
0.7
.
63
<code class="plain">#./configure --with-http_stub_status_module --with-http_ssl_module
#启动server状态页和https模块
<code class="plain">执行完后会提示一个错误,说缺少PCRE library 这个是HTTP Rewrite
模块,也即是url静态化的包
可上传pcre-7.9.tar.gz,输入如下命令安装:
<code class="plain"><code class="plain">#tar zxvf pcre-
7.9
.tar.gz
<code class="plain"><code class="plain">#cd pcre-
7.9
<code class="plain"><code class="plain">#./configure
<code class="plain"><code class="plain">#make
<code class="plain"><code class="plain">#make install
<code class="plain">
安装pcre成功后,继续安装nginx
<code class="plain">#cd nginx-
0.7
.
63
<code class="plain"><code class="plain">#./configure
<code class="plain"><code class="plain">#make
<code class="plain"><code class="plain">#make
install
4、nginx安装成功后的安装目录为/usr/local/nginx在conf文件夹中新建proxy.conf,用于配置一些代理参数,内容如下:
#!nginx (-)
# proxy.conf
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
编辑安装目录下conf文件夹中的nginx.conf,输入如下内容
#user www www;
worker_processes 8;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid /usr/local/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
events
{
use epoll;
worker_connections 65535;
}
http
{
include mime.types;
default_type application/octet-stream;
include /usr/local/nginx/conf/proxy.conf;
#charset gb2312;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
#client_max_body_size 8m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
# fastcgi_connect_timeout 300;
# fastcgi_send_timeout 300;
# fastcgi_read_timeout 300;
# fastcgi_buffer_size 64k;
# fastcgi_buffers 4 64k;
# fastcgi_busy_buffers_size 128k;
# fastcgi_temp_file_write_size 128k;
# gzip on;
# gzip_min_length 1k;
# gzip_buffers 4 16k;
# gzip_http_version 1.0;
# gzip_comp_level 2;
# gzip_types text/plain application/x-javascript text/css application/xml;
# gzip_vary on;
#limit_zone crawler $binary_remote_addr 10m;
server{
server_name _;
return 404;
}
server
{
listen 80;
server_name localhost;
index index.html index.htm index.jsp;
root /home/www/web/ROOT;
#limit_conn crawler 20;
location ~ .*.jsp$
{
index index.jsp;
proxy_pass http://localhost:8080;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 1h;
}
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log /usr/local/nginx/logs/localhost.log access;
}
}
5、修改/usr/local/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确:
#/usr/local/nginx/sbin/nginx
-t
如果屏幕显示以下两行信息,说明配置文件正确:
<code class="plain">the configuration file
/usr/local/nginx/conf/nginx.conf syntax is ok
<code class="plain">the configuration file /usr/local/nginx/conf/nginx.conf was tested
successfully
如果提示unknown host,则可在服务器上执行:ping www.baidu.com如果也是同样提示unknown host则有两种可能:a、服务器没有设置DNS服务器地址,查看/etc/resolv.conf下是否设置,若无则加上
b、防火墙拦截
6、启动nginx的命令 #/usr/local/nginx/sbin/nginx
nginx启动好后启动tomcat,此时输入http://主机ip地址即可看到“My web!”
7、停止nginx的命令
<code class="plain">#/usr/local/nginx/sbin/nginx -s
stop