LNMP部署wordpress

news2024/9/24 3:28:01

1.环境准备

总体架构介绍

序号类型名称外网地址内网地址软件
02负载均衡服务器lb0110.0.0.5192.168.88.5nginx keepalived
03负载均衡服务器lb0210.0.0.6192.168.88.6nginx keepalived
04web服务器web0110.0.0.7192.168.88.7nginx
05web服务器web0210.0.0.8192.168.88.8nginx
06web服务器web0310.0.0.9192.168.88.9nginx
07数据库服务器db0110.0.0.51192.168.88.51mariadb mysql
08存储服务器nfs0110.0.0.31192.168.88.31nfs-utils rpcbind
09备份服务器backup10.0.0.41192.168.88.41rsync
10批量管理服务器m0110.0.0.61192.168.88.61ansible
11跳板机服务器jumpserver10.0.0.71192.168.88.71jumpserver
12监控服务器zabbix10.0.0.72192.168.88.72zabbix
13缓存服务器redis

2.ansible搭建

cat >01_ins_ansible.sh<<EOF 
#!/bin/bash
cat >/etc/yum.repos.d/ansible.repo<<EOM
[ansible]
name=ansible
baseurl=https://mirror.tuna.tsinghua.edu.cn/epel/7/x86_64/
gpgcheck=0
enabled=1
EOM
yum clean all
yum repoinfo
yum -y install ansible
EOF
vim 02_config_ansible.sh
#!/bin/bash
ls /ansible
[ $? -eq 0 ] ||  mkdir /ansible
cat >/ansible/ansible.cfg<<EOF
[defaults]
host_key_checking = false
inventory = inventory
EOF
cat >/ansible/inventory<<EOF
[web]
192.168.88.7
192.168.88.8
192.168.88.9

[lb01]
192.168.88.5

[lb02]
192.168.88.6

[db]
192.168.88.51

[backup]
192.168.88.41

[data]
192.168.88.31
[all:vars]
ansible_ssh_user=root     #所有机器用户名都是root,密码是123
ansible_ssh_pass=123
EOF

1.测试ansible可以正常访问

ansible all -m ping

3.web服务(LNMP架构wordpress)

(一)安装linux操作系统(略)

(二)整体文件系统说明

1设置tab键

每次缩进2个空格,方便编写yaml文件,直接拷贝执行即可
cat  >.vimrc<<EOF 
autocmd FileType yaml setlocal ai ts=2 sw=2 et
EOF

2.一键安装web服务器nginx,php,部署3台web

cd /ansible
cat >03_install_nginx.yaml<<EOF
---
- name: install nginx
  hosts: web
  tasks:
  - name: touch
    copy:
      content: |
        [nginx]
        name=nginx repo
        baseurl=http://nginx.org/packages/centos/7/$basearch/
        gpgcheck=0
        enabled=1
      dest: /etc/yum.repos.d/nginx.repo
  - name: shell
    shell:
      cmd:
        yum makecache
  - name: install nginx
    shell:
      cmd: |
        yum -y install nginx
        yum remove -y epel-release.noarch
        yum install -y epel-release
        yum install -y https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm
        yum --enablerepo=remi-php74 install -y php php-cli php-common php-devel php-embedded php-gd php-mbstring php-pdo php-xml php-fpm php-mysqlnd php-opcache php-mcrypt php-pecl-memcached php-pecl-mongodb php-pecl-redis
  - name: copy web/default.conf
    copy:
      src: web/default.conf
      dest: /etc/nginx/conf.d/
  - name: copy www.conf
 copy:
      src: files/www.conf
      dest: /etc/php-fpm.d/www.conf
  - name: start  nginx service
    service:
      name: "{{item}}"
      state: restarted
      enabled: yes
    loop: [nginx,php-fpm]
EOF
ansible-playbook  03_install_nginx.yaml  执行

3.一键安装代理服务器nginx,keepalived,部署2台lb01和lb02

