阿里云 软件环境配置 JDK、MySQL、Openfire、Redis

一、登录阿里云网站后,重置服务器密码(root账号密码,刚开始密码是空的,需要设置密码后方可等)
二、修改实例名称、主机名称,如果不修改名称,登录云服务器后,你会发现 root@xxxxxxxxxxxx$: 一大串(默认的实例名)
步骤:云服务器ECS 实例详情 名称
云服务器ECS ,实例,华北1区,更多,实例设置,信息修改

JDK安装

jdk1.8 下载路径 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

下载链接
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

1、解压源码包
通过终端在/usr/local目录下新建java文件夹,命令行:
sudo mkdir /usr/local/java
然后将下载到压缩包拷贝到java文件夹中,命令行:
进入jdk源码包所在目录
cp jdk-8u25-linux-x64.tar.gz /usr/local/java
然后进入java目录,命令行:
cd /usr/local/java
解压压缩包,命令行:
sudo tar xvf jdk-8u25-linux-x64.tar.gz

设置jdk环境变量
这里采用全局设置方法,它是是所有用户的共用的环境变量
$sudo vim ~/.bashrc
打开之后在末尾添加

#java environment
export JAVA_HOME=/usr/aliyun/ocal/java/jdk1.8.0_25  
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=${JAVA_HOME}/bin:$PATH

执行命令使修改立即生效

source ~/.bashrc

查看是否已经安装了java
java -version

1 使用echo命令查看单个环境变量。例如:

echo $PATH

2 使用env查看所有环境变量。例如:
env
在/etc/profile文件中添加变量【对所有用户生效(永久的)】
用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。
例如:编辑/etc/profile文件,添加CLASSPATH变量
vi /etc/profile
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

注:修改文件后要想马上生效还要运行

source /etc/profile

不然只能在下次重进此用户时生效。

如果你在A窗口 做需要jdk的操作,在另一窗口配置好jdk后,关闭A窗口,重新操作

2 在用户目录下的.bash_profile文件中增加变量【对单一用户生效(永久的)】
用VI在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。
例如:编辑guok用户目录(/home/guok)下的.bash_profile

3 使用set查看所有本地定义的环境变量。

将下载下来的jdk-8u101-linux-x64.tar.gz文件解压。

使用如下命令解压:

sudo tar zxvf ./jdk-8u101-linux-x64.tar.gz
为了方便管理, 可将解压后的文件移至另一个文件夹, 笔者将文件移至了/usr/java/jdk1.8.0_101目录下.

为了方便下一步设置环境变量,将文件夹换了个短点的名字- jdk1.8

如果你想安装Java 8(i.e Java 1.8), 在上面的命令中用java7代替java8.
3.3.3 设置环境变量
编辑.bashrc文件

JAVA_HOME=/usr/java/jdk1.8.0_101
JRE_HOME=$JAVA_HOME/jre
JAVA_BIN=$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME PATH CLASSPATH

为了让更改立即生效,请在终端执行如下命令:
source ~/.bashrc

tomcat8.5.16安装

一、通过二进制包(tar.gz)安装

下载:

https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.16/bin/
tar zxvf apache-tomcat-8.5.16.tar.gz
移动

sudo mv apache-tomcat-8.5.16/ /usr/aliyun/apache-tomcat-8.5.16

直接运行
sudo ./startup.sh
等价于
sudo sh catalina.sh start
启动tomcat
关闭
./shutdown.sh
等价于
sudo sh catalina.sh stop
2.2.5 配置启动脚本
catalina.sh 脚本可以直接作为服务来使用, 我们做一个了链接即可
cd /etc/init.d
sudo ln -s /usr/aliyun/apache-tomcat-8.5.16/bin/catalina.sh ./tomcat8
那么启动 tomcat8
service tomcat8 start
OR
etc/init.d/tomcat8 start
停止 tomcat8
service tomcat8 stop
OR
etc/init.d/tomcat8 stop

配置管理员权限
sudo vim /opt/tomcat8/conf/tomcat-users.xml


