初探LInux运维

处理故障的思路

1、首先明确自己出现该问题之前做了哪些操作,把做过的操作记录下来。
2、排除基本故障(防火墙、SeLinux、权限等)
3、查看相关报错信息,出现error关键词或者其他错误信息关键词,找出报错信息的核心,复制——进入百度先大体查看一下是哪一类问题。
4、我们可以使用 echo $? 来查看上一条命令是否成功执行。
5、提取中心"思想",用自己的话语来描述问题。在描述问题的过程中一定要注意系统的版本号。其基本格式为:系统版本号+问题原因+问题现象
6、通过百度检索发现类似问题,尝试在自己的机器上解决,若解决无效果,回滚命令,查找问题所在,并继续检索另外的答案。

如何问问题,才能更高效

  1. 前因(环境)
  2. 后果(报错)
  3. 尝试过哪些解决方法,是否解决
  4. 将过程写到Word或博客上,方便他人查看和解决类似问题
  5. 逆商

学习方法

  • 花在学习上多少时间?
  • 花在专业知识的学习上多少时间?
  • 花在专业知识的读书笔记输出上多少时间?
  • 在自己所在行业的关键岗位上工作多少时间?
  • 工作中用到专业知识的地方花费多少时间?
  • 自己一共输出了多少本书,属于自己的专业书籍的读书笔记?

行业中未过时的知识

  • 数据结构
  • 算法
  • 计算机系统结构
  • 操作系统
  • 编译原理
  • 数据库
  • 计算机网络
  • 软件工程
  • 数据分析

运维高薪的技术点

  1. 容器:K8sdocker
  2. 自动化工具:ansibleshellELKEFK
  3. CI/CD:jenkinsgitlab

运维找工作必会知识点

  1. Web服务:nginxtomcat
  2. 数据库:MySqlredis
  3. 监控:zabbixprometheus
  4. 备份与还原:数据备份及还原的过程和方法

运维基础知识点:

  1. 基础命令:findsedawkheadcatlscddf
  2. 服务搭建:ftpapachesvngit
  3. 负载均衡:nginxlvs
  4. 服务附属工具:MySqldumpabfail2ban
  5. 大学计算机理论:网络基础数据结构算法操作系统

会了加分

  1. openstatckVMwarekvm
  2. 数据库:oracleSQL server
  3. 负载均衡:apacheDNS
  4. 大数据:hadoopshdfs

想拿更高的薪资

编程:PythongoJavaPHP
底层原理:内核手写操作系统tcp/ip

VMware软件的安装

  1. 复制该链接 https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html ,到浏览器中打开(该版本是VMware Workstation 17 Pro)。image.png

  2. 点击DOWNLOAD NOW进行本地下载。

  3. 下载完成后,在本地找到下载的文件并双击运行进行安装。image.png

  4. 在弹出的窗口中“单机”——下一步

    image.png

  5. 在弹出的窗口中勾选"我接受许可协议中的条款",“单机”——下一步

    image.png

  6. 自定义安装更改安装位置(一般我们在安装类似软件的时候,不选择安装在系统盘C盘中,因而在此我们要修改安装位置),修改之后保持默认,之后点击"下一步" image.png

  7. 用户体验设置与快捷方式默认"下一步"

    image.png image.png

  8. 点击安装(由于我是在虚拟机上进行的演示,故而会出现以下情况),如果读者在本机中进行安装,则不会出现此问题。

    image.png

  9. 如果只是试用,点击完成即可免费使用30天。

  10. 如果想要永久使用就输入许可证密钥,https://www.bilibili.com/read/cv20885433 此链接中含有VMware Workstation 17 Pro的许可证密钥,随便选一个复制粘贴即可。接下来你就可以免费畅游在"虚拟机的世界中了"。

