菜鸟教程Linux
1.根目录介绍:
/bin:
bin是Binary的缩写, 这个目录存放着最经常使用的命令。
/boot:
这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :
dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc:
这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:
用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib:
这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:
linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/opt:
这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/selinux:
这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv:
该目录存放一些服务启动之后需要提取的数据。
/sys:
这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp:
这个目录是用来存放一些临时文件的。
/usr:
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/bin:
系统用户使用的应用程序。
/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:
内核源代码默认的放置目录。
/var:
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
2.常见文件操作命令
ls: 列出目录
ls -a //列出所有数据包括隐藏的数据
l. //查看所有以.开头的文件
cd:切换目录
cd. //目录不移动
cd..//返回上级
pwd:显示目前的目录
mkdir:创建一个新的目录
rmdir:删除一个空的目录
[root@server1 work]# mkdir new //创建新目录
[root@server1 work]# mkdir -p 1/2/3/4 创建一个这样的目录
cp: 复制文件或目录
rm: 移除文件或目录
[root@server1 work]# rm -f file1 //强制删除
[root@server1 work]# rm -fr file1 //强制删除不提醒
[root@server1 work]# rm dir1 -r //会进行提醒
mv: 移动文件与目录,或修改文件与目录的名称
touch:创建一个空文件
touch test
touch .test//创建隐藏文件
cat:查看文件内容
[root@server1 work]# cat test //查看test的内容
mv:移动
[root@server1 work]# mv file1 dir1/
tail:可以tail -1 test
查看test文件倒数第一行
head:可以head-1 test
查看test文件第一行
可以在任何的命令后面加上--help
获取帮助
3.vim 编辑器
1.直接使用vim
进入空的文件编辑器
i 切换到输入模式,以输入字符。
x 删除当前光标所在处的字符。
: 切换到底线命令模式,以在最底一行输入命令。
在输入要编写的内容之后 按ESC机内命令模式 输入:wq test
:wq表示退出并保存 test 表示改文件的名字。
2.使用vim test
命令表示要编辑的文件是test进入编辑模式 :wq
保存退出,如果不想保存 :q!
强退
输入模式
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
复制剪切黏贴 - 在命令模式 光标在某一行时 yy(y4y表示复制这4行)复制 然后p黏贴 就可在光标下面插入这一行的复制,u是撤销的意思
- 光标在某一行时 dd(d4d表示剪切这4行),然后p黏贴 就可在光标的这行插入下一行的。cl是剪切一个字符 cw是剪切一个单词
查询替换
- 查询: /或者?
在命令模式输入:dass
就会讲查询的高亮 n光标向下查询 N 光标向上查询 - 给每一行 加上序号在命令行
:set nu
- 将全文中a替换为b
:%s/a/b
- 将查询到的第一个a替换为b
:1s/a/b
快捷键
左右分屏ctrl w v
wv不是一起按
在当前窗口 分屏 打开另外一个文件编辑:sp test
设置tab等于多少空格:set ts=4
为4个空格
在命令终端时 可以使用 ctrl+shift+t重新打开一个 命令终端
还可以使用[root@server1 work]# vim .vimrc
编辑这个文件对vim进行配置 在每次vim编辑器打开时都会西安导入vimrc文件
文件管理
将错误的丢进回收站[gj@server1 root]$ find -name passwd 2> /dev/null/
将输入的内容 定向到文件中 >
会覆盖原有的内容>>
不会覆盖原有的内容
[root@server1 work]# cat >test <<EOF
> dasdadds
> das
> ghfg
> gfh
> EOF
echo单行内容
[root@server1 work]# echo utioeruo>test
[root@server1 work]# cat test
utioeruo
[root@server1 work]# echo jdglgjdj>>test
[root@server1 work]# cat test
utioeruo
jdglgjdj
[root@server1 work]# tr 'a-z' 'A-Z' <test
UTIOERUO
JDGLGJDJ
管道
管道(内容向后传递)会自动过滤错误内容[gj@server1 root]$ find -name passwd | cat>test
指挥将正确的内容输入到test当中,或者是[gj@server1 root]$ find -name passwd 2>&1 | cat>test
将错误内容重定向为正确的,及可以在中间添加更多的操作
用户和用户组管理
useradd 选项 用户名
参数说明:
- -c comment 指定一段注释性描述。
- -d 目录 指定用户主目录,如果此目录不存在,则同时使用-- m选项,可以创建主目录。
- -g 用户组 指定用户所属的用户组。
- -G 用户组,用户组 指定用户所属的附加组。
- -s Shell文件 指定用户的登录Shell。
- -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
# useradd -s /bin/sh -g group –G adm,root gem
此命令新建了一个用户gem,该用户的登录Shell是 /bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。
useradd user1 添加一个新用户(会新建一个组) 其实最终的修改都会保存到下面的三个文件中
[root@server1 work]# tail -1 /etc/passwd
user1:x:1001:1001::/home/user1:/bin/bash
[root@server1 work]# tail -1 /etc/group
user1:x:1001:
[root@server1 work]# tail -1 /etc/shadow
user1:!!:18342:0:99999:7:::
usermod 选项 用户名常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样
# usermod -s /bin/ksh -d /home/z –g developer sam
此命令将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer
删除用户 # userdel -r sam
-r,它的作用是把用户的主目录一起删除。
给用户添加密码 [root@server1 work]# passwd user1
用户权限
修改该文件的权限
[root@server1 work]# chmod root test
//该文件属于root 也可以修改为其他的
[root@server1 work]# chmod u-r go+r test
独立的控制
[root@server1 work]# setfacl -m u:t:- passwd
//单独将t用户对passwd文件的访问权限设置全空
进程
[gj@server1 ~]$ ps ax//查看全部进程
[gj@server1 ~]$ ps ax -o pid,comm,%cpu//进行过滤 只查看 pd 内存 cpu
[gj@server1 ~]$ ps ax -o pid,comm,%cpu | prep dd
//查找dd的进程
Ss表示进程在休眠
[gj@server1 ~]$ top//动态的显示进程 每隔几秒就会刷新界面,按1会显示每个cpu的使用率
P按照cpu使用率排序
M按照内存使用率排序
ctrl+c退出
in是cpu使用优先级 数字越小越高
杀进程[root@server1 /]# kill -9 9921
将9921杀掉 -9 是强制杀掉
[root@server1 /]# kill xxx //进程pid
[root@server1 /]# kill -9 xxx//进程pid
[root@server1 /]# killall xxx//进程名字
job管理
[gj@server1 ~]$ vim
//ctrl+z 后台挂起目前的进程 会停止
[gj@server1 ~]$ vim & //后台运行目前的进程
[4] 14866
[gj@server1 ~]$ jobs//查看
[1] Stopped vim
[2] Stopped vim
[3]- Stopped vim
[4]+ Stopped vim//+表示优先级
[gj@server1 ~]$ fg//调出进程 默认是+的进程 也可以使用前面的序号
vim
[4]+ Stopped vim
[gj@server1 ~]$
服务管理
[root@server1 /]# systemctl status sshd//查看该服务状态
[root@server1 /]# systemctl start sshd //启动该服务
[root@server1 /]# systemctl stop sshd//停止
[root@server1 /]# systemctl restart sshd //重启
[root@server1 /]# systemctl is-enabled sshd//该服务是不是开机自启
enabled //是
[root@server1 /]# systemctl disable sshd//将该服务设置为非开机自启
Removed symlink /etc/systemd/system/multi-user.target.wants/sshd.service.
[root@server1 /]# systemctl is-enabled sshd
disabled
[root@server1 /]# systemctl disable --now sshd//在disable同时把这个服务也进行关闭
网络管理
[root@server1 network-scripts]# ip addr
//查看本机IP文件
上网:修改配置文件
[root@server1 /]# cd /etc/sysconfig/
[root@server1 sysconfig]# ls
anaconda init network-scripts rsyslog
atd ip6tables-config nfs run-parts
authconfig iptables-config ntpdate samba
cbq irqbalance qemu-ga saslauthd
chronyd kdump radvd selinux
console kernel raid-check smartmontools
cpupower ksm rdisc sshd
crond libvirtd readonly-root sysstat
ebtables-config man-db rhn sysstat.ioconf
fcoe modules rpcbind virtlockd
firewalld netconsole rpc-rquotad virtlogd
grub network rsyncd wpa_supplicant
[root@server1 sysconfig]# cd network-scripts/
[root@server1 network-scripts]# ls
ifcfg-ens33 ifdown-ppp ifup-ib ifup-Team
ifcfg-lo ifdown-routes ifup-ippp ifup-TeamPort
ifdown ifdown-sit ifup-ipv6 ifup-tunnel
ifdown-bnep ifdown-Team ifup-isdn ifup-wireless
ifdown-eth ifdown-TeamPort ifup-plip init.ipv6-global
ifdown-ib ifdown-tunnel ifup-plusb network-functions
ifdown-ippp ifup ifup-post network-functions-ipv6
ifdown-ipv6 ifup-aliases ifup-ppp
ifdown-isdn ifup-bnep ifup-routes
ifdown-post ifup-eth ifup-sit
[root@server1 network-scripts]# vim ifcfg-ens33
将ifcfg-ens33修改如下:
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
UUID=68cdbff1-d419-4b1f-92b1-048c2596d04c
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.100//.1字段要与电脑一致
PREFIX=24
GATEWAY=192.168.1.1//完全与电脑一致
DNS1=114.114.114.114
保存重启
软件管理
先进行挂载[root@server1 yum.repos.d]# mount /dev/cdrom /media/
把光驱挂载到media
创建配置文件
[root@server1 ~]# cd /etc/yum.repos.d
[root@server1 yum.repos.d]# ls
redhat.repo
[root@server1 yum.repos.d]# vim dvd.repo
dvd.repo//这个文件的周骓必须是.repo
[dvd]
name=rhel7.6
baseurl=file:///media
gpgcheck=0
校验是否可用[root@server1 yum.repos.d]# yum repolist
正常如下
安装包[root@server1 yum.repos.d]# yum install -y httpd//这是阿帕奇服务
查询已经安装的包[root@server1 yum.repos.d]# rpm -qa | wc -l
[root@server1 yum.repos.d]# systemctl start httpd//启动安装的服务
[root@server1 yum.repos.d]# systemctl stop firewalld//关闭防火墙
[root@server1 yum.repos.d]# systemctl disable firewalld//关闭自启
测试
还可定制首页
[root@server1 yum.repos.d]# cd /var/www/html
[root@server1 html]# vim index.html
二进制安装
以安装nginx-1.16.1为例
1.首先下载二进制包文件
2.将下载好的文件放我虚拟机当中 这次放在root跟目录下
3.解压并进入
[root@server1 ~]# tar zxf nginx-1.16.1.tar.gz 解压.gz文件命令
[root@server1 ~]# cd nginx-1.16.1
4.检测是否缺少什么 环境
[root@server1 nginx-1.16.1]# ./configure
检测缺少什么就安装什么
5.检测本机是否由却少的环境[root@server1 nginx-1.16.1]# yum list pcre-devel
如果有就直接安装 首先是[root@server1 nginx-1.16.1]# yum install -y gcc
然后 [root@server1 nginx-1.16.1]# yum install -y pcre-devel
最后 [root@server1 nginx-1.16.1]# yum install -y zlib-devel
所有缺少的安装完毕。
6.configure可以指定参数[root@server1 nginx-1.16.1]# ./configure --help
我们指定其安装位置
[root@server1 nginx-1.16.1]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module
这时会缺少库,只要是缺少库的 就要在后面加上devel[root@server1 nginx-1.16.1]# yum install -y openssl-devel
将对应的库安装上就好了
以上就是检测的全部内容
7.编译[root@server1 nginx-1.16.1]# make
8.安装[root@server1 nginx-1.16.1]# make install
[root@server1 nginx-1.16.1]# make clean//清理编译的无用内容
9.运行 其实是运行脚本
[root@server1 nginx-1.16.1]# cd /usr/local/nginx/
[root@server1 nginx]# cd sbin///脚本文件都在这里
[root@server1 sbin]# ./nginx -t//测试脚本是否有语法错误
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@server1 sbin]# ./nginx//运行
注意 避免端口问题 需要关闭其他使用的程序# netstat -antlp
安装tomcat
下载
因为tomcat 是已经编译好的,我们只需要将其解压然后运行就好。
根据习惯同样将解压好的文件放到 usr/local/中
还可以给文件做一个超链接 [root@server1 local]# ln -s apache-tomcat-7.0.103/ tomcat
然后启动脚本
[root@server1 local]# cd tomcat
[root@server1 tomcat]# cd bin/
[root@server1 bin]# ls
bootstrap.jar daemon.sh startup.sh
catalina.bat digest.bat tomcat-juli.jar
catalina.sh digest.sh tomcat-native.tar.gz
catalina-tasks.xml setclasspath.bat tool-wrapper.bat
commons-daemon.jar setclasspath.sh tool-wrapper.sh
commons-daemon-native.tar.gz shutdown.bat version.bat
configtest.bat shutdown.sh version.sh
configtest.sh startup.bat
[root@server1 bin]# ./startup.sh
测试完成
磁盘管理
[root@server1 ~]# fdisk -l
//查看 硬盘分区
[root@server1 ~]# cat /proc/partitions
Mysql
将mysql安装包拖放到根目录,[root@localhost ~]# tar xf mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar
解压
[root@localhost ~]# yum install mysql-community-client-8.0.19-1.el7.x86_64.rpm mysql-community-common-8.0.19-1.el7.x86_64.rpm mysql-community-libs-8.0.19-1.el7.x86_64.rpm mysql-community-libs-compat-8.0.19-1.el7.x86_64.rpm mysql-community-server-8.0.19-1.el7.x86_64.rpm
目前先安装这些 需要用到的
这样就安装完毕了
将数据仓库启动[root@localhost ~]# systemctl start mysqld
启动之后会又默认密码,从日志中查看[root@localhost ~]# cat /var/log/mysqld.log
执行脚本对密码进行修改[root@localhost ~]# mysql_secure_installation
eFGsVnRyP8.s
会先让输入旧密码 将之前的输入 然后输入新密码,新密码又强壮度校验 现在输入的是Qwer1234@
接下来所有选项执行y 直至结束。
进行重新登录[root@localhost ~]# mysql -p
在数据库中操作注意分号mysql> show databases;
mysql的官方帮助文档官方文档连接
下面演示例子 主从复制的例子
需要用到双主机 可以克隆一下当前的主机
然后需要先修改防火墙配置等首先关闭防火墙[root@localhost ~]# systemctl disable --now firewalld
,还有修改配置文件[root@localhost ~]# vim /etc/sysconfig/selinux
如下 修改为disabled
然后重启
分别讲两个mysql设置不同的id[root@localhost ~]# vim /etc/my.cnf
分别设置为1和2
设置完要重启mysql[root@localhost ~]# systemctl restart mysqld
登录1的mysql [root@localhost ~]# mysql -p
显示相关插件mysql> show plugins;
默认的如下
创建用户mysql> CREATE USER 'repl'@'192.168.0.%' IDENTIFIED with mysql_native_password BY 'Westos+007';
进行授权mysql> grant replication slave on *.* to 'repl'@'192.168.0.%';
然后2sql就可以直接连接了[root@localhost ~]# mysql -h 192.168.0.200 -u repl -p
密码是Westos+007
这是连接数据库
我们还可以使用2自己登录自己的数据库 然后 对1进行复制
在1中查看 要复制的日志
在2中
CHANGE MASTER TO
-> MASTER_HOST='master_host_name',
-> MASTER_USER='replication_user_name',
-> MASTER_PASSWORD='replication_password',
-> MASTER_LOG_FILE='recorded_log_file_name',
-> MASTER_LOG_POS=recorded_log_position;
CHANGE MASTER TO MASTER_HOST='192.168.0.200',MASTER_USER='repl',MASTER_PASSWORD='Westos+007',MASTER_LOG_FILE='binlog.000005',MASTER_LOG_POS=155;
mysql> start slave;
mysql> show slave status\G;
如是如下 就是成功了,从库会从binlog.000005’,MASTER_LOG_POS=155;开始复制主库的日志并且在从库中运行,然后等待 主库的改变Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
上面的方法 不推荐使用 使用GTID配置复制
需要先进行修配配置文件vim /etc/my.cnf在最后加上 主从都需要
gtid_mode=ON
enforce-gtid-consistency=ON
之后要重启MySQL systemctl restart mysqld
进入2之后要停掉slave,因为之前开着呢mysql> stop slave;
然后
mysql> CHANGE MASTER TO
> MASTER_HOST = host,
> MASTER_PORT = port,
> MASTER_USER = user,
> MASTER_PASSWORD = password,
> MASTER_AUTO_POSITION = 1;
CHANGE MASTER TO MASTER_HOST='192.168.0.200',MASTER_USER='repl',MASTER_PASSWORD='Westos+007',MASTER_AUTO_POSITION = 1;
mysql> start slave;
mysql> show slave status\G;
照样正常
以上的这是同步默认的都是异步的。
也可以根据官方文档 设置成半同步的。
首先安装插件在主库mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
在从库mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
主库设置打开mysql> SET GLOBAL rpl_semi_sync_master_enabled =1
如不进行时间配置则为等待10秒。
从库设置打开mysql> SET GLOBAL rpl_semi_sync_master_enabled =1
不过这时候还不能生效 需要进行io线程的重启,先关掉再进行开启
mysql> stop slave io_thread;
Query OK, 0 rows affected (0.01 sec)
mysql> start slave io_thread;
Query OK, 0 rows affected (0.01 sec)
mysql> show variables like 'rpl%';
就好了
延迟复制
只要再从库中设置
mysql> stop slave;
mysql> CHANGE MASTER TO MASTER_DELAY=30;
mysql> start slave;
这样就延迟30秒复制
慢查询 会记录下查询用时比较长的日志mysql> show variables like 'slow%';
设置:
mysql> set global slow_query_log=1;
就完成了 慢查询的log会存放在上图的路径里面
redis
下载连接
安装软件
[root@localhost ~]# ls
redis-5.0.8.tar.gz
[root@localhost ~]# tar zxf redis-5.0.8.tar.gz
[root@localhost ~]# ls
redis-5.0.8 redis-5.0.8.tar.gz
[root@localhost ~]# cd redis-5.0.8/
[root@localhost redis-5.0.8]# ls
00-RELEASENOTES COPYING Makefile redis.conf runtest-moduleapi src
BUGS deps MANIFESTO runtest runtest-sentinel tests
CONTRIBUTING INSTALL README.md runtest-cluster sentinel.conf utils
[root@localhost redis-5.0.8]# install -y gcc
[root@localhost redis-5.0.8]# make
[root@localhost redis-5.0.8]# make install
开启服务
[root@localhost redis-5.0.8]# utils/install_server.sh
一直回车使用默认的就可以
也可以直接通过脚本启动或者关闭
[root@localhost redis-5.0.8]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@localhost redis-5.0.8]# /etc/init.d/redis_6379 status
Redis is running (14403)
[root@localhost redis-5.0.8]#
[root@localhost redis-5.0.8]# /etc/init.d/redis_6379 stop
Stopping ...
Redis stopped
进入命令行
[root@localhost redis-5.0.8]# redis-cli
查看所有参数
127.0.0.1:6379> CONFIG GET *
127.0.0.1:6379> CONFIG GET bind//查看bind
1) "bind"
2) "127.0.0.1"
指令主要查看挂安防文档很简单连接
常用的
存放键值
127.0.0.1:6379> set name wxh
OK
127.0.0.1:6379> get name
"wxh"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> set name we
OK
127.0.0.1:6379[1]> get name
"we"
127.0.0.1:6379[2]> select 1
OK
127.0.0.1:6379[1]> get name
"we"
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> get name
"wxh"
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get name
"we"
127.0.0.1:6379[1]> del name
(integer) 1
列表连接连接
LPUSH 命令可向list的左边(头部)添加一个新元素,而RPUSH命令可向list的右边(尾部)添加一个新元素。最后LRANGE 命令可从list中取出一定范围的元素:
> rpush mylist A
(integer) 1
> rpush mylist B
(integer) 2
> lpush mylist first
(integer) 3
> lrange mylist 0 -1
1) "first"
2) "A"
3) "B"
两台机器进行文件复制
需要先将主从的配置进行更改:[root@localhost redis-5.0.8]# vim /etc/redis/6379.conf
讲2机器设置为什么的从机127.0.0.1:6379> REPLICAOF 192.168.0.200 6379
(这是临时的重启就会还原)
使用127.0.0.1:6379> info
查看信息 就变成slave了
修改配置文件持久存在
这样就可以从主机中查询数据了,在主机中127.0.0.1:6379> set name w
在从机中127.0.0.1:6379> get name
持久化
在而批准文件中将[root@localhost redis-5.0.8]# vim /etc/redis/6379.conf
appendonly no 改为appendonly yes就可以打开了。
高可用的实验
一共开三台机器 其中一台是主机其余两个是从机,配置方法与上面的相同,还要在所有的机器配置文件上加上
这是当又两个认为主机有问题时 就下去
将主机的文件配置好了 之后直接给两个从机复制过去,不要先启动 不然会造成文件不同[root@localhost redis-5.0.8]# scp sentinel.conf 192.168.0.201:/etc/redis/``[root@localhost redis-5.0.8]# scp sentinel.conf 192.168.0.202:/etc/redis/
读取被指文件查看情况[root@localhost redis-5.0.8]# redis-sentinel /etc/redis/sentinel.conf
就看到所有的主机和从机。注意每一个机器都要打开。
将主机redis进行shut down 然后桑额检测都可以检测出来。并且进行主机替换。会将主机自动编程从机。还可以将日志输出到后台。
使用docker是一个容器
阿里云镜像站下载连接
[root@localhost yum.repos.d]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost yum.repos.d]# mv docker-ce.repo /etc/yum.repos.d/
[root@localhost yum.repos.d]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim docker-ce.repo
修改如下就好
已经进来了
[root@localhost yum.repos.d]# yum install docker-ce
会报错缺依赖,去阿里云镜像下载一个连接
[root@localhost ~]# wget https://mirrors.aliyun.com/centos-vault/7.6.1810/extras/x86_64/Packages/container-selinux-2.74-1.el7.noarch.rpm
[root@localhost ~]# yum install docker-ce container-selinux-2.74-1.el7.noarch.rpm
这下就可以安装好了。
激活
[root@localhost ~]# systemctl start docker
去找寻镜像
[root@localhost ~]# docker search redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 7962 [OK]
bitnami/redis Bitnami Redis Docker Image 139 [OK]
sameersbn/redis 79 [OK]
grokzen/redis-cluster Redis cluster 3.0, 3.2, 4.0 & 5.0 64
rediscommander/redis-commander Alpine image for redis-commander - Redis man… 36 [OK]
kubeguide/redis-master redis-master with "Hello World!" 31
redislabs/redis Clustered in-memory database engine compatib… 24
arm32v7/redis Redis is an open source key-value store that… 21
redislabs/redisearch Redis With the RedisSearch module pre-loaded… 20
oliver006/redis_exporter Prometheus Exporter for Redis Metrics. Supp… 20
bitnami/redis-sentinel Bitnami Docker Image for Redis Sentinel 12 [OK]
webhippie/redis Docker images for Redis 11 [OK]
redislabs/redisgraph A graph database module for Redis 10 [OK]
s7anley/redis-sentinel-docker Redis Sentinel 9 [OK]
insready/redis-stat Docker image for the real-time Redis monitor… 9 [OK]
arm64v8/redis Redis is an open source key-value store that… 8
redislabs/redismod An automated build of redismod - latest Redi… 7 [OK]
centos/redis-32-centos7 Redis in-memory data structure store, used a… 5
circleci/redis CircleCI images for Redis 4 [OK]
redislabs/redisinsight RedisInsight - The GUI for Redis 4
clearlinux/redis Redis key-value data structure server with t… 2
tiredofit/redis Redis Server w/ Zabbix monitoring and S6 Ove… 1 [OK]
wodby/redis Redis container image with orchestration 1 [OK]
runnable/redis-stunnel stunnel to redis provided by linking contain… 1 [OK]
xetamus/redis-resource forked redis-resource 0 [OK]
//第一个是官方的
拉取redis
[root@localhost ~]# docker pull redis
查看镜像的
[root@localhost ~]# docker images
如何启动,启动之前先把其他的redis服务进程结束[root@localhost ~]# killall redis-server
然后启动
[root@localhost ~]# docker run -d --name redis redis//后台运行
[root@localhost ~]# docker ps//查看已经运行的镜像
已经运行
docker通过桥接的方式联网
[root@localhost ~]# docker inspect redis//下面的这个就是docker中redis的地址
docker中的进程地址是按照docker ip进行朝上面加的
[root@localhost ~]# redis-cli -h 172.17.0.2//进入命令行模式
172.17.0.2:6379>
还可以进行多开
[root@localhost ~]# docker run -d --name slave1 redis
查询每个的ip然后将每个都可以连上去
[root@localhost ~]# docker inspect slave1
[root@localhost ~]# redis-cli -h 172.17.0.3//进入命令行模式
172.17.0.2:6379>
按照之前讲过的方式将后两个变成第一个的从机
也可以[root@localhost ~]# docker run -d --name redis -p 6379:6379 redis
让其变成和本机服务一样
可以直接安装nginx[root@localhost ~]# docker pull nginx
如果不成功多试几次 因为外网不稳定
[root@localhost ~]# docker run -d --name n nginx//这是正常的docker打开的
如果想外网访问 需要进行端口映射
[root@localhost ~]# docker run -d --name n1 -p 80:80 redis//将80端口映射到虚拟机ip的80端口上去
hadoop jdk idea开发环境
下载好所需软件包,方到根目录hadoop中
检查java情况[root@localhost hadoop]# java
由于安装了图形界面 会自动安装开放版java先卸载。
[root@localhost hadoop]# rpm -qa|grep java
python-javapackages-3.4.1-11.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64
javapackages-tools-3.4.1-11.el7.noarch
tzdata-java-2018e-3.el7.noarch
java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64
[root@localhost hadoop]# yum remove java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64 java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64
然后安装下载的jdk[root@localhost hadoop]# yum install jdk-8u181-linux-x64.rpm
安装hadoop建议普通用户先将文件包移动到普通用户目录[root@localhost hadoop]# mv hadoop-3.2.1.tar.gz /home/gj
且换到gj[root@localhost hadoop]# su - gj
解压安装包[gj@localhost ~]$ tar zxf hadoop-3.2.1.tar.gz
做一个软连接方便访问[gj@localhost ~]$ ln -s hadoop-3.2.1 hadoop
[root@localhost hadoop]# vim hadoop-env.sh
定义java_home
运行
[gj@localhost hadoop]$ pwd
/home/gj/hadoop
[gj@localhost hadoop]$ bin/hadoop
将启动的文件放到我们好找的位置[gj@localhost ~]$ vim .bash_profile
然后实时生效[gj@localhost ~]$ source .bash_profile
然后不管在哪都可以运行这个指令[gj@localhost ~]$ hadoop
下面时一个例子
可以参考官方文档连接
首先拷贝一些配置文件
[gj@localhost ~]$ mkdir input
[gj@localhost ~]$ ls
hadoop hadoop-3.2.1 hadoop-3.2.1.tar.gz input
[gj@localhost ~]$ cp hadoop/etc/hadoop/*.xml input/
外部访问
先进行文件配置 配置文件连接
[gj@localhost ~]$ cd hadoop
[gj@localhost hadoop]$ cd etc/hadoop/
[gj@localhost hadoop]$ vim core-site.xml
[gj@localhost hadoop]$ vim hdfs-site.xml
先进行绵密否则每次都会要求输入密码
[gj@localhost hadoop]$ ssh-keygen
[gj@localhost hadoop]$ cd .ssh/
[gj@localhost hadoop]$ cd
[gj@localhost ~]$ cd .ssh/
[gj@localhost .ssh]$ ssh-copy-id localhost
[gj@localhost .ssh]$ ssh localhost//如果这一步不需要登陆密码就成功了
[gj@localhost .ssh]$ cd
[gj@localhost ~]$ logout
使用之前先进行格式化[gj@localhost ~]$ hdfs namenode -format
启动
[gj@localhost ~]$ cd hadoop
[gj@localhost hadoop]$ sbin/start-dfs.sh
然后就可已经访问了
http://192.168.0.200:9870
idea安装
先解压[root@localhost hadoop]# tar zxf ideaIU-2019.3.4.tar.gz