[关闭]
@Mr-13 2020-10-26T10:44:20.000000Z 字数 9570 阅读 445

工作手机:WorkOS服务器部署

工作手机



一、关闭SELINUX

  SELinux的永久关闭,必须通过修改器配置文件并重启才可以;在线上部署时,我们可以先通过命令临时关闭SELinux,完成其他配置后一起重启完成关闭配置;

1、临时管理SELinux

  1. # 执行 1:
  2. [root@mr13 ~]# setenforce 0
  3. # 打印:
  4. setenforce: SELinux is disabled
  5. [root@mr13 ~]#

2、修改SELinux配置文件

  1. # 执行 2:
  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

  彻底关闭FireWall不需要修改配置参数;按如下命令即可:
  
1、停止firewall服务

  1. # 停止firewall服务
  2. [root@mr13 ~]# systemctl stop firewalld.service
  3. [root@mr13 ~]#

2、禁止firewall开机启动

  1. # 禁止firewall开机启动
  2. [root@mr13 ~]# systemctl disable firewalld.service
  3. [root@mr13 ~]#

  执行上述命令不会有执行结果提示,我们需要确认操作是否有效

  1. # 检查防Firewall运行状态
  2. [root@mr13 ~]# firewall-cmd --state
  3. # 检查开机启动项服务
  4. [root@mr13 ~]# systemctl list-unit-files | grep firewalld

  出现如下图提示,说明执行成功;
  
  

  
  
  
  
  


三、磁盘挂载、目录创建

  WorkOS服务器,硬盘推荐配置为:40G(系统盘)+ 60(数据存储) ;在客户交付服务器之后一定要主要数据库存储的存放位置,千万不要默认全部安装到系统盘里面去了。
  
  如果客户使用阿里云的ECS实例,存储盘默认状态时没有分区、挂载的。需要我们进行磁盘挂载。
  如果客户交付的是实体机,一般情况下客户会挂载好硬盘;我们验收时,需要根据实际情况;设置软链。
  
  以下以阿里云为例,编写文档。
  

1、查看磁盘信息

  在磁盘未挂载之前,使用 df -lh 是看不到磁盘信息的,需要使用 fdisk -l 查看磁盘信息

  1. # root用户下操作
  2. [root@mr13 ~]# fdisk -l

  
  
  可以看到两块磁盘信息:
  系统盘:/dev/vda (42.9G)
  数据盘:/dev/vdb (21.5G);我们需要对这块盘操作挂载。
  
  

2、磁盘分区(部署过程不需要,仅作了解)

  一般我们每台服务器都是专服务专用,基本上不需要对新增磁盘进行分区的动作。这里仅作内容补充。
  详情参见:CentOS7磁盘分区挂载
  
  

3、格式化磁盘

  将未使用的磁盘进行格式化,操作数据盘符前,请自行确认磁盘是否有使用过,如有重要数据请谨慎操作,以免导致数据丢失,带来不必要的麻烦。格式挂过程需要等一会儿。

  1. # root用户下操作
  2. # 我这里使用ext4格式,与系统盘保持一致
  3. [root@mr13 ~]# mkfs.ext4 /dev/vdb
  4. # 执行命令需要稍等一会儿执行完成

4、创建挂载点、并进行磁盘挂载

  将格式化完的磁盘进行硬盘挂载,硬盘挂载前,先在服务器上创建一个需要挂载的挂载点。
  
  WorkOS服务器数据盘主要是来存储redis、rabbitmq、后台服务(java服务)等应用数据文件。部署时,相应的数据文件都是放在 /data 目录下。/data 目录即为数据盘的挂载点。

  1. # root用户下操作
  2. # 创建挂载点目录:/data
  3. [root@mr13 ~]# mkdir /data
  4. # 将磁盘vdb挂载到/data目录
  5. [root@mr13 ~]# mount /dev/vdb /data/
  6. # 如果需要卸载磁盘分区,使用命令umount /...即可;
  7. # 磁盘分许卸载后,还可以重新挂载,并且数据还会在的

  挂载完成后,使用命令 df -lh 就可以看到磁盘分区信息了。


  
  
  