cat >04_install_keepalived.yaml<<EOF
---
- name: install nginx
  hosts: lb01,lb02
  tasks:
  - name: touch
    copy:
      content: |
        [nginx]
        name=nginx repo
        baseurl=http://nginx.org/packages/centos/7/$basearch/
        gpgcheck=0
        enabled=1
      dest: /etc/yum.repos.d/nginx.repo
  - name: shell
    shell: yum makecache
  - name: install nginx
    yum:
      name: nginx,keepalived
      state: present
  - name: copy nginx.conf
    copy:
      src: files/nginx.conf
      dest: /etc/nginx/
  - name: copy default.conf
    copy:
      src: files/default.conf
      dest: /etc/nginx/conf.d/
- name: config keepalived.conf
  hosts: lb01
  tasks:
  - name:  copy lb01  keepalived.conf
 copy:
      src: files/keepalived.conf  #master配置文件
      dest: /etc/keepalived/
- name: lb02
  hosts: lb02
  tasks:
  - name:  copy lb02 keepalived.conf
    copy:
      src: ./keepalived.conf #slave配置文件
      dest: /etc/keepalived/
- name: start service
  hosts: lb01,lb02
  tasks:
  - name: start  nginx keepalived service
    service:
      name: "{{item}}"
      state: restarted
      enabled: yes
    loop: [nginx,keepalived]
EOF

4.nfs服务端文件系统部署

cat >05_install_server_nfs-utils.yaml<<EOF
---
- name: install nfs01
  hosts: data
  tasks:
  - name: install nfs-utils
    yum:
      name: nfs-utils,rpcbind
      state: present
  - name: copy /etc/exports
    copy:
      content: |
       /data 192.168.88.0/24(rw,sync)
      dest: /etc/exports
  - name: mkdir /data
    file:
      path: /data
      state: directory
      owner: nfsnobody
      group: nfsnobody
  - name: html
    copy:
      src: web/wordpress-6.1.1-zh_CN.tar.gz
      dest: /data
  - name: tar -xf wordpress-6.1.1-zh_CN.tar.gz
    shell: 
      cmd: |
        tar -xf   /data/wordpress-6.1.1-zh_CN.tar.gz -C /data
        chmod -R 777 /data
  - name: start rpcbind,nfs
    service:
      name: "{{item}}"
      state: restarted
      enabled: yes
    loop: [rpcbind,nfs]

EOF

5.nfs客户端web文件系统部署

cat >06_clientweb_nfs-utils.yaml<<EOF
---
- name: install nfs-utils
  hosts: web
  tasks:
  - name: install nfs-utils
    yum:
      name: nfs-utils
      state: present
  - name: copy /etc/
    copy:
      content: |
       mount -t nfs 192.168.88.31:/data /mnt
      dest: /etc/rc.d/nfs.local
  - name:  chmod a+x  /etc/rc.d/nfs.local
    shell:
      cmd: |
       chmod a+x  /etc/rc.d/nfs.local
       mount -t nfs 192.168.88.31:/data /mnt
EOF

6.mariadb数据库部署

cat >07-install_mariadb-server.yaml<<EOF
---
- name: install nfs-utils
  hosts: db
  tasks:
  - name: install nfs-utils
    yum:
      name: mariadb-server,mariadb
      state: present
  - name: start mariadb
    service:
      name: mariadb
      state: restarted
      enabled: yes
  - name: 修改passwd
    shell:
      cmd: |
       mysqladmin -u root password '123456'
EOF

7.创建收钱数据库和用户

cat >08-config-mysql.yml<<EOF
---
- name: config mysql
  hosts: db
  tasks:
  - name: create database
    script: files/config_mysql.sh
EOF

7.files目录下文件

