@Mr-13
2020-10-26T10:44:20.000000Z
字数 9570
阅读 458
工作手机
SELinux的永久关闭,必须通过修改器配置文件并重启才可以;在线上部署时,我们可以先通过命令临时关闭SELinux,完成其他配置后一起重启完成关闭配置;
1、临时管理SELinux
# 执行 1:[root@mr13 ~]# setenforce 0# 打印:setenforce: SELinux is disabled[root@mr13 ~]#
2、修改SELinux配置文件
# 执行 2:[root@mr13 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
说明:
1、SElinux配置文件位置:/etc/selinux/config
2、sed命令:可依照脚本的指令来处理、编辑文本文件。
3、sed -i:直接修改读取的文件内容,而不是输出到终端(在屏幕打印输出)
4、sed -i 's/AAAA/BBBB/g':逐行查找,每行中所有的AAAA全部替换成BBBB
3、重启服务器,检查SElinux状态(可最后再重启检查)
彻底关闭FireWall不需要修改配置参数;按如下命令即可:
1、停止firewall服务
# 停止firewall服务[root@mr13 ~]# systemctl stop firewalld.service[root@mr13 ~]#
2、禁止firewall开机启动
# 禁止firewall开机启动[root@mr13 ~]# systemctl disable firewalld.service[root@mr13 ~]#
执行上述命令不会有执行结果提示,我们需要确认操作是否有效
# 检查防Firewall运行状态[root@mr13 ~]# firewall-cmd --state# 检查开机启动项服务[root@mr13 ~]# systemctl list-unit-files | grep firewalld
出现如下图提示,说明执行成功;

WorkOS服务器,硬盘推荐配置为:40G(系统盘)+ 60(数据存储) ;在客户交付服务器之后一定要主要数据库存储的存放位置,千万不要默认全部安装到系统盘里面去了。
如果客户使用阿里云的ECS实例,存储盘默认状态时没有分区、挂载的。需要我们进行磁盘挂载。
如果客户交付的是实体机,一般情况下客户会挂载好硬盘;我们验收时,需要根据实际情况;设置软链。
以下以阿里云为例,编写文档。
在磁盘未挂载之前,使用 df -lh 是看不到磁盘信息的,需要使用 fdisk -l 查看磁盘信息
# root用户下操作[root@mr13 ~]# fdisk -l
可以看到两块磁盘信息:
系统盘:/dev/vda (42.9G);
数据盘:/dev/vdb (21.5G);我们需要对这块盘操作挂载。
一般我们每台服务器都是专服务专用,基本上不需要对新增磁盘进行分区的动作。这里仅作内容补充。
详情参见:CentOS7磁盘分区挂载
将未使用的磁盘进行格式化,操作数据盘符前,请自行确认磁盘是否有使用过,如有重要数据请谨慎操作,以免导致数据丢失,带来不必要的麻烦。格式挂过程需要等一会儿。
# root用户下操作# 我这里使用ext4格式,与系统盘保持一致[root@mr13 ~]# mkfs.ext4 /dev/vdb# 执行命令需要稍等一会儿执行完成
.
将格式化完的磁盘进行硬盘挂载,硬盘挂载前,先在服务器上创建一个需要挂载的挂载点。
WorkOS服务器数据盘主要是来存储redis、rabbitmq、后台服务(java服务)等应用数据文件。部署时,相应的数据文件都是放在 /data 目录下。/data 目录即为数据盘的挂载点。
# root用户下操作# 创建挂载点目录:/data[root@mr13 ~]# mkdir /data# 将磁盘vdb挂载到/data目录[root@mr13 ~]# mount /dev/vdb /data/# 如果需要卸载磁盘分区,使用命令umount /...即可;# 磁盘分许卸载后,还可以重新挂载,并且数据还会在的
挂载完成后,使用命令 df -lh 就可以看到磁盘分区信息了。
上述动作完成之后,还需要修改fstab的配置信息,让服务器重启时,自动完成磁盘挂载。
# root用户下操作# 查看磁盘UUID[root@mr13 ~]# blkid/dev/vda1: UUID="eb448abb-3012-4d8d-bcde-94434d586a31" TYPE="ext4"/dev/vdb: UUID="b2534a61-924f-457b-97e4-745e7d8e7a5e" TYPE="ext4"# 编辑fstab文件保存[root@mr13 ~]# vim /etc/fstab