5、配置开机自动挂载(修改fstab)

  上述动作完成之后,还需要修改fstab的配置信息,让服务器重启时,自动完成磁盘挂载。

  1. # root用户下操作
  2. # 查看磁盘UUID
  3. [root@mr13 ~]# blkid
  4. /dev/vda1: UUID="eb448abb-3012-4d8d-bcde-94434d586a31" TYPE="ext4"
  5. /dev/vdb: UUID="b2534a61-924f-457b-97e4-745e7d8e7a5e" TYPE="ext4"
  6. # 编辑fstab文件保存
  7. [root@mr13 ~]# vim /etc/fstab


  
  
  
  至此,完成了对数据盘的挂载。
  我们会将redis、rabbitmq等应用安装到 /data/ 目录下,因为数据盘已经挂载到 /data 目录;这样数据文件也就保存在数据盘上了。
  
  如果客户交付的是实体机,已经做好数据盘的挂载;那么我们就需要创建软链 /data 链接至实际数据盘的目录,同时给软链目录修改授权。


四、部署Java环境

  1. # root用户下操作
  2. # 创建资源文件目录
  3. [root@mr13 ~]# mkdir -p /server/tools
  4. # 上传JDK安装包到资源文件目录下........
  5. [root@mr13 ~]# cd /server/tools/
  6. # 安装JDK
  7. [root@mr13 tools]# rpm -ivh jdk-8u212-linux-x64.rpm
  8. # 稍等即可完成安装

rpm 命令:

 -i :安装软件包
 -v :可视化,提供更多的详细信息的输出
 -h :显示安装进度

.

五、部署Redis

1、安装wegt

  1. # root用户下操作
  2. [root@mr13 ~]# yum install -y wget

2、下载、安装redis

  下载 redis 安装包到 /server/tools 并编译安装

  1. [root@mr13 ~]# cd /server/tools
  2. # 下载redis安装包
  3. [root@mr13 tools]# wget http://download.redis.io/releases/redis-4.0.10.tar.gz
  4. # 解压软件包
  5. # z : 表示 tar 包是被 gzip 压缩过的bai,所以解压时需要用 gunzip 解压
  6. # x :从 tar 包中把文件提取出来
  7. # f xxx.tar.gz : 指定被处理的文件是 xxx.tar.gz
  8. [root@mr13 tools]# tar zxf redis-4.0.10.tar.gz
  9. [root@mr13 tools]# cd redis-4.0.10
  10. # 编译安装redis
  11. # 编译过程需要等一会儿
  12. # 这里只有make,没有漏掉什么,不必有疑问
  13. [root@mr13 redis-4.0.10]# make

  出现该提示,编译安装完成。
  

.
  

3、redis文件迁移

  迁移redis执行文件、配置文件没别的意思;就是为了应用软件文件规范管理;以后维护起来方便。

  1. # root用户下操作
  2. # 创建redis应用目录
  3. # -p 多级目录逐级创建
  4. # {*,*,*} 创建同级多个目录
  5. [root@mr13 ~]# mkdir -p /data/redis/{logs,conf,bin,dump,pid}
  6. # 拷贝 redis 的 conf文件到 conf 目录中
  7. [root@mr13 redis]# cd /server/tools/redis-4.0.10
  8. [root@mr13 redis-4.0.10]# cp redis.conf /data/redis/conf/
  9. # 拷贝 redis 的可执行文件到 bin 目录中
  10. [root@mr13 redis-4.0.10]# cd src/
  11. [root@mr13 src]# cp redis-cli redis-server /data/redis/bin

.