Tomcat8访问管理页面localhost出现:403 Access Denied
还需步骤如下:
vi /usr/local/tomcat/apache-tomcat-8.5.9/webapps/manager/META-INF/context.xml
注解掉。

提示:按“i”插入,按Exc之后输入“:wq!”保存。

重启

/opt/tomcat8/bin/shutdown.sh
/opt/tomcat8/bin/startup.sh
注册成系统服务,开机自动启动
sudo cp /opt/tomcat8/bin/catalina.sh /etc/init.d/tomcat8
配置服务自启动:
sudo sysv-rc-conf

卸载:
sudo apt-get autoremove tomcat8

Tomcat8访问管理页面localhost出现:403 Access Denied
https://blog.csdn.net/u012167045/article/details/61624226

遇到如下问题:解决,修改访问路径为: http://localhost:8080, 之前是http s://

28-May-2018 19:21:22.641 INFO [http-nio-8080-exec-2] org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header
 Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
 java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens
	at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:422)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:683)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)

openfire

1、下载
wget http://download.igniterealtime.org/openfire/openfire_4_2_3.tar.gz
2、解压openfire文件
tar -xzvf openfire_4_2_3.tar.gz
3、将已解压的openfire目录移到usr下
mv openfire /usr/aliyun/
4、在/etc/profile中设置openfire的环境变量
export OPENFIRE_HOME=/usr/aliyun/openfire
export PATH= P A T H : PATH: PATH:OPENFIRE_HOME/bin
5、开机自启动(ubuntu 16.0.4 未验证)

cd /etc/init.d
# 在/etc/init.d目录下创建符号链接
In -s /usr/local/ydzw/openfire/bin/openfire openfire
# 注意权限,要不然可能无法运行
chmod 777 openfire
# 注册为服务
16.04 ubuntu中chkconfig已经被sysv-rc-conf替代,具体如下操作如下:
sysv-rc-conf命令:
apt-get install sysv-rc-conf
sysv-rc-conf openfire on

# 奔跑吧!
service openfire start

update-rc.d defaults
update-rc.d start 20 3 4 5
update-rc.d -f remove

https://stackoverflow.com/questions/20680050/how-do-i-install-chkconfig-on-ubuntu
https://blog.csdn.net/u012383839/article/details/79627876
https://www.cnblogs.com/dagehaoshuang/p/4047738.html
https://www.cnblogs.com/dagehaoshuang/p/4047738.html
https://blog.csdn.net/maobois/article/details/49741981

安装好openfire后,浏览器输入ip:9090访问,哈哈,无法打开控制页

查看服务器上openfire/logs/all.log tail -f all.log