虚拟机安装CentOS7操作系统

  1. 点击VMware软件,在弹出的页面中点击"创建新的虚拟机"image.png

  2. 系统弹出"新建虚拟机向导",默认使用"典型"类型的配置文件,单击"下一步"

    image.png

  3. 在"安装客户机操作系统"中选择"稍后安装操作系统",单击"下一步"

    image.png

  4. 在"选择客户机操作系统"中选择;客户机操作系统:Linux、版本:CentOS 7 64位,单击"下一步"

    image.png

  5. 在"命名虚拟机"中,我们将虚拟机的名字进行设置,但最好见名知意。将其安装的位置进行修改。

    image.png

  6. 在"指定磁盘容量里",最大磁盘大小保持默认20GB即可,选择"将虚拟磁盘存储位单个文件",单击"下一步"。

    image.png

  7. 在"已准备好创建虚拟机"中选择自定义硬件,我们要将虚拟机中不是特别"刚需"的外设或者其他内容进行调整。在此中我们将其内存修改为本机内存的"一半"(主要是为了能够保证主机的内存使用,在虚拟机和主机进行内存资源争夺的时候可以尽量保证主机的内存使用,当然,你也可以按照自己对虚拟机的需求进行动态的调整内存),处理器目前设置为1核(保持默认即可),可以在日后的生产环境中进行动态的调整。新CD/DVD(IDE)中,单击"连接"中的"使用ISO映像文件",并通过浏览将自己下载的CentOS7镜像加载进来。网络适配器可以选择"桥接"或"NAT"模式,本文选择"NAT模式"来演示。将"USB控制器"、“声卡”、“打印机"进行移除。点击"关闭”–>“完成”。

image.pngimage.png

  1. 接下来你就可以看到"库"中添加了一个CentOS7-164的虚拟机。

CentOS7操作系统的部署

  1. 双击刚刚新建的虚拟机,启动虚拟机。在弹出的页面中"选择Insall CentOS 7",进入系统安装界面。之后按"Enter"键进行系统安装。image.png
  2. 在"Welcome come to CnetOS 7"中选择"中文"——>“简体中文”,并单击"继续"。

image.png

  1. 接下来我们进入到"安装信息摘要",在其中我们要对几个选项进行修改,编辑。在软件选择中选择"带GUI的服务器"以及"KDE"进行安装,完成之后点击"完成"。

image.png

  1. 在系统中找到"安装位置",我们默认使用自动分区即可(即默认)。

image.png

  1. 在系统中找到"网络和主机名",将以太网打开,单机"配置",对网络进行设置。点击"IPv4设置",将"方法"从"自动(DHCP)“修改为手动(静态IP地址),在地址中单击"Add”,进行IP地址的配置。如图所示,完成后单击"保存"。

image.png

  1. 可以在网络和主机名页面中适当的修改一下主机名,之后"单击"完成。

image.png

  1. 点击"开始安装"

image.png

  1. 在配置页面中设置root密码

image.png

  1. 在生产环境中必须要设置一个可靠程度高的密码。

image.png

  1. 等待系统安装完成(完成之后就会出现一下界面),之后就可进行"重启",进入CentOS7系统了(在其中我并未创建用户,读者可以根据自生要求去创建用户,方法很简单)。

image.png

设置可用实验环境

  1. 在初始设置中对许可证进行接受,并"单击"完成配置

image.png

  1. 接下来在页面中,不断点击"前进",在此阶段的最后一步同样需要创建一个用户,设置用户名和密码即可,最后会显示登录页面。登录之后就可以享用Linux操作系统了。

