loit 发表于 2015-8-7 12:35:37

redhat5.5上安装nginx1-1.2.3+tomcat(集群)

  说明:我本机的nginx安装的路径为:/usr/local/nginx
  所需软件:nginx-1.2.3.tar.gz(负载均衡/反向代理服务器) pcre-8.31.tar.gz(正规表达式库) nginx-upstream-jvm-route-0.1.tar.gz(一个 Nginx 的扩展模块,用来实现基于 Cookie 的 Session Sticky 的功能) (以上软件包版本号以最新为准)
   主要问题:每台机器上的环境都不太一样,最主要是已安装的包的情况不一样导致,如果你在按步骤做时有提示缺少哪个包或库时,请自行下载或到安装软件中的server文件夹下找相应的包,用rpm -ivh --force xxx.rpm 安装,有提示依赖包时,一个一个按提示安装即可,有时依赖还挺多的,但总会完的…………。
  步骤:
  1:(有网络的情况)在线下线软件包:
  1、nginx-1.1.2.tar.gz,负载均衡/反向代理服务器,可通过http://nginx.org/en/download.html获取。
     2、pcre-8.10.tar.gz,正规表达式库,可通过http://sourceforge.net/projects/pcre/获取;
     3、nginx-upstream-jvm-route-0.1.tar.gz,是一个 Nginx 的扩展模块,用来实现基于 Cookie 的 Session Sticky 的功能,可通过http://code.google.com/p/nginx-upstream-jvm-route/downloads/list获取;
  2:安装:我把上面的三个包放在/usr/local/下新建的文件夹nginx
  进入/usr/local/nginx,用tar zxvf xx.tar.gz 解以上的三个压缩包
  安装nginx之前需要pcre依赖和jvm-remote补丁 ,后面的检查时带的参数路径(./configure ....)
  终端:
  #cd nginx-1.1.2
  #patch -p0 < /usr/local/nginx/nginx_upstream_jvm_route/jvm_route.patch(patch -p0 < ${nginx-upstream-jvm-route解压目录}/jvm_route.patch)
  #./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/nginx/pcre-8.31 --with-http_stub_status_module --with-http_ssl_module --add-module=/usr/local/nginx(./configure --prefix=/usr/local/nginx --with-pcre=${pcre解压目录} --with-http_stub_status_module --with-http_ssl_module --add-module=${nginx-upstream-jvm-route解压目录})
  当这步执行时,出现的问题最多,因为它要检查系统的所需要的东西,我本机报:
  the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl
  错误提示要需要OpenSSL,接下来你就要把它装好,不过它依赖一些包,这里就不叙述了
  接下来,make(本地编译nginx):
  # make
  不幸的是,报错了:
  make -f objs/Makefile
make: Entering directory `/usr/local/nginx/nginx-1.2.3'
make: Warning: File `src/core/nginx.h' has modification time 1.4e+07 s in the future
cd /usr/local/nginx/pcre-8.31 \
      && if [ -f Makefile ]; then make distclean; fi \
      && CC="gcc" CFLAGS="-O2 -fomit-frame-pointer -pipe " \
      ./configure --disable-shared
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... configure: error: newly created file is older than distributed files!
Check your system clock
make: *** 错误 1
make: Leaving directory `/usr/local/nginx/nginx-1.2.3'
make: *** 错误 2
  ----------------------------------------------------------------------
  从错误提示中,得知是pcre-xxx有问题,但我用rpm -qa |grep pcre时显示的是pcre .6.6 ,一看系统已经有了,而不是我要装的pcre-8.31,虽然有了pcre,但却连接不到,我还是重新手动编译我下载的pcre-8.31吧;
  # cd /usr/local/nginx/pcre-8.31/
  # ./configure
  报错:
  checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... configure: error: newly created file is older than distributed files!
Check your system clock
  解决办法:
  # find|xargs touch
  # make
  # make install
  到此,再进入到/usr/local/nginx/nginx-1.2.3
  # ./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/nginx/pcre-8.30 --with-http_stub_status_module --with-http_ssl_module --add-module=/usr/local/nginx
  # make
  # make install   

  
  自此,nginx就安装好了,至于linux下tomcat请参照别处自行装好。接下来,就是做web集群,负载均衡等功能的配置
  关键的是在nginx安装目录下conf/nginx.conf配置,这里假设有一台192.168.77.105作为nginx的服务器(之所以用了一台,因为该机器上还要装分布式内存对象缓存系统memcached),一台192.168.77.200(作为web服务器,装了4台tomcat服务器,端口分别是8090,8091,8092,8093),105机器上放了一台tomcat,端口8090
  具体nginx.conf的参考内容为:(颜色块标注的为最为重要,至于其他特殊需求可以参考nginx官方文档里各个参数设置)



worker_processes 8;
error_loglogs/nginx_error.logcrit;
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
{
upstream backend {

server 192.168.77.200:8090 ;//这边就是nginx随机分配服务器的ip地址(tomcat服务器URL).也可加上srun_id来区分,比如srun_id=a,那么要修改192.168.77.200机器上端口对应的tomcat的conf下的server.xml里
找到(0x00007fff7e9db000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fe4629d0000)
    libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fe462799000)
    libpcre.so.1 => not found//确实没找到
    libz.so.1 => /lib64/libz.so.1 (0x00007fe462582000)
    libc.so.6 => /lib64/libc.so.6 (0x00007fe4621e1000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fe462bfa000)
    libfreebl3.so => /lib64/libfreebl3.so (0x00007fe461f7e000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007fe461d7a000)
# cd /lib64/
  # ln -s libpcre.so.0.0.1 libpcre.so.1
# ldd $(which /usr/local/nginx/sbin/nginx)
    linux-vdso.so.1 =>(0x00007fff4d7ff000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fb06f13e000)
    libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fb06ef07000)
    libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fb06ecda000)
    libz.so.1 => /lib64/libz.so.1 (0x00007fb06eac4000)
    libc.so.6 => /lib64/libc.so.6 (0x00007fb06e723000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fb06f368000)
    libfreebl3.so => /lib64/libfreebl3.so (0x00007fb06e4c0000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007fb06e2bc000)
  6、启动nginx的命令
  #/usr/local/nginx/sbin/nginx
这时,输入以下命令查看Nginx主进程号:
  ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ' ' '{print $2}'
7、停止nginx的命令
  #/usr/local/nginx/sbin/nginx -s stop
8、在不停止Nginx服务的情况下平滑变更Nginx配置
a、修改/usr/local/nginx/conf/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
b、这时,输入以下命令查看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/nginx/nginx.pid`
  
  
开机自启动nginx
这里使用的是编写shell脚本的方式来处理
  vi /etc/init.d/nginx(输入下面的代码)
  
  #!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# it is v.0.0.2 version.
