热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linuxredis缓存服务器(Nginx+Tomcat+redis+MySQL实现session会话共享)

Linux命令【grep-v^#etcinittab|more】查看etcinittab文件,并过滤注释行网址http:tengine.taobao.org

Linux命令

【grep -v  "^#" /etc/inittab | more】查看/etc/inittab文件,并过滤注释行


网址

http://tengine.taobao.org/book/index.html nginx

https://www.w3cschool.cn/timlc/timlc-kzje24yn.html

https://www.cnblogs.com/bluestorm/p/4574688.html

http://www.cnblogs.com/linjiqin/p/5491654.html

https://blog.csdn.net/a19860903/article/details/49890013 

https://blog.csdn.net/cheetahlover/article/details/78845553

https://blog.csdn.net/vanilla_he/article/details/79257884

https://blog.csdn.net/zll_0405/article/details/80501898

https://blog.csdn.net/u010921373/article/details/71038509

https://blog.csdn.net/kepoon/article/details/73253059

https://blog.csdn.net/m0_37681914/article/details/76599596 JDK安装


安装nginx

1.安装zlib-devel、pcre-devel等依赖包

# yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel

 

2.创建nginx程序用户

# useradd -s /sbin/nologin www

-s:指定用户登入后所使用的shell。默认值为/sbin/nologin。

语法 nologin 实例 Linux禁止用户登录: 禁止用户登录后,用户不能登录系统,但可以登录ftp、SAMBA等

 

3.安装nginx

下载命令:wget http://nginx.org/download/nginx-1.12.2.tar.gz

解压:# tar -zxf nginx-1.12.2.tar.gz

进入nginx:# cd nginx-1.12.2/

进行配置(在此将Nginx安装指向/usr/local/nginx/ 目录下):

./configure --prefix=/usr/local/nginx1.12 --user=www --group=www --with-http_sub_status_module --with-http_realip_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre --with-http_flv-Module

进行编译和安装:make && make install

优化nginx程序的执行路径,创建软链接:ln -s /usr/local/nginx1.12/sbin/nginx /usr/local/sbin/

检查是否安装成功:# /usr/local/nginx1.12/sbin/nginx -t 或 nginx -t

 

4.新建nginx服务脚本:# vim /etc/init.d/nginx

#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# chkconfig: - 85 15
# pidfile: /usr/local/nginx1.12/logs/nginx.pid
# config: /usr/local/nginx1.12/conf/nginx.conf
nginxd=/usr/local/nginx1.12/sbin/nginx
nginx_config=/usr/local/nginx1.12/conf/nginx.conf
nginx_pid=/usr/local/nginx1.12/logs/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Start nginx daemons functions.
start() {
if [ -f $nginx_pid ] ; then
echo "nginx already running...."
exit 1
fi
echo -n "Starting $prog: "
   $nginxd -c ${nginx_config}
   RETVAL=$?
[ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
}
# Stop nginx daemons functions.
stop() {
echo -n "Stopping $prog: "
        $nginxd -s stop
        RETVAL=$?
[ $RETVAL = 0 ] &&rm -f /var/lock/subsys/nginx
}
# reloadnginx service functions.
reload() {
echo -n "Reloading $prog: "
    $nginxd -s reload
}
# statusngnx service functions
status() {
if [ -f $nginx_pid ] ; then
echo  "$prog is running"
else
echo  "$prog is stop"
fi
}
case "$1" in
start)
start
        ;;
stop)
stop
        ;;
reload)
reload
        ;;
restart)
stop
start
        ;;
status)
status
        ;;
*)
echo "Usage: $prog {start|stop|restart|reload|status}"
exit 1
        ;;
esac


# chmod +x /etc/init.d/nginx :添加可执行属性
# chkconfig --add nginx:
将nginx服务加入chkconfig管理列表
# chkconfig nginx on:设置终端模式开机启动
# systemctl daemon-reload:刚刚配置的服务需要让systemctl能识别,就必须刷新配置

5.配置nginx反向代理:反向代理+负载均衡+健康探测

nginx.conf文件内容:# cat /usr/local/nginx1.12/conf/nginx.conf

配置Nginx多核CPU:4核CPU,开户4个进程
worker_processes     4;  
worker_cpu_affinity 0001 0010 0100 1000;

worker_rlimit_nofile:为nginx工作进程改变打开最多文件描述符数目的限制。用来在不重启主进程的情况下增加限制。

use epoll;

#使用epoll的I/O 模型(值得注意的是如果你不知道Nginx该使用哪种轮询方法的话,它会选择一个最适合你操作系统的)

补充说明:

与apache相类,nginx针对不同的操作系统,有不同的事件模型
    A)标准事件模型
    Select、poll属于标准事件模型,如果当前系统不存在更有效的方法,nginx会选择select或poll
    B)高效事件模型
    Kqueue:使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用双处理器的MacOS X系统使用kqueue可能会造成内核崩溃。
    Epoll:使用于Linux内核2.6版本及以后的系统。
    /dev/poll:使用于Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+。
    Eventport:使用于Solaris 10. 为了防止出现内核崩溃的问题, 有必要安装安全补丁server_tokens off;server_tokens默认值是on,表示显示版本信息,设置server_tokens值是off,就可以在所有地方隐藏nginx的版本信息。

6.重启nginx服务,使修改生效

# service  nginx restart

# systemctl start nginx.service          启动nginx服务

# systemctl stop nginx.service           停止服务

# systemctl restart nginx.service        重新启动服务

# systemctl list-units --type=service     查看所有已启动的服务

# systemctl status nginx.service          查看服务当前状态

# systemctl enable nginx.service          设置开机自启动

# systemctl disable nginx.service         停止开机自启动

Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

# systemctl status nginx.service:查看出错原因

# systemctl status nginx.service -l:查看错误的详情

# nginx -t :检查配置文件是否正确,并修改

# ./sbin/nginx -V : 可以看到编译选项

查看nginx进程命令:ps -ef | grep  nginx

# chmod +x /web:添加root目录的执行权限

7.安装jdk

下载:# wget --no-COOKIEs --no-check-certificate --header "COOKIE: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-COOKIE" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"

解压缩:# tar -zxf jdk-8u141-linux-x64.tar.gz

将解压的jdk-8u141-linux-x64目录移致动到/usr/local/下并重命名为java:# mv jdk1.8.141/ /usr/local/java

在/etc/profile文件中添加内容如下:

export JAVA_HOME=/usr/local/java

export PATH=$JAVA_HOME/bin:$PATH

通过source命令执行profile文件,使其生效:# source /etc/profile

检查路径:# echo $PATH

检查Java版本:# java -version

8.安装tomcat

下载:# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz 

解压:# tar -zxf apache-tomcat-8.5.32.tar.gz 

将解压生成的文件夹移动到/usr/local/下,并改名为tomcat8:# mv apache-tomcat-8.5.32 /usr/local/tomcat8

配置tomcat环境变量/etc/profile文件内容如下:

export JAVA_HOME=/usr/local/java

export CATALINA_HOME=/usr/local/tomcat8

export PATH=$JAVA_HOME/bin:$CATALINA_HOME/bin:$PATH

通过source命令执行profile文件,使其生效:# source /etc/profile

查看PATH路径:# echo $PATH

查看tomcat的版本信息:# catalina.sh version

启动tomcat:# /usr/local/tomcat8/bin/startup.sh关闭tomcat:# /usr/local/tomcat8/bin/shutdown.sh

修改配置文件# vim /usr/local/tomcat8/conf/server.xml

防火墙规则配置:# firewall-cmd --permanent --add-port=8080/tcp

9.在 /usr/local 下部署两个Tomcat

复制tomcat8,重命名为:tomcat8-1  

 

编辑环境变量:vi /etc/profile

加入以下代码(tomcat路径要配置自己实际的tomcat安装目录)

#tomcat

CATALINA_BASE=/usr/local/tomcat8

CATALINA_HOME=/usr/local/tomcat8

TOMCAT_HOME=/usr/local/tomcat8

export CATALINA_BASE CATALINA_HOME TOMCAT_HOME

#tomcat1

CATALINA_2_BASE=/usr/local/tomcat8_2

CATALINA_2_HOME=/usr/local/tomcat8_2

TOMCAT_2_HOME=/usr/local/tomcat8_2

export CATALINA_2_BASE CATALINA_2_HOME TOMCAT_2_HOME

使之生效:source /etc/profile

打开catalina.sh ,找到下面红字,

 # OS specific support.  $var _must_ be set to either true or false.

在下面增加如下代码

export CATALINA_BASE=$CATALINA_2_BASE
export CATALINA_HOME=$CATALINA_2_HOME

来到第二个tomcat的conf目录下

打开server.xml更改端口:

修改server.xml配置和第一个不同的启动、关闭监听端口。

修改后示例如下:

                端口:8005->9005

9080

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

               enableLookups="false" redirectPort="8443" acceptCount="100"

               connectionTimeout="20000" disableUploadTimeout="true" />

9009

               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

分别进入两个tomcat的bin目录,启动tomcat--./startup.sh

打开浏览器分别对tomcat和tomcat-2访问测试

192.168.6.22:8080192.168.6.22:8081

Tomcat默认运行在8080端口,运行netstat命令查看8080端口监听的信息:# netstat -anpt | grep java

# catalina.sh config test

用浏览器访问nginx主机,验证负载均衡:192.168.6.22

 

linux中查看IP命令:ifconfig -a

如何在Linux下查找文件内容包含某个特定字符串的文件