2018.08.03 04:03:48 WARN  [Jetty-QTP-AdminConsole-21]: org.eclipse.jetty.http.HttpParser - Illegal character 0x16 in state=START for buffer HeapByteBuffer@1c56c5df[p=1,l=158,c=8192,r=157]={\x16<<<\x03\x03\x00\x99\x01\x00\x00\x95\x03\x03[cc\x99C\xD9x...\x05\x03\x02\x03\x02\x02\x00\x17\x00\x00\xFf\x01\x00\x01\x00>>>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}
2018.08.03 04:03:48 WARN  [Jetty-QTP-AdminConsole-21]: org.eclipse.jetty.http.HttpParser - badMessage: 400 Illegal character 0x16 for HttpChannelOverHttp@5c1477b0{r=0,c=false,a=IDLE,uri=}
2018.08.03 04:03:48 WARN  [Jetty-QTP-AdminConsole-25]: org.eclipse.jetty.http.HttpParser - Illegal character 0x16 in state=START for buffer HeapByteBuffer@7aede80f[p=1,l=106,c=8192,r=105]={\x16<<<\x03\x01\x00e\x01\x00\x00a\x03\x01[cc\x99\x91k\xF4...\x00\x0b\x00\x02\x01\x00\x00\x17\x00\x00\xFf\x01\x00\x01\x00>>>\x00\x00\n\x00\x08\x00\x06\x00\x17\x00\x18\x00\x19\x00\x0b\x00\x02...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}
2018.08.03 04:03:48 WARN  [Jetty-QTP-AdminConsole-25]: org.eclipse.jetty.http.HttpParser - badMessage: 400 Illegal character 0x16 for HttpChannelOverHttp@3a3650b6{r=0,c=false,a=IDLE,uri=}
2018.08.03 04:03:48 WARN  [Jetty-QTP-AdminConsole-24]: org.eclipse.jetty.http.HttpParser - Illegal character 0x16 in state=START for buffer HeapByteBuffer@1c56c5df[p=1,l=106,c=8192,r=105]={\x16<<<\x03\x01\x00e\x01\x00\x00a\x03\x01[cc\x99\t\xBbN...\x00\x0b\x00\x02\x01\x00\x00\x17\x00\x00\xFf\x01\x00\x01\x00>>>\x00\x00\n\x00\x08\x00\x06\x00\x17\x00\x18\x00\x19\x00\x0b\x00\x02...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}
2018.08.03 04:03:48 WARN  [Jetty-QTP-AdminConsole-24]: org.eclipse.jetty.http.HttpParser - badMessage: 400 Illegal character 0x16 for HttpChannelOverHttp@2baa6ebd{r=0,c=false,a=IDLE,uri=}
2018.08.03 04:03:48 WARN  [Jetty-QTP-AdminConsole-24]: org.eclipse.jetty.http.HttpParser - Illegal character 0x16 in state=START for buffer HeapByteBuffer@7aede80f[p=1,l=158,c=8192,r=157]={\x16<<<\x03\x03\x00\x99\x01\x00\x00\x95\x03\x03[cc\x99\xA8\xE1\x1f...\x05\x03\x02\x03\x02\x02\x00\x17\x00\x00\xFf\x01\x00\x01\x00>>>\x00\x00\x00\x0b\x00\x02\x01\x00\x00\n\x00\n\x00\x08JJ\x00...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}
2018.08.03 04:03:48 WARN  [Jetty-QTP-AdminConsole-24]: org.eclipse.jetty.http.HttpParser - badMessage: 400 Illegal character 0x16 for HttpChannelOverHttp@256d95b8{r=0,c=false,a=IDLE,uri=}
2018.08.03 04:04:03 WARN  [Jetty-QTP-AdminConsole-21]: org.eclipse.jetty.http.HttpParser - Illegal character 0x16 in state=START for buffer HeapByteBuffer@7aede80f[p=1,l=185,c=8192,r=184]={\x16<<<\x03\x01\x00\xB4\x01\x00\x00\xB0\x03\x03\xFc\xAd^\n\xF1\x02{...\x00\x08\xAa\xAa\x00\x1d\x00\x17\x00\x18\n\n\x00\x01\x00>>>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}
2018.08.03 04:04:03 WARN  [Jetty-QTP-AdminConsole-21]: org.eclipse.jetty.http.HttpParser - badMessage: 400 Illegal character 0x16 for HttpChannelOverHttp@7327130e{r=0,c=false,a=IDLE,uri=}

于是开始倒腾了,重新安装jdk,重新安装openfire,就差还原系统了,最后实在没招了,是不是浏览器控制台链接地址错了,是的

http://ip:9090/setup/index.jsp

http后面不带s,记住不带s

之前查询端口是否被占用一直搞不明白,问了好多人,终于搞懂了,现在总结下:

1.netstat -anp |grep 端口号

https://blog.csdn.net/qq994406030/article/details/72828945
https://blog.csdn.net/huangbaokang/article/details/77184564

https://blog.csdn.net/u012167045/article/details/61624226
https://www.linuxidc.com/Linux/2016-11/136958.htm
https://www.cnblogs.com/qiuhong10/p/7815943.html
https://www.linuxidc.com/Linux/2016-11/136959.htm
https://www.cnblogs.com/EasonJim/p/7202844.html
https://www.cnblogs.com/hindy/p/7249234.html
https://blog.csdn.net/qq994406030/article/details/72828945

mysql 5.7安装

ubuntu上安装mysql非常简单只需要几条命令就可以完成。
https://www.cnblogs.com/EasonJim/p/7147787.html
更新设置到最新系统、从APT仓库中更新包的信息:
sudo apt-get update
sudo apt-get upgrade
1. sudo apt-get install mysql-server
2. apt-get install mysql-client
3. sudo apt-get install libmysqlclient-dev

https://www.linuxidc.com/Linux/2017-06/144805.htm
https://www.cnblogs.com/zhuyp1015/p/3561470.html
https://www.cnblogs.com/EasonJim/p/7147787.html
https://www.cnblogs.com/zxhyJack/p/8596864.html

远程连接

远程连接
mysql -u root -p
show databases; 就可以查看当前的数据库。
选择数据库
use mysql;
显示当前数据库的表单:show tables;

开启远程连接 
root 用户名 
% 所有人都可以访问 
password 密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES; 
查看现有用户,密码及允许连接的主机
select user,host from user;
查看端口号
show global variables like 'port';

重起mysql服务
service mysql restart
如果执行完以上步骤,还是不能远程连接,那么我们需要查看服务器的防火墙是否开启
service iptables status

如果防火墙开启,请关闭

service iptables stop

2、进入/etc/mysql/mysql.conf.d 目录下的 mysqld.cnf 文件中需要
把下面语句注释掉,使所以主机都可以链接
bind-address = 127.0.0.1

https://www.cnblogs.com/Nice-Boy/p/6224189.html
https://www.cnblogs.com/jycboy/p/6770069.html

##设置为服务,并开机自启动
https://www.cnblogs.com/EasonJim/p/7622180.html
https://blog.csdn.net/qq_14852397/article/details/71794574?locationNum=11&fps=1

##修改root密码

service mysql stop 停止服务
cp my.cnf my.cnf.bak  修改前先备份
vim   /etc/mysql/my.cnf
在 [mysqld]   下添加一行:skip-grant-tables=1    保存 退出
mysql -u root -p
show databases;
use mysql;
update user set authentication_string = password('xxxx') where user = 'root';
flush privileges;
service mysql restart

https://www.cnblogs.com/activiti/p/7810166.html

redis

安装http://www.runoob.com/redis/redis-install.html

tar -zvxf redis-3.2.6.tar.gz
mv redis-3.2.6 /usr/aliyun/
cd /usr/aliyun/redis
make
cd ./src
make install
cd ../redis
mkdir -p bin
mkdir -p etc
mv redis.conf etc/
cd src/
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server ../bin/
cd ../etc/
vi redis.conf
将daemonize属性改为yes(表明需要在后台运行)

设置环境变量,并使之生效
新建或编辑此文件,复制如下代码
vim /etc/profile.d/redis.sh

export REDIS_HOME=/usr/aliyun/redis-3.2.6
export PATH=$PATH:$REDIS_HOME/bin

命令行执行此命令使配置生效 source /etc/profile.d/redis.sh

7、配置下面的内核参数,否则Redis脚本在重启或停止redis时,将会报错,并且不能自动在停止服务前同步数据到磁盘上/etc/sysctl.conf加上

#vim /etc/sysctl.conf
vm.overcommit_memory = 1 
#sysctl -p 
cd ../bin/
./redis-server ../etc/redis.conf

root@xu:/usr/aliyun/redis-3.2.6/bin# ./redis-server stop
21768:C 23 Aug 09:12:58.717 # Fatal error, can’t open config file ‘stop’
原因:没有stop命令,如果是apt-get方式安装的,可以使用/etc/init.d/redis-server stop 停止
否则使用 ./redis-cli shutdown 关闭
https://blog.csdn.net/abc231218/article/details/79599674

1、查看redis是否在运行: ps aux | grep redis
2、启动redis:    redis-server redis-conf
3、关闭redis:    redis-cli shutdown
4、当设置密码后,上面的关闭命令无效:带密码输入:    redis-cli -a [password]     回车后输入:shutdown
即可关闭redis,输入exit 退出。
5、查看redis密码;可查看 redis 安装根目录下的配置文件:redis-conf 中SECURITY下面的 requirepass 后面的内容,如图:密码是:123456

###Redis开机启动

centos下面的redis开机自启动: 
网上胡说八道的人太多了,其实一句话就解决问题了,那种脚本启动的方式,早就被淘汰了。

systemctl enable redis 

以上一条命令即可! 
查看所有的开机启动项:

systemctl list-unit-files |grep enabled

这个大大简化了原来的操作,什么各种脚本,各种外挂,早就该丢弃了。

如果感兴趣,可以进去看看redis.service这个里面的内容:

[root@minimal ~]# locate redis.service

这个是用户启动项,意思是只有这个用户登陆的时候才启动:

/usr/lib/systemd/system/redis.service

这个是系统开机启动项,意思是开机就启动,不管哪个用户登录:

/lib/systemd/system/redis.service

[root@minimal ~]# cat /lib/systemd/system/redis.service

[Unit]
Description=Redis persistent key-value database
After=network.target

[Service]
ExecStart=/usr/bin/redis-server /etc/redis.conf --daemonize no
ExecStop=/usr/bin/redis-shutdown
User=redis
Group=redis

[Install]
WantedBy=multi-user.target

就是这么简单,其它的启动也是一样一样的!

https://www.cnblogs.com/KunGe-13/p/8340309.html
https://blog.csdn.net/zhezhebie/article/details/75120189
https://www.cnblogs.com/pqchao/p/6549510.html 开机启动
#Redis 安装 启动 连接 配置 重启
https://www.cnblogs.com/GoQC/p/5764201.html
Linux下安装

]# wget http://download.redis.io/releases/redis-2.8.17.tar.gz
]# tar xzf redis-2.8.17.tar.gz
]# cd redis-2.8.17
]# make
启动redis服务

]# cd src
]# ./redis-server
上面这种启动 redis使用的是默认配置,也可以通过启动参数告诉redis使用指定配置

]# ./redis-server redis.config
连接redis

