@Mr-13
2020-10-26T10:44:20.000000Z
字数 9570
阅读 445
工作手机
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-cli
127.0.0.1:6379> auth myPassWord
OK
127.0.0.1:6379> shutdown
not connected>
# 方式二:(简单粗暴)
[root@mr13 bin]# ./redis-cli -a "myPassWord" shutdown
Warning: 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