4、修改redis配置

  1. # root用户下操作
  2. [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英文在计算机名词一般指:备份
  


5、Redis启动、关闭

  启动程序文件是 /data/redis/bin/redis-server;启动配置文件是 /data/redis/conf/redis.conf

  1. # root用户下执行
  2. [root@mr13 ~]# /data/redis/bin/redis-server /data/redis/conf/redis.conf

  执行命令后不会有任何提示,我们可以查看一下进程确认是否启动成功,如下图:
  
  
  

关闭Redis,按如下操作:

注意:
  如果添加了密码的话,不要直接就shutdown了,会报错的,比如下面这样

  1. [root@mr13 bin]# ./redis-cli shutdown
  2. (error) NOAUTH Authentication required.

  正确的做法:

  1. # root用户下操作
  2. # 假设redis密码是:myPassWord
  3. # 进入bin目录
  4. [root@mr13 ~]# cd /data/redis/bin/
  5. # 方式一:
  6. [root@mr13 bin]# ./redis-cli
  7. 127.0.0.1:6379> auth myPassWord
  8. OK
  9. 127.0.0.1:6379> shutdown
  10. not connected>
  11. # 方式二:(简单粗暴)
  12. [root@mr13 bin]# ./redis-cli -a "myPassWord" shutdown
  13. Warning: Using a password with '-a' option on the command line interface may not be safe.

6、设置Redis开机启动

  编辑 /etc/rc.local 文件,在最后添加启动命令,并保存;如下图:
  
  

  添加成功后 reboot 重启一下,ps -ef | grep redis 看一下redis进程是否已经运行;如果运行起来,说明redis自启动设置成功。
  
  
.


7、开机启动脚本rc.local不执行解决办法

  reboor 重启之后,如果发现redis进程没有运行;也就是Linux启动脚本/etc/rc.local文件没有被执行,可能是因为rc.loca文件没有可执行权限,按以下步骤解决这个问题。
  

1)、查看rc.local执行权限

  1. # root用户下操作
  2. [root@mr13 ~]# ls -l /etc/rc.local

  上图中,rc.local 文件是有可执行权限的;
  同时,可以看到你 rc.local 文件是 /etc/rc.d/rc.local 的软链接
  
  

2)、查看 /etc/rc.d/rc.local 执行权限

  1. # root用户下操作
  2. [root@mr13 etc]# ls -l /etc/rc.d/rc.local

  上图中,可以看到 /etc/rc.d/rc.local 文件是没有执行权限的;就是这个原因导致的!!
  
  

3)、给 /etc/rc.d/rc.local 赋可执行权限

  1. # root用户下操作
  2. [root@mr13 etc]# chmod +x /etc/rc.d/rc.local

  如上图,完成赋权动作;可以看到文件已经有可执行权限,文件直接变成绿色的了。
  
  

4)、再次重启查看redis是否正常启动

  Redis开机自动启动,rc.local脚本正常运行。
  
  
  


六、部署RabbitMQ

1、上传安装包到服务器

  为了节省时间,提前将需要安装的软件包上传到服务器 /server/tools 下。

erlang: otp_src_22.0.tar.gz
RabbitMQ: rabbitmq-server-generic-unix-3.7.15.tar.xz

.

1、安装erlang依赖包

  1. # root用户下操作
  2. # erlang依赖包
  3. [root@mr13 ~]# yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-devel
  4. [root@mr13 ~]# yum install -y unixODBC unixODBC-devel

.