[root@localhost src]# ./redis-cli
127.0.0.1:6379>
redis配置

redis的配置文件位于Redis安装目录下,文件名为 redis.conf。

可以通过CONFIG命令查看或者设置配置项

实例:

127.0.0.1:6379> config get loglevel

  1. “loglevel”
  2. “notice”
    使用 * 获取所有配置项

复制代码
127.0.0.1:6379> config get *

  1. “dbfilename”
  2. “dump.rdb”
  3. “requirepass”
  4. “”
  5. “masterauth”
  6. “”
  7. “unixsocket”
  8. “”
  9. “logfile”
  10. “”
  11. “pidfile”
  12. “/var/run/redis.pid”
  13. “maxmemory”
  14. “0”
  15. “maxmemory-samples”
  16. “3”
  17. “timeout”
  18. “0”
  19. “tcp-keepalive”
  20. “0”
  21. “auto-aof-rewrite-percentage”
  22. “100”
  23. “auto-aof-rewrite-min-size”
  24. “67108864”
  25. “hash-max-ziplist-entries”
  26. “512”
  27. “hash-max-ziplist-value”
  28. “64”
  29. “list-max-ziplist-entries”
  30. “512”
  31. “list-max-ziplist-value”
  32. “64”
  33. “set-max-intset-entries”
  34. “512”
  35. “zset-max-ziplist-entries”
  36. “128”
  37. “zset-max-ziplist-value”
  38. “64”
  39. “hll-sparse-max-bytes”
  40. “3000”
  41. “lua-time-limit”
  42. “5000”
  43. “slowlog-log-slower-than”
  44. “10000”
  45. “latency-monitor-threshold”
  46. “0”
  47. “slowlog-max-len”
  48. “128”
  49. “port”
  50. “6379”
  51. “tcp-backlog”
  52. “511”
  53. “databases”
  54. “16”
  55. “repl-ping-slave-period”
  56. “10”
  57. “repl-timeout”
  58. “60”
  59. “repl-backlog-size”
  60. “1048576”
  61. “repl-backlog-ttl”
  62. “3600”
  63. “maxclients”
  64. “10000”
  65. “watchdog-period”
  66. “0”
  67. “slave-priority”
  68. “100”
  69. “min-slaves-to-write”
  70. “0”
  71. “min-slaves-max-lag”
  72. “10”
  73. “hz”
  74. “10”
  75. “no-appendfsync-on-rewrite”
  76. “no”
  77. “slave-serve-stale-data”
  78. “yes”
  79. “slave-read-only”
  80. “yes”
  81. “stop-writes-on-bgsave-error”
  82. “yes”
  83. “daemonize”
  84. “no”
  85. “rdbcompression”
  86. “yes”
  87. “rdbchecksum”
  88. “yes”
  89. “activerehashing”
  90. “yes”
  91. “repl-disable-tcp-nodelay”
  92. “no”
  93. “aof-rewrite-incremental-fsync”
  94. “yes”
  95. “aof-load-truncated”
  96. “yes”
  97. “appendonly”
  98. “no”
  99. “dir”
  100. “/home/lxg/redis/redis-2.8.17/src”
  101. “maxmemory-policy”
  102. “volatile-lru”
  103. “appendfsync”
  104. “everysec”
  105. “save”
  106. “3600 1 300 100 60 10000”
  107. “loglevel”
  108. “notice”
  109. “client-output-buffer-limit”
  110. “normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60”
  111. “unixsocketperm”
  112. “0”
  113. “slaveof”
  114. “”
  115. “notify-keyspace-events”
  116. “”
  117. “bind”
  118. “”
    复制代码