image.png

  1. 点击"未列出",在此处我们使用root账户进行登录,因为其有最高权限,方便我们学习Linux的操作。(用户名即为root,密码为你初始设置时的root密码)

             ![image.png](https://img-blog.csdnimg.cn/img_convert/586eb091395dd317fcc0019a2d6080b5.png#averageHue=#2c3d4b&clientId=ud54c43d4-74ae-4&from=paste&height=238&id=u16930499&name=image.png&originHeight=238&originWidth=475&originalType=binary&ratio=1&rotation=0&showTitle=false&size=66873&status=done&style=none&taskId=ufc63f36c-ab5c-4b58-bb9b-305784231ec&title=&width=475)
    
  2. 看到以下桌面环境,就说明你已经成功安装并可以使用CentOS 7 操作系统了。

image.png

  1. 接下来我们打开终端看一下系统中的一些参数。打开终端方式如下图所示,当然还有一些其他的打开终端的方式,比如:"鼠标"右击——>"打开终端"等

image.png

  1. 在终端中输入以下命令查看系统的IP地址。
[root@BraHir164 ~]# ifconfig | grep inet
      inet 192.168.237.164  netmask 255.255.255.0  broadcast 192.168.237.255
      inet6 fe80::a4a5:7cfc:da65:6d6a  prefixlen 64  scopeid 0x20<link>
      inet 127.0.0.1  netmask 255.0.0.0
      inet6 ::1  prefixlen 128  scopeid 0x10<host>
      inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
  1. 为了检测系统中的网络是否可用,我们使用ping命令进行验证。
[root@BraHir164 ~]# ping www.baidu.com
      PING www.a.shifen.com (14.119.104.254) 56(84) bytes of data.
      64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=1 ttl=128 time=30.9 ms
      64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=2 ttl=128 time=44.6 ms
      64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=3 ttl=128 time=50.4 ms
      64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=4 ttl=128 time=40.6 ms
      64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=5 ttl=128 time=38.3 ms
      64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=6 ttl=128 time=30.2 ms
      64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=7 ttl=128 time=40.7 ms
      ^C
      --- www.a.shifen.com ping statistics ---
      7 packets transmitted, 7 received, 0% packet loss, time 6011ms
      rtt min/avg/max/mdev = 30.218/39.415/50.420/6.654 ms

  1. 拍摄快照,目的:为了方便以后可以随时的恢复到想要恢复的节点,如果我们在未来的操作中出现了问题,我们可以使用快照进行恢复,不需要再去重装系统。快照的命名尽量见名知义即可。还有就是,最好在关机的状态下进行快照的拍摄,其有利于节省系统资源。

image.png

  1. 恢复快照只需要在快照管理中,选择想要恢复到的节点,即可恢复到想要的计算机状态。(快照管理器看上图)

image.png

创建可用实验快照

目标:

  1. 网络需要能够ping

  2. hostname见名知义

  3. host,一对一的映射关系

  4. 关闭防火墙,seLinux

  5. 配置本地yum源

  6. 网络需要能够ping通,不经ping外网,也要ping网关。

[root@BraHir164 ~]# ping -c1 -w1 www.baidu.com
    PING www.a.shifen.com (14.119.104.254) 56(84) bytes of data.
    64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=1 ttl=128 time=101 ms
    
    --- www.a.shifen.com ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 101.549/101.549/101.549/0.000 ms
    [root@BraHir164 ~]# ping -c2 -w1 192.168.237.2
    PING 192.168.237.2 (192.168.237.2) 56(84) bytes of data.
    64 bytes from 192.168.237.2: icmp_seq=1 ttl=128 time=0.236 ms
    
    --- 192.168.237.2 ping statistics ---
    2 packets transmitted, 1 received, 50% packet loss, time 999ms
    rtt min/avg/max/mdev = 0.236/0.236/0.236/0.000 ms

  1. 关闭防火墙SeLinux,并使用ping命令来检验网络的可用性。在此处我们使用iptables -F或者firewall -F来清除防火墙的规则从而实现关闭防火墙。使用setenforce 0暂时关闭selinux,如果想要永久关闭则需要修改其配置文件。
[root@BraHir164 ~]# setenforce 0
[root@BraHir164 ~]# iptables -F
[root@BraHir164 ~]# ping -c1 -w1 www.baidu.com
      PING www.a.shifen.com (120.232.145.185) 56(84) bytes of data.
      
      --- www.a.shifen.com ping statistics ---
      2 packets transmitted, 0 received, 100% packet loss, time 999ms

  1. 补充(永久关闭SeLinux):首先使用vi或者其他编辑器进入selinux的配置文件vi /etc/selinux/config,修改SELINUX=enforcingSELINUX=disabled,一般至此之后我们需要重启操作系统,以达到配置的目的。
[root@BraHir164 ~]# vi /etc/selinux/config
[root@BraHir164 ~]# cat /etc/selinux/config
      
      # This file controls the state of SELinux on the system.
      # SELINUX= can take one of these three values:
      #     enforcing - SELinux security policy is enforced.
      #     permissive - SELinux prints warnings instead of enforcing.
      #     disabled - No SELinux policy is loaded.
      SELINUX=enforcing
      # SELINUXTYPE= can take one of three two values:
      #     targeted - Targeted processes are protected,
      #     minimum - Modification of targeted policy. Only selected processes are protected. 
      #     mls - Multi Level Security protection.
      SELINUXTYPE=targeted 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
  1. 补充如何展示关闭防火墙以及永久关闭防火墙
[root@BraHir164 ~]# systemctl stop firewalld.service  #暂时关闭防火墙
[root@BraHir164 ~]# systemctl disable firewalld.service #永久关闭防护墙
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@BraHir164 ~]# systemctl enable firewalld.service #开启防火墙
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
[root@BraHir164 ~]# 

  1. 补充(如何查看SeLinux的状态):查看当前的运行模式:getenforce、查看概要状态信息:sestatus、查看详情状态信息:sestatus -v