1.files/config_mysql.sh
cat files/config_mysql.sh<<EOF
mysql -u root -p123456 -e "create database wordpress character set utf8mb4"
mysql -u root -p123456 -e "create user wordpress@'%' identified by 'wordpress'"
mysql -u root -p123456 -e "grant all privileges on wordpress.* to wordpress@'%'"
EOF
2.files/default.conf
cat >default.conf<<EOF
server {
    listen       80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
    proxy_pass http://webserver; #路由转发
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
 #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}
EOF
3.files/keepalived.conf 
cat >keepalived.conf<<EOF
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id lb01
   vrrp_iptables
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_script chk_http_port {  # 定义监视脚本
    script "/etc/keepalived/check_lvs.sh"  
   interval 2   # 脚本每隔2秒运行一次
 }
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
     192.168.88.80/24
  }
track_script {    # 引用脚本
         chk_http_port
      }
}
EOF
4.files/check_lvs.sh
cat >files/check_lvs.sh<<EOF  #检测keepalived主备切换
#!/bin/bash
ss -ntulp | grep :80 &> /dev/null && exit 0 || exit 1
EOF
chmod +x files/check_lvs.sh #记得加执行权限
5.files/www.conf
cat >files/www.conf<<EOF #源文件修改以下2行
...
user = nginx

group = nginx
...
EOF

8.web目录下文件

1.web/default.conf
cat >web/default.conf<<EOF
server {
    listen       80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /mnt/wordpress;
        index index.php index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /mnt/wordpress;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           /mnt/wordpress;
        fastcgi_pass   127.0.0.1:9000;
     fastcgi_index  index.php;
      #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
       include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}
EOF

2.web/wordpress-6.1.1-zh_CN.tar.gz
下载网址

wordpress-6.1-zh_CN.zip - 坚果云 - 云盘|网盘|企业网盘|同步|备份|无限空间|免费网络硬盘|企业云盘 (jianguoyun.com)

9.注意事项

如果客户端是windows主机,则使用记事本程序打开C:\windows\System32\drivers\etc\hosts添加名称解析
当点击http://192.168.88.80页面中任意链接时,地址栏上的地址,都会变成192.168.88.7。通过以下方式修复它:
# 在nfs服务器上修改配置文件
[root@nfs01 ~]# vim /mnt/wordpress/wp-config.php 
# define('DB_NAME', 'wordpress')它的上方添加以下两行:
define('WP_SITEURL', 'http://192.168.88.80');
define('WP_HOME', 'http://192.168.88.80');

3.backup备份

服务端:backup

客户端:web01 web02 web03 

要求:

       每天晚上 00 点整在 Web 服务器上打包备份系统配置文件、网站程序目录及访问日志并通过 rsync 命令推送备份服务器 backup 上备份保留(备份思路可以是先在本地按日期打包,然后再推到备份服务器 backup 上) ,NFS 存储服务器同 Web 服务器,实际工作 中就是全部的服务器。


具体要求如下:
1)所有服务器的备份目录必须都为/backup。

2)要备份的系统配置文件包括但不限于:

a.定时任务服务的配置文件(/var/spool/cron/root)

b.开机自启动的配置文件(/etc/rc.local)

c.日常脚本的目录 (/server/scripts)。

d.防火墙 iptables 的配置文件(/etc/sysconfig/iptables)。

e.自己思考下还有什么需要备份呢?

3)Web 服务器站点目录(/var/html/www)。

4)Web 服务器 A 访问日志路径(/app/logs)

5)Web 服务器保留打包后的 7 天的备份数据即可(本地留存不能多于 7 天,因为太多硬盘会 满)

6)备份服务器上,保留每周一的所有数据副本,其它要保留 6 个月的数据副本。

7)备份服务器上要按照备份数据服务器的内网 IP 为目录保存备份,备份的文件按照时间名 字保存。

8)*需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结 果信息发给系统管理员邮箱中。

cat >09_backup_all_config.yaml<<EOF
---
- name: 客户端和服务端安装rsync
  hosts: web,backup
  tasks:
  - name: 安装rsync同步软件
    yum:
      name: rsync
      state: latest
  - name: 创建备份目录
    file:
      path: /server/scripts
      state: directory
