Nginx+Tomcat集群的安装与配置
Nginx安装在ip为x.x.x.x的服务器上
Tomcat安装在ip为y.y.y.y的服务器上
nginx安装
第一步,安装编译工具及库文件,如果服务器上已经有了,可以不用再安装。
命令:yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
第二步,安装PCRE。( 目的是让 Nginx 支持 Rewrite 功能)
下载 PCRE 安装包命令:cd /usr/local/src/
wget Download PCRE from SourceForge.net
解压安装包命令:tar zxvf pcre-8.35.tar.gz
编译安装命令:cd pcre-8.35
./configure
make
make install
查看PCRE版本命令:pcre-config --version
第三步,安装nginx。
下载Nginx命令:cd /usr/local/src/
wget http://nginx.org/download/nginx-1.18.0.tar.gz
解压安装包命令:tar zxvf nginx-1.18.0.tar.gz
编译安装命令:cd nginx-1.18.0
./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/usr/local/nginx/logs/error.log --http-log-path=/usr/local/nginx/logs/access.log --pid-path=/usr/local/nginx/logs/nginx.pid --lock-path=/var/lock/subsys/nginx --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fcgi --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre --with-http_v2_module --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-http_v2_module --with-threads --with-stream --with-stream_ssl_module --with-ipv6
make
make install
查看nginx版本命令:/usr/local/nginx/sbin/nginx -v
或 /usr/local/nginx/sbin/nginx -V
结果显示“nginx version: nginx-1.18.0”,nginx就安装完成。
nginx配置
第一步,创建 Nginx 运行使用的用户nginx。
命令:useradd -s /sbin/nologin -M nginx
( Nginx 服务的默认用户是 nobody ,为了安全更改为 nginx,在配置文件中启用user nginx nginx;)
第二步,修改nginx.conf配置文件。
nginx.conf路径为/usr/local/nginx/conf/nginx.conf。nginx.conf内容如下:
user nginx nginx; #用户名设置为刚刚创建的用户名worker_processes 2; #设置值和CPU核心数一致error_log /usr/local/nginx/logs/nginx_error.log crit; #日志位置和日志级别pid /usr/local/nginx/logs/nginx.pid; #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;#charset utf-8; #编码改为utf-8...server{listen 80; #监听端口server_name localhost; #域名,当前IP地址index index.html index.htm index.php;...}
第三步,检查配置文件nginx.conf的正确性。
命令:/usr/local/nginx/sbin/nginx -t
若结果显示“nginx: [emerg] mkdir() "/var/tmp/nginx/client" failed (2: No such file or directory)
nginx: configuration file /etc/nginx/nginx.conf test failed”,则说明服务无法启动。可以使用命令“mkdir -p /var/tmp/nginx”创建目录,然后再次运行命令:/usr/sbin/nginx -t
若结果显示“nginx: configuration file /etc/nginx/nginx.conf test is successful”,则说明nginx安装和配置成功。
nginx启动和访问站点
第一步,启动nginx。
命令:/usr/sbin/nginx
第二步,检查是否已经启动。(查看是否有进程)
命令:ps -ef | grep nginx
结果的第一行显示“nginx:master process”,nginx已经启动。
注意:nginx:master process后面有一个路径,这就是nginx的安装路径。
第三步,访问站点。
从浏览器访问已经配置好的站点IP,如果页面显示“Welcome to nginx!”,则说明Nginx已经安装及配置好了。
nginx关闭、重启命令
第一步,关闭nginx。
命令:/usr/sbin/nginx -s stop
第二步,配置文件修改后,需要指定配置文件进行重启。
如果nginx服务已经停止,那就需要把nginx服务启动。
命令:/usr/sbin/nginx -c /etc/nginx/nginx.conf
重启nginx服务必须是在nginx服务已经启动的情况下进行,因为这时,/var/run中存在nginx.pid文件。
命令:/usr/sbin/nginx -s reload
tomcat安装
第一步,在/mnt文件夹中新建三个分别命名为server-jre、tomcat7和tomcat7-2的文件夹。
第二步,在server-jre文件夹下进行下载server-jre-8u202-linux-x64。到地址:Apache Tomcat® - Welcome!下载apache-tomcat-7.0.90的tar.gz压缩包。然后使用WinSCP将apache-tomcat-7.0.90压缩包上传到/mnt文件夹中的tomcat7和tomcat7-2文件夹。
命令:cd /mnt/server-jre
wget https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html/jre-8u202-linux-x64.tar.gz
第三步,分别在server-jre、tomcat7和tomcat7-2三个文件夹下进行解压tar.gz压缩包。
命令:cd /mnt/server-jre
tar -zxvf server-jre-8u202-linux-x64.tar.gz
cd /mnt/tomcat7
tar -zxvf apache-tomcat-7.0.90.tar.gz
cd /mnt/tomcat7-2
tar -zxvf apache-tomcat-7.0.90.tar.gz
第四步,配置jre环境变量,打开/etc/profile文件,在文件底部另起一行,加上下面四行代码:
export JAVA_HOME=/usr/local/jdk1.8.0_202
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib/rt.jar:$JRE_HOME/lib/ext:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
第五步,测试server-jre是否配置成功。
#刷新profile文件
source /etc/profile
#查看jdk版本
java -version
如果成功显示server-jre的版本,则说明server-jre配置成功。
tomcat配置及启动
第一步,配置tomcat环境变量,打开/etc/profile文件,在文件底部添加配置之后显示如下:
export JAVA_HOME=/usr/local/jdk1.8.0_202export JRE_HOME=$JAVA_HOME/jre#tomcat1export CATALINA_HOME=/mnt/tomcat7/apache-tomcat-7.0.90export CATALINA_BASE=/mnt/tomcat7/apache-tomcat-7.0.90export TOMCAT_HOME=/mnt/tomcat7/apache-tomcat-7.0.90#tomcat2export CATALINA_2_HOME=/mnt/tomcat7-2/apache-tomcat-7.0.90export CATALINA_2_BASE=/mnt/tomcat7-2/apache-tomcat-7.0.90export TOMCAT_2_HOME=/mnt/tomcat7-2/apache-tomcat-7.0.90export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib/rt.jar:$JRE_HOME/lib/ext:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
#刷新profile文件
命令:source /etc/profile
第二步,编辑配置tomcat7和tomcat7-2中的server.xml文件。
进入文件夹/mnt/tomcat7/apache-tomcat-7.0.90/conf,编辑server.xml。server.xml文件代码如下:
<?xml version="1.0" encoding="UTF-8"?>...<Server port="8009" shutdown="SHUTDOWN"> #port设置为8009<Listener...<Connector port="9004" protocol="HTTP/1.1" #port设置为9004connectionTimeout="20000"redirectPort="8443" />...<!-- Define an AJP 1.3 Connector on port 8009 --><Connector port="8039" protocol="AJP/1.3" #port设置为8039redirectPort="8443" />...</Server>
进入文件夹/mnt/tomcat7-2/apache-tomcat-7.0.90/conf,编辑server.xml。server.xml文件代码如下:
<?xml version="1.0" encoding="UTF-8"?>...<Server port="8010" shutdown="SHUTDOWN"> #port设置为8010<Listener...<Connector port="9006" protocol="HTTP/1.1" #port设置为9006connectionTimeout="20000"redirectPort="8443" />...<!-- Define an AJP 1.3 Connector on port 8009 --><Connector port="8040" protocol="AJP/1.3" #port设置为8040redirectPort="8443" />...</Server>
第三步,编辑配置/mnt/tomcat7-2/apache-tomcat-7.0.90/bin下的 catalina.sh文件。为防止出错,先提前备份一下,然后把catalina.sh 和startup.bat文件中的变量CATALINA_HOME、CATALINA_BASE和CATALINA_TMPDIR对应替换成与环境变量配置时一致的CATALINA_2_HOME、CATALINA_2_BASE和CATALINA_2_TMPDIR,最后给予权限。
命令:cd /mnt/tomcat7-2/apache-tomcat-7.0.90/bin
chmod a+x catalina.sh
第四步,编辑配置tomcat7和tomcat7-2文件夹中的startup.sh 和 shutdown.sh文件。
/mnt/tomcat7/apache-tomcat-7.0.90/bin下的startup.sh文件代码如下:
#!/bin/sh...# Start Script for the CATALINA Server# ---------------------------------------------------------export CATALINA_BASE=$CATALINA_BASEexport CATALINA_HOME=$CATALINA_HOMEexport TOMCAT_HOME=TOMCAT_HOME# Better OS/400 detection: see Bugzilla 31132...
/mnt/tomcat7/apache-tomcat-7.0.90/bin下的shutdown.sh文件代码如下:
#!/bin/sh...# Stop script for the CATALINA Server# ---------------------------------------------------------export CATALINA_BASE=$CATALINA_BASEexport CATALINA_HOME=$CATALINA_HOMEexport TOMCAT_HOME=TOMCAT_HOME# Better OS/400 detection: see Bugzilla 31132...
/mnt/tomcat7-2/apache-tomcat-7.0.90/bin下的startup.sh文件代码如下:
#!/bin/sh...# Start Script for the CATALINA Server# ---------------------------------------------------------export CATALINA_BASE=$CATALINA_2_BASE export CATALINA_HOME=$CATALINA_2_HOMEexport TOMCAT_HOME=TOMCAT_2_HOME# Better OS/400 detection: see Bugzilla 31132...
/mnt/tomcat7-2/apache-tomcat-7.0.90/bin下的shutdown.sh文件代码如下:
#!/bin/sh...# Stop script for the CATALINA Server# ---------------------------------------------------------export CATALINA_BASE=$CATALINA_2_BASEexport CATALINA_HOME=$CATALINA_2_HOMEexport TOMCAT_HOME=TOMCAT_2_HOME# Better OS/400 detection: see Bugzilla 31132...
第五步,测试tomcat是否配置成功。
命令:cd /mnt/tomcat7/apache-tomcat-7.0.90/bin
./startup.sh
netstat -ntl | grep 9004
cd /mnt/tomcat7-2/apache-tomcat-7.0.90/bin
./startup.sh
netstat -ntl | grep 9006
如果结果成功显示“Tomcat started”,则说明tomcat成功启动。
如果tomcat启动失败,那么可能就是启动时使用的端口被其他应用程序占用了,可以查看端口被哪个应用程序占用了。
命令:lsof -i:端口号
ps -ef | grep 进程号PID
tomcat成功启动后,然后直接根据IP和端口在本地浏览器访问。
如果页面成功显示“Apache Tomcat/8.5.73”,则说明tomcat配置成功。
如果发现访问不到,可以查看防火墙是否开着。
命令:systemctl status firewalld.service #查看防火墙的状态
systemctl stop firewalld.service #临时将防火墙关闭
关闭tomcat命令:./shutdown.sh
不进入nginx根目录即可进行相应的操作
第一步,新建nginx启动脚本代码。
在文件夹/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.confnginxd=/usr/sbin/nginxnginx_config=/etc/nginx/nginx.confnginx_pid=/var/run/nginx.pidRETVAL=0prog="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 ];thenecho "nginx already running...."exit 1fiecho -n $"Starting $prog: "daemon $nginxd -c ${nginx_config}RETVAL=$?echo[ $RETVAL = 0 ] && touch /var/lock/subsys/nginxreturn $RETVAL}# Stop nginx daemons functions.stop() {echo -n $"Stopping $prog: "killproc $nginxdRETVAL=$?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 -HUPRETVAL=$?echo}# See how we were called.case "$1" instart)start;;stop)stop;;reload)reload;;restart)stopstart;;status)status $progRETVAL=$?;;*)echo $"Usage: $prog {start|stop|restart|reload|status|help}"exit 1esacexit $RETVAL
第二步,给予/etc/init.d/nginx文件权限。
命令 :chmod +x /etc/init.d/nginx
# 设置开机自启
命令:chkconfig --add nginx
chkconfig nginx on
# 检查nginx命令
命令:service nginx
/etc/init.d/nginx: line 20: [: =: unary operator expected
Usage: nginx {start|stop|restart|reload|status|help}
第三步,检查一下脚本是否有用。
命令:/sbin/chkconfig nginx on
sudo /sbin/chkconfig --list nginx
如果结果显示“nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off”,则说明脚本文件有用。
第四步,nginx启动、关闭以及重启命令。
ps -ef | grep nginx
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl reload nginx
或
service nginx start
service nginx stop
service nginx restart
不进入tomcat根目录即可进行相应的操作
第一步,进入/mnt/文件夹,新建两个文件,分别命名为tomcat1和tomcat2,并在这两文件中编写脚本,两个文件的脚本类似,只要更改server-jre路径和tomcat路径即可。文件的脚本如下:
#!/bin/bash### BEGIN INIT INFO# Provides: tomcat# Required-Start: $remote_fs $syslog# Required-Stop: $remote_fs $syslog# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: tomcat-server daemon# Description: tomcat-server daemon### END INIT INFO## chkconfig: - 95 15# description: Tomcat start/stop/status script#更改server-jre路径export JRE_HOME=/mnt/server-jre/jdk1.8.0_202export PATH=$JRE_HOME/bin:$PATH#CATALINA_HOME is the location of the configuration files of this instance of Tomcat#更改tomcat路径CATALINA_HOME=/mnt/tomcat7/apache-tomcat-7.0.90#TOMCAT_USER is the default user of tomcatTOMCAT_USER=root#TOMCAT_USAGE is the message if this script is called without any optionsTOMCAT_USAGE="Usage: $0 {\e[00;32mstart\e[00m|\e[00;31mstop\e[00m|\e[00;32mstatus\e[00m|\e[00;31mrestart\e[00m}"#SHUTDOWN_WAIT is wait time in seconds for java proccess to stopSHUTDOWN_WAIT=3tomcat_pid() {echo `ps -ef | grep $CATALINA_HOME/bin/tomcat-juli.jar | grep -v grep | tr -s " "|cut -d" " -f2`}start() {pid=$(tomcat_pid)if [ -n "$pid" ]; thenecho -e "\e[00;31mTomcat is already running (pid: $pid)\e[00m"elseecho -e "\e[00;32mStarting tomcat\e[00m"if [ `user_exists $TOMCAT_USER` = "1" ]; thensu $TOMCAT_USER -c $CATALINA_HOME/bin/startup.shelse$CATALINA_HOME/bin/startup.shfistatusfireturn 0}status() {pid=$(tomcat_pid)if [ -n "$pid" ]; thenecho -e "\e[00;32mTomcat is running with pid: $pid\e[00m"elseecho -e "\e[00;31mTomcat is not running\e[00m"fi}stop() {pid=$(tomcat_pid)if [ -n "$pid" ]; thenecho -e "\e[00;31mStoping Tomcat\e[00m"$CATALINA_HOME/bin/shutdown.shlet kwait=$SHUTDOWN_WAITcount=0;until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]doecho -n -e "\e[00;31mwaiting for processes to exit\e[00m\n";sleep 1let count=$count+1;doneif [ $count -gt $kwait ]; thenecho -n -e "\n\e[00;31mkilling processes which didn't stop after $SHUTDOWN_WAIT seconds\e[00m\n"kill -9 $pidfielseecho -e "\e[00;31mTomcat is not running\e[00m"fireturn 0}user_exists() {if id -u $1 >/dev/null 2>&1; thenecho "1"elseecho "0"fi}case $1 instart)start;;stop)stop;;restart)stopstart;;status)status;;*)echo -e $TOMCAT_USAGE;;esacexit 0
第二步,可直接把/mnt/tomcat1和/mnt/tomcat2文件分别复制到/etc/init.d文件夹中。
命令:cp /mnt/tomcat1 /etc/init.d/tomcat1
cp /mnt/tomcat2 /etc/init.d/tomcat2
第三步,添加执行权限,然后启动tomcat服务。现在不进入tomcat7和tomcat7-2根目录输入命令,不会再提示command not found。
命令:cd /etc/init.d
chmod +x tomcat1
chmod +x tomcat2
service tomcat1 start
service tomcat1 stop
service tomcat1 restart
service tomcat2 start
service tomcat2 stop
service tomcat2 restart
Nginx+Tomcat集群
在nginx.conf文件中添加nginxDemo和proxy_pass。
/usr/local/nginx/conf/nginx.conf文件脚本如下:
#user nginx nginx;worker_processes 2;#error_log /usr/local/nginx/logs/error.log crit;#pid /usr/local/nginx/logs/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 {...#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#添加nginxDemoupstream nginxDemo{server y.y.y.y:9004;server y.y.y.y:9006;}#gzip on;server {listen 80;server_name localhost;#charset utf-8;#access_log logs/host.access.log main;location / {root html;index index.html index.htm;#添加proxy_passproxy_pass http://nginxDemo;}...}
可以通过 netstat -ntpl查看启动状况。
最后直接根据IP和端口在本地浏览器访问,tomcat和nginx都需要访问。如果页面成功显示“Apache Tomcat/8.5.73”,则说明tomcat配置成功。如果页面显示“Welcome to nginx!”,则说明Nginx已经安装及配置成功。
Nginx+Tomcat集群的安装与配置相关推荐
- linux下使用nginx搭建集群,CentOS(linux) 下Nginx的安装(Nginx+Tomcat集群第一步)
CentOS(linux) 下Nginx的安装(Nginx+Tomcat集群) CentOS 7.4(腾讯云) pcre库 zlib库 openssl Nginx服务器 安装gcc g++开发类库 y ...
- Linux系统搭建Nginx+Tomcat集群部署
Nginx支持的负载均衡调度算法方式: 1. 热备:如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务.服务器处理请求的顺序:AAAAAA突然A挂啦,BBBBBBBBBBBBBB ...
- Nginx+Tomcat集群与负载均衡
Nginx+Tomcat集群与负载均衡 架构描述 前端一台nginx服务器做负载均衡器,后端放N台tomcat组成集群处理服务,通过nginx转发到后面(注:没做动静分离,静态动态全部都转给tomca ...
- Nginx+tomcat集群
Nginx+tomcat集群 定义:在测试环境中有多个tomcat运行这一个项目,需要nginx管理 2特点:1,增加项目访问能力 2,增加服务器性能 3,实现不同负载均衡 3负载均衡:根据每台服务器 ...
- nginx+tomcat集群负载均衡中的多虚拟主机配置
虽然夜深了,但是还是解决了这个困扰我一个晚上的问题,记录下来备查. 接着我前不久写的这一篇来的:Linux下nginx和tomcat的整合http://hi.baidu.com/gnaiqeh/blo ...
- nginx+tomcat集群配置
nginx是一个常见的轻量级反向代理服务器,以高并发,高性能,高可靠性而闻名.目前大部分集群使用nginx搭建.下面为nainx+tomcat集群搭建流程. 1.下载nginx(nginx下载地址)与 ...
- Nginx+Tomcat集群环境搭建
Tomcat集群能带来什么? 提高服务的性能.并发能力.以及高可用性 提高项目架构的横向扩展能力 提高服务的性能 实际公司线上生产环境都会选择一台机器部署一个tomcat,多台机器完成集群,毕竟一台机 ...
- Nginx+Tomcat集群部署
为了获取更好的性能,我们常常需要将tomcat进行集群部署.下文通过nginx转发实现tomcat集群,并通过nginx-upstream-jvm-route插件保证session的粘滞. 应用场景环 ...
- Nginx+tomcat集群的session共享问题
请求负载过程中会话信息不能丢失.那么需要在多个tomcat中session需要共享.所以需要进行相关问题的解决 配置Tomcat的session共享可以有三种解决方案: 第一种:是以负载均衡服务器本身 ...
最新文章
- leetcode 342. Power of Four
- 孙剑亲自撰文:我在 Face++ 的这半年
- HomeWindowsYesPlayMusic – 一个好看的第三方xx云音乐客户端 YesPlayMusic
- 让IE支持HTML5
- 王者归来!iPhone 13热销立功 苹果重夺销量全球第一
- 【Flink】FLink checkpoint 某个 subtask 特别耗时 DisconnectException: null
- 2020牛客多校训练1 H Minimum-cost Flow(最小费用流)
- 电脑广告太多,请避免安装这些软件
- Mac 删除不必要的 Adobe PS AI 组件
- ESD选型指南,带你了解不一样的ESD
- Android:给图片加边框
- 工资12000扣多少税?--2020年个人所得税最新算法Excel表格
- 叔叔阿姨,我真的不会修电脑
- 几种闪存技术:eMMC、UFS2.1、UFS3.0、SSD
- Dell电脑如何设置Fn键和其它功能键的组合
- vue之axios封装
- 使用曲面细分渲染毛发
- 目标如何设定:7 分钟重新认识 SMART 原则。
- 黑客:iPhone的这些脑残功能逼我去越狱 苹果:乖,招安是我强项!
- 大数据技术高频面试题汇总