# chkconfig: - 85 15
# description: Nginx is a high-performance web and proxy server.
#            It has a lot of features, but it's not for everyone.
# processname: nginx
# pidfile: /var/run/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf
nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/usr/local/nginx/conf/nginx.conf
nginx_pid=/var/run/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
   echo "nginx already running...."
   exit 1
fi
   echo -n $"Starting $prog: "
   daemon $nginxd -c ${nginx_config}
   RETVAL=$?
   echo
   [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
   return $RETVAL
}
# Stop nginx daemons functions.
stop() {
      echo -n $"Stopping $prog: "
      killproc $nginxd
      RETVAL=$?
      echo
      [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid
}
# reload nginx service functions.
reload() {
    echo -n $"Reloading $prog: "
    #kill -HUP `cat ${nginx_pid}`
    killproc $nginxd -HUP
    RETVAL=$?
    echo
}
# See how we were called.
case "$1" in
start)
      start
      ;;
stop)
      stop
      ;;
reload)
      reload
      ;;
restart)
      stop
      start
      ;;
status)
      status $prog
      RETVAL=$?
      ;;
*)
      echo $"Usage: $prog {start|stop|restart|reload|status|help}"
      exit 1
esac
exit $RETVAL
  
  :wq保存并退出
  设置文件的访问权限
  chmod a+x /etc/init.d/nginx   (a+x ==> all user can execute所有用户可执行)
  
  这样在控制台就很容易的操作nginx了:查看Nginx当前状态、启动Nginx、停止Nginx、重启Nginx…
  
  同样的修改了nginx的配置文件nginx.conf,也可以使用上面的命令重新加载新的配置文件并运行,可以将此命令加入到rc.local文件中,这样开机的时候nginx就默认启动了
  vi /etc/rc.local
  加入一行/etc/init.d/nginx start    保存并退出,下次重启会生效。

  
  设置192.168.77.105上端口8090的tomcat作为linux服务,并设置自启动:
  1、将/usr/local/swsport-clustor/tomcat90/bin/catalina.sh复制到/etc/rc.d/init.d/tomcat90
  
  # cp /usr/local/swsport-clustor/tomcat90/bin/catalina.sh /etc/rc.d/init.d/tomcat90
  
  2、修改/etc/rc.d/init.d/tomcat90
  
  # vi /etc/rc.d/init.d/tomcat90
  
  修改内容为在第二行加入以下内容
  # chkconfig:2345 63 37
  # description:tomcat server init script
  在#CATALINA_HOME 这条注释下面加入
CATALINA_HOME=/usr/local/swsport-clustor/tomcat90
  3、将tomcat加入Service 服务中
  # chkconfig --add tomcat90
  
  4、查看tomcat的service 列表
  # chkconfig --list tomcat90
  
  5、启动tomcat 并测试tomcat是否启动
  # service tomcat90 start
  # ps -e | grep java
  
  如下显示,则表明Tomcat启动
  5925 pts/0 00:00:03 java
页: [1]
查看完整版本: redhat5.5上安装nginx1-1.2.3+tomcat(集群)