复制代码
redis.conf 配置项说明如下:

  1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
    daemonize no

  2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定
    pidfile /var/run/redis.pid

  3. 指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字
    port 6379

  4. 绑定的主机地址
    bind 127.0.0.1
    5.当 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
    timeout 300

  5. 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
    loglevel verbose

  6. 日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null
    logfile stdout

  7. 设置数据库的数量,默认数据库为0,可以使用SELECT 命令在连接上指定数据库id
    databases 16

  8. 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
    save
    Redis默认配置文件中提供了三个条件:
    save 900 1
    save 300 10
    save 60 10000
    分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。

  9. 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大
    rdbcompression yes

  10. 指定本地数据库文件名,默认值为dump.rdb
    dbfilename dump.rdb

  11. 指定本地数据库存放目录
    dir ./

  12. 设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步
    slaveof

  13. 当master服务设置了密码保护时,slav服务连接master的密码
    masterauth

  14. 设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH 命令提供密码,默认关闭
    requirepass foobared

  15. 设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息
    maxclients 128

  16. 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区
    maxmemory

  17. 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no
    appendonly no

  18. 指定更新日志文件名,默认为appendonly.aof
    appendfilename appendonly.aof

  19. 指定更新日志条件,共有3个可选值:
    no:表示等操作系统进行数据缓存同步到磁盘(快)
    always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
    everysec:表示每秒同步一次(折衷,默认值)
    appendfsync everysec

  20. 指定是否启用虚拟内存机制,默认值为no,简单的介绍一下,VM机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上,访问多的页面由磁盘自动换出到内存中(在后面的文章我会仔细分析Redis的VM机制)
    vm-enabled no

  21. 虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享
    vm-swap-file /tmp/redis.swap

  22. 将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的(Redis的索引数据 就是keys),也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0
    vm-max-memory 0

  23. Redis swap文件分成了很多的page,一个对象可以保存在多个page上面,但一个page上不能被多个对象共享,vm-page-size是要根据存储的 数据大小来设定的,作者建议如果存储很多小对象,page大小最好设置为32或者64bytes;如果存储很大大对象,则可以使用更大的page,如果不 确定,就使用默认值
    vm-page-size 32

  24. 设置swap文件中的page数量,由于页表(一种表示页面空闲或使用的bitmap)是在放在内存中的,,在磁盘上每8个pages将消耗1byte的内存。
    vm-pages 134217728

  25. 设置访问swap文件的线程数,最好不要超过机器的核数,如果设置为0,那么所有对swap文件的操作都是串行的,可能会造成比较长时间的延迟。默认值为4
    vm-max-threads 4

  26. 设置在向客户端应答时,是否把较小的包合并为一个包发送,默认为开启
    glueoutputbuf yes

  27. 指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法
    hash-max-zipmap-entries 64
    hash-max-zipmap-value 512

  28. 指定是否激活重置哈希,默认为开启(后面在介绍Redis的哈希算法时具体介绍)
    activerehashing yes

  29. 指定包含其它的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各个实例又拥有自己的特定配置文件
    include /path/to/local.conf
    复制代码
    可以通过修改redis.conf文件或者使用config set 命令来修改配置