[root@BraHir164 ~]# getenforce 
Permissive
[root@BraHir164 ~]# sestatus 
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31
[root@BraHir164 ~]# sestatus -v
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31

Process contexts:
Current context:                unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Init context:                   system_u:system_r:init_t:s0
/usr/sbin/sshd                  system_u:system_r:sshd_t:s0-s0:c0.c1023

File contexts:
Controlling terminal:           unconfined_u:object_r:user_devpts_t:s0
/etc/passwd                     system_u:object_r:passwd_file_t:s0
/etc/shadow                     system_u:object_r:shadow_t:s0
/bin/bash                       system_u:object_r:shell_exec_t:s0
/bin/login                      system_u:object_r:login_exec_t:s0
/bin/sh                         system_u:object_r:bin_t:s0 -> system_u:object_r:shell_exec_t:s0
/sbin/agetty                    system_u:object_r:getty_exec_t:s0
/sbin/init                      system_u:object_r:bin_t:s0 -> system_u:object_r:init_exec_t:s0
/usr/sbin/sshd                  system_u:object_r:sshd_exec_t:s0
[root@BraHir164 ~]# 

  1. 设置一对一的映射关系。
1 、远程登录 Linux 主机过慢问题

有时客户端想远程登录一台 Linux 主机,但每次登录输入密码后都会等很长一段时间才会进入,这是因为 Linux 主机在返回信息时需要解析 IP,如果在 Linux 主机的 hosts 文件事先加入客户端的 IP 地址,这时再从客户端远程登录 Linux 就会变很快.

注:这里所说的远程登录不仅仅是 ssh,还可能是 mysql 远程登录,或是文件共享的查询等.

2 双机互连

当两台主机只是双机互连时,这时两台主机都需要设置自己的 IP,同时在对方的 hosts 文件里加入自己的 IP 和主机名
[root@BraHir164 ~]# cat >> /etc/hosts << eof
> 192.168.237.164 BraHir164
> eof
[root@BraHir164 ~]# cat -bns /etc/hosts
     1	127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
     2	::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
     3	192.168.237.164 BraHir164
[root@BraHir164 ~]# 

  1. 设置hostname,注意在修改完hostname后要执行bash命令使之呈现出来。
[root@BraHir164 ~]# hostname huihui
[root@BraHir164 ~]# bash
[root@huihui ~]# hostnamectl set-hostname BraHit
[root@huihui ~]# bash
[root@brahit ~]#  
[root@brahit ~]# hostnamectl set-hostname BraHit164
[root@brahit ~]# bash
[root@brahit164 ~]# 
  1. 设置本地yum源,通过右击虚拟机,点击设置,打开虚拟机设置。点击CD/DVD(IDE)查看设备状态是否连接。

image.png
image.png

  1. 打卡终端配置本地yum源

image.png