- name: 配置backup服务端
  hosts: backup
  vars:
    rsync_password: "rsync_backup:123456"
    backup_dir: "/backup"
  tasks:
  - name: 配置/etc/rsyncd.conf
    copy:
      dest: /etc/rsyncd.conf
      content: |
       uid = rsync
       gid = rsync
       port = 873
       fake super = yes
       use chroot = no
       max connections =200
 timeout = 300
       pid file = /var/run/rsyncd.pid
       lock file = /var/run/rsync.lock
       log file = /var/log/rsyncd.log
       ignore errors
       read only = false
       list = false
       hosts allow = 192.168.88.0/24
       hosts deny = 0.0.0.0/32
       auth users = rsync_backup
       secrets file = /etc/rsync.password
       [backup]
       comment = "backup dir by abin"
       path = /backup
  - name: Add rsync user
    user:
      name: rsync
      create_home: no
      shell: /sbin/nologin
      system: yes
  - name: Create rsync password file
    shell: echo "{{ rsync_password }}" > /etc/rsync.password && chmod 600 /etc/rsync.password
  - name: Create backup directory
    file:
      path: "{{ backup_dir }}"
      state: directory
      owner: rsync
 group: rsync
  - name: Start and enable rsync service
    service:
      name: rsyncd
      state: restarted
      enabled: yes
  - name: 清理过期文件脚本
    copy:
      dest: /server/scripts/backup_server.sh
      content: |
       #!/bin/bash
       # del 180 day ago data
       find /backup/ -type f -mtime +180 ! -name "*week1.tar.gz"|xargs rm 2>/dev/null
       # check backup data
       find /backup/ -type f -name "finger.txt"|xargs md5sum -c >/tmp/check.txt
       #send check mail
       mail -s "check backup info for $(date +%F)" 1781668237@qq.com </tmp/check.txt
  - name: Add cron job for backup_server script
    cron:
      user: "root"
      minute: "0"
      hour: "0"
      job: "/bin/sh /server/scripts/backup_server.sh"
      state: present
- name: 配置web客户端
 hosts: web
  vars:
     password: "123456"
  tasks:
  - name: Create rsync password file
    shell: echo "{{ password }}" > /etc/rsync.password && chmod 600 /etc/rsync.password
  - name: 备份脚本
    copy:
      dest: /server/scripts/backup.sh
      content: |
       #!/bin/bash
       Backup_dir="/backup"
       IP_info=`ifconfig | head -2 | tail -1 | awk '{print $2}'`
       # create backup dir
       mkdir -p $Backup_dir/$IP_info
       # tar backup data
       cd /
       tar zchf /$Backup_dir/$IP_info/system_backup_$(date +%F_week%w -d -0day).tar.gz  /etc/rc.local /etc/nginx/nginx.conf /etc/nginx/conf.d/default.conf  /server/scripts /var/spool/cron/root 
       tar zchf /$Backup_dir/$IP_info/www_backup_$(date +%F_week%w).tar.gz  ./var/html/www
       tar zchf /$Backup_dir/$IP_info/www_log_backup_$(date +%F_week%w).tar.gz  ./app/logs
       # del 7 day ago data
       find $Backup_dir -type f -mtime +7|xargs rm 2>/dev/null
       # create finger file
       find $Backup_dir/ -type f -mtime -1 ! -name "finger*"|xargs md5sum >/$Backup_dir/$IP_info/finger.txt
       # backup push data info
       rsync -az $Backup_dir/ rsync_backup@192.168.88.41::backup --password-file=/etc/rsync.password
  - name: Add cron job for backup script
    cron:
      user: "root"
      minute: "0"
      hour: "0"
      job: "/bin/sh /server/scripts/backup.sh"
      state: present
EOF

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1645100.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

真希望我父母读过这本书的笔记(二)

