Linux常用命令

  • Linux的常用命令
    1. 切换目录命令cd:

使用cd app   切换到app目录

cd ..      切换到上一层目录

cd /        切换到系统根目录

cd ~       切换到用户主目录

cd -        切换到上一个所在目录

    1. 列出文件列表:ls ll dir(*****)

ls(list)是一个非常有用的命令,用来显示当前目录下的内容。配合参数的使用,能以不同的方式显示目录内容。    格式:ls[参数] [路径或文件名]

 

常用:

在linux中以 . 开头的文件都是隐藏的文件

 

* ls

* ls -a  显示所有文件或目录(包含隐藏的文件)

* ls -l  缩写成ll

    1. 创建目录和移除目录:mkdir rmdir

mkdir(make directory)命令可用来创建子目录。

mkdir app  ?           在当前目录下创建app目录

mkdir –p app2/test  ?级联创建aap2以及test目

 

rmdir(remove directory)命令可用来删除“空”的子目录:

rmdir app  ?  删除app目录

    1. 浏览文件

【cat、more、less】

cat用于显示文件的内容。格式:cat[参数]<文件名>

 

    * cat yum.conf

more一般用于要显示的内容会超过一个画面长度的情况。按空格键显示下一个画面。

回车显示下一行内容。

按 q 键退出查看。

* more yum.conf

   * 空格显示下一页数据  回车显示下一行的数据

less用法和more类似,不同的是less可以通过PgUp、PgDn键来控制。

    * less yum.conf

        * PgUp 和 PgDn 进行上下翻页.

 

【tail】

tail命令是在实际使用过程中使用非常多的一个命令,它的功能是:用于显示文件后几行的内容。

用法:

tail -10 /etc/passwd  ?  查看后10行数据

tail -f catalina.log  ?  动态查看日志(*****)

 

 

ctrl+c 结束查看

    1. 文件操作:

【rm】

rm  删除文件

用法:rm [选项]... 文件...

rm a.txt  ?  删除a.txt文件

删除需要用户确认,y/n

rm 删除不询问

rm -f a.txt  ?  不询问,直接删除

rm 删除目录

rm -r a  ?  递归删除

rm不询问递归删除(慎用)

rm -rf  a  ?  不询问递归删除

rm -rf *   ?   删除所有文件