127.0.0.1:6379> config set loglevel ‘notice’
OK
如何停止/启动/重启redis服务

下面内容来自:http://outofmemory.cn/code-snippet/37597/how-to-stop-start-restart-redis-server

如果是用apt-get或者yum install安装的redis,可以直接通过下面的命令停止/启动/重启redis

/etc/init.d/redis-server stop
/etc/init.d/redis-server start
/etc/init.d/redis-server restart
如果是通过源码安装的redis,则可以通过redis的客户端程序redis-cli的shutdown命令来重启redis

redis-cli -h 127.0.0.1 -p 6379 shutdown
如果上述方式都没有成功停止redis,则可以使用终极武器 kill -9 xxx(端口号)

##Redis远程连接密码问题
redis默认配置只允许本地练级,即只能在linux服务器上操作redis,否则会报连接异常。
Connect Refused异常
将redis.conf配置文件,看到bind 127.0.0.1吗? 注释掉
vi /etc/redis/redis.conf 保持和redis-3.2.6目录下刚修改的文件一致
没有设置密码,客户端连接时
(error) DENIED Redis is running in protected mode because protected mode is enabled
redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect

./redis-cli -p port(之前配置过端口)  shutdown   首先停止服务

vi redis.conf
#bind 127.0.0.1   注释掉 
requirepass "xxx"   打开注释  
protected-mode no
./redis-server redis.conf
vi /usr/aliyun/redis-3.2.6/etc/redis.conf 
#bind 127.0.0.1
requirepass "xxxx"
cp  redis.conf  /etc/redis/

