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集群的安装与配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TJA1050比pC8C250一个值得关
- 下一篇: python检测图像中的矩形_检测图像中