您的位置:首页 > 运维架构 > Tomcat

Nginx+Tomcat+pcre 安装过程和出现的问题以及解决方案

2011-08-18 13:23 816 查看

一:前提准备条件

1、 apache-tomcat-6.0.29

2、 nginx-0.8.38

3、 pcre-8.02

4、 nginx-upstream-jvm-route-0.1

5、 jdk-6u6-linux-i586-rpm.bin

二:安装

JDK安装

命令:./ jdk-6u6-linux-i586-rpm.bin进行安装

然后将下面的几句话放到/etc/profile文件的最下方即可

export JAVA_HOME=/usr/java/jdk1.6.0_11

export JAVA_BIN=/usr/java/jdk1.6.0_11/bin

export PATH=$PATH:$JAVA_HOME/bin

exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME JAVA_BIN PATH CLASSPATH

Tomat 安装

将tomcat解压放入到指定的目录下即可

然后将 tomcat/conf/server.xml 中的内容替换成如下内容

<Server port="8005"shutdown="SHUTDOWN">

<ListenerclassName="org.apache.catalina.core.AprLifecycleListener"SSLEngine="on" />

<ListenerclassName="org.apache.catalina.core.JasperListener" />

<ListenerclassName="org.apache.catalina.mbeans.ServerLifecycleListener" />

<ListenerclassName="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>

<GlobalNamingResources>

<Resource name="UserDatabase" auth="Container"

type="org.apache.catalina.UserDatabase"

description="User databasethat can be updated and saved"

factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

pathname="conf/tomcat-users.xml" />

</GlobalNamingResources>

<Service name="Catalina">

<Connector port="8088" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"URIEncoding="UTF-8"/>

<Connectorport="8009" protocol="AJP/1.3"redirectPort="8443" maxThreads="5000"acceptCount="700" connectionTimeout="20000" />

<Engine name="Catalina" defaultHost="localhost"jvmRoute="tomcatweb1">

<ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster"

channelSendOptions="8">

<ManagerclassName="org.apache.catalina.ha.session.DeltaManager"

expireSessionsOnShutdown="false"

notifyListenersOnReplication="true"/>

<ChannelclassName="org.apache.catalina.tribes.group.GroupChannel">

<MembershipclassName="org.apache.catalina.tribes.membership.McastService"

address="224.0.0.4"

port="45564"

frequency="500"

dropTime="3000"/>

<ReceiverclassName="org.apache.catalina.tribes.transport.nio.NioReceiver"

address="auto"

port="4001"

autoBind="100"

selectorTimeout="5000"

maxThreads="6"/>

<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">

<TransportclassName="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>

</Sender>

<InterceptorclassName="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>

<InterceptorclassName="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>

<InterceptorclassName="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>

</Channel>

<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"

filter=""/>

<ValveclassName="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

<DeployerclassName="org.apache.catalina.ha.deploy.FarmWarDeployer"

tempDir="/tmp/war-temp/"

deployDir="/tmp/war-deploy/"

watchDir="/tmp/war-listen/"

watchEnabled="false"/>

<ClusterListenerclassName="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>

<ClusterListenerclassName="org.apache.catalina.ha.session.ClusterSessionListener"/>

</Cluster>

<RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"

resourceName="UserDatabase"/>

<Host name="localhost" appBase="webapps"

unpackWARs="true" autoDeploy="true"

xmlValidation="false" xmlNamespaceAware="false">

<Contextpath="" docBase="/usr/local/program/web/xhqm_web/" reloadable="false"/>

</Host>

</Engine>

</Service>

</Server>

里面需要改一些启动、访问以及停止的端口号 ,还需要改

jvmRoute 以及 engine 的prot 。然后编译web.xml,

在</web-app>之前加入<distributable/>,保存即可

这是为作负载均衡做准备的,每一个tomcat下的端口只不能重复

Pcre 安装

进入到 Pcre 目录下,执行

# ./configure

# make

# make install

如果在执行编译的时候提示缺少gcc或 gcc-c++ 包的时候,需要重新进行编译gcc包,

命令 yum -y install gcc+ gcc-c++ 可进行gcc包的编译 或 yum -y update gcc 命令进行更新gcc包,如果在编译或更新的时候提示‘缺少包’ 或 ‘Thissystem is not registered with RHN’ 等原因的时候,说明 不能使用它自身的源进行编译或更新,那么就需要手动下载源来进行更新(下载地址:http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo),将用下载的文件替换掉/etc/yum.repos.d/目录下的文件(将之前的文件备份,被后续的服务器安全做准备),然后重新执行yum
-y install gcc+ gcc-c++即可

Nginx 安装

进入 nginx 目录下,执行如下命令

./configure--with-pcre=/usr/include/pcre --with-http_stub_status_module--prefix=/usr/local/nginx

备注:--with-pcre 是 pcre 的源文件,非安装后的文件,prefix 是需要将 nginx 安装到的目录

然后执行 make

最后执行make install

配置

普通配置

一对一

将 nginx/conf 下的 nginx.conf 中的内容替换成如下内容即可

#user nobody;

worker_processes 5;

#error_log logs/error.log;

#error_log logs/error.log notice;

#error_log logs/error.log info;

#pid logs/nginx.pid;

