nginx+tomcat负载均衡搭建

news/2024/7/7 21:48:41 标签: tomcat, nginx, jdk, 服务器

spider##JDK安装
jdk官网下载自己需要的jdk版本,我使用的是jdk-7u67-linux-x64.tar.gz. 将包下载到指定路径下,我这里会将所有的软件包都下载到 /usr/local/ 目录下。解压,输入命令:

tar -zxvf jdk-7u67-linux-x64.tar.gz

会解压到当前目录有个jdk1.7.0_67的文件夹。这里为了后面方便配置JDK的配置,我创建了一个link文件夹

ln -s jdk1.7.0_67 java

然后去设置Java环境变量,修改系统的环境配置文件。

vi /etc/profile

在文件最下面添加:

export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH

保存。执行下面命名是该配置文件在系统生效:

 source /etc/profile

这个时候就可以运行java 或javac 看看是否安装成功了。

tomcat-安装">tomcat 安装

与上面的方式类似,先上传包到/usr/local/目录下面,解压包到/usr/local/, 我使用的版本是apache-tomcat-7.0.55.tar.gz,解压后的文件夹为:apache-tomcat-7.0.55 同样创建一个link:

ln -s apache-tomcat-7.0.55 tomcat

与上面的方式类似,去设置tomcat的环境变量

export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH

保存。执行下面命名是该配置文件在系统生效:

source /etc/profile

nginx-安装">nginx 安装

nginx 的安装方式可以有多种,如果是RedHat系类:Redhat、Centos、Fedora等,可以尝试用yum 命名安装。Debian系类:Debian、Ubuntu等用 apt-get命名安装。 使用安装包安装的方式可以参考博客园的相关文章介绍。我使用的是也是nginx-1.6.2.tar.gz。 上传到/usr/local/后解压,解压的后文件夹为:nginx-1.6.2,也可以创建link 文件夹。不过用途不大,后面需要单独配置nginx 路径的地方很少。具体安装方式请参考博客园的博客说明。注意:
这篇博客有关安装nginx 依赖包PCRE之后出现的问题:

./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

所给的链接地址是错误的。更正下解决办法:
64位系统:

ln -s /usr/local/lib/libpcre.so.1 /lib64

32 位系统:

ln -s /usr/local/lib/libpcre.so.1 /lib

tomcat实例配置">tomcat实例配置

拷贝tomcat 目录下面的文件夹:conf, logs,temp, work到我们创建的文件夹里面就命名为:server1。即server1包含如下文件夹。

conf/   logs/  temp/ work/

修改conf/server.xml

    <?xml version='1.0' encoding='utf-8'?>
    <Server port="8111" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JasperListener" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <Service name="Catalina">
  <Connector  port="8101" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"  URIEncoding="utf-8" useBodyEncodingForURI="true"/>

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="s1">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
      <Host name="localhost"  appBase="webapps"
            unpackWARs="false" autoDeploy="false"
            xmlValidation="false" xmlNamespaceAware="false">
          <Context path="/xxx" docBase="/xxx/App/xxx/appName" reloadable="true"/>  
      </Host>
    </Engine>
  </Service>
</Server>

这里需要配置的地方有这么几处:port=”8111” shutdown=”SHUTDOWN”(设置关闭实例的端口号),
Connector port=”8101” protocol=”HTTP/1.1”(设置实例启动时的端口),Context path=”/xxx” docBase=”/xxx/App/xxx/appName” reloadable=”true” 配置实例的访问地址,与实例包的路径。多个实例可以创建多个不同的server2,server3,server4, …。需要修改启动关闭实例端口号每个实例唯一,另外需要指定不同的实例包的访问路径。