https://www.cnblogs.com/suanshun/p/7699084.html
https://www.cnblogs.com/lonecloud/p/9084761.html
https://www.cnblogs.com/lyh421/p/7145430.html

/usr/bin/redis-cli

(error) NOAUTH Authentication required
原因:配置了密码,但是使用./redis-cli操作连接时,没有加 -a “xxx”

##./redis-cli shutdown  添加redis密码后,换成下面这句命令
port为redis.conf中设置的端口   xxx为密码,如果没有修改端口,可以不用加 -p 端口,端口号默认为6379
./redis-cli -h 127.0.0.1 -p 6379(port) -a "xxxx"  shutdown  停止命令
./redis-cli -h 127.0.0.1 -p 6379 -a "xxxx"  启动客户端
telnet  127.0.0.1 6379

如果修改过端口
操作时必须 加上 -p 端口号,添加过密码 就加上 -a “xxx”
./redis-cli -p 12705
./redis-cli shutdown 是使用默认端口,没有密码的操作命令

redis3.0 装完后 其它机子访问爆protocol error, got ‘n’ as reply type byte
仔细看下,是不是 -p 后面的端口号写错了

报异常

2018-08-23 20:03:44.016 ERROR 8980 --- [nio-8032-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.data.redis.RedisConnectionFailureException: java.net.SocketException: Connection reset; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketException: Connection reset] with root cause

java.net.SocketException: Connection reset

遇到一个特别奇怪的问题,使用架构中的redis可以正常设置,获取,但是使用客户端 获取所有 keys * 时候数据时空的,最后发现redis配置了数据库1,默认情况下是0 ,select 1,然后 keys * 就可以获取设置的值了
https://blog.csdn.net/a532672728/article/details/78035559

Reading the configuration file, at line 163

‘logfile “/usr/aliyun/redis-3.2.6/logs”’
Can’t open the log file: Is a directory

将redis.conf中的
logfile /var/log/redis/redis-server.log 修改为
logfile “”
https://stackoverflow.com/questions/35955853/docker-redis-cant-open-the-log-file-no-such-file-or-directory

http://www.cnblogs.com/jaign/articles/7920588.html redis Windows 64位安装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值