至此,完成了对数据盘的挂载。
我们会将redis、rabbitmq等应用安装到 /data/ 目录下,因为数据盘已经挂载到 /data 目录;这样数据文件也就保存在数据盘上了。
如果客户交付的是实体机,已经做好数据盘的挂载;那么我们就需要创建软链 /data 链接至实际数据盘的目录,同时给软链目录修改授权。
# root用户下操作# 创建资源文件目录[root@mr13 ~]# mkdir -p /server/tools# 上传JDK安装包到资源文件目录下........[root@mr13 ~]# cd /server/tools/# 安装JDK[root@mr13 tools]# rpm -ivh jdk-8u212-linux-x64.rpm# 稍等即可完成安装
rpm 命令:
-i:安装软件包
-v:可视化,提供更多的详细信息的输出
-h:显示安装进度
.
# root用户下操作[root@mr13 ~]# yum install -y wget
.
下载 redis 安装包到 /server/tools 并编译安装
[root@mr13 ~]# cd /server/tools# 下载redis安装包[root@mr13 tools]# wget http://download.redis.io/releases/redis-4.0.10.tar.gz# 解压软件包# z : 表示 tar 包是被 gzip 压缩过的bai,所以解压时需要用 gunzip 解压# x :从 tar 包中把文件提取出来# f xxx.tar.gz : 指定被处理的文件是 xxx.tar.gz[root@mr13 tools]# tar zxf redis-4.0.10.tar.gz[root@mr13 tools]# cd redis-4.0.10# 编译安装redis# 编译过程需要等一会儿# 这里只有make,没有漏掉什么,不必有疑问[root@mr13 redis-4.0.10]# make
出现该提示,编译安装完成。
.
迁移redis执行文件、配置文件没别的意思;就是为了应用软件文件规范管理;以后维护起来方便。
# root用户下操作# 创建redis应用目录# -p 多级目录逐级创建# {*,*,*} 创建同级多个目录[root@mr13 ~]# mkdir -p /data/redis/{logs,conf,bin,dump,pid}# 拷贝 redis 的 conf文件到 conf 目录中[root@mr13 redis]# cd /server/tools/redis-4.0.10[root@mr13 redis-4.0.10]# cp redis.conf /data/redis/conf/# 拷贝 redis 的可执行文件到 bin 目录中[root@mr13 redis-4.0.10]# cd src/[root@mr13 src]# cp redis-cli redis-server /data/redis/bin
.
# root用户下操作[root@mr13 ~]# vim /data/redis/conf/redis.conf
配置节中修改项如下:
1) bind 0.0.0.0
仅允许本机访问修改为允许公网访问
2) daemonize yes
daemonize是用来指定redis是否要用守护线程的方式启动;默认值是NO。
daemonize : yes:redis采用的是单进程多线程的模式。当redis.conf中选项daemonize设置成yes时,代表开启守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。
daemonize : no:当daemonize选项设置成no时,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。
3) requirepass xxxxxxx(redis密码)
设置redis的访问密码
4) pidfile /data/redis/pid/redis.pid
当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定;
这里的配置和上面的 daemonize 紧密相关
注意我们配置的路径 /data/redis/pid/.... ; 应用文件合理存放的好处啊,易于管理!
5) logfile "/data/redis/logs/redis.log"
设置redis记录日志到指定日志文件;
这里需要注意,该配置节设置日志文件路径时,要加英文双引号
6) dir /data/redis/dump
dir配置节 设置数据目录,数据库的写入会在这个目录。rdb、aof文件也会写在这个目录;
dump英文在计算机名词一般指:备份
启动程序文件是 /data/redis/bin/redis-server;启动配置文件是 /data/redis/conf/redis.conf
# root用户下执行[root@mr13 ~]# /data/redis/bin/redis-server /data/redis/conf/redis.conf
执行命令后不会有任何提示,我们可以查看一下进程确认是否启动成功,如下图:
关闭Redis,按如下操作:
注意:
如果添加了密码的话,不要直接就shutdown了,会报错的,比如下面这样
[root@mr13 bin]# ./redis-cli shutdown(error) NOAUTH Authentication required.
正确的做法:
# root用户下操作# 假设redis密码是:myPassWord# 进入bin目录[root@mr13 ~]# cd /data/redis/bin/# 方式一:[root@mr13 bin]# ./redis-cli127.0.0.1:6379> auth myPassWordOK127.0.0.1:6379> shutdownnot connected># 方式二:(简单粗暴)[root@mr13 bin]# ./redis-cli -a "myPassWord" shutdownWarning: Using a password with '-a' option on the command line interface may not be safe.
编辑 /etc/rc.local 文件,在最后添加启动命令,并保存;如下图:

添加成功后 reboot 重启一下,ps -ef | grep redis 看一下redis进程是否已经运行;如果运行起来,说明redis自启动设置成功。
.
reboor 重启之后,如果发现redis进程没有运行;也就是Linux启动脚本/etc/rc.local文件没有被执行,可能是因为rc.loca文件没有可执行权限,按以下步骤解决这个问题。
1)、查看rc.local执行权限
# root用户下操作[root@mr13 ~]# ls -l /etc/rc.local

上图中,rc.local 文件是有可执行权限的;
同时,可以看到你 rc.local 文件是 /etc/rc.d/rc.local 的软链接
2)、查看 /etc/rc.d/rc.local 执行权限
# root用户下操作[root@mr13 etc]# ls -l /etc/rc.d/rc.local

上图中,可以看到 /etc/rc.d/rc.local 文件是没有执行权限的;就是这个原因导致的!!
3)、给 /etc/rc.d/rc.local 赋可执行权限
# root用户下操作[root@mr13 etc]# chmod +x /etc/rc.d/rc.local

如上图,完成赋权动作;可以看到文件已经有可执行权限,文件直接变成绿色的了。
4)、再次重启查看redis是否正常启动

Redis开机自动启动,rc.local脚本正常运行。
为了节省时间,提前将需要安装的软件包上传到服务器 /server/tools 下。
erlang: otp_src_22.0.tar.gz
RabbitMQ: rabbitmq-server-generic-unix-3.7.15.tar.xz
.
# root用户下操作# erlang依赖包[root@mr13 ~]# yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-devel[root@mr13 ~]# yum install -y unixODBC unixODBC-devel
.
# root用户下操作# 下载erlang安装包到/server/tools下# otp_src_20.1.tar.gz 文件下载速度很慢,建议从本地上传到服务器[root@mr13 ~]# cd /server/tools/[root@mr13 tools]# wget http://erlang.org/download/otp_src_22.0.tar.gz# 解压erlang包[root@mr13 tools]# tar -zxvf otp_src_22.0.tar.gz[root@mr13 tools]# cd otp_src_22.0# 配置erlang到安装路径[root@mr13 otp_src_22.0]# ./configure --prefix=/data/erlang# 编译安装erlang# 时间有点儿长,耐心等一下[root@mr13 otp_src_22.0]# make && make install
说明:
源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install),具体的安装方法一般作者都会给出文档,这里主要讨论配置(configure)。Configure是一个可执行脚本,它有很多选项,使用命令./configure –help输出详细的选项列表(这里不多赘述,可以自己试一下)
其中--prefix选项是配置安装的路径,如果不配置该选项,安装后:
可执行文件默认放在:/usr/local/bin;
库文件默认放在:/usr/local/lib;
配置文件默认放在:/usr/local/etc;
其它的资源文件放在:/usr/local/share;非常凌乱。
./configure --prefix=/指定路径;可以把所有资源文件放在指定的路径中,不会杂乱。
用了—prefix选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)。
当然要卸载程序,也可以在原来的make目录下用一次make uninstall,但前提是make文件指定过uninstall。

如上图,可以看到,在我们通过 --prefix 参数指定的目录 /data/erlang 中,软件安装文件都统一放在这里(其实是其他默认安装目录的软链接),很方便维护和管理;
.
# root用户下操作[root@mr13 ~]# echo "export PATH=$PATH:/data/erlang/bin/" >> /etc/profile[root@mr13 ~]# source /etc/profile# 环境变量添加完成之后,打印一下环境变量,看看是否添加成功[root@mr13 ~]# echo $PATH

