1. YUM命令
yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
1.1 YUM语法 1 yum [options] [command ] [packages ...]
options : 可选, 选项包括 -h(帮助), -y(当安装过程提示选择全部为”yes”), -q(不显示安装的过程)等等.
command : 要进行的操作
package : 安装的包名
1.2 常用命令
列出所有可更新的软件清单命令: yum check-update
更新所有软件命令: yum update
仅安装指定的软件命令: yum install <package name>
仅更新指定的软件命令: yum update <package name>
列出所有可安装的软件清单命令: yum list
删除软件包命令: yum remove <package name>
查找软件包命令: yum search <keyword>
清除缓存命令
yum clean packages : 清除缓存目录下的软件包
yum clean headers : 清除缓存目录下的headers
yum clear oldheaders : 清除缓存目录下的旧headers
yum clean, yum clean alln (= yum clean packages; yum clean oldheaders) : 清除缓存目录下的软件包以及旧的headers
2. 基本命令 2.1 提升资源权限
2.2 以后台服务运行jar包 1 nohup java -jar xxxx.jar > log.file 2>&1 &
2.3 修改jar包运行时的服务端口号
2.4 查看进程占用资源情况 1 ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep java
2.5 权限
修改文件/文件夹权限 语法: chmod [*options*] *mode*[,*mode*] *file1* [*file2* ...]
修改文件所属用户组chown
3. 安装GitLab 1 2 1.安装依赖软件 yum -y install policycoreutils openssh-server openssh-clients postfix
1 2 2.设置postfix开机自启,并启动,postfix支持gitlab发信功能 systemctl enable postfix && systemctl start postfix
1 2 3 4 3.下载gitlab安装包,然后安装 gitlab的下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ rpm -ivh gitlab-ce-8.0.0-ce.0.el7.x86_64.rpm
1 2 3 4 4.修改gitlab配置文件指定服务器ip和自定义端口 -->更改gitlab默认端口 vim /etc/gitlab/gitlab.rb 修改内容:external_url 后改为自己的http://ip:端口 ; unicorn['port'] = 28080 修改 unicorn['port'] 端口 !注意,两个端口不能一样
1 2 5:使用gitlab-ctl reconfigure 自动配置,并安装数据库,初始化信息,如下所示(第一次使用配置时间较长): 命令:gitlab-ctl reconfigure
1 2 3 4 5 6:使用gitlab-ctl start 启动gitlab服务。 命令:gitlab-ctl start sudo gitlab-ctl stop --停止服务 sudo gitlab-ctl reconfigure --启动服务 sudo gitlab-ctl start --启动所有gitlab组件
1 7:在浏览器中输入 http://ip:端口/ ,然后 change password: ,并使用root用户登录 即可 (后续动作根据提示操作)
4. 防火墙(firewalld) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1. 运行命令: firewall-cmd --get-active-zones 运行完成之后,可以看到zone名称,如下: 2. 执行如下命令命令: firewall-cmd --zone=public --add-port=8012/tcp --permanent 3. 重启防火墙,运行命令: firewall-cmd --reload 4. 查看端口号是否开启,运行命令: firewall-cmd --query-port=6379/tcp 5. 删除已放行的短裤,运行命令: firewall-cmd --zone=public --remove-port=80/tcp --permanent 6. 查看防火墙开启状态,运行命令: systemctl status firewalld 7. 停止防火墙,运行命令: systemctl stop firewalld 8. 开启防火墙,运行命令: systemctl start firewalld 9. 重新启动防火墙,运行命令: systemctl restart firewalld 10. 查看已放行的端口列表 firewall-cmd --zone=public --list-ports
5. Docker容器 5.1 Docker安装 5.1.1. 删除已有的docker服务 1 2 3 4 5 6 7 8 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
5.1.2. 安装所需依赖 1 yum install -y yum-utils
5.1.3. 配置yum源 1 2 3 sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
5.1.4. 安装最新版Docker 1 yum install docker-ce docker-ce -cli containerd.io
5.1.5 Docker服务命令
启动: systemctl start docker
停止: systemctl stop docker
重启: systemctl restart docker
查看镜像: docker images
查看已经启动的容器: docker ps
查看所有容器,包含未启动: docker ps -a
一键启动所有容器: docker start $(docker ps -aq)
进入容器: docker exec -it [容器ID]
停止容器: docker stop [容器ID]
一键停止所有容器: docker stop $(docker ps -aq)
一键删除所有容器(前提, 全部容器都已经停止): docker rm $(docker ps -aq)
进入指定容器: docker exec -it [容器ID] /bin/bash
5.1.6. 配置Docker国内镜像源
镜像地址
修改步骤
\1. 直接修改 /etc/docker/daemon.json (docker 版本 >= 1.10 时) 内容为:{"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"]}
\2. 修改后重启服务systemctl daemon-reload``systemctl restart docker
5.2 使用 tomcat 镜像 1 2 3 4 5 运行容器 命令说明: -p 8080:8080:将主机的 8080 端口映射到容器的 8080 端口。 -v $PWD /test:/usr/local/tomcat/webapps/test:将主机中当前目录下的 test 挂载到容器的 /test。
5.3 Docker 镜像导入导出 5.3.1 导出/入 镜像 导出:将docker 镜像导出成文件
1 docker save -o [image ID/name] xxx.tar.gz
导出后, 会在命令参数指定的目录下生成对应的压缩文件,如果没有指定目录,则在执行docker save命令的路径下生成文件。
导出后的文件,可以在其他机器上通过加载镜像文件的方式进行导入加载。
导出时,强烈建议使用docker save -o 镜像名称:版本号 xxx.tar.gz的方式
导出时,如果使用docker save -o [ImageID] xxx.tar.gz的方式导出,导入时会出现镜像的名称和版本号都为none的情况
导入:将离线的docker镜像文件导入到docker服务中
1 docker load < xxxx.tar.gz
导入后,系统会随机生成imageID
5.3.2 导出/入 容器 导出:将docker运行的容器导出成文件
1 docker export [ImageID/name:target] > xxx.tar.gz
导出时,和save方式导出镜像一样,推荐使用imageID的方式导出,否则导入时可能会出现导入后的镜像的镜像名称和版本号都是<none>的情况。
导入:将离线的docker镜像文件导入到docker服务中
1 docker import xxxx.tar.gz <IMAGE NAME>:<IMAGE TAG>
Tips:
5.4 Docker离线方式安装(二进制源码方式安装) 下载docker离线二进制文件
1 https:// download.docker.com/linux/ static/stable/ x86_64/
下载后通过FTP传输到服务器后,解压
1 tar xzvf docker-xx.xx.x.tgz
将解压后的docker下的所有文件移动或拷贝到 /usr/bin下
1 2 cd docker/mv * /usr/bin
新建docker.service文件
1 touch /etc/systemd/system/docker.service
编辑docker.service文件
1 vi /etc/systemd/system/docker.service
在docker.service文件中填入如下内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [Unit] Description =Docker Application Container Engine Documentation =https://docs.docker.com After =network-online.target firewalld.service Wants =network-online.target [Service] Type =notify ExecStart =/usr/bin/dockerd ExecReload =/bin/kill -s HUP $MAINPID LimitNOFILE =infinity LimitNPROC =infinity TimeoutStartSec =0 Delegate =yes KillMode =process Restart =on-failure StartLimitBurst =3 StartLimitInterval =60s [Install] WantedBy =multi-user.targe
赋予docker.service可执行权限
1 2 chmod +x /etc/systemd/system/docker.service systemctl daemon-reload
[可选]将docker.service加入开机启动项
1 2 3 systemctl enable docker.service
6. natapp端口映射工具 1 以前台运行 ./natapp -authtoken=7cc9d2d7c758b320以后台运行 nohup ./natapp -authtoken=8679cddfaea0f1fa -log=stdout &
7. 安装JDK 7.1 方式一 (手动二进制包安装) 官网下载地址: https://www.oracle.com/technetwork/java/javase
7.1.1 切换到jdk目录 切换命令是 cd 目录名
7.1.2 解压jdk安装包 解压命令: tar zxvf jdk-8u181-linux-x64.tar.gz
7.1.3 配置环境变量 输入命令: vim /etc/profile
7.1.4 然后依次操作如下步骤
按键盘 shift+g
按键盘 o 字母
配置环境,将如下代码复制进去,复制成功, 在linux中鼠标右键即可粘贴
1 2 3 4 export JAVA_HOME=/opt/jdk/jdk1.8 .0_171 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
按键盘的Esc键, 在键盘左上角
输入命令保存退出 :wq
输入命令使配置文件生效 source /etc/profile
查看JKD是否配置成功 命令 java -version (看到版本就是成功了)
7.2 方式二 (使用yum进行安装,不推荐)
执行如下命令查看可安装的jdk版本 yum -y list Java*
根据需要选择安装的jdk版本,这里安装jdk1.8 执行如下命令, 然后等待安装完成 yum install -y java-1.8.0-openjdk-devel.x86_64
安装完毕后执行如下命令查看版本 java -version
使用yum安装后 jdk目录位置 usr/lib/jvm
配置环境变量 切换到安装目录 cd /usr/lib/jvm
然后配置步骤和手动安装的配置步骤是一样的
8. 安装Redis 8.1 二进制方式安装
安装编译源文件时所需的编译环境
1 2 3 4 5 yum -y install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make yum -y install centos-release-scl yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils scl enable devtoolset-9 bash
下载Redis二进制包文件
1 2 3 4 5 6 wget https://download.redis.io/releases/redis-6.0.9.tar.gz# 如果wget时报错, 说没有此命令, 就说明系统中没有安装wget # 使用 yum install wget -y 安装wget # 安装wget后, 重新wget redis的二进制源文件. # 也可在本地电脑上下载后, 使用FTP上传到服务器
解压
1 tar -zxf redis-6.0.9.tar.gz
进入解压后的目录
编译
8.2 yum方式安装
安装EPEL插件包
1 yum install epel-release -y
使用yum命令安装redis
8.3 Redis常用指令 1 2 3 4 5 6 7 8 9 10 11 12 # 启动服务 systemctl start redis.service# 停止服务 systemctl stop redis.service# 重启服务 systemctl restart redis.service# 查看服务启动状态 systemctl status redis.service# 开启开机自启 systemctl enable redis.service# 关闭开机自启 systemctl disable redis.service
8.4 配置文件常用修改 etc/redis.conf
1 2 3 4 5 6 7 8 bind 127.0.0.1 ==修改为==> bind 0.0.0.0 daemonize no ==修改为==> daemonize yes requirepass 密码
9. 安装Nginx Ngxin启动后会有两个PID[进程], 一个是Master, 另一个是Worker.
Master:
Worker:
9.1. 安装 pcre 依赖
1 wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
1 tar -zxvf pcre-8.37.tar.gz
1 ./configure make make install
9.2 安装openssl zlib gcc 1 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
9.3 安装 Nginx
上传tar
解压
编译 ./configure
安装 make && make install [安装后的路径: /usr/local/nginx/sbin/nginx]
9.4 Nginx的常用命令 [nginx的配置文件 conf/nginx.conf]
[使用nginx的命令的前提是: 必须要进入 /usr/local/nginx/sbin (nginx的)目录中]
9.4.1 Nginx ‘localtion’匹配规则
[~] : 波浪线标示执行一个正则匹配, 区分大小写;
[~*] : 表示执行一个正则匹配, 不区分大小写;
[^~] : 表示普通字符匹配, 如果该选项匹配, 只匹配该选项, 不匹配别的选项. 一般用来匹配目录;
[=] : 进行普通字符精确匹配;
[@] : 定义一个命名的localtion, 使用在内部定向, 例如: error_page, try_files;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 location = / { # 只匹配"/". [ configuration A ] } location / { # 匹配任何请求,因为所有请求都是以"/"开始 # 但是更长字符匹配或者正则表达式匹配会优先匹配 [ configuration B ] } location ^~ /images/ { # 匹配任何以 /images/ 开始的请求,并停止匹配 其它location [ configuration C ] } location ~* .(gif|jpg|jpeg)$ { # 匹配以 gif, jpg, or jpeg结尾的请求. # 但是所有 /images/ 目录的请求将由 [Configuration C]处理. [ configuration D ] }
9.4.2 Ngxin ‘localtion’匹配优先级 9.5 Ngxin反向代理 9.5.1 tomcat启动端口 8080 9.5.2 nginx监听端口 80 要求: 使用nginx的反向代理, 访问80端口即访问tomcat80端口
9.5.3 在nginx.xml中做如下配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name [服务器当前IP地址]; location / { root html; proxy_pass http://127.0.0.1:8080; index index.html index.htm; } location = /50x.html { root html; } }
负载均衡
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream myserver { server [服务器当前IP地址:端口号]; server [服务器当前IP地址:端口号]; } server { listen 80; server_name [服务器当前IP地址]; location / { root html; proxy_pass http://myserver; index index.html index.htm; } location = /50x.html { root html; } } }
9.5.4 Nginx配置ssl
编译带ssl插件的nginx ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
安装 make && make install
检查nginx是否正确安装带ssl插件 ./nginx -V 出现 configure arguments: –with-http_stub_status_module –with-http_ssl_module 表示正确安装
修改nginx权限 chmod 111 nginx
配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { #监听443端口 listen 443; #你的域名 server_name huiblog.top; ssl on; #ssl证书的pem文件路径 ssl_certificate /root/card/datav.abin9999.com_chain.crt; #ssl证书的key文件路径 ssl_certificate_key /root/card/datav.abin9999.com_key.key; location / { proxy_pass http://公网地址:项目端口号; } } server { listen 80; server_name huiblog.top; #将请求转成https rewrite ^(.*)$ https://$host$1 permanent; } }
配置完成后 重启nginx ./nginx -s reload./nginx -s stop./nginx
9.6 yum方式安装Ngxin 9.6.1 添加Ngxin的yum源 1 sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
9.6.2 yum命令安装
9.6.3 yum安装Ngxin文件路径
配置文件路径 /etc/nginx
可执行文件路径 /usr/sbin/nginx
9.7 将Nginx命令添加到系统环境变量 1 ln -s [nginx可执行文件所在路径] /usr/local/bin
9.8 使用Ngxin实现视频点播
1 ./configure --add-module=../nginx-rtmp-module-1.2.2
编译成功后安装
Nginx视频模块配置文件:
1 2 3 4 5 6 7 8 9 10 11 rtmp { server { listen 1935; chunk_size 4096; application vod { play /home/video; } } }
9.8 使用Ngxin实现视频直播推流
需要nginx在编译时导入rtmp模块 下载地址: https://github.com/arut/nginx-rtmp-module/tags
上传下载的文件到服务器,或者使用curl或者wget直接下载到服务器
解压下载的压缩文件
在编译nginx时加上对应插件
1 2 ./configure --add-module=../nginx-rtmp-module make && make install
安装FFmpeg
1 2 3 4 5 6 7 1. 安装启用EPEL软件存储库 sudo yum install epel-release2. 导入存储库GPG密钥并通过安装rpm软件包来启用Nux存储库 sudo rpm -v --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm 3. 安装FFmpeg sudo yum install ffmpeg ffmpeg-devel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 rtmp { server { listen 1935; application live { live on; # on_publish http://127.0.0.1:8686/auth; # on_play http://127.0.0.1:8686/auth; } application hls { live on; hls on; hls_path temp/hls; hls_fragment 8s; } } }
9.9 使用Nginx做静态图片服务器 只需要配置对应配置文件即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 location ~ .*\.(gif|jpg|jpeg|png)$ { # expires 24h; # 客户端缓存数据时长 root /opt/upload/iot;#指定图片存放路径 proxy_store on; proxy_store_access user:rw group:rw all:rw; proxy_temp_path /opt/upload/iot;#图片访问路径 proxy_redirect off; proxy_set_header Host 127.0.0.1; client_max_body_size 10m; client_body_buffer_size 1280k; proxy_connect_timeout 900; proxy_send_timeout 900; proxy_read_timeout 900; proxy_buffer_size 40k; proxy_buffers 40 320k; proxy_busy_buffers_size 640k; proxy_temp_file_write_size 640k; # 资源不存在时,跳转 if ( !-e $request_filename) { proxy_pass http://127.0.0.1;#默认80端口 } }
9.10 Nginx做端口映射(跳板机) 实现目的: 使用一台服务器或多台服务器中转跳接 登录其他服务器. 隐藏真实访问目标服务器ssh连接ip地址信息
nginx版本要求 1.8.X 以上
在配置文件中配置的nginx监听的端口需要在防火墙中配置放行
编译时, 需编译进 stream 模块../configure –with-stream
编写 stream 配置(和http配置同级)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 stream { #stream模块与http模块处于同一级;stream模块编译后需要手动添加;这两个模块可以共存。 upstream remote01{ server 192.168.110.101:22; #内网服务器101,端口为sshd默认的22 } upstream remote02{ server 192.168.110.102:22; #内网服务器102,端口为sshd默认的22 } server { listen 2201; #监听代理主机的2201端口,通过该端口映射到内网的22端口 proxy_connect_timeout 1h; proxy_timeout 1h; proxy_pass remote01; #转向内网服务器101 } server { listen 2202; ##监听代理主机的2202端口,通过该端口映射到内网的22端口 proxy_connect_timeout 1h; proxy_timeout 1h; proxy_pass remote02; ##转向内网服务器102 } } 注意1:server里面不能够使用location这种语句,否则报错;语法虽与http模块类似,但是有区别的。 注意2:如果与代理主机绑定多个二级域名,在server虚拟机中不可以具体指向二级域名,只需要指明需要监听的代理主机的端口即可,比如上述中的server主机如下设置的话,连接会失败。 server { listen ns01.testing.com:2201; #ns01.testing.com为绑定代理主机的二级域名,通过该域名对应访问内网服务器 ...... proxy_pass remote01; } server { listen ns02.testing.com:2202; ##ns02.testing.com为绑定代理主机的二级域名,通过该域名对应访问内网服务器 ...... proxy_pass remote02; }
启动或重新加载nginx即可.
9.11 平滑升级 在不中断服务和服务的请求的同时, 进行nginx二进制可执行文件的升级
10. MinIO 10.1. 安装
下载二进制源码包 wget https://dl.min.io/server/minio/release/linux-ppc64le/minio
赋予文件可执行权限 chmod +x minio
移动文件 mv minio /usr/local/
创建minio数据文件存放目录 mkdir -p /home/minio/data
10.2 服务命令
启动minio /usr/local/minio server /home/minio/data/
后台运行 nohup /usr/local/minio server /home/minio/data > /home/minio/data/minio.log 2>&1 &
指定ip:port nohup /usr/local/minio server --address your_ip:8999 /home/minio/data > /home/minio/data/minio.log 2>&1 &
11. 自定义启动脚本
在 /etc/rc.d/rc.local 中添加想要执行的命令(脚本)
给对应文件赋予可执行权限 chmod +x /etc/rc.d/rc.local
注意: /etc/rc.local 是 /etc/rc.d/rc.local 的软链接
12. yasm编辑环境安装 前提:系统中需要有gcc环境
如果没有,可使用 yum install -y gcc gcc-c++进行安装
下载二进制源码包
1 curl http:// www.tortall.net/projects/y asm/releases/y asm-1.2 .0 .tar.gz >yasm.tar.gz
解压文件tar xzvf yasm.tar.gz
进入到目录cd yasm-1.2.0
编译./configure
安装make && make install
13. Redis 简介: 一个基于内存实现的用C语言编写的内存型k-v键值对数据库
13.1 安装 使用源码编译方式安装:
下载 下载地址: https://redis.io/download/#redis-downloads
1.1 本地下载后,使用FTP上传到服务器中; 1.2 使用wget命令下载
找到所需要的版本后,右键下载超链后,选择复制链接
1 2 3 4 5 6 7 8 wget -O /另存为目标路径/另存为文件名 下载地址 或cd 下载保存路径 wget 下载地址
编译安装 使用tar命令解压下载的文件
1 tar -zxf redis-6.0.16.tar.gz
解压文件后,使用 cd指令进入到 redis 源码路径中
编译所需环境安装
1 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
使用make编译安装
启动服务文件位置在 安装路径(redis源码文件解压路径下的 src 下)
使用 rpm包文件安装方式:
13.2 常用配置 13.2.1 设置Redis密码
13.2.2 配置外网可见 修改配置文件: vi /etc/redis/6379.conf
13.2.3 Docker容器启动redis 1 docker run -di --name=myredis -p6379:6379 --restart=always -d redis --requirepass "wocoanima"
14. Maven环境安装 14.1 下载Maven
使用wget从官网下载maven编译后的包
1 wget https://dlcdn.apache.org/maven/maven-3/3.8.3/binaries/apache-maven-3.8.3-bin.tar.gz
解压文件
1 tar -zxf apache-maven-3.8.3-bin.tar.gz
移动至/usr/local下
1 mv ./apache-maven-3.8.3 /usr/local
14.2 配置环境变量
修改环境变量配置文件 /etc/profile
在环境变量配置文件末尾添加配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 MAVEN_HOME=/usr/local/apache-maven-3.5.0export MAVEN_HOMEexport PATH=${PATH} :${MAVEN_HOME} /bin <mirrors> <mirror> <id >alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> 或 <mirror> <id >alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/repositories/central/</url> </mirror> <mirror> <id >huaweicloud</id> <mirrorOf>*</mirrorOf> <url>https://mirrors.huaweicloud.com/repository/maven/</url> </mirror> <profile> <id >jdk18</id> <activation> <activeByDefault>true </activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source >11</source> <target>11</target> </configuration> </plugin> </plugins> </build>
15. Apache apollo –> mqtt(物联网消息队列) 部署
16. RabbitMq 16.1 rabbitMq和Erlang的对应关系 1 https:// www.rabbitmq.com/which-erlang.html
16.2 依赖Erlang
1 curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
16.3 安装RabbitMq
1 2 rpm --import https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey rpm --import https://packagecloud.io/gpg.key
1 curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
1 wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.5/rabbitmq-server-3.8.5-1.el7.noarch.rpm
1 rpm -ivh rabbitmq-server-3.8.5-1.el7.noarch.rpm
16.4 RabbitMQ服务启动 1 2 3 4 5 6 7 8 9 10 11 12 13 14 systemctl start rabbitmq-server systemctl enable rabbitmq-server systemctl stop rabbitmq-server systemctl restart rabbitmq-server systemctl disable rabbitmq-server
16.5 RabbitMQ账户配置及web管理页面开启 1、删除guest默认账号(可选配置)
1 rabbitmqctl delete_user guest
2、添加账号
1 rabbitmqctl add_user 用户名 密码
3、修改账号权限为Administrator
1 rabbitmqctl set_user_tags 用户名 administrator
4、赋予账号资源权限
1 rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"
5、启动管理web页面
1 rabbitmq-plugins enable rabbitmq_management
管理web访问地址 : http://{ip}:15672
17. crontab 定时任务 执行一些特殊需求的任务时, 需要用到CentOS自带得定时任务
crontab的cron表达式中, 不包含秒的字段.
17.1 方式一
修改定时任务配置文件 /etc/crontab 文件
语法: cron表达式 command
编辑完成, 保存退出. 执行:
1 /sbin/service crond reload
17.2 方式二
使用命令添加任务清单列表crontab -e
添加定时任务配置 语法: cron表达式 command
编辑完成, 保存退出. 执行
1 /sbin/service crond reload
17.3 常用命令 1 2 3 4 5 6 7 /sbin/service crond reload --> 重新加载定时任务配置文件 /sbin/service crond start --> 启动定时任务组件 /sbin/service crond restart --> 重启定时任务组件 /sbin/service crond stop --> 停止定时任务组件 crontab -e --> 快速添加定时任务 crontab -r --> 停止已配置的定时任务 crontab -l --> 查看当前已经配置(加载)的定时任务配置
18. Shell 18.1 规范
shell脚本首行以 #! /bin/bash 开头
shell脚本后缀符号以 .sh 结尾
18.2 变量定义
语法 变量名=值 例如: number=100
变量同样具有命名规范, 和java C 等编程语言类似(不要用奇奇怪怪的名字来命名)
18.3 if 1 2 3 4 5 6 7 if [ 条件表达式 ] then command1 command2 ... commandN fi
18.4 if-else 1 2 3 4 5 6 7 8 9 if [ 条件表达式 ] then command1 command2 ... commandN else command fi
18.5 if-else if -else 1 2 3 4 5 6 7 8 9 10 11 if [ 条件表达式 ] then command1 command2 ... commandN elif [ 条件表达式 ] command else command fi
18.6 数组 1 2 3 4 5 6 7 1. 声明数组 arr_name=(value1 value2 value3 ...) 2. 取数组长度 ${#arr_name[@]} ${#arr_name[*]} 3. 取数组元素 ${arr_name[index]}
18.7 while 1 2 3 4 5 6 7 8 9 10 11 12 while ( 条件表达式 ) do command done# 循环遍历数组 arr=(a b c d e f g) index=0 while ( $index < ${#arr[@]} ) do echo ${arr[${index}]} let "index++" done
18.8 for 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 for [item] in [容器] do command done # 循环一个数组 for item in This is a demo do echo $item done --------- 输出结果 This is a demo # 循环一个数组 arr=(a b c d e f g) for item in ${arr[@]} do echo $item done
18.9 携带参数 在sh脚本执行时, 在后面携带参数 ./xxx.sh start 其中 start 就是携带的参数
在shell中 获取参数方式按照顺序 从0开始 0表示脚本本身 实际获取参数从1开始
语法:$[位置]
1 2 3 4 5 6 7 8 9 10 11 # 获取输入的参数 input=$1 if [ -z $input ] then echo '入参为空' else echo '入参为'$input'' fi ------------- ./xxx.sh start 入参为start
19. 更新内核
查看方法cat /etc/redhat-release
内核版本uname -r
19.1 更新内核
更新yum仓库为EL仓库
1 2 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
查看可供更新的版本
1 yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
选择指定版本
1 yum --enablerepo=elrepo-kernel install kernel-lt
查看系统中已经安装的内核版本
1 yum --enablerepo=elrepo-kernel install kernel-lt
修改默认版本
1 grub2-set-default [上面3步骤中查询出来的你要更换的内核版本的序号]
修改配置文件
1 2 vim /etc/default/grub 设置 GRUB_DEFAULT=0
生成配置文件
1 grub2-mkconfig -o /boot/grub2/grub.cfg
重启
19.2 卸载旧版本
查看已经安装的内核
卸载所有3版本
1 yum -y remove kernel-tools-3.10.0-862.el7.x86_64 kernel-tools-libs-3.10.0-862.el7.x86_64 kernel-3.10.0-1062.7.1.el7.x86_64 kernel-headers-3.10.0-1062.7.1.el7.x86_64 kernel-3.10.0-862.el7.x86_64
此时查看内核:
1 awk -F\' ' $1 =="menuentry " {print i++ " : " $2 }' /etc/grub2.cfg
19.3 一键脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 # !/bin/bash # # 导入系统变量 # . /etc/init.d/functions source /etc/profile# # 服务变量定义 # # 线条 LINE='---------------------------------------------------------------------------------------'# 进程用户 USER_PROCESS='root'# # 颜色输出函数 # function FUNC_COLOR_TEXT() { echo -e " \e[0;$2m$1\e[0m" } function FUNC_ECHO_RED() { echo $(FUNC_COLOR_TEXT "$1" "31") } function FUNC_ECHO_GREEN() { echo $(FUNC_COLOR_TEXT "$1" "32") } function FUNC_ECHO_YELLOW() { echo $(FUNC_COLOR_TEXT "$1" "33") } function FUNC_ECHO_BLUE() { echo $(FUNC_COLOR_TEXT "$1" "34") }# # 颜色通知输出函数 # # 通知信息 function FUNC_ECHO_INFO() { echo $(FUNC_COLOR_TEXT "${LINE}" "33") echo $(FUNC_COLOR_TEXT "$1" "33") echo $(FUNC_COLOR_TEXT "${LINE}" "33") }# 完成信息 function FUNC_ECHO_SUCCESS() { echo $(FUNC_COLOR_TEXT "${LINE}" "32") echo $(FUNC_COLOR_TEXT "$1" "32") echo $(FUNC_COLOR_TEXT "${LINE}" "32") }# 错误信息 function FUNC_ECHO_ERROR() { echo $(FUNC_COLOR_TEXT "${LINE}" "31") echo $(FUNC_COLOR_TEXT "$1" "31") echo $(FUNC_COLOR_TEXT "${LINE}" "31") }# # 系统版本检测函数 # function FUNC_SYSTEM_CHECK() { VAR_SYSTEM_FLAG=$(/usr/bin/cat /etc/redhat-release | grep 'CentOS' | grep '7' | wc -l) if [[ ${VAR_SYSTEM_FLAG} -ne 1 ]];then FUNC_ECHO_ERROR '本脚本基于 [ CentOS 7 ] 编写,目前暂不支持其他版本系统!' exit 1001 fi }# # 用户检测函数 # function FUNC_USER_CHECK() { VAR_USER=$(/usr/bin/whoami) if [[ ${VAR_USER} != 'root' ]];then FUNC_ECHO_ERROR '脚本目前只支持 [ root ] 用户执行,请先切换用户...' exit 1002 fi }# # 服务器联网函数 # function FUNC_NETWORK_CHECK() { VAR_PING_NUM=$(/usr/bin/ping -c 3 www.baidu.com | grep 'icmp_seq' | wc -l) if [[ ${VAR_PING_NUM} -eq 0 ]];then FUNC_ECHO_ERROR '网络连接失败,请先配置好网络连接...' exit 1003 fi }# # 打印系统信息 # function FUNC_PRINT_SYSTEM_INFO() { # 获取系统信息 SYSTEM_DATE=$(/usr/bin/date) SYSTEM_VERSION=$(/usr/bin/cat /etc/redhat-release) SYSTEM_CPU=$(/usr/bin/cat /proc/cpuinfo | grep 'model name' | head -1 | awk -F: '{print $2}' | sed 's#^[ \t]*##g') SYSTEM_CPU_NUMS=$(/usr/bin/cat /proc/cpuinfo | grep 'model name' | wc -l) SYSTEM_KERNEL=$(/usr/bin/uname -a | awk '{print $3}') SYSTEM_IPADDR=$(/usr/sbin/ip addr | grep inet | grep -vE 'inet6|127.0.0.1' | awk '{print $2}') # 打印系统信息 FUNC_ECHO_YELLOW ${LINE} echo "服务器的信息: ${SYSTEM_IPADDR}" FUNC_ECHO_YELLOW ${LINE} echo "操作系统版本: ${SYSTEM_VERSION}" echo "系统内核版本: ${SYSTEM_KERNEL}" echo "处理器的型号: ${SYSTEM_CPU}" echo "处理器的核数: ${SYSTEM_CPU_NUMS}" echo "系统当前时间: ${SYSTEM_DATE}" FUNC_ECHO_YELLOW ${LINE} }# # 升级内核 # function FUNC_UPDATE_KERNEL() { # 安装 EL 源 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm if [[ $? -ne 0 ]];then FUNC_ECHO_ERROR "EL 源安装失败,请检查是否存在问题!" exit 1004 fi # 查看可提供升级的版本 yum --disablerepo="*" --enablerepo="elrepo-kernel" list available VAR_KERNEL_NAME="kernel-lt" read -p "请输入上面列出的版本中你想安装的版本(默认 lt 版本) [lt/ml]: " VAR_VERSION_CHOICE if [[ ${VAR_VERSION_CHOICE} == "ml" ]];then VAR_KERNEL_NAME="kernel-ml" fi FUNC_ECHO_INFO "本次选择升级的版本为:${VAR_KERNEL_NAME}" # 升级内核 yum --enablerepo=elrepo-kernel install ${VAR_KERNEL_NAME} if [[ $? -ne 0 ]];then FUNC_ECHO_ERROR "内核升级失败,请根据报错检查是否存在问题!" exit 1005 fi # 查看目前版本 FUNC_ECHO_INFO "系统当前所安装的内核版本如下:" awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg # 选择默认内核版本 VAR_NUM_CHOICE=0 read -p "请输入上面列出的版本序号选择系统最终默认版本(默认 0): " VAR_NUM_CHOICE if [[ $(echo ${VAR_NUM_CHOICE} | sed 's/[0-9]//g') == '' ]];then if [[ ${VAR_NUM_CHOICE} == "" ]];then VAR_NUM_CHOICE=0 fi else FUNC_ECHO_INFO "输入有误,将以默认配置执行..." VAR_NUM_CHOICE=0 fi # 配置系统默认 grub2-set-default ${VAR_NUM_CHOICE} sed -i "s#^GRUB_DEFAULT=.*#GRUB_DEFAULT=${VAR_NUM_CHOICE}#g" /etc/default/grub if [[ $? -ne 0 ]];then FUNC_ECHO_ERROR "默认内核配置失败,可以手动配置/etc/default/grub文件中:GRUB_DEFAULT参数为指定内核索引!" fi }# # 卸载旧版本内核 # function FUNC_UNINSTALL_KERNEL() { # 显示内核版本 FUNC_ECHO_INFO "系统当前所安装的内核版本如下:" rpm -qa | grep kernel # 提示卸载 FUNC_ECHO_INFO "你可以手动卸载旧版本:yum -y remove 包名字,然后重启使用:uname -r 查看升级结果" }# # 安装程序开始 # # 系统检查 FUNC_SYSTEM_CHECK# 用户检查 FUNC_USER_CHECK# 联网检测 FUNC_NETWORK_CHECK# 打印系统信息 FUNC_PRINT_SYSTEM_INFO read -p "是否继续安装升级(默认 y) [y/n]: " VAR_CHOICE case ${VAR_CHOICE} in [yY][eE][sS]|[yY]) FUNC_UPDATE_KERNEL FUNC_UNINSTALL_KERNEL ;; [nN][oO]|[nN]) FUNC_ECHO_YELLOW "安装升级即将终止..." exit ;; *) FUNC_UPDATE_KERNEL FUNC_UNINSTALL_KERNEL esac
20. 安装MySQL(8.0.27) 使用源的方式安装后的mysql, 默认开机自启
端口号3306 [可以在配置文件中进行修改]
配置文件路径: [/etc/my.cnf]
20.1 安装MySQL 8
配置MySQL 8 安装源
1 sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
安装MySQL 8
1 sudo yum --enablerepo=mysql80-community install mysql-community-server
提示下载插件是输入 yes或者y [一路yes到底]
看到complet(完毕)就是安装完啦
启动MySQL
1 sudo service mysqld start
查看MySQL运行状态
查看root临时密码
安装完mysql之后, 会有一个默认的临时密码让root账号登陆
1 grep "A temporary password" /var/log/mysqld.log
更改临时密码
1 2 3 4 5 6 7 8 9 输入:mysql -uroot -p 或者: mysql -uroot -p'密码' 登录成功 输入:ALTER USER 'root' @'localhost' IDENTIFIED BY '新密码' ; 会提示:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements(密码不符合当前策略) 设置符合策略的密码(大小写字母+数据+符号) 比如:ALTER USER 'root' @'localhost' IDENTIFIED BY 'ROOTmm123456*' ; ALTER USER 'root' @'localhost' IDENTIFIED WITH mysql_native_password BY 'ROOTmm123456*' ; root@localhost:是本地连接
创建用户设置远程访问,root@%是远程连接
1 2 3 4 5 6 mysql> grant all privileges on *.* to root@"localhost" identified by "密码" ; mysql> UPDATE user SET host = '%' WHERE user ='root; # mysql 8.0 mysql> flush privileges; # 刷新MySQL的系统权限相关表
mysql基本操作指令
1 2 3 4 5 6 7 8 service mysqld start / systemctl start mysqld service mysqld stop / systemctl stop mysqld service mysqld restart / systemctl restart mysqld service mysqld status / systemctl status mysqld
20.2 卸载MySQL 8
查看是否有安装过MySQL
删除MySQL
1 2 3 yum -y remove MySQL-* 或者 yum -y remove mysql80-*
一般用rpm -e 的命令删除mysql,这样表面上删除了mysql,可是mysql的一些残余程序仍然存在,并且通过第一步的方式也查找不到残余,而yum命令比较强大,可以完全删除mysql.(ps:用rpm删除后再次安装的时候会提示已经安装了,这就是rpm没删除干净的原因)
把所有出现的目录都删除
删除配置文件
删除MySQL的默认密码
1 2 rm -rf /root/.mysql_sercret# 删除mysql的默认密码, 如果不删除, 以后安装mysql这个sercret中的默认密码就不会改变, 使用其中的默认密码可能会错线一些密码错误的问题.
20.3 修改密码策略
查看MySQL密码策略
1 SHOW VARIABLES LIKE 'validate_password.%' ;
策略说明
1 2 3 4 5 6 validate_password.length 是密码的最小长度,默认是8,我们把它改成6 输入:set global validate_ password.length=6; validate_password.policy 验证密码的复杂程度,我们把它改成0 输入:set global validate_ password.policy=0; validate_password.check_ user_name 用户名检查,用户名和密码不能相同,我们也把它关掉 输入:set global validate_ password.check_user_ name=off;
20.4 添加用户
创建用户
1 create user 'saotolls' @'%' identified by 'Saotolls%Inc@Nb' ;
修改用户加密规则
1 ALTER USER 'saotolls' @'%' IDENTIFIED WITH mysql_native_password BY 'Saotolls%Inc@Nb' ;
刷新
查看是否修改成功
1 select host, user , authentication_string, plugin from user ;
赋予权限配置远程访问
1 grant all privileges on * .* to 'saotolls' @'%' ;
重启mysql服务
1 serivce mysqld start/stop
20.5 删除用户 1 DROP USER 'saotolls' @'%' ;
20.6 MySQL配置文件详解 [来源腾讯云文档库] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 [client] port = 3309 socket = /usr/local/mysql/tmp/mysql.sock [mysqld] #服务器端配置 port = 3306 #监听端口 bind-address = 0.0.0.0 #监听的ip地址 server-id = 1 #MySQL服务的ID socket = /usr/local/mysql/tmp/mysql.sock #socket通信设置 pid-file = /usr/local/mysql/var/mysql.pid #pid文件路径 basedir = /usr/local/mysql/ #MySQL程序路径 datadir = /usr/local/mysql/data #数据目录 tmpdir = /usr/local/mysql/tmp/ slave-load-tmpdir = /usr/local/mysql/tmp/ #当slave执行load data infile时使用 skip-name-resolve skip-symbolic-links skip-external-locking skip-slave-start skip-networking sysdate-is-now = 1 back_log = 50 max_connections = 1000 max_connect_errors = 10000 open_files_limit = 10240 connect-timeout = 10 wait-timeout = 28800 interactive-timeout = 28800 slave-net-timeout = 600 net_read_timeout = 30 net_write_timeout = 60 net_retry_count = 10 net_buffer_length = 16384 max_allowed_packet = 64M 服务器收到大于 max_allowed_packet 字节的信息包时,将发出“信息包过大”错误,并关闭连接。对于某些客户端,如果通信信息包过大,在执行查询期间,可能会遇到“丢失与 MySQL 服务器的连接”错误。默认值 16M。 table_cache = 512 thread_stack = 192K thread_cache_size = 20 这不会有明显的性能提升.)服务器线程缓存这个值表示可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,那么这个线程将被重新创建, 如果有很多新的线程,增加这个值可以改善系统性能.通过比较 Connections 和 Threads_created 状态的变量,可以看到这个变量的作用 根据物理内存设置规则如下: 1G —> 8 2G —> 16 3G —> 32 大于3G —> 64 thread_concurrency = 8 对 mysql 的性能影响很大, 在多个 cpu(或多核)的情况下,错误设置了 thread_concurrency 的值, 会导致 mysql 不能充分利用多 cpu(或多核),出现同一时刻只能一个 cpu(或核)在工作的情况。 thread_concurrency 应设为 CPU 核数的 2 倍.比如有一个双核的 CPU, 那么 thread_concurrency 的应该为 4; 2 个双核的 cpu,thread_concurrency 的值应为 8,属重点优化参数 query_cache_limit = 2M query_cache_min_res_unit = 2K 查询缓存碎片率 = Qcache_free_blocks / Qcache_total_blocks * 100% 如果查询缓存碎片率超过 20%,可以用 FLUSH QUERY CACHE 整理缓存碎片,或者试试减小query_cache_min_res_unit,如果你的查询都是小数据量的话。 查询缓存利用率 = (query_cache_size – Qcache_free_memory) / query_cache_size *100% 查询缓存利用率在 25%以下的话说明 query_cache_size 设置的过大,可适当减小;查询缓存利用率在 80%以上而且 Qcache_lowmem_prunes > 50 的话说明 query_cache_size 可能有点小,要不就是碎片太多。 查询缓存命中率 = (Qcache_hits – Qcache_inserts) / Qcache_hits * 100% query_cache_size = 64M 代码 :> SHOW VARIABLES LIKE '%query_cache%'; > SHOW STATUS LIKE 'Qcache%';如果 Qcache_lowmem_prunes 的值非常大,则表明经常出现缓冲不够的情况; 如果 Qcache_hits 的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲; Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多。 memlock # 如果你的系统支持 memlock() 函数,你也许希望打开此选项用以让运行中的 mysql 在在内存高度 紧张的时候,数据在内存中保持锁定并且防止可能被 swapping out,此选项对于性能有益 default_table_type = InnoDB default-time-zone = system character-set-server = utf8 default-storage-engine = InnoDB tmp_table_size = 512M max_heap_table_size = 512M log-bin = mysql-bin log_slave_updates = 1 log-bin-index = mysql-bin.index relay-log = relay-log relay_log_index = relay-log.index log-warnings = 1 log-error = /usr/local/mysql/log/mysql.err log_output = FILE log_slow_queries slow_query_log = 1 long-query-time = 1 log_long_format slow_query_log_file = /usr/local/mysql/log/slow.log log-queries-not-using-indexes min_examined_row_limit =1000 long-slow-admin-statements log-slow-slave-statements general_log = 1 general_log_file = /usr/local/mysql/log/mysql.log max_binlog_size = 1G max_relay_log_size = 1G relay-log-purge = 1 expire_logs_days = 30 binlog_cache_size = 1M replicate-wild-ignore-table = mysql.% slave_skip_errors =all slave_skip_errors选项有四个可用值,分别为:off,all,ErorCode,ddl_exist_errors。 默认情况下该参数值是off,我们可以列出具体的error code,也可以选择all,mysql5.6及MySQL Cluster NDB 7.3以及后续版本增加了参数ddl_exist_errors,该参数包含一系列error code(1007,1008,1050,1051,1054,1060,1061,1068,1094,1146) 一些error code代表的错误如下: 1007:数据库已存在,创建数据库失败 1008:数据库不存在,删除数据库失败 1050:数据表已存在,创建数据表失败 1051:数据表不存在,删除数据表失败 1054:字段不存在,或程序文件跟数据库有冲突 1060:字段重复,导致无法插入 1061:重复键名 1068:定义了多个主键 1094:位置线程ID 1146:数据表缺失,请恢复数据库 1053:复制过程中主服务器宕机 1062:主键冲突 Duplicate entry '%s' for key %d key_buffer_size = 256M sort_buffer_size = 2M read_buffer_size = 2M join_buffer_size = 8M read_rnd_buffer_size = 8M bulk_insert_buffer_size = 64M myisam_sort_buffer_size = 64M myisam_max_sort_file_size = 10G myisam_repair_threads = 1 myisam_recover = 64K transaction_isolation = REPEATABLE-READ # 设定默认的事务隔离级别.可用的级别如下:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ,SERIALIZABLE 1.READ UNCOMMITTED-读未提交 2.READ COMMITTE-读已提交 3.REPEATABLE READ -可重复读 4.SERIALIZABLE -串行 skip-innodb innodb_file_per_table = 1 独立表空间优点: 1.每个表都有自已独立的表空间。 2.每个表的数据和索引都会存在自已的表空间中。 3.可以实现单表在不同的数据库中移动。 4.空间可以回收(除drop table操作处,表空不能自已回收) 缺点: 1.单表增加过大,如超过100G 结论: 共享表空间在Insert操作上少有优势。其它都没独立表空间表现好。当启用独立表空间时,请合理调整:innodb_open_files innodb_status_file = 1 innodb_open_files = 2048 innodb_additional_mem_pool_size = 100M innodb_buffer_pool_size = 2G innodb_write_io_threads = 4 innodb_read_io_threads = 4 innodb_data_home_dir = /usr/local/mysql/var/ innodb_data_file_path = ibdata1:500M;ibdata2:2210M:autoextend innodb_file_io_threads = 4 innodb_thread_concurrency = 16 innodb_flush_log_at_trx_commit = 1 0 代表日志只大约每秒写入日志文件并且日志文件刷新到磁盘. 2 代表日志写入日志文件在每次提交后,但是日志文件只有大约每秒才会刷新到磁盘上. innodb_log_buffer_size = 8M innodb_log_file_size = 500M innodb_log_files_in_group = 2 innodb_log_group_home_dir = /usr/local/mysql/var/ innodb_lock_wait_timeout = 50 innodb_flush_method = O_DSYNC innodb_force_recovery =1 innodb_fast_shutdown [mysqldump] quick [mysql] auto-rehash default-character-set = utf8 connect-timeout = 3 [mysqld_safe] open-files-limit = 8192
21. RabbitMQ 21.1 前置条件
需要系统中存在 Erlang 的环境。
如果使用笔记中的远程在线方式下载,则还需要系统中存在 wget组件来用于远程http下载。
1 2 3 4 5 6 7 8 9 10 yum update -y yum install wget -y wget --content-disposition https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-23.3.4.11-1.el7.x86_64.rpm/download.rpm rpm -ivh erlang-23.3.4.11-1.el7.x86_64.rpm
21.2 RPM方式安装
从RabbitMQ官方网站下载 rpm安装包管理文件;
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.10.0-rc.6/rabbitmq-server-3.10.0.rc.6-1.el7.noarch.rpm
1 2 3 4 5 6 7 8 9 10 11 rpm -ivh rabbitmq-server-3.10.0.rc.6-1.el7.noarch.rpm 1. 启动服务 systemctl start rabbitmq-server 2. 停止服务 systemctl stop rabbitmq-server 3. 重启服务 systemctl restart rabbitmq-server 4. 加入开机自启 systemctl enable rabbitmq-server 5. 移除开机自启 systemctl disable rabbitmq-server
21.3 二进制编译方式安装 二进制源文件手动编译安装,需要系统有gcc编译环境
1 2 3 4 5 6 7 8 9 10 11 12 1. 下载二进制源文件 wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.10.1/rabbitmq-server-generic-unix-3.10.1.tar.xz 2. 解压文件 tar vf rabbitmq-server-generic-unix-3.10.1.tar.xz 3. 进入到文件 cd rabbitmq-server-generic-unix-3.10.1 4. 创建保存文件文件目录 mkdir -p /usr/local/rabbitmq 5. 编译 ./configura --perfix=/usr/local/rabbitmq make && make install 6. 使用 ln -s [源文件绝对地址] /usr/bin/[文件名] 创建文件的软链接
21.4 Docker镜像方式安装 使用Docker镜像方式部署安装,需要系统中存在Docker环境,并且能够正常运行。
因为在Docker方式部署时,笔记中采用联网方式远程下载包安装使用,所以在部署过程中请保证网络通畅。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 docker pull rabbitmq:3.10-management docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.10-management 1. 使用Docker容器时,请务必保证Docker服务正常启动并运行正常; 2. 保证操作资源的服务器系统网络正常; 3. 如若使用上述指令的默认端口映射参数,则需要确定且保证对应服务的端口为被占用,否则容器将启动失败; 5672:mq服务端口号映射 15672:mq服务web管理界面服务端口好映射 4. 如果要配置在docker服务启动后,让此mq容器自动跟随docker服务的启动而启动。 4.1 如果此时的容器已存在,则修改指定容器的参数: docker update [容器名] --restart=always 4.2 如果此时的容器还未创建,则在启动指令后添加: --restart=always 5. web页面默认账号密码都是:guest,并且账户支持远程ip地址访问登陆。 6. 如若mq是采用rpm包或者二进制源码编译安装,则默认账户guest只支持在本机下访问。在远程ip处访问,需要使用指令创建账户信息以及分配指定需要的权限信息。
21.5 配置文件的简单修改 如若使用的是Docker部署安装的方式,则需要将在主机上修改后的配置文件内容通过docker的文件映射功能,映射到容器服务中,才能被容器中的服务读取生效。
21.5 指令创建新用户以及权限分配