rm -rf /*   ?   自杀

【cp、mv】

cp(copy)命令可以将文件从一处复制到另一处。一般在使用cp命令时将一个文件复制成另一个文件或复制到某目录时,需要指定源文件名与目标文件名或目录。

cp a.txt b.txt  ?  将a.txt复制为b.txt文件

cp a.txt ../  ?  将a.txt文件复制到上一层目录中

 

mv 移动或者重命名

mv a.txt ../  ?  将a.txt文件移动到上一层目录中

mv a.txt b.txt  ?  将a.txt文件重命名为b.txt

 

【tar】命令:(***** 打包或解压)

tar命令位于/bin目录下,它能够将用户所指定的文件或目录打包成一个文件,但不做压缩。一般Linux上常用的压缩方式是选用tar将许多文件打包成一个文件,再以gzip压缩命令压缩成xxx.tar.gz(或称为xxx.tgz)的文件。

常用参数:

-c:创建一个新tar文件

-v:显示运行过程的信息

-f:指定文件名

-z:调用gzip压缩命令进行压缩

-t:查看压缩文件的内容

-x:解开tar文件

 

打包:

tar –cvf xxx.tar ./*

打包并且压缩:

tar –zcvf xxx.tar.gz ./*

 

解压

     tar –xvf xxx.tar

tar -xvf xxx.tar.gz -C /usr/aaa

 

【find】命令

find指令用于查找符合条件的文件

示例:

find / -name “ins*” 查找文件名称是以ins开头的文件

find / -name “ins*” –ls

find / –user itcast –ls 查找用户itcast的文件

find / –user itcast –type d –ls 查找用户itcast的目录

find /-perm -777 –type d-ls 查找权限是777的文件

 

【grep】命令

查找文件里符合条件的字符串。

用法: grep [选项]... PATTERN [FILE]...示例:

grep lang anaconda-ks.cfg  在文件中查找lang

grep lang anaconda-ks.cfg –color 高亮显示

    1. 其他常用命令

【pwd】

显示当前所在目录

【touch】

创建一个空文件

* touch a.txt

【ll -h】

友好显示文件大小

【wget】

下载资料

* wget http://nginx.org/download/nginx-1.9.12.tar.gz

    1. Vim编辑器:

在Linux下一般使用vi编辑器来编辑文件。vi既可以查看文件也可以编辑文件。三种模式:命令行、插入、底行模式。

切换到命令行模式:按Esc键;

切换到插入模式:按 i 、o、a键;

    i 在当前位置前插入

    I 在当前行首插入

    a 在当前位置后插入

    A 在当前行尾插入

    o 在当前行之后插入一行

    O 在当前行之前插入一行

 

切换到底行模式:按 :(冒号);

更多详细用法,查询文档《Vim命令合集.docx》和《vi使用方法详细介绍.docx》

 

 

打开文件:vim file

退出:esc ? :q

修改文件:输入i进入插入模式

保存并退出:esc?:wq

 

不保存退出:esc?:q!

 

三种进入插入模式:

i:在当前的光标所在处插入

o:在当前光标所在的行的下一行插入

a:在光标所在的下一个字符插入

 

快捷键:

dd – 快速删除一行

yy - 复制当前行

nyy - 从当前行向后复制几行

p - 粘贴

R – 替换

    1. 重定向输出>和>>

>  重定向输出,覆盖原有内容;

>> 重定向输出,又追加功能;

示例:

cat /etc/passwd > a.txt  将输出定向到a.txt中

cat /etc/passwd >> a.txt  输出并且追加

 

ifconfig > ifconfig.txt

    1. 管道 |

管道是Linux命令中重要的一个概念,其作用是将一个命令的输出用作另一个命令的输入。示例

ls --help | more  分页查询帮助信息

ps –ef | grep java  查询名称中包含java的进程

 

ifconfig | more

cat index.html | more

ps –ef | grep aio

    1. &&命令执行控制:

命令之间使用 && 连接,实现逻辑与的功能。

只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。

只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。

 

mkdir test && cd test

    1. 系统管理命令

date 显示或设置系统时间

date  显示当前系统时间

date -s “2014-01-01 10:10:10“  设置系统时间df

显示磁盘信息

df –h  友好显示大小, 带有单位

free 显示内存状态

free –m 不带单位,但是会以mb单位显示内存组

top 显示,管理执行中的程序

 

clear 清屏幕

ps 正在运行的某个进程的状态

ps –ef  查看所有进程

ps –ef | grep ssh 查找某一进程

kill 杀掉某一进程

kill 2868  杀掉2868编号的进程

kill -9 2868  强制杀死进程

du 显示目录或文件的大小。

du –h 显示当前目录的大小,带有单位

who 显示目前登入系统的用户信息。

uname 显示系统信息。

uname -a 显示本机详细信息。依次为:内核名称(类别),主机名,内核版本号,内核版本,内核编译日期,硬件名,处理器类型,硬件平台类型,操作系统名称

  • Linux的用户和组
    1. 用户的管理

useradd 添加一个用户

useradd test 添加test用户

useradd test -d /home/t1  指定用户home目录

passwd  设置、修改密码

passwd test  为test用户设置密码

 

切换登录:

ssh -l test -p 22 192.168.19.128

 

su – 用户名

userdel 删除一个用户

userdel test 删除test用户(不会删除home目录)

userdel –r test  删除用户以及home目录

    1. 组管理:

当在创建一个新用户user时,若没有指定他所属于的组,就建立一个和该用户同名的私有组

创建用户时也可以指定所在组

groupadd  创建组

groupadd public  创建一个名为public的组

useradd u1 –g public  创建用户指定组

groupdel 删除组,如果该组有用户成员,必须先删除用户才能删除组。

groupdel public

    1. id,su命令

【id命令】

功能:查看一个用户的UID和GID用法:id [选项]... [用户名]

直接使用id

直接使用id 用户名

【su命令】

功能:切换用户。用法:su [选项]... [-] [用户 [参数]... ]示例:

su u1  切换到u1用户

su - u1 切换到u1用户,并且将环境也切换到u1用户的环境(推荐使用)

 

【账户文件】

/etc/passwd  用户文件

/etc/shadow  密码文件

/etc/group  组信息文件

【用户文件】

root:x:0:0:root:/root:/bin/bash

账号名称:           在系统中是唯一的

用户密码:           此字段存放加密口令

用户标识码(User ID):  系统内部用它来标示用户

组标识码(Group ID):   系统内部用它来标识用户属性

用户相关信息:           例如用户全名等

用户目录:           用户登录系统后所进入的目录

用户环境:             用户工作的环境

【密码文件】

shadow文件中每条记录用冒号间隔的9个字段组成.

用户名:用户登录到系统时使用的名字,而且是惟一的

口令:  存放加密的口令

最后一次修改时间:  标识从某一时刻起到用户最后一次修改时间

最大时间间隔:  口令保持有效的最大天数,即多少天后必须修改口令

最小时间间隔:    再次修改口令之间的最小天数

警告时间:从系统开始警告到口令正式失效的天数

不活动时间:       口令过期少天后,该账号被禁用

失效时间:指示口令失效的绝对天数(从1970年1月1日开始计算)

标志:未使用

【组文件】

root:x:0:

组名:用户所属组

组口令:一般不用

GID:组ID

用户列表:属于该组的所有用户

  • Linux上常用网络操作
    1. 主机名配置

hostname 查看主机名

hostname xxx 修改主机名 重启后无效

如果想要永久生效,可以修改/etc/sysconfig/network文件

    1. IP地址配置

setup设置ip地址

 

ifconfig 查看(修改)ip地址(重启后无效)

ifconfig eth0 192.168.12.22 修改ip地址

 

如果想要永久生效

修改 /etc/sysconfig/network-scripts/ifcfg-eth0文件

    1. 域名映射

/etc/hosts文件用于在通过主机名进行访问时做ip地址解析之用

    1. 网络服务管理

service network status 查看指定服务的状态

service network stop 停止指定服务

service network start 启动指定服务

service network restart 重启指定服务

 

service --status–all 查看系统中所有后台服务

netstat –nltp 查看系统中网络进程的端口监听情况

 

防火墙设置

防火墙根据配置文件/etc/sysconfig/iptables来控制本机的”出”、”入”网络访问行为。

service iptables status 查看防火墙状态

service iptables stop 关闭防火墙

service iptables start 启动防火墙

chkconfig  iptables off 禁止防火墙自启

  • Linux上软件安装
  1. lrzsz

我们可以使用yum安装方式安装 yum install lrzsz

    1. 在Linux上安装JDK:

* 上传JDK

* 卸载open-JDK

 

java –version

rpm -qa | grep java

 

rpm -e --nodeps java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.i686

rpm -e --nodeps java-1.7.0-openjdk-1.7.0.79-2.5.5.4.el6.i686

* 通常将软件安装到/usr/local

* 直接解压就可以

   tar –xvf  jdk.tar.gz  -C 目标路径 

配置环境变量:

① vi /etc/profile

 

② 在末尾行添加

       #set java environment

       JAVA_HOME= /usr/local/jdk1.8.0_131

       CLASSPATH=.:$JAVA_HOME/lib.tools.jar

       PATH=$JAVA_HOME/bin:$PATH

       export JAVA_HOME CLASSPATH PATH

保存退出

③source /etc/profile  使更改的配置立即生效

    1. 在Linux上安装Mysql:

【步骤一】:将mysql的安装文件上传到Linux的服务器.

将mysql的tar解压

将系统自带的mysql卸载

 

【步骤二】:安装MYSQL服务端

下面的提示是告诉我们root用户的密码第一次是随机生成的,它保存在/root/.mysql_secret中,第一次登录需要修改root密码

【步骤三】:安装MYSQL客户端

查看生成的root密码

报错:原因是没有启动mysql服务

需要开启mysql服务

执行下面操作报错,原因是第一次操作mysql必须修改root用户的密码

设置root用户的密码

  1. Mysql服务加入到系统服务并自动启动操作:

chkconfig --add mysql

自动启动:

chkconfig mysql on

查询列表:Jt1FvTdVC1QIU7JG

chkconfig

 

  1. 关于mysql远程访问设置

grant all privileges on *.* to ‘root’ @’%’ identified by ‘root’

flush privileges

在linux中很多软件的端口都被”防火墙”限止,我们需要将防火墙关闭

防火墙打开3306端口

/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

/etc/rc.d/init.d/iptables save

/etc/init.d/iptables status

我们也可以直接将防火墙关闭

service iptables stop;

    1. 在Linux上安装tomcat:

1.Tomcat上传到linux上

2.将上传的tomcat解压

3.在tomcat/bin目录下执行 startup.sh(注意防火墙)

4.查看目标 tomcat/logs/catalina.out

    1. Redis安装

第一步:将redis.tar.gz解压

tar -zxvf redis-3.2.8.tar.gz

第二步:进入redis-3.2.8目录

cd redis-3.2.8

第三步:对redis进行编译

make

注意:如果安装redis是报下面的错误,是因为系统没有安装gcc环境,缺少依赖

解决方案

在使用yum安装gcc依赖的时候,会报出错误

报错原因是因为DNS服务器错误,所以需要在/etc/resolv.conf文件中添加

依赖安装完成后,对redis进行重新编译,发现还会报错一个错误

错误原因,是因为Redis默认加载的是jemalloc中的配置文件,有时候没有就会报错,可以使用

指令,加载备用的配置文件即可进行编译

第四步:安装到指定的目录

make PREFIX=/usr/local/redis install

 

安装完成后,我们进入目录bin中查看

redis-server  redis服务器

redis-cli redis命令行客户端

redis-benchmark redis性能测试工具

redis-check-aof AOF文件修复工具

redis-check-rdb  RDB文件检索工具

    1. redis客户端测试

第一步:启动redis服务

注意:我们需要将redis编译后的目录 中的redis.conf文件copy到我们自己的redis目录中。

这个redis.conf文件是redis的配置文件。

注意:前面是redis-server服务,后面redis.conf配置文件。

Redis占用的端口是6379

可以通过redis-cli命令行客户端来测试redis是否启动成功

    1. Nginx在linux下安装

nginx是C语言开发,建议在linux上运行,本教程使用Centos6.4作为安装环境。

nginx是C语言开发,建议在linux上运行,本教程使用Centos6.4作为安装环境。

  1. gcc

       安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:

yum install gcc-c++

  1. PCRE

       PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。

yum install -y pcre pcre-devel

注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。

  1. zlib

       zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。

yum install -y zlib zlib-devel

 

  1. openssl

       OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

       nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。

yum install -y openssl openssl-devel

      1. 编译及安装

第一步:把nginx的源码包上传至linux服务器

第二步:解压源码包。 tar -zxf nginx-1.8.0.tar.gz

第三步:进入nginx-1.8.0文件夹。使用configure命令创建makefile。

第四步:参数设置如下:

./configure \

--prefix=/usr/local/nginx \

--pid-path=/var/run/nginx/nginx.pid \

--lock-path=/var/lock/nginx.lock \

--error-log-path=/var/log/nginx/error.log \

--http-log-path=/var/log/nginx/access.log \

--with-http_gzip_static_module \

--http-client-body-temp-path=/var/temp/nginx/client \

--http-proxy-temp-path=/var/temp/nginx/proxy \

--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \

--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \

--http-scgi-temp-path=/var/temp/nginx/scgi

 

注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建tempnginx目录

第五步:make

第六步 make install

以上操作完成后,进入/usr/local/nginx目录

conf它里面装入的是nginx相关的配置文件

html目录 它里面装入的html代码

sbin目录它里面有一个nginx

想要启动nginx只需要执行bin目录下的nginx命令就可以

Nginx服务在启动时会启动两个服务

    1. Nginx常用命令
  1. 关闭nginx需要使用:

nginx -s stop 相当于找到nginx进程kill。

 

  1. 退出命令:

nginx -s quit

等程序执行完毕后关闭,建议使用此命令。

 

  1. 重新加载配置文件:

nginx -s reload 可以不关闭nginx的情况下更新配置文件.

      1. 通过端口区分不同的虚拟主机

Nginx的配置文件:

/usr/local/nginx/conf/nginx.conf

 

#user  nobody;

worker_processes  1;

 

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

 

#pid        logs/nginx.pid;

 

 

events {

    worker_connections  1024;

}

 

 

http {

    include       mime.types;

    default_type  application/octet-stream;

 

    #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  logs/access.log  main;

 

    sendfile        on;

    #tcp_nopush     on;

 

    #keepalive_timeout  0;

    keepalive_timeout  65;

 

    #gzip  on;

 

 
 

一个server节点就是一个虚拟主机

 

    server {

        listen       80;

        server_name  localhost;

 

        #charset koi8-r;

 

        #access_log  logs/host.access.log  main;

 

 
 

Html是nginx安装目录下的html目录

 

        location / {

            root   html;

            index  index.html index.htm;

        }

    }

}

可以配置多个server,配置了多个虚拟主机。

 

添加虚拟主机:

 

#user  nobody;

worker_processes  1;

 

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

 

#pid        logs/nginx.pid;

 

 

events {

    worker_connections  1024;

}

 

 

http {

    include       mime.types;

    default_type  application/octet-stream;

 

    #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  logs/access.log  main;

 

    sendfile        on;

    #tcp_nopush     on;

 

    #keepalive_timeout  0;

    keepalive_timeout  65;

 

    #gzip  on;

 

    server {

        listen       80;

        server_name  localhost;

 

        #charset koi8-r;

 

        #access_log  logs/host.access.log  main;

 

        location / {

            root   html;

            index  index.html index.htm;

        }

    }

    server {

        listen       81;

        server_name  localhost;

 

        #charset koi8-r;

 

        #access_log  logs/host.access.log  main;

 

        location / {

            root   html-81;

            index  index.html index.htm;

        }

    }

}

重新加载配置文件

[root@localhost nginx]# sbin/nginx -s reload

      1. Nginx的配置

 

#user  nobody;

worker_processes  1;

 

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

 

#pid        logs/nginx.pid;

 

 

events {

    worker_connections  1024;

}

 

 

http {

    include       mime.types;

    default_type  application/octet-stream;

 

    #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  logs/access.log  main;

 

    sendfile        on;

    #tcp_nopush     on;

 

    #keepalive_timeout  0;

    keepalive_timeout  65;

 

    #gzip  on;

 

    server {

        listen       80;

        server_name  localhost;

 

        #charset koi8-r;

 

        #access_log  logs/host.access.log  main;

 

        location / {

            root   html;

            index  index.html index.htm;

        }

    }

    server {

        listen       81;

        server_name  localhost;

 

        #charset koi8-r;

 

        #access_log  logs/host.access.log  main;

 

        location / {

            root   html-81;

            index  index.html index.htm;

        }

    }

    server {

        listen       80;

        server_name  www.taobao.com;

 

        #charset koi8-r;

 

        #access_log  logs/host.access.log  main;

 

        location / {

            root   html-taobao;

            index  index.html index.htm;

        }

    }

    server {

        listen       80;

        server_name  www.baidu.com;

 

        #charset koi8-r;

 

        #access_log  logs/host.access.log  main;

 

        location / {

            root   html-baidu;

            index  index.html index.htm;

        }

    }

}

域名的配置:

192.168.25.148 www.taobao.com

192.168.25.148 www.baidu.com

    1. keepalived+nginx实现主备
      1. keepalived+nginx实现主备过程

初始状态

 

 

 

主机宕机

 

主机恢复

两台nginx,一主一备:192.168.101.3和192.168.101.4

两台tomcat服务器:192.168.101.5、192.168.101.6

 

      1. 安装keepalived

分别在主备nginx上安装keepalived,参考“安装手册”进行安装

      1. 安装环境

su - root

yum -y install kernel-devel*

yum -y install openssl-*

yum -y install popt-devel

yum -y install lrzsz

yum -y install openssh-clients

yum -y install libnl libnl-devel popt

      1. 安装keepalived

将keepalived-1.2.15.tar.gz上传到服务器/usr/local/下。

 

cd /usr/local

tar -zxvf keepalived-1.2.15.tar.gz

cd keepalived-1.2.15

 

执行配置命令

./configure --prefix=/usr/local/keepalived

 

3、编译

make

4、安装

make install

 

至此安装成功

 

5、拷贝执行文件

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

6、将init.d文件拷贝到etc下,加入开机启动项

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived

7、将keepalived文件拷贝到etc下,加入网卡配置

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

8、创建keepalived文件夹

mkdir -p /etc/keepalived

9、将keepalived配置文件拷贝到etc下

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

10、添加可执行权限

chmod +x /etc/init.d/keepalived

      1. 加入开机启动

chkconfig --add keepalived #添加时必须保证/etc/init.d/keepalived存在

chkconfig keepalived on

 

添加完可查询系统服务是否存在:chkconfig –list

      1. 启动keepalived

启动:service keepalived start

停止:service keepalived stop

重启:service keepalived restart

      1. 配置日志文件

1.将keepalived日志输出到local0:

vi /etc/sysconfig/keepalived

KEEPALIVED_OPTIONS="-D -d -S 0"

 

2.在/etc/rsyslog.conf里添加:

local0.*  /var/log/keepalived.log

 

3.重新启动keepalived和rsyslog服务:

service rsyslog restart

service keepalived restart

      1. 打开防火墙的通讯地址

iptables -A INPUT -d 224.0.0.18 -j ACCEPT

/etc/rc.d/init.d/iptables save

    1. Nginx+tomcat集群+redis实现session共享
      1. Session共享问题演示
  1. 在两个tomcat中创建项目myweb,修改index.jsp页面的标题和文本内容
  2. 分别启动两个tomcat,查看sessionid值

Tomcat_main

Tomcat_back

解决方案

      1. Session共享问题解决

思想:将原来由每一个tomcat管理的session统一存储到redis中管理

 

1.下载nginx+tomcat集群+redis实现session共享工具包

https://github.com/jcoleman/tomcat-redis-session-manager/downloads

其它依赖包

将以上四个包copy到tomcat的lib目录下(集群中的所有Tomcat都需要有这四个jar)

2.在tomcat/conf/context.xml文件中添加配置(集群中的所有Tomcat都需要配置)

<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve"/>

 

   <Manager className="com.radiadesign.catalina.session.RedisSessionManager"

 

        host="192.168.19.128"

 

        port="6379"

 

        database="0"

 

         maxInactiveInterval="60"

               

               password="admin"

               />

总结:注意ip地址和密码的变化

3.查看myweb工具中sessionid

Redis帮助我们存储了session

    1. Redis集群搭建
      1. redis-cluster架构图
      2.  

架构细节:

(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.

(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value

Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点

      1. redis集群的搭建

Redis集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机。

Redis集群至少需要6台服务器。

搭建伪分布式。可以使用一台虚拟机运行6个redis实例。需要修改redis的端口号7001-7006

      1. redis集群搭建环境

1、使用ruby脚本搭建集群。需要ruby的运行环境。

安装ruby

yum install ruby

yum install rubygems

 

  1. 安装ruby脚本运行使用的包。

[root@localhost ~]# gem install redis-3.0.0.gem

Successfully installed redis-3.0.0

1 gem installed

Installing ri documentation for redis-3.0.0...

Installing RDoc documentation for redis-3.0.0...

[root@localhost ~]#

 

[root@localhost ~]# cd redis-3.0.0/src

[root@localhost src]# ll *.rb

-rwxrwxr-x. 1 root root 48141 Apr  1  2015 redis-trib.rb

      1. redis集群搭建步骤

需要6台redis服务器。搭建伪分布式。

需要6个redis实例。

需要运行在不同的端口7001-7006

 

第一步:创建6个redis实例,每个实例运行在不同的端口。需要修改redis.conf配置文件。配置文件中还需要把cluster-enabled yes前的注释去掉。

 

第二步:启动每个redis实例。

第三步:使用ruby脚本搭建集群。

./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005  192.168.25.153:7006

 

创建关闭集群的脚本:

[root@localhost redis-cluster]# vim shutdow-all.sh

redis01/redis-cli -p 7001 shutdown

redis01/redis-cli -p 7002 shutdown

redis01/redis-cli -p 7003 shutdown

redis01/redis-cli -p 7004 shutdown

redis01/redis-cli -p 7005 shutdown

redis01/redis-cli -p 7006 shutdown

[root@localhost redis-cluster]# chmod u+x shutdow-all.sh

 

[root@localhost redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005  192.168.25.153:7006

>>> Creating cluster

Connecting to node 192.168.25.153:7001: OK

Connecting to node 192.168.25.153:7002: OK

Connecting to node 192.168.25.153:7003: OK

Connecting to node 192.168.25.153:7004: OK

Connecting to node 192.168.25.153:7005: OK

Connecting to node 192.168.25.153:7006: OK

>>> Performing hash slots allocation on 6 nodes...

Using 3 masters:

192.168.25.153:7001

192.168.25.153:7002

192.168.25.153:7003

Adding replica 192.168.25.153:7004 to 192.168.25.153:7001

Adding replica 192.168.25.153:7005 to 192.168.25.153:7002

Adding replica 192.168.25.153:7006 to 192.168.25.153:7003

M: 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3 192.168.25.153:7001

   slots:0-5460 (5461 slots) master

M: 8cd93a9a943b4ef851af6a03edd699a6061ace01 192.168.25.153:7002

   slots:5461-10922 (5462 slots) master

M: 2935007902d83f20b1253d7f43dae32aab9744e6 192.168.25.153:7003

   slots:10923-16383 (5461 slots) master

S: 74f9d9706f848471583929fc8bbde3c8e99e211b 192.168.25.153:7004

   replicates 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3

S: 42cc9e25ebb19dda92591364c1df4b3a518b795b 192.168.25.153:7005

   replicates 8cd93a9a943b4ef851af6a03edd699a6061ace01

S: 8b1b11d509d29659c2831e7a9f6469c060dfcd39 192.168.25.153:7006

   replicates 2935007902d83f20b1253d7f43dae32aab9744e6

Can I set the above configuration? (type 'yes' to accept): yes

>>> Nodes configuration updated

>>> Assign a different config epoch to each node

>>> Sending CLUSTER MEET messages to join the cluster

Waiting for the cluster to join.....

>>> Performing Cluster Check (using node 192.168.25.153:7001)

M: 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3 192.168.25.153:7001

   slots:0-5460 (5461 slots) master

M: 8cd93a9a943b4ef851af6a03edd699a6061ace01 192.168.25.153:7002

   slots:5461-10922 (5462 slots) master

M: 2935007902d83f20b1253d7f43dae32aab9744e6 192.168.25.153:7003

   slots:10923-16383 (5461 slots) master

M: 74f9d9706f848471583929fc8bbde3c8e99e211b 192.168.25.153:7004

   slots: (0 slots) master

   replicates 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3

M: 42cc9e25ebb19dda92591364c1df4b3a518b795b 192.168.25.153:7005

   slots: (0 slots) master

   replicates 8cd93a9a943b4ef851af6a03edd699a6061ace01

M: 8b1b11d509d29659c2831e7a9f6469c060dfcd39 192.168.25.153:7006

   slots: (0 slots) master

   replicates 2935007902d83f20b1253d7f43dae32aab9744e6

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

[root@localhost redis-cluster]#

 

      1. redis集群的使用方法

Redis-cli连接集群。

[root@localhost redis-cluster]# redis01/redis-cli -p 7002 -c

-c:代表连接的是redis集群

    1. Solr服务搭建
      1. Solr的环境

Solr是java开发。

需要安装jdk。

安装环境Linux。

需要安装Tomcat。

      1. 搭建步骤

第一步:把solr 的压缩包上传到Linux系统

第二步:解压solr。

第三步:安装Tomcat,解压缩即可。

第四步:把solr部署到Tomcat下。

第五步:解压缩war包。启动Tomcat解压。

第六步:把/root/solr-4.10.3/example/lib/ext目录下的所有的jar包,添加到solr工程中。

[root@localhost ext]# pwd

/root/solr-4.10.3/example/lib/ext

[root@localhost ext]# cp * /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/

第七步:创建一个solrhome。/example/solr目录就是一个solrhome。复制此目录到/usr/local/solr/solrhome

[root@localhost example]# pwd

/root/solr-4.10.3/example

[root@localhost example]# cp -r solr /usr/local/solr/solrhome

[root@localhost example]#

第八步:关联solr及solrhome。需要修改solr工程的web.xml文件。

第九步:启动Tomcat

http://192.168.25.154:8080/solr/

和windows下的配置完全一样。

      1. Solr的使用

添加文档必须有id域,其他域 必须在solr的schema.xml中定义。

    1. 配置业务域

schema.xml中定义

  1. 商品Id
  2. 商品标题
  3. 商品卖点
  4. 商品价格
  5. 商品图片
  6. 分类名称
  7. 商品描述

 

创建对应的业务域。需要制定中文分析器。

 

创建步骤:

第一步:把中文分析器添加到工程中。

  1. 把IKAnalyzer2012FF_u1.jar添加到solr工程的lib目录下
  2. 把扩展词典、配置文件放到solr工程的WEB-INF/classes目录下。

第二步:配置一个FieldType,制定使用IKAnalyzer

修改schema.xml文件

修改Solr的schema.xml文件,添加FieldType:

<fieldType name="text_ik" class="solr.TextField">

  <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>

</fieldType>

 

第三步:配置业务域,type制定使用自定义的FieldType。

设置业务系统Field

<field name="item_title" type="text_ik" indexed="true" stored="true"/>

<field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>

<field name="item_price"  type="long" indexed="true" stored="true"/>

<field name="item_image" type="string" indexed="false" stored="true" />

<field name="item_category_name" type="string" indexed="true" stored="true" />

<field name="item_desc" type="text_ik" indexed="true" stored="false" />

 

<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>

<copyField source="item_title" dest="item_keywords"/>

<copyField source="item_sell_point" dest="item_keywords"/>

<copyField source="item_category_name" dest="item_keywords"/>

<copyField source="item_desc" dest="item_keywords"/>

 

第四步:重启tomcat

  1. Solr集群的系统架构
    1. 物理结构

三个Solr实例( 每个实例包括两个Core),组成一个SolrCloud。

  1. 逻辑结构

Collection的逻辑分片。每个Shard被化成一个或者多个replication,通过选举确定哪个是Leader。

Master是master-slave结构中的主结点(通常说主服务器),Slave是master-slave结构中的从结点(通常说从服务器或备服务器)。同一个Shard下master和slave存储的数据是一致的,这是为了达到高可用目的。

每个Core是Solr中一个独立运行单位,提供 索引和搜索服务。一个shard需要由一个Core或多个Core组成。由于collection由多个shard组成所以collection一般由多个core组成。

Collection在SolrCloud集群中是一个逻辑意义上的完整的索引结构。它常常被划分为一个或多个Shard(分片),它们使用相同的配置信息。

比如:针对商品信息搜索可以创建一个collection。

 collection=shard1+shard2+....+shardX

 

索引集合包括两个Shard(shard1和shard2),shard1和shard2分别由三个Core组成,其中一个Leader两个Replication,Leader是由zookeeper选举产生,zookeeper控制每个shard上三个Core的索引数据一致,解决高可用问题。

用户发起索引请求分别从shard1和shard2上获取,解决高并发问题。

 

 

    1. 需要实现的solr集群架构
      1. Shard
      1. Master或Slave
      1. Core
      1. collection

 

Zookeeper作为集群的管理工具。

  1. 集群管理:容错、负载均衡。
  2. 配置文件的集中管理
  3. 集群的入口

 

需要实现zookeeper 高可用。需要搭建集群。建议是奇数节点。需要三个zookeeper服务器。

 

搭建solr集群需要7台服务器。

 

搭建伪分布式:

需要三个zookeeper节点

需要四个tomcat节点。

 

建议虚拟机的内存1G以上。

    1. 需要实现的solr集群环境准备

        CentOS-6.5-i386-bin-DVD1.iso

              jdk-7u72-linux-i586.tar.gz

    apache-tomcat-7.0.47.tar.gz

    zookeeper-3.4.6.tar.gz

    solr-4.10.3.tgz

 

    1. 安装步骤
      1.  Zookeeper集群搭建
  1. 第一步:需要安装jdk环境。
  2. 第二步:把zookeeper的压缩包上传到服务器。
  3. 第三步:解压缩。
  4. 第四步:把zookeeper复制三份。
  5. [root@localhost ~]# mkdir /usr/local/solr-cloud
  6. [root@localhost ~]# cp -r zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper01
  7. [root@localhost ~]# cp -r zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper02
  8. [root@localhost ~]# cp -r zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper03
  9. 第五步:在每个zookeeper目录下创建一个data目录。
  10. 第六步:在data目录下创建一个myid文件,文件名就叫做“myid”。内容就是每个实例的id。例如1、2、3
  11. [root@localhost data]# echo 1 >> myid
  12. [root@localhost data]# ll
  13. total 4
  14. -rw-r--r--. 1 root root 2 Apr  7 18:23 myid
  15. [root@localhost data]# cat myid
  16. 1
  17. 第七步:修改配置文件。把conf目录下的zoo_sample.cfg文件改名为zoo.cfg

server.1=192.168.25.154:2881:3881

server.2=192.168.25.154:2882:3882

server.3=192.168.25.154:2883:3883

 

  1.  
  2. 第八步:启动每个zookeeper实例。
  3. 启动bin/zkServer.sh start
  4.  
  5. 查看zookeeper的状态:
  6. bin/zkServer.sh status
      1. solr集群搭建
  7. 第一步:创建四个tomcat实例。每个tomcat运行在不同的端口。8180、8280、8380、8480
  8. 第二步:部署solr的war包。把单机版的solr工程复制到集群中的tomcat中。
  9. 第三步:为每个solr实例创建一个对应的solrhome。使用单机版的solrhome复制四份。
  10. 第四步:需要修改solr的web.xml文件。把solrhome关联起来。
  11. 第五步:配置solrCloud相关的配置。每个solrhome下都有一个solr.xml,把其中的ip及端口号配置好。

 

  1. 第六步:让zookeeper统一管理配置文件。需要把solrhome/collection1/conf目录上传到zookeeper。上传任意solrhome中的配置文件即可。
  2. 使用工具上传配置文件:/root/solr-4.10.3/example/scripts/cloud-scripts/zkcli.sh

./zkcli.sh -zkhost 192.168.213.128:2181,192.168.213.128:2182,192.168.213.128:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf

  1. 查看zookeeper上的配置文件:
  2. 使用zookeeper目录下的bin/zkCli.sh命令查看zookeeper上的配置文件:
  3. [root@localhost bin]# ./zkCli.sh
  4. [zk: localhost:2181(CONNECTED) 0] ls /
  5. [configs, zookeeper]
  6. [zk: localhost:2181(CONNECTED) 1] ls /configs
  7. [myconf]
  8. [zk: localhost:2181(CONNECTED) 2] ls /configs/myconf
  9. [admin-extra.menu-top.html, currency.xml, protwords.txt, mapping-FoldToASCII.txt, _schema_analysis_synonyms_english.json, _rest_managed.json, solrconfig.xml, _schema_analysis_stopwords_english.json, stopwords.txt, lang, spellings.txt, mapping-ISOLatin1Accent.txt, admin-extra.html, xslt, synonyms.txt, scripts.conf, update-script.js, velocity, elevate.xml, admin-extra.menu-bottom.html, clustering, schema.xml]
  10. [zk: localhost:2181(CONNECTED) 3]
  11. 退出:

 

  1. [zk: localhost:2181(CONNECTED) 3] quit
  2.  
  3. 第七步:修改tomcat/bin目录下的catalina.sh 文件,关联solr和zookeeper。
  4. 把此配置添加到配置文件中:
  5. JAVA_OPTS="-DzkHost=192.168.213.128:2181,192.168.213.128:2182,192.168.213.128:2183"

 

 
  


第八步:启动每个tomcat实例。要包装zookeeper集群是启动状态。

 

第九步:访问集群

第十步:创建新的Collection进行分片处理。

http://192.168.25.154:8180/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2

第十一步:删除不用的Collection。

http://192.168.25.154:8180/solr/admin/collections?action=DELETE&name=collection1

    1. ActiveMQ的安装

进入http://activemq.apache.org/下载ActiveMQ

使用的版本是5.12.0

      1. redis集群搭建步骤
  1. 需要jdk
  2. 安装Linux系统。生产环境都是Linux系统。
      1. 安装步骤

第一步: 把ActiveMQ 的压缩包上传到Linux系统。

第二步:解压缩。

第三步:启动。

使用bin目录下的activemq命令启动:

[root@localhost bin]# ./activemq start

关闭:

[root@localhost bin]# ./activemq stop

查看状态:

[root@localhost bin]# ./activemq status

 

注意:如果ActiveMQ整合spring使用不要使用activemq-all-5.12.0.jar包。建议使用5.11.2

 

进入管理后台:

http://192.168.213.128:8161/admin/

用户名:admin

密码:admin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值