环境变量添加成功之后,输入 erl 命令,测试一下erlang是否安装成功

如上图,安装成功,使用 halt(). 命令退出erlang环境;注意别忘了最后的“.”
.
# root用户下操作[root@mr13 ~]# cd /server/tools# 下载rabbitmq安装包# 安装包较小,下载很快,但一般还是建议部署之前,将所需要的安装包都提前本地上传,节约时间[root@mr13 tools]# wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.15/rabbitmq-server-generic-unix-3.7.15.tar.xz
由于是 tar.xz 格式的所以需要用到 xz,没有的话就先安装
[root@mr13 ~]# yum install -y xz
第一次解压:
[root@mr13 tools]# xz -d rabbitmq-server-generic-unix-3.7.15.tar.xz
第二次解压:
[root@mr13 tools]# tar -xvf rabbitmq-server-generic-unix-3.7.15.tar
将解压后的文件夹移动(剪切)到软件统一安装目录 /data/
[root@mr13 tools]# mv rabbitmq_server-3.7.15 /data/
将文件夹重命名为 rabbitmq
[root@mr13 tools]# cd /data/[root@mr13 data]# mv rabbitmq_server-3.7.15 rabbitmq
.
# 添加环境变量配[root@mr13 ~]# echo 'export PATH=$PATH:/data/rabbitmq/sbin' >> /etc/profile[root@mr13 ~]# echo 'export RABBITMQ_HOME=/data/rabbitmq' >> /etc/profile# 运行配置文件,刷新环境变量[root@mr13 ~]# source /etc/profile
打印一下环境变量,已经配置生效,如下图:
安装完成后,执行以下命令。
# 启动服务[root@mr13 ~]# rabbitmq-server -detached# 启动web管理页面插件[root@mr13 ~]# rabbitmq-plugins enable rabbitmq_management# 创一个管理用户账号[root@mr13 ~]# rabbitmqctl add_user 用户名 密码# 为管理用户授权(最高权限)[root@mr13 ~]# rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"# 为管理用户设置角色tag:administrator[root@mr13 ~]# rabbitmqctl set_user_tags 用户名 administrator# 安全起见,删除默认用户[root@mr13 ~]# rabbitmqctl delete_user guest
访问 http://127.0.0.1:15672(地址填写实际IP)web管理页面

.
# 启动服务$ rabbitmq-server -detached# 停止服务$ rabbitmqctl stop# 查看服务状态$ rabbitmqctl status# 开启rabbitmq$ rabbitmqctl start_app# 关闭rabbitmq$ rabbitmqctl stop_app# 开启rabbitmq的web管理页面插件$ rabbitmq-plugins enable rabbitmq_management
访问RabbitMQ的可视化管理界面:http://ipaddress:15672
默认的 guest / guest 账号只允许本机访问,公网访问会被拒绝。
# 停用插件$ rabbitmq-plugins disable xxxxx# 查看插件列表$ rabbitmq-plugins list# E:显示启用# e:隐式启用# *:运行中

# 添加一个用户$ rabbitmqctl add_user 用户名 密码# 修改用户密码$ rabbitmqctl change_password Username Newpassword# 查看所有用户$ rabbitmqctl list_users

# 删除用户# 安全起见,删除默认用户$ rabbitmqctl delete_user guest# 设置用户tag(角色)$ rabbitmqctl set_user_tags 用户名 tag
user 有5种 tags :
management:访问 management plugin;
policymaker:访问 management plugin 和管理自己 vhosts 的策略和参数;
monitoring:访问 management plugin 和查看所有配置和通道以及节点信息;
administrator:一切权限;
None:无配置具体细节自行查阅,这里不做赘述


# 配置用户权限# conf: 正则匹配哪些资源能被该用户访问# write:正则匹配哪些资源能被该用户写入# read:正则匹配哪些资源能被该用户读取$ rabbitmqctl set_permissions [-p vhostpath] username conf write read# 示例:# 为用户weixin授权,具有对所有vhosts所有资源的:配置、写、读权限$ rabbitmqctl set_permissions -p / weixin ".*" ".*" ".*"# 查看某个用户权限(示例:列出用户名为weixin的)$ rabbitmqctl list_user_permissions weixin# 列出所有用户权限$ rabbitmqctl list_permissions