系列文章目录 真希望我父母读过这本书的笔记&#xff08;一&#xff09; 真希望我父母读过这本书的笔记&#xff08;二&#xff09; 文章目录 系列文章目录PART 5 培养心理健康的孩子亲子关系决定心理健康互动及来回交流如何开始交流互看游戏交流恐惧症 若遇棘手之际&#xff0…

机器学习---朴素贝叶斯

朴素贝叶斯是一种用于分类和预测任务的算法&#xff0c;他的原理是基于贝叶斯定理。其中朴素的意思是假设各特征之间相互独立。这个实验我是用的老师课后作业的题目预测某天是否会打乒乓球&#xff0c;假设每个特征独立。 目录 贝叶斯公式&#xff1a; 训练集&#xff1a; 处…

视频剪辑:视频文件元数据修改工具,批量操作提升效率和准确性

在视频剪辑和后期处理的过程中&#xff0c;除了对视频本身的编辑和修改&#xff0c;元数据的管理和修改同样重要。元数据&#xff0c;如标题、艺术家、专辑封面等&#xff0c;不仅提供了视频文件的基本信息&#xff0c;还有助于更好地组织、搜索和共享视频内容。而针对视频文件…

微信答题链接怎么做_新手也能快速上手制作

在数字营销日新月异的今天&#xff0c;如何有效吸引用户参与、提升品牌曝光度&#xff0c;成为了每一个营销人都在思考的问题。而微信答题链接&#xff0c;作为一种新兴的互动营销方式&#xff0c;正以其独特的魅力&#xff0c;在营销界掀起一股新的热潮。今天&#xff0c;就让…

XSS Challenges 靶场通关解析

前言 XSS Challenges&#xff08;跨站脚本攻击挑战&#xff09;是一种用于学习和测试跨站脚本&#xff08;XSS&#xff09;漏洞的实验性平台。这些挑战旨在帮助安全研究人员和开发人员了解XSS漏洞的工作原理、检测方法和防御技巧。 通常&#xff0c;XSS Challenges平台提供一…

高德地图在vue3项目中使用:实现画矢量图、编辑矢量图

使用高德地图实现画多边形、矩形、圆&#xff0c;并进行编辑保存和回显。 1、准备工作 参考高德地图官网&#xff0c;进行项目key申请&#xff0c;链接: 准备 2、项目安装依赖 npm i amap/amap-jsapi-loader --save3、地图容器 html <template><!-- 绘制地图区域…

使用脚本启动AppImage应用程序

因为特殊需求不能直接双击运行appimage程序&#xff0c;需要用到脚本启动 1.创建一个.desktop文件 2.添加以下内容 [Desktop Entry] //这是一个配置的开始 TypeApplication //定义了应用程序的类型&#xff0c;这里是Application Namemyapp //应用程序的名称 //应用…

ASP.NET网络商店销售管理系统的设计与实现

摘 要 随着软件技术的不断进步和发展&#xff0c;信息化的管理方式越来越广泛的应用于各个领域&#xff0c;对于任何网站系统的管理来说开发一套现代化的成员管理软件是十分必要的。通过这样的软件系统&#xff0c;可以做到成员的规范管理和快速查询&#xff0c;从而减少管理…

小工具 - 用Astyle的DLL封装一个对目录进行代码格式化的工具