find ./ name "*.*" | xargs grep "要查询的特定字符串"

10.配置tomcat通过redis实现会话保持

下载redis源码:# wget http://download.redis.io/releases/redis-4.0.10.tar.gz

阿里redis连接不通:# wget -c http://download.redis.io/redis-stable.tar.gz redis-4.0.10.tar.gz

github:https://github.com/antirez/redis

解压安装redis:# tar zxf redis-4.0.10.tar.gz

开始安装:

# cd redis-4.0.10/

# make && make install

切换到utils目录下,执行redis初始化脚本install_server.sh:

# cd utils/

# ./install_server.sh

通过上面的安装过程,我们可以看出redis初始化后redis配置文件为/etc/redis/6379.conf,日志文件为/var/log/redis_6379.log,数据文件dump.rdb存放到/var/lib/redis/6379目录下,启动脚本为/etc/init.d/redis_6379

使用systemd,所以在 /etc/systemd/system 下创建一个单位文件名字为 redis_6379.service

# vi /etc/systemd/system/redis_6379.service

内容

[Unit]
Description=Redis on port 6379
[Service]
Type=forking
ExecStart=/etc/init.d/redis_6379 start
ExecStop=/etc/init.d/redis_6379 stop
[Install]
WantedBy=multi-user.target

启动redis

刷新配置:# systemctl daemon-reload,如果没有权限可以使用sudo:$ sudo systemctl daemon-reload

redis服务加入开机启动:$ systemctl enable redis

禁止开机启动:$ systemctl disable redis

启动redis:$ systemctl start redis
重启redis:$ systemctl restart redis
停止redis:$ systemctl stop redis

查看状态:# systemctl status redis_6379.service

查看redis版本:# redis-cli --version

配置redis

设置redis监听的地址,添加监听redis主机的ip

考虑到安全性,我们需要启用redis的密码验证功能requirepass参数

# grep -Ev '^#|^$' /etc/redis/6379.conf
bind 127.0.0.1 192.168.6.20
requirepass pwd@123

重新启动redis服务:# systemctl restart redis_6379.service

查看端口:# netstat -anpt | grep redis

启动redis并进行简单的操作

连接redis服务器:# redis-cli -h 192.168.6.20 -p 6379 -a pwd@123

查看redis所有的键值对:keys *

添加一个键值name:set name yn

查看name这个键值的内容:get name

配置tomcat session redis同步

下载tomcat-redis-session-manager相应的jar包,主要有三个

tomcat-redis-session-manage-tomcat8.jar
jedis-2.5.2.jar
commons-pool2-2.2.jar

参考下载地址:https://blog.csdn.net/lipc_/article/details/52766884

https://github.com/cc-chen/tomcat8.0-redis-session-manager

添加下面的配置到tomcat的context.xml中

 
 

tomcat8.0-redis-session-manager.jar:wget https://github.com/cc-chen/tomcat8.0-redis-session-manager/raw/master/output/tomcat8.0-redis-session-manager.jar

jedis-2.5.2.jar  :wget https://github.com/cc-chen/tomcat8.0-redis-session-manager/blob/master/lib/jedis-2.5.2.jar

commons-pool2-2.2.jar: wget https://github.com/cc-chen/tomcat8.0-redis-session-manager/blob/master/lib/commons-pool2-2.2.jar

11.Linux下mysql5.6.33安装配置教程

https://www.jb51.net/article/111401.htm

https://www.jb51.net/article/102621.htm 推荐

#mysql -u root -p未找到命令;#加入环境变量export PATH=$PATH:/usr/local/mysql//bin
source /etc/profile

access denied for user root @localhost 给mysql用户设置密码,输入命令:passwd mysql

linux mysql操作命令:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/18/2216279.html

 

 

 

 

 


推荐阅读
  • yum安装_Redis —yum安装全过程
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Redis—yum安装全过程相关的知识,希望对你有一定的参考价值。访问https://redi ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 数据库(外键及其约束理解)(https:www.cnblogs.comchenxiaoheip6909318.html)My ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • 本文介绍了一种处理AJAX操作授权过期的全局方式,以解决Asp.net MVC中Session过期异常的问题。同时还介绍了基于WebImage的图片上传工具类。详细内容请参考链接:https://www.cnblogs.com/starluck/p/8284949.html ... [详细]
  • 网卡工作原理及网络知识分享
    本文介绍了网卡的工作原理,包括CSMA/CD、ARP欺骗等网络知识。网卡是负责整台计算机的网络通信,没有它,计算机将成为信息孤岛。文章通过一个对话的形式,生动形象地讲述了网卡的工作原理,并介绍了集线器Hub时代的网络构成。对于想学习网络知识的读者来说,本文是一篇不错的参考资料。 ... [详细]
author-avatar
清响11
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有