前言:

本博客借鉴一些写的比较好的博客,进行归纳总结,整理了一篇比较详细的服务器常见配置搭建教程
一来是和大家一起分享,二来也是作为自己的学习笔记记录一下。

温馨提示:

篇幅较长,请分阶段选择性查看。觉得不错,可以收藏一下,方便后期查看哦。

目录

体系:jdk + tomcat + Nginx + MySQL + Redis + Zookeeper

  • jdk1.8 安装搭建

  • tomcat 安装配置

  • Nginx 安装配置

  • MySQL5.7 安装配置

  • Redis 安装配置

  • zookeeper 安装配置

  • arthas工具安装配置

JDK1.8安装配置

Linux安装JDK完整步骤

1、检查一下系统中的jdk版本

[root@localhost software]# java -version

显示:

openjdk version "1.8.0_102"
OpenJDK Runtime Environment (build 1.8.0_102-b14)
OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)

2、检测jdk安装包

[root@localhost software]# rpm -qa | grep java

显示:

java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
python-javapackages-3.4.1-11.el7.noarch
tzdata-java-2016g-2.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch
java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64
java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64

3、卸载openjdk

[root@localhost software]# rpm -e --nodeps tzdata-java-2016g-2.el7.noarch
[root@localhost software]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
[root@localhost software]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
[root@localhost software]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
[root@localhost software]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64

或者使用

[root@localhost jvm]# yum remove *openjdk*

之后再次输入rpm -qa | grep java 查看卸载情况:

[root@localhost software]# rpm -qa | grep java
python-javapackages-3.4.1-11.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch

4、安装新的jdk

首先到jdk官网上下载你想要的jdk版本,下载完成之后将需要安装的jdk安装包放到Linux系统指定的文件夹下,并且命令进入该文件夹下:

[root@localhost software]# ll
total 252664
-rw-r--r--. 1 root root  11830603 Jun  9 06:43 alibaba-rocketmq-3.2.6.tar.gz
-rw-r--r--. 1 root root  43399561 Jun  9 06:42 apache-activemq-5.11.1-bin.tar.gz
-rwxrw-rw-. 1 root root 185540433 Apr 21 09:06 jdk-8u131-linux-x64.tar.gz
-rw-r--r--. 1 root root   1547695 Jun  9 06:44 redis-3.2.9.tar.gz
-rw-r--r--. 1 root root  16402010 Jun  9 06:40 zookeeper-3.4.5.tar.gz

解压 jdk-8u131-linux-x64.tar.gz安装包

[root@localhost software]# mkdir -p /usr/lib/jvm
[root@localhost software]# tar -zxvf jdk-8u131-linux-x64.tar.gz -C /usr/lib/jvm

5、设置环境变量

[root@localhost software]# vim /etc/profile

在最前面添加:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_131
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export  PATH=${JAVA_HOME}/bin:$PATH

6、执行profile文件

[root@localhost software]# source /etc/profile

这样可以使配置不用重启即可立即生效。

7、检查新安装的jdk

[root@localhost software]# java -version

显示:

java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

到此为止,整个安装过程结束。


Tomcat服务器安装与配置

首先在/usr/local/下建立一个tomcat的文件夹

cd /usr/local/mkdir tomcatcd tomcat/

在网上下载tomcat的包,我现在的是tomcat8,也可根据实际需要到官网上获取下载链接。

wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.20/bin/apache-tomcat-8.5.20.tar.gz

然后解压缩

tar zxvf apache-tomcat-8.5.20.tar.gz

将tomcat中的/bin/catalina.sh 脚本 拷贝到init.d下,这样是为了比较方面的启动tomcat,在任务地方通过service tomcat start 就可以启动tomcat

cp -p /usr/local/tomcat/bin/catalina.sh /etc/init.d/tomcat
vim /etc/init.d/tomcat

在第二行加入以下内容:

# chkconfig: 112 63 37
# description: tomcat server init script
# Source Function Library
. /etc/init.d/functions
JAVA_HOME=你的jdk路径
CATALINA_HOME=tomcat安装路径

例如:我的是

JAVA_HOME=/usr/java/jdk1.8.0_144/CATALINA_HOME=/usr/local/tomcat

保存文件后执行以下操作

chmod 755 /etc/init.d/tomcat
chkconfig --add tomcat
chkconfig tomcat on

启动tomcat:

service tomcat start

可在浏览器输入http://你的ip:8080,tomcat默认端口是8080,如果成功启动的话会看到tomcat主界面

配置
Linux下tomcat配置和windows下是一样的,这里讲下配置tomcat服务的访问端口:

cd /usr/local/tomcat/conf/
vim server.xml

找到:

<Connector port="8080" protocol="HTTP/1.1"

修改为:

<Connector port="你想要的端口" protocol="HTTP/1.1"

重启tomcat

service tomcat stopservice tomcat start

这样tomcat就配置成功了


Linux Nginx安装配置

  • 安装依赖
yum install gcc
yum install pcre-devel
yum install zlib zlib-devel
yum install openssl openssl-devel
//一键安装上面四个依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
  • 下载nginx的tar包
//创建一个文件夹
cd /usr/local
mkdir nginx
cd nginx
//下载tar包
wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -xvf nginx-1.13.7.tar.g
  • 安装nginx
//进入nginx目录
cd /usr/local/nginx
//执行命令
./configure
//执行make命令
make
//执行make install命令
make install
  • Nginx常用命令
//测试配置文件
安装路径下的/nginx/sbin/nginx -t
//启动命令
安装路径下的/nginx/sbin/nginx
//停止命令
安装路径下的/nginx/sbin/nginx -s stop
或者 : nginx -s quit
//重启命令
安装路径下的/nginx/sbin/nginx -s reload
//查看进程命令
ps -ef | grep nginx
//平滑重启
kill -HUP Nginx主进程号
  • 配置防火墙