[root@brahit164 ~]# cd /etc/yum.repos.d/
[root@brahit164 yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
[root@brahit164 yum.repos.d]# vim redhat.repo
[root@brahit164 yum.repos.d]# cat !$
cat redhat.repo
[redhat]
name=this is redhat.repo test
enabled=1
baseurl=file:///mnt
gpgcheck=0
[root@brahit164 yum.repos.d]# 

  1. 检测是否配置好yum源,使用yum repolist命令进行查看,但可以看到redhat源的状态为0——说明该源不可使用。故而我们要去其是否挂载了
[root@brahit164 yum.repos.d]# yum repolist
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                                                     | 3.6 kB     00:00     
extras                                                   | 2.9 kB     00:00     
file:///mnt/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /mnt/repodata/repomd.xml"
正在尝试其它镜像。
file:///mnt/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /mnt/repodata/repomd.xml"
正在尝试其它镜像。
updates/7/x86_64                                         | 2.9 kB     00:00     
源标识                           源名称                                   状态
base/7/x86_64                    CentOS-7 - Base                          10,072
extras/7/x86_64                  CentOS-7 - Extras                           515
redhat                           this is redhat.repo test                      0
updates/7/x86_64                 CentOS-7 - Updates                        4,886
repolist: 15,473
[root@brahit164 yum.repos.d]# 
  1. 首先我们使用df -h命令来查看挂载内容,可以看到其默认的挂载点。
[root@brahit164 yum.repos.d]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   17G  5.3G   12G   31% /
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G   13M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               1014M  170M  845M   17% /boot
tmpfs                    378M   20K  378M    1% /run/user/0
/dev/sr0                 4.2G  4.2G     0  100% /run/media/root/CentOS 7 x86_64
  1. 接着我们使用umount /dev/sr0命令将默认的挂载点进行删除,然后继续使用命令df -h检查是否杀死默认挂载。
[root@brahit164 yum.repos.d]# umount /dev/sr0
[root@brahit164 yum.repos.d]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   17G  5.3G   12G   31% /
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G   13M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               1014M  170M  845M   17% /boot
tmpfs                    378M   20K  378M    1% /run/user/0

  1. 重新进行挂载,将其挂载到/mnt,其实/dev/sr0/dev/cdrom差不多,前者是后者的软链接。挂载后使用df -h命令检查是否挂载成功。(如果使用检查命令发现有两个一样的挂载点需要将两个进行删除之后重新挂载)。
[root@brahit164 yum.repos.d]# mount /dev/cdrom /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@brahit164 yum.repos.d]# ll /dev/cdrom 
lrwxrwxrwx. 1 root root 3 4月  12 16:36 /dev/cdrom -> sr0
[root@brahit164 yum.repos.d]# ll /dev/sr0 
brw-rw----+ 1 root cdrom 11, 0 4月  12 16:36 /dev/sr0
[root@brahit164 yum.repos.d]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   17G  5.3G   12G   31% /
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G   13M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               1014M  170M  845M   17% /boot
tmpfs                    378M   20K  378M    1% /run/user/0
/dev/sr0                 4.2G  4.2G     0  100% /mnt
[root@brahit164 yum.repos.d]# 
  1. 接下来我们,再次使用yum repolist命令对其进行检查。可以看到redhat源有3971个包,从不同的地方下载的镜像其所含的软件包的数量有所差别,如果读者再该步发现自己数值与本文的有所差异实属正常。

image.png

  1. 我们可以切换到/mnt/Packages的目录下使用ls命令进行查看包中的源,并使用ls |wc -l命令查看包中的源的个数。
[root@brahit164 mnt]# cd Packages/
[root@brahit164 Packages]# ls |wc -l
3972
[root@brahit164 Packages]# ^C
  1. 永久关闭yum.pid——自动更新。

image.png

[root@brahit164 ~]# vim /etc/yum/pluginconf.d/langpacks.conf 
[root@brahit164 ~]# head -2 !$
head -2 /etc/yum/pluginconf.d/langpacks.conf
[main]
enabled=0
[root@brahit164 ~]# 
  1. 创建可实验快照,最好关机拍摄快照。

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
站内信设计⽅案 ⼀、背景 当前使⽤运维平台的⽤户进⾏沟通时,更多的是依赖微信和邮件通知,⽽运维平台作为⼀个整体的产品,也需要能够进⾏内部沟通的⼀种服 务 - 站内信。 站内信的设计基调 站内信的设计基调取决于⽤户如何使⽤站内信: 1. ⽤户不会守着运维平台这个页⾯,等待消息通知,查看消息内容,然后跳转到要操作的页⾯。 1. 也就是说站内信不是第⼀⼊⼝,站内信的实时性意义也不⼤。 2. 同很多社交⽹站不同(Facebook,知乎,微博等),⽤户会守在社交⽹站的主页⾯,不断刷新新内容,同时检查新消息(主要 是个⼈私信、别⼈的回复等,也绝不是为了检查系统通知消息) 2. ⽤户会根据邮件通知,决定是否要进⼊运维平台进⾏操作 3. 如果邮件特别多,例如同时有多个⼯单需要⽤户处理,⽤户也会在⼯单平台提供的"我的待办"页⾯进⾏所有⼯作。 4. 如果邮件被误删了,没有邮件链接直接进⼊要操作的模块 1. 那么或者通过索要链接/单号的⽅式,前往指定页⾯ 2. 或者直接在相关模块进⾏搜索 上⾯的描述都意味着⽤户基本不会使⽤站内信,那么在什么样的场合会使⽤站内信呢? 1. 不发邮件,只发站内信的消息通知,例如全站通知、编辑操作、Comment操作等 2. 当具体模块没有详细的操作记录时,可以通过查看站内信的发⽣时间 当前只有产品消息通知,消息展⽰也没有进⾏归类聚合,以后增加全站通知、mention、like、comment等类型的站内信时,就需要考虑按 类型进⾏消息聚合了。 ⼆、需求描述 站内信通常需要解决两个需求: 1. ⽤户对⽤户的站内信,管理员对⽤户的站内信:即⼀对⼀发送 2. 管理员对多⽤户、⽤户组、全站的站内信:即⼀对多发送 (还有⼀种是⽤户对产品的站内信,例如对某个模块的反馈、疑问之类的) 我们⽬前的需求是: 1. 管理员对多⽤户发送站内信 1. 对⽤户真实性不做校验 2. 对标题长度、内容长度进⾏限制(分别是45个字节、150个字节,对应中⽂字符15个、50个) 3. 对收件⼈的拼⾳长度进⾏限制(最长50个字节) 2. ⽤户可以查看⾃⼰的站内信 1. 按"全部、已读、未读"过滤 2. 按消息来源分类:⼯单平台、资源管理、⾃动装机、漏洞平台、故障平台。。。 3. ⽤户可以删除、批量删除站内信 4. ⽤户可以已阅、批量已阅、全部标记为已读 站内信 5. 运维平台页⾯顶部的消息图标 1. 展⽰未读消息数,超过99显⽰ 99+ 2. ⿏标放上去,会有下拉框,展⽰最近10条未读消息(展⽰"时间","消息来源","标题") 3. 下拉框的底部有两个按钮:"更多",加载更多未读消息;"查看全部",跳转到站内信列表页⾯(最好另开⼀个窗⼝) 4. 点击下拉框⾥的未读消息,通过弹出框展⽰详情;然后在未读列表⾥删除该记录,在数据库⾥标记为已读,消息图标的未读消息 数量减⼀ 6. 管理员页⾯: 1. 更新⽤户 2. 删除消息 3. 统计数据 4. 增加module 5. 增加站内信类型 6. 发送全站消息 三、系统设计 功能设计 功能 功能 接⼝ 接⼝ 详情 详情 发送站内信 POST /v1/message 校验module_name,校验title content receiver_name 长度 获取站内信列表 GET / 统计信息 暂⽆ 四、系统流程 发送站内信 1. 读取POST请求的request body 2. 校验长度 3. 插⼊数据库 4. 返回 获取站内信列表 1. 调⽤⼦模块,插⼊发送给全站或我所属⽤户组的站内信 2. 根据查询条件,返回数据库数据 获取未读站内信数量 1. 调⽤⼦模块,插⼊发送给全站或我所属⽤户组的站内信 2. 返回数量 批量已阅 1. 检查messageId是不是属于当前⽤户 2. inbox_message表⾥把 read 置为1,修改update_time 全部已阅 1. update inbox_message set "read"=1, "update_time"=now where "receiver_name"=currentUser() and "read" = 0 批量删除 1. 检查messageId是不是属于当前⽤户 2. inbox_message表⾥把 deleted 置为1,修改update_time 全部删除 1. update inbox_message set "deleted"=1, "update_time"=now where "receiver_name"=currentUser() and "deleted" = 0 五、数据库设计 站内信内容表 Field Field Type Type Null Null Key Key Default Default Extra Extr

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值