2、下载并编译安装erlang

  1. # root用户下操作
  2. # 下载erlang安装包到/server/tools下
  3. # otp_src_20.1.tar.gz 文件下载速度很慢,建议从本地上传到服务器
  4. [root@mr13 ~]# cd /server/tools/
  5. [root@mr13 tools]# wget http://erlang.org/download/otp_src_22.0.tar.gz
  6. # 解压erlang包
  7. [root@mr13 tools]# tar -zxvf otp_src_22.0.tar.gz
  8. [root@mr13 tools]# cd otp_src_22.0
  9. # 配置erlang到安装路径
  10. [root@mr13 otp_src_22.0]# ./configure --prefix=/data/erlang
  11. # 编译安装erlang
  12. # 时间有点儿长,耐心等一下
  13. [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 中,软件安装文件都统一放在这里(其实是其他默认安装目录的软链接),很方便维护和管理;

.

3、添加erlang环境变量

  1. # root用户下操作
  2. [root@mr13 ~]# echo "export PATH=$PATH:/data/erlang/bin/" >> /etc/profile
  3. [root@mr13 ~]# source /etc/profile
  4. # 环境变量添加完成之后,打印一下环境变量,看看是否添加成功
  5. [root@mr13 ~]# echo $PATH

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

  如上图,安装成功,使用 halt(). 命令退出erlang环境;注意别忘了最后的“.”

.


4、下载、安装RabbitMQ

  1. # root用户下操作
  2. [root@mr13 ~]# cd /server/tools
  3. # 下载rabbitmq安装包
  4. # 安装包较小,下载很快,但一般还是建议部署之前,将所需要的安装包都提前本地上传,节约时间
  5. [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,没有的话就先安装

  1. [root@mr13 ~]# yum install -y xz

  第一次解压:

  1. [root@mr13 tools]# xz -d rabbitmq-server-generic-unix-3.7.15.tar.xz

  第二次解压:

  1. [root@mr13 tools]# tar -xvf rabbitmq-server-generic-unix-3.7.15.tar

  将解压后的文件夹移动(剪切)到软件统一安装目录 /data/

  1. [root@mr13 tools]# mv rabbitmq_server-3.7.15 /data/

  将文件夹重命名为 rabbitmq

  1. [root@mr13 tools]# cd /data/
  2. [root@mr13 data]# mv rabbitmq_server-3.7.15 rabbitmq

.


5、配置RabbitMQ环境变量

  1. # 添加环境变量配
  2. [root@mr13 ~]# echo 'export PATH=$PATH:/data/rabbitmq/sbin' >> /etc/profile
  3. [root@mr13 ~]# echo 'export RABBITMQ_HOME=/data/rabbitmq' >> /etc/profile
  4. # 运行配置文件,刷新环境变量
  5. [root@mr13 ~]# source /etc/profile

  打印一下环境变量,已经配置生效,如下图:
  

  
  


6、启动RabbitMQ服务,并配置管理用户

  安装完成后,执行以下命令。

  1. # 启动服务
  2. [root@mr13 ~]# rabbitmq-server -detached
  3. # 启动web管理页面插件
  4. [root@mr13 ~]# rabbitmq-plugins enable rabbitmq_management
  5. # 创一个管理用户账号
  6. [root@mr13 ~]# rabbitmqctl add_user 用户名 密码
  7. # 为管理用户授权(最高权限)
  8. [root@mr13 ~]# rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"
  9. # 为管理用户设置角色tag:administrator
  10. [root@mr13 ~]# rabbitmqctl set_user_tags 用户名 administrator
  11. # 安全起见,删除默认用户
  12. [root@mr13 ~]# rabbitmqctl delete_user guest

  访问 http://127.0.0.1:15672(地址填写实际IP)web管理页面
  

.


7、RabbitMQ常用命令

  1. # 启动服务
  2. $ rabbitmq-server -detached
  3. # 停止服务
  4. $ rabbitmqctl stop
  5. # 查看服务状态
  6. $ rabbitmqctl status
  7. # 开启rabbitmq
  8. $ rabbitmqctl start_app
  9. # 关闭rabbitmq
  10. $ rabbitmqctl stop_app
  11. # 开启rabbitmq的web管理页面插件
  12. $ rabbitmq-plugins enable rabbitmq_management

  访问RabbitMQ的可视化管理界面:http://ipaddress:15672
  默认的 guest / guest 账号只允许本机访问,公网访问会被拒绝。

  1. # 停用插件
  2. $ rabbitmq-plugins disable xxxxx
  3. # 查看插件列表
  4. $ rabbitmq-plugins list
  5. # E:显示启用
  6. # e:隐式启用
  7. # *:运行中

  1. # 添加一个用户
  2. $ rabbitmqctl add_user 用户名 密码
  3. # 修改用户密码
  4. $ rabbitmqctl change_password Username Newpassword
  5. # 查看所有用户
  6. $ rabbitmqctl list_users

  1. # 删除用户
  2. # 安全起见,删除默认用户
  3. $ rabbitmqctl delete_user guest
  4. # 设置用户tag(角色)
  5. $ rabbitmqctl set_user_tags 用户名 tag

user 有5种 tags :

  management :访问 management plugin;
  policymaker :访问 management plugin 和管理自己 vhosts 的策略和参数;
  monitoring :访问 management plugin 和查看所有配置和通道以及节点信息;
  administrator :一切权限;
  None :无配置

  具体细节自行查阅,这里不做赘述

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

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注