//打开防火墙文件
sudo vim /etc/sysconfig/iptables
//新增行  开放80端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
//保存退
//重启防火墙
sudo service iptables restart
Nginx虚拟域名配置及测试验证
//编辑nginx.conf
sudo vim /usr/local/nginx/conf/nginx.conf
//增加行
include vhost/*.conf
//保存退出
//在/usr/local/nginx/conf目录新建vhost文件夹
mkdir vhost
//创建每个域名的配置
sudo vim jimisun.com.conf
//节点中增加入响应的配置 端口转发  或者访问文件系统
  • Nginx启动
//进入nginx安装目录
cd sbin
sudo ./nginx
测试访问
http://ip地址
  • Nginx负载均衡配置

Nginx集反向代理和负载均衡于一身,在配置文件中修改配就可以实现

首先我们打开配置文件

[root@localhost nginx]# vim conf/nginx.conf

每一个server就是一个虚拟主机,我们有一个当作web服务器来使用

listen 80;代表监听80端口
server_name xxx.com;代表外网访问的域名
location / {};代表一个过滤器,/匹配所有请求,我们还可以根据自己的情况定义不同的过滤,比如对静态文件js、css、image制定专属过滤
root html;代表站点根目录
index index.html;代表默认主页

这样配置完毕我们输入域名就可以访问到该站点了。

负载均衡功能往往在接收到某个请求后分配到后端的多台服务器上,那我们就需要upstream{}块来配合使用

upstream xxx{};upstream模块是命名一个后端服务器组,组名必须为后端服务器站点域名,内部可以写多台服务器ip和port,还可以设置跳转规则及权重等等
ip_hash;代表使用ip地址方式分配跳转后端服务器,同一ip请求每次都会访问同一台后端服务器
server;代表后端服务器地址server{};server模块依然是接收外部请求的部分
server_name;代表外网访问域名
location / {};同样代表过滤器,用于制定不同请求的不同操作
proxy_pass;代表后端服务器组名,此组名必须为后端服务器站点域名server_name和upstream{}的组名可以不一致,server_name是外网访问接收请求的域名,upstream{}的组名是跳转后端服务器时站点访问的域名
  • 示例
配置Nginx负载均衡vi /nignx目录/nginx.conf#添加下面这段 backend可以自由命名upstream backend {#添加服务器到负载均衡server 192.168.1.252;server 192.168.1.251 weight=2;#设置该服务器在负载均衡中的权重  默认为1;越高则访问的频次越大server 192.168.1.252 down;  #表示down掉这台服务器,不参与负载均衡server 192.168.1.247 backup; #备用服务器 当其他服务器很忙或者down掉之后才会启动这台的}#配置参数
#max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误#fail_timeout:max_fails次失败后,暂停的时间。server {listen       80;server_name  localhost;location / {#反向代理的地址proxy_pass http://backend;     }}

Linux MySQL安装

将下载的压缩包复制到linux服务器/usr/local/路径下(下载地址https://dev.mysql.com/downloads/mysql/,进去下载默认是最新的,找到Looking for previous GA versions?,点击就可以找到以前的版本,Linux-Generic是通用版的意思)

1、进入压缩包存放目录

[root@localhost ~]# cd /usr/local

2、解压压缩包

[root@localhost local]# tar -xzvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

3、修改文件夹名字

将解压后的文件夹修改名字,文件夹名字改为mysql

4、检查并创建用户和用户组

  [root@localhost local]# cat /etc/group | grep mysql[root@localhost local]# cat /etc/passwd |grep mysql[root@localhost local]# groupadd mysql[root@localhost local]# useradd -r -g mysql mysql

5、创建data文件夹

某个版本之后就没有data文件夹了[root@localhost local]mkdir /usr/local/mysql/data

6、授权目录和用户


[root@localhost /]# cd /usr/local/
[root@localhost local]# chown -R mysql:mysql mysql/
[root@localhost local]# chmod -R 755 mysql/

7、安装并初始化(重要*)

执行下面之前去/etc/目录下查看是否有my.cnf配置文件,如果有,删除或者修改名字备份起来!不然会出现各种PID或者SOCK有关的问题

某个版本之后这个步骤是下面这样,以前是mysql_install_db,datadir就是安装路径,basedir就是根目录

[root@localhost local]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql

执行完上面之后,检查是否有Error,有的话及时解决。

[root@localhost local]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
2019-07-18T07:38:20.300936Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server      option (see documentation for more details).
2019-07-18T07:38:21.037889Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-07-18T07:38:21.124063Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-07-18T07:38:21.194242Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been start     ed. Generating a new UUID: 0448b7a0-a92f-11e9-ac91-fa163e17d701.
2019-07-18T07:38:21.195622Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-07-18T07:38:21.196412Z 1 [Note] A temporary password is generated for root@localhost: n2ta1yWih9-/

最后一行会有默认生成的密码,记下来

A temporary password is generated for root@localhost: n2ta1yWih9-/

8、复制启动脚本到资源目录

[root@localhost local]# cd mysql
[root@localhost mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld

提示是否覆盖的话,可能之前装过没删除,输入y覆盖

9、增加mysqld服务控制脚本执行权限

[root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysqld
10、将mysqld服务加入到系统服务
[root@localhost mysql]# chkconfig --add mysqld

11、检查mysqld服务是否已经生效

[root@localhost mysql]# chkconfig --list mysqld
mysqld          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

12、启动mysql

[root@localhost mysql]# service mysqld start

显示SUCCESS的话,到这里就已经启动成功了

12-2、启动mysql失败
提示找不到mysql命令的话

[root@localhost mysql]# ln -s /usr/local/mysql/bin/mysql /usr/bin

13、登录mysql
失败的话看下面

[root@localhost mysql]# service mysqld start
Starting MySQL.2019-07-18T07:41:24.268830Z mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists.
The server quit without updating PID file (/var/lib/mysql/z[失败]pid).
[root@localhost mysql]# mkdir /var/lib/mysql
[root@localhost mysql]# service mysqld start
Starting MySQL.The server quit without updating PID file (/[失败]b/mysql/localhost.pid).
[root@localhost mysql]# mysql -uroot -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
13-2、登录mysql失败
失败信息:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
[root@localhost mysql]# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
然后返回13步重新执行

14、(在mysql命令行模式下)修改密码

下面最后面的root就是密码,修改完之后退出重新登录一次试试,有些在修改密码的时候执行下面的会报错,可以参考https://blog.csdn.net/q258523454/article/details/84555847,或者百度一下,很容易解决
mysql> flush privileges;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
mysql> flush privileges;
mysql> quit
[root@localhost mysql]# mysql -uroot -p

15、配置3306端口
开启防火墙(如果以前已经安装过mysql的,这个一般都已经设置好了,我的是新建的虚拟机,所以没有设置)

配置方法:打开/etc/sysconfig/iptables文件,找到22端口(这个是默认配置好的),复制多一行在下面,把22改成3306就行,记住,不要复制到最后一行,有些竟然没有iptables的文件?这是可以生成的,百度一下就行,有些防火墙文件不是这个,可能要先取消或者设置,之前百度过,忘了

当然下面这个步骤也可以用vim命令进行编辑

修改完保存之后执行命令行重启防火墙

[root@localhost mysql] service iptables restart

有些Linux版本的重启如下

[root@localhost mysql] systemctl restart iptables.service

16、测试连接
本地使用Navicat连接测试,填写完点击连接测试

显示错误信息不允许连接1130 - Host ‘192.168.114.1’ is not allowed to connect to this MySQL server

解决方法:(如果还没登录mysql,记得登录先)

mysql> flush privileges;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
mysql> flush privileges;

执行完再次连接测试

还是报错1045 - Access denied for user ‘root’@‘192.168.114.1’ (using password:YES),不过这次结果是密码错误,原因是因为未授权,第一次启动是这样的,解决如下:

mysql> grant all privileges on *.* to 'root'@'%' identified by 'root';
mysql> flush privileges;

再去连接测试就行了,到这里就已经安装完毕,可以使用了


Redis安装配置

1.可以通过官网下载 地址:http://download.redis.io/releases/redis-3.0.0.tar.gz
 2.使用linux wget命令

wget http://download.redis.io/releases/redis-3.0.0.tar.gz

将redis-3.0.0.tar.gz拷贝到/usr/local下

cp redis-3.0.0.rar.gz /usr/local

解压源码

tar -zxvf redis-3.0.0.tar.gz

进入解压后的目录进行编译

cd /usr/local/redis-3.0.0

安装到指定目录 如 /usr/local/redis

make PREFIX=/usr/local/redis install

redis.conf是redis的配置文件,redis.conf在redis源码目录。
拷贝配置文件到安装目录下
进入源码目录,里面有一份配置文件 redis.conf,然后将其拷贝到安装路径下

cd /usr/local/redis
cp /usr/local/redis-3.0.0/redis.conf  /usr/local/redis/bin

进入安装目录bin下

cd /usr/local/redis/bin
此时我们看到的目录结构是这样的

redis-benchmark redis性能测试工具
redis-check-aof AOF文件修复工具
redis-check-rdb RDB文件修复工具
redis-cli redis命令行客户端
redis.conf redis配置文件
redis-sentinal redis集群管理工具
redis-server redis服务进程
  • 启动redis
  • 前端模式启动
    直接运行bin/redis-server将以前端模式启动,前端模式启动的缺点是ssh命令窗口关闭则redis-server程序结束,不推荐使用此方法
./redis-server
  • 后端模式启动
    修改redis.conf配置文件, daemonize yes 以后端模式启动
vim /usr/local/redis/bin/redis.conf执行如下命令启动redis:cd /usr/local/redis
./bin/redis-server ./redis.conf
连接redis/usr/local/redis/bin/redis-cli
  • 关闭redis
    强行终止redis进程可能会导致redis持久化数据丢失。正确停止Redis的方式应该是向Redis发送SHUTDOWN命令,命令为:
cd /usr/local/redis
./bin/redis-cli shutdown
强行终止redispkill redis-server
让redis开机自启vim /etc/rc.local
//添加
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis-conf
至此redis已经全部安装完,后面我会分享redis.conf 详细配置以及说明。
  • 配置
 修改 redis.confvim redis.conf修改内容如下:#修改为守护模式
daemonize yes#设置进程锁文件
pidfile /usr/local/redis/redis.pid#端口
port 6379#客户端超时时间
timeout 300#日志级别
loglevel debug#日志文件位置
logfile /usr/local/redis/log-redis.log#设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id
databases 8##指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
#save <seconds> <changes>#Redis默认配置文件中提供了三个条件:
save 900 1
save 300 10
save 60 10000#指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,#可以关闭该#选项,但会导致数据库文件变的巨大
rdbcompression yes#指定本地数据库文件名
dbfilename dump.rdb#指定本地数据库路径
dir /usr/local/redis/db/#指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能
#会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有
#的数据会在一段时间内只存在于内存中
appendonly no
#指定更新日志条件,共有3个可选值:
#no:表示等操作系统进行数据缓存同步到磁盘(快)
#always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
#everysec:表示每秒同步一次(折衷,默认值)
appendfsync everysec5. 修改权限为当前使用者 xxx
chown -R xxxx /usr/local/redis 6.启动服务cd /usr/local/redis
./bin/redis-server ./etc/redis.conf7.命令行访问服务
cd /usr/local/redis
./bin/redis-cli
  • 总结Linux 、Redis 操作常用命令

Linux:

cd /usr 从子文件夹进入上级文件夹usr
cd local 从父到子
mv /A /B 将文件A移动到B
vi usr/local/redis/redis.conf 编辑redis.conf 文件
:wq 保存修改,并退出

Redis:

Redis-server /usr..../redis.conf 启动redis服务,并指定配置文件
Redis-cli 启动redis 客户端
Pkill redis-server 关闭redis服务
Redis-cli shutdown 关闭redis客户端
Netstat -tunpl|grep 6379 查看redis 默认端口号6379占用情况
  1. Redis的配置

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

daemonize no

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

pidfile /var/run/redis.pid

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

port 6379

4.4. 绑定的主机地址

bind 127.0.0.1

4.5.当 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能

timeout 300

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

loglevel verbose

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

logfile stdout

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

databases 16

4.9. 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合

save <seconds> <changes>Redis默认配置文件中提供了三个条件:save 900 1save 300 10save 60 10000分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。

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

rdbcompression yes

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

dbfilename dump.rdb

4.12. 指定本地数据库存放目录

dir ./

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

slaveof <masterip> <masterport>

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

masterauth <master-password>

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

requirepass foobared

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

maxclients 128

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

maxmemory <bytes>

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

appendonly no

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

 appendfilename appendonly.aof

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

appendfsync everysec

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

 vm-enabled no

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

 vm-swap-file /tmp/redis.swap

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

 vm-max-memory 0

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

 vm-page-size 32

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

 vm-pages 134217728

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

 vm-max-threads 4

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

glueoutputbuf yes

4.28. 指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法

hash-max-zipmap-entries 64hash-max-zipmap-value 512

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

activerehashing yes

4.30. 指定包含其它的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各个实例又拥有自己的特定配置文件

include /path/to/local.conf

zookeeper

  1. 先进入/usr/local/目录,也可以是其他的目录:
[root@localhost /]# cd /usr/local
  1. zookeeper安装包可以在官网下载。

也可以在后面这个地址下载

http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz

如果链接打不开,就先打开 http://mirror.bit.edu.cn/apache/zookeeper , 再选择版本。

在此目录下载zookeeper安装包:

[root@localhost local]# wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
  1. 解压:
[root@localhost local]# tar -zxvf zookeeper-3.4.13.tar.gz

三、编辑配置文件
1.进入conf目录:

[root@localhost local]# cd zookeeper-3.4.13/conf
  1. 将zoo_sample.cfg这个文件复制为zoo.cfg (必须是这个文件名)
[root@localhost conf]# cp  zoo_sample.cfg  zoo.cfg
  1. 进入zoo.cfg文件进行编辑
[root@localhost conf]# vim zoo.cfg
  1. 按 i 进入编辑模式,修改以下内容:
dataDir=/tmp/zookeeper/data
dataLogDir=/tmp/zookeeper/log
注意:如果想配置集群的话,请在clientPort下面添加服务器的ip。如server.1=192.168.180.132:2888:3888
server.2=192.168.180.133:2888:3888server.3=192.168.180.134:2888:3888

如果电脑内存比较小,zookeeper还可以设置成伪集群。也就是全部服务器采用同一个ip,但是使用不同的端口。

  1. 在tmp目录创建目录。
[root@localhost conf]# mkdir /tmp/zookeeper[root@localhost conf]# mkdir /tmp/zookeeper/data
[root@localhost conf]# mkdir /tmp/zookeeper/log

6.如果是配置集群,还需要在前面配置过的dataDir路径下新增myid文件

[root@localhost conf]# cd /tmp/zookeeper/data[root@localhost data]# touch myid
[root@localhost data]# vim myid

在data目录下创建文件,文件名为“myid”, 编辑该“myid”文件,并在对应的IP的机器上输入对应的编号。
如在192.168.180.132上,“myid”文件内容就是1。在192.168.180.133上,内容就是2。

四、配置环境变量
1.上面的操作都完事之后,我们需要配置一下环境变量,配置环境变量的命令如下:

[root@localhost zookeeper-3.4.13]# export ZOOKEEPER_INSTALL=/usr/local/zookeeper-3.4.13/
[root@localhost zookeeper-3.4.13]# export PATH=$PATH:$ZOOKEEPER_INSTALL/bin

五、启动zookeeper
1.进入bin目录,并启动zookeep。如果不是在bin目录下执行,启动zookeeper时会报错: bash: ./zkServer.sh: No such file or directory

注意: ./zkServer.sh start前面的 . 不可忽略。

[root@localhost local]# cd /usr/local/zookeeper-3.4.13/bin
[root@localhost bin]# ./zkServer.sh start

2.启动成功效果如下:

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.13/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

3.zookeeper的服务端启动后,还需要启动zookeeper的客户端:

[root@localhost bin]# ./zkCli.sh

如果是连接多个不同的主机节点,可以使用如下命令:

./zkCli.sh -server 192.168.180.132:2888

启动成功效果如下:

Connecting to localhost:2181
..........
..........
..........
Welcome to ZooKeeper!
2018-10-25 21:04:54,407 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1029] - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2018-10-25 21:04:54,471 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@879] - Socket connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session
[zk: localhost:2181(CONNECTING) 0] 2018-10-25 21:04:54,501 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1303] - Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, sessionid = 0x10000712e6f0000, negotiated timeout = 30000WATCHER::WatchedEvent state:SyncConnected type:None path:null

4.查看状态:

[root@localhost bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: standalone
遇到问题怎么解决?
zookeeper的出错日志会记录在 zookeeper.out。当前处于哪个目录,执行完zkServer.sh start命令, zookeeper.out就会写在哪个目录。vim zookeeper.out 可以查看报错信息。然后再搜索解决。

六、zookeeper使用
通过 ./zkCli.sh 进入客户端后,就可以使用命令来操作zookeeper了。

1.创建节点

使用create命令,可以创建一个zookeeper节点。create [-s]   [-e]  path  data  acl其中-s表示顺序节点,-e表示临时节点。默认情况下,创建的是持久节点。path是节点路径,data是节点数据,acl是用来进行权限控制的。如下:创建一个叫做/zk-test的节点,内容是"123"[zk: localhost:2181(CONNECTED) 0] create /zk-test 123Created /zk-test
创建/zk-test的子节点book,内容是"233"[zk: localhost:2181(CONNECTED) 7] create  /zk-test/book  233
Created /zk-test/book

2.查看节点内容

使用get命令,可以获取zookeeper指定节点的内容和属性信息。

如下:

[zk: localhost:2181(CONNECTED) 1] get /zk-test123
cZxid = 0x3a
ctime = Sun Nov 11 21:50:44 CST 2018
mZxid = 0x3a
mtime = Sun Nov 11 21:50:44 CST 2018
pZxid = 0x3a
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0

3.查看子节点

使用ls命令可以查看指定节点下的所有子节点以下查看根目录下的所有子节点:[zk: localhost:2181(CONNECTED) 2] ls /[zk-test, zookeeper]
查看zk-test节点的子节点:[zk: localhost:2181(CONNECTED) 3] ls /zk-test[book]

4.更新节点内容

使用set命令,更新节点内容。格式为:

set   path  data

其中的data就是要更新的新内容。

[zk: localhost:2181(CONNECTED) 4] set /zk-test 456cZxid = 0x3a
ctime = Sun Nov 11 21:50:44 CST 2018
mZxid = 0x3b
mtime = Sun Nov 11 22:05:20 CST 2018
pZxid = 0x3a
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0

在输出的信息中,可以发现,dataVersion的值由原来的0 变成了 1,这是因为刚才的更新操作导致该节点的数据版本也发生变更。

6.删除节点

使用delete命令来删除节点,如下:

[zk: localhost:2181(CONNECTED) 11] delete /zk-test
Node not empty: /zk-test

可以发现,一个节点存在子节点时,无法删除该节点。

删除子节点/zk-test/book,如下:

[zk: localhost:2181(CONNECTED) 12] delete /zk-test/bookWATCHER::WatchedEvent state:SyncConnected type:NodeDeleted path:/zk-test/book
zookeeper中的watcher会监控节点,当子节点发生变化时会发出通知。此时提示子节点 /zk-test/book删除成功。继续尝试删除节点 /zk-test,[zk: localhost:2181(CONNECTED) 13] ls /zk-test
[]
[zk: localhost:2181(CONNECTED) 14] delete /zk-test
[zk: localhost:2181(CONNECTED) 15] ls /
[]

删除成功。

Arthas安装

使用arthas-boot(推荐)
下载arthas-boot.jar,然后用java -jar的方式启动:

wget https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar

打印帮助信息:

java -jar arthas-boot.jar -h

如果下载速度比较慢,可以使用aliyun的镜像:

java -jar arthas-boot.jar --repo-mirror aliyun --use-http

使用as.sh
Arthas 支持在 Linux/Unix/Mac 等平台上一键安装,请复制以下内容,并粘贴到命令行中,敲 回车 执行即可:

curl -L https://alibaba.github.io/arthas/install.sh | sh

上述命令会下载启动脚本文件 as.sh 到当前目录,你可以放在任何地方或将其加入到 $PATH 中。

直接在shell下面执行./as.sh,就会进入交互界面。

也可以执行./as.sh -h来获取更多参数信息。

web服务器常见配置搭建详解(超详细)相关推荐

  1. win2003 服务器安全配置全套详解

    win2003 服务器安全配置全套详解     其实,在服务器的安全设置方面,我虽然有一些经验,但是还谈不上有研究,以前在站长网服务器安全讲座上也讲了不少类似的文章,虽然谈不上多牛B的技术但是一点小小 ...

  2. ecmall php传变量,PHP_ECMall支持SSL连接邮件服务器的配置方法详解,首先,主要是ecmall使用的phpmail - phpStudy...

    ECMall支持SSL连接邮件服务器的配置方法详解 首先,主要是ecmall使用的phpmailer版本太低,不支持加密连接. 然后,得对相应代码做一定调整. 1. 覆盖phpmailer 请从附件进 ...

  3. Java 泛型详解(超详细的java泛型方法解析)

    Java 泛型详解(超详细的java泛型方法解析) 1. 什么是泛型 泛型:是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型.也就是说在泛型使用过程中,操作的数据类型被指定为 ...

  4. Computer:字符编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介、案例应用(python中的编码格式及常见编码问题详解)之详细攻略

    Computer:字符编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介.案例应用(python中的编码格式及常见编码问题详解)之详细攻略 目录 符串编码(ASCII编码/GB ...

  5. 【云计算基础服务-Nginx WEB服务器---原理及简介详解】

    文章目录 前言: 一.云计算基础服务-Nginx WEB服务器 详解 1.Nginx简介及原理 1.1 Nginx web简介 1.2 Nginx工作原理 前言: 本专栏专门讲解云计算服务基础知识,适 ...

  6. log4j 配置详解(超详细)

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  7. Web服务器——Apache相关内容详解

    1.相关名词介绍 1)什么是Web服务器? Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档, 也可以放置网站文件,让全世界浏览:可以放置数据文 ...

  8. 斜率优化详解(超详细, 有图有代码有注释)

    文章目录 斜率优化引入 从例题开始 斜率优化Part 1: 推为斜率式 斜率优化Part 2: 合法点集的斜率单调性 Part 3: 找到最优决策点 Part 4: 斜率优化大流程 Part 5: 斜 ...

  9. 【bind()函数】JavaScript手写bind()及详解-超详细~~~

    这两天学习了手写call.apply.bind,手写bind思考了很久才实现了MDN的示例的结果,所以记录下来~ 因为是第一篇文章,所以可能存在一些错误,希望各位大佬批评指正,不吝赐教. 也欢迎不懂的 ...

最新文章

  1. 合肥师范学院计算机毕设选老师,计算机毕设被导师要求反复修改?
  2. 如何通过AppDomain用特定的安全上下文加载外部程序集
  3. matlab多个绘图,合并多个绘图 - MATLAB Simulink - MathWorks 中国
  4. Windows添加在此处打开命令CMD
  5. java 昨天今天明天
  6. Django-你想知道的都在这里
  7. python 读中文乱码_python字符乱码的解决小结
  8. python根据字典绘制条形图_使用 Bokeh 为你的 Python 绘图添加交互性 | Linux 中国
  9. 学习C++项目——select模型,poll模型和epoll模型
  10. 数据分析不能落地?快来围观,学会数据分析应用,一起升职加薪
  11. java 的.class 反编译软件
  12. python神经网络算法pdf_深度学习:卷积神经网络从入门到精通 PDF 原书扫描版
  13. 数学建模(十)博弈论
  14. linux 安装 maven
  15. 腾讯天龙八部手游服务器账号上线,天龙八部手游服务器的注册已达到上限 服务器注册上限怎么解决...
  16. ESAYUI filebox 隐藏
  17. 太一硅谷实验室合伙人杨虎成:区块链草莽时代进入倒计时,马太效应开始显现...
  18. 安安静静学JAVA(七)
  19. Java获取某个日期前后几天日期
  20. Android模拟器的判定

热门文章

  1. Python的egg包(Linux和Windows)
  2. 那些测试员面试中的“潜规则”,千万不要踩坑
  3. CTFSHOW大赛原题篇(web726-web740)
  4. 首席新媒体运营黎想教程:活动运营推广入门全攻略及进阶
  5. shell 脚本中双引号、单引号、反引号的区别,其他命令
  6. 温故而知新 知识点整理
  7. 2022年全球及中国场地电动车行业市场规模竞争格局研究预测及市场发展趋势分析预测
  8. Java系列技术之JavaWeb入门-钟洪发-专题视频课程
  9. C++中string.find()函数与string::npos
  10. python windows 解决 cl.exe 的问题