配置nginx 负载均衡,到nginx 安装文件夹 /usr/local/nginx-1.6.2/conf。 编辑nginx.conf 文件夹。在里面的http 的花括号里面添加一行 include domains/*; 该行表示会加载nginx.conf 同目录下面的domains下面的配置文件。 然后在 /usr/local/nginx-1.6.2/conf/ 下创建文件夹 domains, cd 到 domains 下面 创建文件 vi appname.conf,将下面粘贴到里面并保存:

upstream appname {
    server  127.0.0.1:8101;#这里的端口号需要和实例在server.xml配置的启动端口一致
}
server
        {
           listen   80;
           server_name   appname;
           access_log    /export/Logs/nginx/appname/access.log;
           location /appname {
                proxy_pass     http://appname;
             }
        }

配置文件添加完成之后,/usr/local/nginx-1.6.2/bin/nginx -t 可以检查下配置文件是否配置对了。如果没有问题就启动:

 /usr/local/nginx-1.6.2/bin/nginx

重启:

 /usr/local/nginx-1.6.2/bin/nginx -s reload

应用启动脚本配置

将实例的war包上传到指定的/xxx/App/xxx/appName 路径下面解压。启动脚本start.sh:

#!/bin/bash
export CATALINA_HOME=/usr/local/tomcat
export CATALINA_BASE=/xxx/domains/appName/server1
declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Ddeploy.instance.logs.path=/xxx/log/appName/server1"
###JAVA
export JAVA_HOME=usr/local/java
export JAVA_BIN=usr/local/java/bin
export PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/bin
export CLASSPATH=.:/lib/dt.jar:/lib/tools.jar
export  JAVA_OPTS=" -server -Xms256m -Xmx512m -XX:MaxPermSize=256m -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300"
export JAVA_HOME JAVA_BIN PATH CLASSPATH JAVA_OPTS
$CATALINA_HOME/bin/startup.sh -config $CATALINA_BASE/conf/server.xml

停止脚本stop.sh:

    #!/bin/bash
export CATALINA_HOME=/usr/local/tomcat
export CATALINA_BASE=/xxx/domains/appName/server1
declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Ddeploy.instance.logs.path=/xxx/log/appName/server1"
###JAVA
export JAVA_HOME=usr/local/java
export JAVA_BIN=usr/local/java/bin
export PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/bin
export CLASSPATH=.:/lib/dt.jar:/lib/tools.jar
export  JAVA_OPTS="-server -Xms256m -Xmx512m -XX:MaxPermSize=256m -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300"
export JAVA_HOME JAVA_BIN PATH CLASSPATH JAVA_OPTS
$CATALINA_HOME/bin/startup.sh -config $CATALINA_BASE/conf/server.xml
ps -aef | grep java|grep appname/server1| grep -v grep | sed 's/ [ ]*/:/g' |cut -d: -f2|kill -9 `cat`

权限设置

上面配置完毕之后一般还会对相关的软件和应用配置属于自己的用户和组权限。例如配置:tomcat 用户,java用户,nginx用户。并将他们都加入到 sa用户组里面。 给相关对应的文件和应用也设置相关的权限。后面添加其他用户到sa,就可以管理发布各种应用了。


http://www.niftyadmin.cn/n/1595159.html

相关文章

使用Kafka Connect 导入导出数据

使用Kafka Connect 导入导出数据 从控制台读出数据并将其写回是十分方便操作的&#xff0c;但你可能需要使用其他来源的数据或将数据从Kafka导出到其他系统。针对这些系统&#xff0c; 你可以使用Kafka Connect来导入或导出数据&#xff0c;而不是写自定义的集成代码。 Kafka …

hibrenate @ManyToOne(fetch = FetchType.EAGER) 和...

2019独角兽企业重金招聘Python工程师标准>>> hibrenate ManyToOne(fetch FetchType.EAGER) 和 lazy 区别 如果是EAGER&#xff0c;那么表示取出这条数据时&#xff0c;它关联的数据也同时取出放入内存中 如果是LAZY&#xff0c;那么取出这条数据时&#xff0c;它…

在kafka connect 同步 mysql 主从数据库

在kafka connect 同步 mysql 主从数据库 下载以下文件,解压&#xff0c;放置到kafka的libs目录 kafka-connect-jdbc-4.1.1 从这里选择适合的mysql connector mysql-connector-java-8.0.16.jar 将里面的jar文件提取出来&#xff0c;也放到kafka的libs目录 在config目录下创建 c…

Linux系统管理第2天

1.1.命令行基础1)查看cd和mkdir是属于内部命令还是外部命令[rootlocalhost ~]# type cd mkdircd is a shell builtinmkdir is /bin/mkdir//可以看到cd是内部命令&#xff0c;而mkdir是外部命令。2)使用help查看cd的帮助信息[rootlocalhost ~]# help cdcd: cd [-L|-P] [dir]Chan…

[python]4.7.2. Keyword Arguments

函数可以被关键词参数调用&#xff0c;举例&#xff0c;下面的函数。 def parrot(voltage, statea stiff, actionvoom, typeNorwegian Blue): print("-- This parrot wouldnt", action, end ) print("if you put", voltage, "volts through it."…

Redis 热点key

压测报redis 热点问题 (1)本地缓存 (2)redis分片(加随机值) 参考&#xff1a;https://www.cnblogs.com/rjzheng/p/10874537.html 热点问题概述 产生原因 热点问题产生的原因大致有以下两种&#xff1a; 用户消费的数据远大于生产的数据&#xff08;热卖商品、热点新闻、热…

服务停止,手动启动拒绝访问排错思路

站点内复制失败&#xff0c;手动强制同步时遇到RPC服务器不可达报错。查看各域控RPC服务状态正常&#xff0c;互相之间却无法ping通。后来发现其中一台域控不少网络相关服务处于停止状态&#xff0c;手动启动却遇到“拒绝访问”报错。参考http://blog.csdn.net/yyb63915/articl…

java性能调优——技客时间

java性能调优——技客时间 一.java性能调优的标准 cpu&#xff1a;有的应用需要大量计算&#xff0c;他们会长时间、不间断地占用 CPU 资源&#xff0c;导致其他资源无法争夺到 CPU 而响应缓慢&#xff0c;从而带来系统性能问题。例如&#xff0c;代码递归导致的无限循环&…