events {

use epoll;

worker_connections 2048;

}

http {

# upstream backend { # 负载均衡的时候用到

# server localhost:8088 srun_id=tomcatweb1; #负载均衡的时候用到:访问的路径:端口 srun_id = tomcat已经配好的用于负载均衡的jvm

# server localhost:8087 srun_id=tomcatweb2; #负载均衡的时候用到:访问的路径:端口 srun_id =tomcat已经配好的用于负载均衡的jvm

# jvm_route $cookie_JSESSIONID|sessionid reverse; #用于session共享

# }

include mime.types;

default_type application/octet-stream;

charset UTF-8;

server_names_hash_bucket_size 128;

client_header_buffer_size 32k;

large_client_header_buffers 4 32k;

client_max_body_size 20m;

limit_rate 1024k;

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/plainapplication/x-javascript text/css application/xml;

gzip_vary on;

#limit_zone crawler $binary_remote_addr 10m;

server {

listen 80;

server_name localhost;#需要访问的外网域名,如果直接写localhost可直接用ip访问

indexindex.jsp index.htm index.html;

root /usr/local/program/web/xhqm_web;#需要接管的web服务路径地址

#access_log logs/host.access.log main;

location / {

proxy_pass http://localhost:8088;#本机访问地址,如果配置了负载均衡则直接将localhost:8088改为backend即可
proxy_redirect off;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header Host $http_host;

}

location~ .*\.(htm|html|ico|gif|jpg|jpeg|png|bmp|swf)$

{

expires 30d;

}

location~ .*\.(js|css)?$

{

expires 1h;

}

location/Nginxstatus {

stub_status on;

access_log off;

}

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 off;

}

}

一对多

只需要将一对一关系的配置文件中增加一段与之前server并列关系的如下代码即可

server {

listen 80;

server_name cms.xhqm.com; #需要访问的外网域名,如果直接写localhost可直接用ip访问

index index.jsp index.htm index.html;

root /usr/local/program/web/xhqm_admin; #需要接管的web服务路径地址

#access_log logs/host.access.log main;

location / {

proxy_pass http://localhost:8099; #本机访问地址

proxy_redirect off;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header Host $http_host;

}

}

负载均衡

配置负载均衡的时候需要添加一个nginx-upstream-jvm-route-0.1组件

添加方法:

首先要进入nginx 源文件主目录下

首先执行:patch-p0 < /usr/local/ nginx-upstream-jvm-route-0.1/jvm_route.patch # jvm源文件存放目录 加上jvm_route.patch 文件

然后执行:./configure--add-module= /usr/local/nginx-upstream-jvm-route-0.1/ # jvm源文件存放目录

在然后执行 make à make install 即可

只需要将一对一关联中的 upstream {}的注释去掉,然后将红色字体部分根据备注将其修改即可是想负载均衡

注示:nginx.conf 的源文件配置见文档的最下方

测试

执行 /usr/local/nginx/sbin/nginx–t


显示:


the configuration file/usr/local/nginx/conf/nginx.conf syntax is ok

the configuration file/usr/local/nginx/conf/nginx.conf was tested successfully
则表示配置正确

启动与停止方式

启动:/usr/local/nginx/sbin/nginx


停止:/usr/local/nginx/sbin/nginx–s stop


Nginx.conf

#user nobody;

worker_processes 5;

#error_log logs/error.log;

#error_log logs/error.log notice;

#error_log logs/error.log info;

#pid logs/nginx.pid;

events {

use epoll;

worker_connections 2048;

}

http {

upstream backend {

serverlocalhost:8087 srun_id=tomcatweb2;

serverlocalhost:8088 srun_id=tomcatweb1;

jvm_route$cookie_JSESSIONID|sessionid reverse;

}

include mime.types;

default_type application/octet-stream;

charset UTF-8;

server_names_hash_bucket_size 128;

client_header_buffer_size 32k;

large_client_header_buffers 4 32k;

client_max_body_size 20m;

limit_rate 1024k;

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/plainapplication/x-javascript text/css application/xml;

gzip_vary on;

#limit_zone crawler $binary_remote_addr 10m;

server {

listen 80;

server_name localhost;

indexindex.jsp index.htm index.html;

root /usr/local/program/web/xhqm_web;

#access_log logs/host.access.log main;

location / {

proxy_pass http://backend;
proxy_redirect off;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header Host $http_host;

}

location~ .*\.(htm|html|ico|gif|jpg|jpeg|png|bmp|swf)$

{

expires 30d;

}

location~ .*\.(js|css)?$

{

expires 1h;

}

location/Nginxstatus {

stub_status on;

access_log off;

}

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 off;

}

server {

listen 80;

server_name cms.xhqm.com;

index index.jsp index.htm index.html;

root /usr/local/program/web/xhqm_admin;

#access_log logs/host.access.log main;

location / {

proxy_pass http://localhost:8199;
proxy_redirect off;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header Host $http_host;

}

}

server {

listen 80;

server_name xhqm.spider.com;

index index.jsp index.htm index.html;

root /usr/local/program/web/xhqm_spider;

#access_log logs/host.access.log main;

location / {

proxy_pass http://localhost:8888;
proxy_redirect off;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header Host $http_host;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: