目录
一 nginx安装及配置
1. yum安装
需要提前配置好epel源
[root@s1 ~]# yum install epel-release -y
[root@s1 ~]# yum install -y nginx
#查看nginx相关文件
[root@s1 ~]# rpm -ql nginx
#查看nginx安装包信息
[root@s1 ~]# rpm -qi nginx
#查看帮助
[root@s1 ~]# nginx -h
nginx version: nginx/1.16.1
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]
Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit #显示版本和编译参数
-t : test configuration and exit #测试配置文件是否异常
-T : test configuration, dump it and exit #测试并打印
-q : suppress non-error messages during configuration testing #静默模式
-s signal : send signal to a master process: stop, quit, reopen, reload #发送信号
-p prefix : set prefix path (default: /usr/share/nginx/) #指定Nginx目录
-c filename : set configuration file (default: /etc/nginx/nginx.conf) #配置文件路径
-g directives : set global directives out of configuration file #设置全局指令
2. 编译安装
2.1 准备编译安装的基础环境:
[root@s2 ~]# yum install -y vim lrzsz tree screen psmisc lsof tcpdump wget ntpdate
gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel
nettools iotop bc zip unzip zlib-devel bash-completion nfs-utils automake libxml2
libxml2-devel libxslt libxslt-devel perl perl-ExtUtils-Embed
2.2 安装Nginx
官方源码包下载地址:
https://nginx.org/en/download.html
[root@s2 ~]# cd /usr/local/src/
[root@s2 src]# wget https://nginx.org/download/nginx-1.16.1.tar.gz
[root@s2 src]# tar xf nginx-1.16.1.tar.gz
[root@s2 src]# cd nginx-1.16.1/
编译是为了检查系统环境是否符合编译安装的要求,比如是否有gcc编译工具,是否支持编译参数当中的模块,并根据
开启的参数等生成Makefile文件为下一步做准备:
[root@s2 nginx-1.16.1]#./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module
[root@s2 nginx-1.16.1]# make #编译步骤,根据Makefile文件生成相应的模块
[root@s2 nginx-1.16.1]# make install #创建目录,并将生成的模块和文件复制到相应的目录:
[root@s2 nginx-1.16.1]# useradd nginx -s /sbin/nologin -u 2000 #以普通用户启动nginx
[root@s2 nginx-1.16.1]# chown nginx.nginx -R /apps/nginx/
2.3 验证版本及编译参数
[root@s2 nginx-1.16.1]# /apps/nginx/sbin/nginx -V
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/apps/nginx --user=nginx --group=nginx
--with-http_ssl_module --with-http_v2_module --with-http_realip_module
--with-http_stub_status_module --with-http_gzip_static_module --with-pcre
--with-stream --with-stream_ssl_module --with-stream_realip_module
2.4 创建nginx自启动脚本
[root@s1 ~]# cat /usr/lib/systemd/system/nginx.service
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid
# Nginx will fail to start if /run/nginx.pid already exists but has the wrong
# SELinux context. This might happen when running `nginx -t` from the cmdline.
# https://bugzilla.redhat.com/show_bug.cgi?id=1268621
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/apps/nginx/sbin/nginx -t
ExecStart=/apps/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
[Install]
WantedBy=multi-user.target
2.5 配置nginx
Nginx的配置文件的组成部分: 主配置文件:nginx.conf,子配置文件 include conf.d/*.conf
全局配置
[root@s2 ~]# grep -v "#" /apps/nginx/conf/nginx.conf | grep -v "^$"
user nginx nginx; #启动Nginx工作进程的用户和组
worker_processes auto; #启动Nginx工作进程的数量
worker_cpu_affinity 00000001 00000010 00000100 00001000; #将Nginx工作进程绑定到指定的CPU核心
error_log /apps/nginx/logs/error.log error;
pid /apps/nginx/logs/nginx.pid;
worker_priority 0; #工作进程nice值,-20~19
worker_rlimit_nofile 65536; #这个数字包括Nginx的所有连接(例如与代理服务器的连接等),而不仅仅是与
客户端的连接,另一个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制.
daemon off; #前台运行Nginx服务用于测试、docker等环境。
events { #事件模型配置参数
worker_connections 65536; #设置单个工作进程的最大并发连接数
use epoll; #使用epoll事件驱动,Nginx支持众多的事件驱动,比如select、poll、epoll,只能设置在
events模块中设置。
}
http详细配置
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
tcp_nopush on;
tcp_nodelay on;
upstream tomcat_server {
server 162.168.4.71:8089 weight=1 fail_timeout=5s max_fails=3;
server 162.168.4.72:8089 weight=1 fail_timeout=5s max_fails=3;
}
server {
listen 80;
server_name _;
location / {
proxy_pass http://tomcat_server;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
二 tomcat安装及配置
1. 安装jdk 8
1.1 yum安装
Debian, Ubuntu, etc.
$ sudo apt-get install openjdk-8-jre openjdk-8-jdk
Fedora, Oracle Linux, Red Hat Enterprise Linux, etc.
$ su -c "yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel"
1.2 rpm包安装
(1)登录到https://www.oracle.com/java/technologies/oracle-java-archive-downloads.html,下载oracle版本的jdk(本次下载jdk 8 LINUX 64位,需登录oracle账户下载);
(2)安装并配置环境变量
安装
# yum install jdk-8u192-linux-x64.rpm
# ll /usr/java
lrwxrwxrwx 1 root root 16 1月 13 01:22 default -> /usr/java/latest
drwxr-xr-x 8 root root 258 1月 13 01:22 jdk1.8.0_192
lrwxrwxrwx 1 root root 28 1月 13 01:22 latest -> /usr/java/jdk1.8.0_192
java环境变量配置
# vi /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH
# . /etc/profile.d/jdk.sh
查看版本
# java -version
java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)
1.3 二进制安装
下载二进制包,解压至任意目录,配置环境变量同上。
2. 安装tomcat(两个节点分别安装)
2.1 yum安装
可以使用CentOS7 yum源自带的安装。yum源中是Tomcat 7.0版本。安装完通过浏览器可以观察一下首页
# yum install tomcat tomcat-admin-webapps tomcat-webapps
# systemctl start tomcat.service
ss -tanl
2.2 二进制安装
采用Apache官网下载,下载8.x.x
# tar xf apache-tomcat-8.5.42.tar.gz -C /usr/local
# cd /usr/local
# ln -sv apache-tomcat-8.5.42/ tomcat
"tomcat" -> "apache-tomcat-8.5.42/"
# cd tomcat
# cd bin
# ./catalina.sh --help
# ./catalina.sh version
# ./catalina.sh start
# ss -tanlp
# ./catalina.sh stop
其他启停脚本
# ./startup.sh
# ./shutdown.sh
useradd -r java 建立系统账号
上例中,启动身份是root,如果使用普通用户启动可以使用
# useradd -r java
# chown -R java.java ./*
# su - java -c '/usr/local/tomcat/bin/catalina.sh start'
# ps -aux | grep tomcat
2.3. 配置server.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="44ba3c71d57f494992641b258b965f28">
<Service name="Catalina">
#修改访问端口,默认8080
<Connector port="8089" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
</Host>
</Engine>
</Service>
</Server>
2.4. 配置Redis+Session共享
# cd /usr/local/tomcat/conf/
# cp context.xml context.xml.bak
# cat context.xml
......
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="162.16.4.203"
port="6379"
database="0"
maxInactiveInterval="60" />
2.5. 将依赖的jar包拷贝到tomcat的lib目录下
# pwd
/usr/local/src/tomcat_redis_session/jar
# ll
total 676
-rw-rw-r--. 1 root root 111969 Jul 29 2015 commons-pool2-2.3.jar
-rw-rw-r--. 1 root root 553762 Oct 16 2017 jedis-2.7.3.jar
-rw-rw-r--. 1 root root 20241 Aug 27 16:45 tomcat-redis-session-manager-master-2.0.0.jar
# cp -rf ./* /usr/local/tomcat/lib/
2.6. 配置自定义测试页面
节点一
# mkdir /usr/local/tomcat/webapps/test
# vim /usr/local/tomcat/webapps/test/index.jsp
<html>
<body bgcolor="green">
<center>
<%= request.getSession().getId() %>
<h1>this is Tomcat-server1! </h1>
</center>
</body>
</html>
节点二
# mkdir /usr/local/tomcat/webapps/test
# vim /usr/local/tomcat/webapps/test/index.jsp
<html>
<body bgcolor="red">
<center>
<%= request.getSession().getId() %>
<h1>this is Tomcat-server2! </h1>
</center>
</body>
</html>
三 redis安装及配置
1. 下载redis源码包
下载地址 http://download.redis.io/releases/
2. 编译安装命令
官方的安装命令:
https://redis.io/download
# pwd
/usr/local/src
# tar xf redis-5.0.3.tar.gz
# cd redis-5.0.3
# make PREFIX=/apps/redis install #指定redis安装目录
# ll /usr/local/redis/
total 0
drwxr-xr-x 2 root root 134 Dec 13 09:21 bin
# mkdir /apps/redis/{etc,logs,data,run} #创建配置文件、日志、数据等目录
# cp redis.conf /apps/redis/etc/
# groupadd -g 1000 redis && useradd -u 1000 -g 1000 redis -s /sbin/nologin
# chown redis.redis -R /apps/redis
3. 编辑redis服务启动脚本
[root@s1 ~]# cat /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
#ExecStart=/usr/bin/redis-server /etc/redis.conf --supervised systemd
ExecStart=/apps/redis/bin/redis-server /apps/redis/etc/redis.conf --supervised systemd
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
4. 创建命令软连接
# ln -sv /apps/redis/bin/redis-* /usr/bin/
‘/usr/bin/redis-benchmark’ -> ‘/apps/redis/bin/redis-benchmark’
‘/usr/bin/redis-check-aof’ -> ‘/apps/redis/bin/redis-check-aof’
‘/usr/bin/redis-check-rdb’ -> ‘/apps/redis/bin/redis-check-rdb’
‘/usr/bin/redis-cli’ -> ‘/apps/redis/bin/redis-cli’
‘/usr/bin/redis-sentinel’ -> ‘/apps/redis/bin/redis-sentinel’
‘/usr/bin/redis-server’ -> ‘/apps/redis/bin/redis-server
5. 启动redis
# systemctl daemon-reload
# systemctl start redis
# ss -tnl
四 访问测试页面
redis安装启动成功后重启tomcat,访问nginx