文章目录 小工具 - 用Astyle的DLL封装一个对目录进行代码格式化的工具概述笔记效果编译AStyle的DLL初次使用接口的小疑惑测试程序 - 头文件测试程序 - 实现文件测试程序 - RC备注END 小工具 - 用Astyle的DLL封装一个对目录进行代码格式化的工具 概述 上一个实验(vs2019 - ast…

记对MYSQL蜜罐的溯源反制研究

Mysql蜜罐的利用 Mysql任意文件读取 mysql蜜罐通过搭建一个简单的mysql服务&#xff0c;如果攻击者对目标客户进行3306端口爆破&#xff0c;并且用navicat等工具连接蜜罐服务器&#xff0c;就可能被防守方读取本地文件&#xff0c;包括微信配置文件和谷歌历史记录等等&#x…

LNMP一键安装包

LNMP一键安装包是什么? LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian/Deepin/Alibaba/Amazon/Mint/Oracle/Rocky/Alma/Kali/UOS/银河麒麟/openEuler/Anolis OS Linux VPS或独立主机安装LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQ…

sql中索引的使用分析

主要学习和记录sql中索引的使用 1.批量在库里插入了27W条数据 CREATE DEFINERroot% PROCEDURE 批量插入() BEGIN #Routine body goes here... DECLARE i int; SET i1; WHILE (i<100000) DO insert into kucun_info (shop_name,shop_code,shop_price,sh…

C#图像:1.图像区域分割与提取

&#xff08;1&#xff09;创建一个名为SplitImage的窗体的应用程序&#xff0c;将窗体改名为FormSplitImage。 &#xff08;2&#xff09;创建一个名为ImageProcessingLibrary的类库程序&#xff0c;为该工程添加名为ImageProcessing的静态类 &#xff08;3&#xff09;为Imag…

Video2Game:革新游戏开发,重塑虚拟世界的未来

Video2Game&#xff1a;革新游戏开发&#xff0c;重塑虚拟世界的未来 一、Video2Game的提出与意义二、Video2Game的核心技术三、Video2Game的实现与应用四、代码实例与未来展望 在数字化和虚拟化日益盛行的今天&#xff0c;高质量的交互式虚拟环境&#xff0c;如游戏和模拟器&a…

【精品毕设推荐】基于Javaee的影视创作论坛的设计与实现

点击下载原文及代码 摘 要 随着时代的发展&#xff0c;互联网的出现&#xff0c;给传统影视行业带来的最大便利就是&#xff0c;方便了影视从业人员以及爱好者的交流和互动&#xff0c;而为用户提供一个书写影评&#xff0c;阅读影评以及回复影评的平台&#xff0c;以影评为…

云原生专栏丨基于K8s集群网络策略的应用访问控制技术

在当今云计算时代&#xff0c;Kubernetes已经成为容器编排的事实标准&#xff0c;它为容器化应用提供了强大的自动化部署、扩展和管理能力。在Kubernetes集群中&#xff0c;网络策略(Network Policy)作为对Pod间通信进行控制的关键功能&#xff0c;对保障应用安全和隔离性起到了…

R可视化:不同分页界面分组添加显著性标记符号

介绍 对不同分页界面的分组数据添加显著性标记符号,虽然也可以通过ggpubr包的stat_compare_means()添加分组显著性标记符号,但它要求x轴必须是分组变量,不能对fill映射出来的分组做处理。为应对不同分组的fill映射分组,我们需要另寻他法。本文通过geom_text, geom_segment…

Linux编译内核模块生成.KO驱动示例

现在的Linux内核十分庞大&#xff0c;驱动繁多&#xff0c;但是仍有一些是内核所不包含的&#xff0c;或者我们前期进行了内核裁剪&#xff0c;但后面又需要添加一些驱动&#xff0c;但是又不想重新烧录内核&#xff0c;这时候就可以使用内核模块功能&#xff0c;对内核驱动进行…

Linux图形化界面怎么进入?CentOS 7图形界面切换

CentOS 7默认只安装命令行界面。要切换到图形界面&#xff0c;需要先检查系统是否安装图形界面&#xff0c;在终端输入以下命令&#xff1a; systemctl get-default若是返回结果是“multi-user.target”表示系统没有安装图形界面&#xff1b;若是返回结果是“graphical.target…

等保测评—Linux-CentOS标准范例截图

密码输入错误无法登录 用户账户情况包含root、guanli、shenji 查看审计用户权限 身份鉴别&#xff1a; cat /etc/passwd&#xff0c;核查用户名和 UID&#xff0c;是否存在同样的用户名和 UID cat /etc/shadow&#xff0c;查看文件中各用户名状态 &#xff0c; 核查密码一栏为…