基于ansible进行运维自动化的研究以及相关的属性

news2024/11/15 15:30:29

一、ansible-简介

介绍

  • ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点, 实现了批量系统配置、批量程序部署、批量运行命令等功能。 无客户端。

  • 一些Ansible的安装和一些基本概念,然后我们会开始研究一些真正有意思的东西 – playbook,配置管理,部署以及语法编排。

通俗地说,就好比是一种可以帮助我们自动完成重复性、繁琐的工作的工具,类似于一个自动化的管家。
举个例子,假设你是一家公司的运维工程师,每天需要登录到数十台服务器上,更新软件包、配置文件、重启服务等操作。使用Ansible,你可以编写一些自动化脚本(称为playbook),然后让Ansible去执行这些脚本,帮助你快速、高效地完成这些任务,而无需手动操作每一台服务器。
总之,Ansible可以帮助简化系统管理工作,提高工作效率,减少人为失误,让运维工作更加自动化、高效。

请添加图片描述

命令执行过程
  • 1、加载自己(ansible服务器)的配置文件,默认/etc/ansible/ansible.cfg
  • 2、查找对应的主机配置文件,找到要执行的主机或者组。
  • 3、加载自己对应的模块文件,如command
  • 4、通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器
  • 5、对应执行用户家目录的.ansible/tmp/XXX/XXX.PY文件
  • 6、给文件+x执行
  • 7、执行并返回结果
  • 8、删除临时py文件,sleep 0 退出。

工作原理
请添加图片描述

二、install-部署

1.dns resolve

  • 环境

    ansible服务器

    • 192.168.145.145

    ansible客户机

    • 192.168.145.141
    • 192.168.145.142
    • 192.168.145.143
    • 192.168.145.144
  • ansible服务器

    域名解析

    [ansible-server]#vim /etc/hosts

    192.168.145.145 ansible

    192.168.145.141 host1

    192.168.145.142 host2

    192.168.145.143 host3

    192.168.145.144 host4

  • ansible客户机

    • 无需配置
      • IP
      • YUM源

2.install ansible

ansible服务器

  • yum install -y epel-release

    • 安装epel源,如果您在非学校环境,请使用下方阿里YUM
    • rm -rf /etc/yum.repos.d/*
    • wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    • wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  • yum install -y ansible

    • 检测部署是否完成

      • ansible --version

        查看ansible版本

      • rpm -ql ansible

        列出所有文件

      • rpm -qc ansible

        查看配置文件

      • ansible --help

        查看ansible帮助

      • ansible-doc -l

        看所有模块(A10,华为,docker,EC2,aws等等广大厂商设备)

      • ansible-doc -s yum

        看yum模块,了解其功能

        • install (present' or installed’, latest'), or remove (absent’ or `removed’)
        • yum list
        • Package name
        • enablerepo

3.ssh-key(可选)

  • 免密码ssh-key的方式。

  • ssh-keygen

  • ssh-copy-id IP地址

    • 推送公钥
  • 尝试免密登录

    • ssh root@ip地址

    例如:

    # ssh-keygen
    # ssh-copy-id host1
    # ssh root@host1
    连接成功后 注意退出远程连接
    # exit
    

4.ansible基础

  • 1.定义主机清单

    • vim /etc/ansible/hosts

    • host1

      host2

      host3

      • 注意此处少一个主机。请留意
  • 2.测试连通性

    • ansible localhost -m ping
      • 测试host1连通性
      • -m 指定模块。什么功能 ping只是其中一个模块。还有shell,yum等等
  • 3.简洁输出

    • ansible host1 -m ping -o
  • 4.know_hosts

    • ansible host2 -m ping
      • 失败了
    • ansible host2 -m ping -u root -k -o
      • 增加用户名选项
      • 增加密码选项
      • -k 表示连接的时候需要输入密码
    • 去掉(yes/no)的询问
      • vim /etc/ssh/ssh_config
      • StrictHostKeyChecking no
      • systemctl restart sshd
    • ansible host2 -m ping -u root -k -o
      • 成功不提示
  • 5.错误示范

    • ansible host4 -m ping -u root -k -o
      • 失败,主机清单未标注主机。
      • 若想要连接,在ansible服务器的/etc/ansible/hosts中添加host4
  • 6.请注意ping和ssh

    • ping
      • ICMP:网际消息管理协议
    • 关闭host1主机的sshd进程,进行ping连通性测试。
    • 再使用ansible对host1进行联通测试时,却是失败的。
    • 结论ansible的ping,是探测ssh程序是否连接。不是icmp协议
    • ansible host1 -m ping -u root -k

5.Inventory -主机清单

  • 含义

    • 清查;存货清单;财产目录;
    • 主机清单,就是ansible将要操作的服务器的集合
  • 1 增加主机组

    • 官方链接

      • http://docs.ansible.com/ansible/intro_inventory.html#
    • vim /etc/ansible/hosts

      [webserver]
      host1
      host2
      host3
      host4
      
    • ansible webserver -m ping -o

      • 输出提示

        [root@localhost ~]# ansible webserver -m ping -u root -k -o
        SSH password: 
        host3 | SUCCESS => {"changed": false, "ping": "pong"}
        host1 | SUCCESS => {"changed": false, "ping": "pong"}
        host4 | SUCCESS => {"changed": false, "ping": "pong"}
        host2 | SUCCESS => {"changed": false, "ping": "pong"}
        
        
  • 2 增加用户名 密码

    • vim /etc/ansible/hosts

      [webserver]
      host1 ansible_ssh_user='root' ansible_ssh_pass='root'
      host2 ansible_ssh_user='root' ansible_ssh_pass='root'
      host3 ansible_ssh_user='root' ansible_ssh_pass='root'
      host4 ansible_ssh_user='root' ansible_ssh_pass='root'
      

      注释:

      ansible_ssh_user ansible连接的用户名

      ansible_ssh_pass ansible连接的密码

      快捷写法:

      [webserver]
      host[1:4] ansible_ssh_user='root' ansible_ssh_pass='root'
      

      注意你的密码与课件中的是否相同,用你自己的密码。

    • # ansible webservers -m ping -o

      • 免用户名和密码成功
    • 请思考主机和主机的用户名密码不同。如何设置?

      [webservers]
      host1 ansible_ssh_user='root' ansible_ssh_pass='777777'
      host[2:4] ansible_ssh_user='root' ansible_ssh_pass='666666'
      
  • 3 增加端口

    • 请将host1的sshd程序端口修改为2222

      # vim /etc/ssh/sshd_config
        Port 2222
      # systemctl restart sshd
      
    • ansible webservers -m ping -o

      • 失败,因为默认端口已更改
    • vim /etc/ansible/hosts

      [webserver]
      host1 ansible_ssh_user='root' ansible_ssh_pass='777777' ansible_ssh_port='2222'
      host[2:4] ansible_ssh_user='root' ansible_ssh_pass='666666'
      
    • 请将用户名密码和端口回复原状

  • 4 组:变量

    • ansible内部变量可以帮助我们简化主机清单的设置

    • vim /etc/ansible/hosts

      [webserver]
      host1
      host2
      host3
      host4
      [webserver:vars]
      ansible_ssh_user='root'
      ansible_ssh_pass='root'
      

      或者:

      [webserver]
      host[1:4]
      [webserver:vars]
      ansible_ssh_user='root'
      ansible_ssh_pass='root'
      

      实验:

      # ansible host2 -m ping
      host2 | SUCCESS => {
          "ansible_facts": {
              "discovered_interpreter_python": "/usr/bin/python3"
          },
          "changed": false,
          "ping": "pong"
      }
      
      
    • 常用变量

请添加图片描述

  • 5 子分组

    • 将不同的分组进行组合

    • vim /etc/ansible/hosts

      [apache]
      host[1:2]
      [nginx]
      host[3:4]
      
      [webserver:children]
      apache
      nginx
      [webserver:vars]
      ansible_ssh_user='root'
      ansible_ssh_pass='root'
      

6 自定义主机列表

  • vim hostlist

    [dockers]
    host1
    host2
    [dockers:vars]
    ansible_ssh_user=‘root’
    ansible_ssh_pass=‘root’

    注意您的计算机密码

  • ansible -i hostlist dockers -m ping -o

  • 综合例子:

    [root@localhost ~]# mv /etc/ansible/hosts /root/
    [root@localhost ~]# ls
    anaconda-ks.cfg  hosts
    [root@localhost ~]#
    [root@localhost ~]#
    [root@localhost ~]# cat /etc/ansible/hosts
    cat: /etc/ansible/hosts: 没有那个文件或目录
    [root@localhost ~]#
    [root@localhost ~]#
    [root@localhost ~]# ansible webserver -m ping
    [WARNING]: No inventory was parsed, only implicit localhost is available
    [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match
    'all'
    [WARNING]: Could not match supplied host pattern, ignoring: webserver
    [root@localhost ~]#
    [root@localhost ~]#
    [root@localhost ~]# ansible -i ./hosts  webserver -m ping
    
    

    恢复ansible/hosts

# mv ./hosts /etc/ansible/

6.Ad-Hoc-点对点模式

  • 简介

    临时的,在ansible中是指需要快速执行的单条命令,并且不需要保存的命令。对于复杂的命令则为 playbook。

    ansible在日常管理时所用的内部指令,比如创建用户、安装软件、启动服务等。此处为我们接下来第七部分做准备,这里学习的就是接下来编写剧本时所用的参数

  • 1.shell模块

    • 帮助

      ansible-doc shell

    • ansible webserver -m shell -a ‘hostname’ -o

      获取主机名

    • ansible webserver -m shell -a ‘hostname’ -o -f 2

      注释:

    • -f 2 指定线程数

      • f FORKS, --forks=FORKS Ansible一次命令执行并发的线程数。NUM被指定为一个整数,默认是5 specify number of parallel processes to use (default=5)

      • ansible host2 -m shell -a ‘yum -y install httpd’ -o

      • 部署apache

      • ansible host3 -m shell -a ‘uptime’ -o

        • 查询系统负载
  • 2.复制模块

    • 帮助

      • ansible-doc copy
    • 案例

ansible webserver -m copy -a ‘src=/etc/hosts dest=/tmp/2.txt owner=root group=bin mode=777’

如果文件没有改变,又进行拷贝,则不执行

如果文件改变了,进行了拷贝,加上backup='yes',会产生拷贝,同时对老的文件进行备份

如果文件有多份,可以进行备份。

[root@localhost ~]# ls /tmp/ 2.txt  2.txt.17037.2024-07-16@16:23:41~

  • 3.用户模块

    • 帮助

      ansible-doc user

    • 创建用户

      ansible webserver -m user -a 'name=laochen state=present'
      

      注释:

      state=present 在这里的作用是告诉 Ansible,如果用户 laochen不存在,则创建它;如果已存在,则不做任何更改。这种方式确保了配置的一致性和可重复性,符合 Ansible 的声明式配置管理特性。
      

      创建

    • 修改密码

      • 1.生成加密密码

        mkpasswd --method=SHA-512
        密码: //此处手动输入123456
        #下面是生成的加密后的密码
        $6$tu7bPJuzEcPfTSxo$MVLJdfTGdZv7RtJ70RCCHxxWDiR0EHo3epAfGRiVHTR27Z3lQ21Pw3aH00iz3KEBCjDlmbcIPJIDijkk1bFjd1
        
        

        无需用户交互的方式

        mkpasswd --method=SHA-512 --stdin <<< "1234"
        表示将1234生成加密密码
        
      • 2.修改密码

        • ansible webserver -m user -a ‘name=laochen password=“ 6 6 6tu7bPJuzEcPfTSxo$MVLJdfTGdZv7RtJ70RCCHxxWDiR0EHo3epAfGRiVHTR27Z3lQ21Pw3aH00iz3KEBCjDlmbcIPJIDijkk1bFjd1”’
      • 3.可通过ssh测试是否修改成功

        • 随便找一个host主机

          ssh laochen@host2
          laochen@host2's password:
          
          输入密码
          
          记得退出
          exit
          
    • 修改shell

      • ansible webserver -m user -a ‘name=laochen shell=/sbin/nologin append=yes’
        • apend=yes 表示追加
    • 删除用户

      • ansible webserver -m user -a ‘name=laochen state=absent’
        • 删除
        • state=absent 表示确保用户不存在,如果存在,删除,如果不存在,不执行操作
  • 4.软件包管理

    • 帮助

      • ansible-doc yum
    • ansible host1 -m yum -a ‘name=“*” state=latest’

      • 升级所有包
    • ansible host2 -m yum -a ‘name=“httpd” state=latest’

      • 安装apache
    • ansible host2 -m yum -a ‘name=“httpd” state=absent’

  • 5.服务模块

    • 帮助
      • ansible-doc service
    • ansible host2 -m service -a ‘name=httpd state=started’
      • 启动
    • ansible host2 -m service -a ‘name=httpd state=started enabled=yes’
      • 开机启动
    • ansible host2 -m service -a ‘name=httpd state=stopped’
      • 停止
    • ansible host2 -m service -a ‘name=httpd state=restarted’
      • 重启
    • ansible host2 -m service -a ‘name=httpd state=started enabled=no’
      • 开机禁止启动
  • 6.文件模块

    • 帮助

      • ansible-doc file
    • ansible host1 -m file -a ‘path=/tmp/88.txt mode=777 state=touch’

      • 创建文件
    • ansible host1 -m file -a ‘path=/tmp/99 mode=777 state=directory’

      • 创建文件夹
  • 7.收集模块

    用于收集目标主机的系统信息和配置

    • 帮助
      • ansible-doc setup
    • ansible host3 -m setup
      • 查询所有信息
    • ansible host3 -m setup -a ‘filter=ansible_all_ipv4_addresses’
      • 查看ipv4地址
  • 8.fetch

    • fetch 从远程某主机获取文件到本地

    • dest:用来存放文件的目录,例如存放目录为backup,源文件名称为/etc/profile ;那么在主机中,保存为/backup/master/etc/profile

    • src:在远程拉取的文件,并且必须是一个file,不能是目录。

    • 示例

      • # ansible host4 -m file -a ‘path=/root/a.txt state=touch’

        • host4创建a.txt
      • # ansible host4 -m fetch -a “src=/root/a.txt dest=/root/a.txt”

        或者

        # ansible host4 -m fetch -a “src=/root/a.txt dest=/root/”

      • 会在本地生成新的目录

        # tree  host4
        host4
        └── root
            └── a.txt
        
        
  • 9.cron

    • 语法

      • cron 管理crontab计划任务
      • action:cron backup= #如果设置,则创建一个crontab备份[yes|no]
      • cron_file= #如果指定,使用这个文件cron.d,而不是单个用户
      • day= #日应该运行的工作( 1-31, , /2, )
      • hour= #小时 ( 0-23, , /2, )
      • minute= #分钟( 0-145, , /2, )
      • month= #月( 1-12, *, /2, )
      • weekday= #周 ( 0-6 for Sunday-Saturday, )
      • job= #指明运行的命令是什么
      • name= #定时任务描述
      • reboot #任务在重启时运行,不建议使用,建议使用special_time
      • special_time #特殊的时间范围,参数:reboot(重启时),annually(每年),monthly(每月),weekly(每周),daily(每天),hourly(每小时)
      • state #指定状态,present表示添加定时任务,也是默认设置, absent表示删除定时任务
      • user #以哪个用户的身份执行
    • 示例

      • ansible host1 -m cron -a 'name=“sync time from ntpserver” minute=“*/10” job=“/sbin/ntpdate 192.168.145.145 &> /dev/null” ’

        • 每隔十分钟,从192.168.145.145中对照一次时间
      • host1:

        [root@localhost ~]# crontab -l
        no crontab for root
        [root@localhost ~]# crontab -l
        #Ansible: sync time from ntpserver
        */10 * * * * /sbin/ntpdate 192.168.229.59 &> /dev/null
        
      • 清除计划任务

         ansible host1 -m cron -a 'name="sync time from ntpserver" state=absent '   
        
  • 10.group

    • group 用户组模块,添加或删除组
    • gid   #设置组的GID号
    • name= #管理组的名称
    • state  #指定组状态,默认为创建,设置值为absent为删除,present创建
    • system  #设置值为yes,表示创建系统组
    • ansible host1 -m group -a ‘name=hhh state=present’
  • 11.script

    • 在指定节点运行服务端的脚本

    • 示例

      • 将服务器端上的脚本放在节点机器上运行

        # vim wan.sh
        #!/bin/bash
         date > /root/time.txt
        
      • # ansible host1 -m script -a “./wan.sh”

      • 去host1查看

        # ls
        anaconda-ks.cfg  time.txt
        # cat time.txt
        2024年 07月 17日 星期三 09:53:11 CST
        
        
  • 12.unarchive

    • 解压缩

    • 默认情况下,此模块会将本地压缩包拷贝到远程机器上解压,当设置了remote_src=yes选项表示解压远程主机上的压缩包

    • ​ 相关选项:

    • ​ src: 必选项, 要解压的包名

    • ​ dest: 必选项, 解压到哪个目录下

    • ​ remote_src:

    • ​ yes: 解压远程主机上的包

    • ​ no: 将管理机上的包传到远程主机上解压

      tar -jcf 1.tar /etc
      ansible host1 -m unarchive -a 'src=/root/1.tar dest=/tmp/'
      

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

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

相关文章

基于区块链技术的中药饮片代煎配送服务与监管平台

业务背景 近年来&#xff0c;随着公众对中医药青睐有加&#xff0c;中药代煎服务作为中医药现代化的重要一环&#xff0c;在全国各地蓬勃兴起。鉴于传统煎煮方式的繁琐耗时&#xff0c;医疗机构纷纷转向与第三方中药饮片企业合作&#xff0c;采用集中代煎模式。这些第三方煎药中…

【数据结构】链表(单链表实现 + 详解 + 原码)

&#x1f387;&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳&#xff0c;欢迎大佬指点&#xff01; 人生格言: 当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友…

uni-app AppStore Connect上传拒绝汇总

1.Guideline 2.3.3 - Performance - Accurate Metadata 问题是图片不对&#xff0c;最好是自己截图&#xff0c;然后用香蕉云编 上传图片合成图片 2.Guideline 5.1.2 - Legal - Privacy - Data Use and Sharing 解决办法&#xff1a;在uniapp manifest.json找到 APP常用其他…

LabVIEW汽车动态信号模拟系统

随着汽车工业的快速发展&#xff0c;对汽车电子控制单元&#xff08;ECU&#xff09;的测试与仿真需求日益增加。开发了一种基于LabVIEW软件开发的汽车动态信号模拟系统&#xff0c;该系统能有效模拟ECU在实车环境下的工作状态&#xff0c;为ECU的开发和测试提供了一个高效、经…

react中如何mock数据

1.需求说明 因为前后端分离开发项目&#xff0c;就会存在前端静态页面写好了&#xff0c;后端数据接口还没写好&#xff1b;这时候前端就需要自己定义数据来使用。 定义数据有三种方式&#xff1a;直接写死数据、使用mock软件、json-server工具 这里讲解通过json-server工具…

C# 匿名函数与Lambda表达式

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 1.匿名函数 在 C# 中&#xff0c;匿名函数是一种没有名称的函数&#xff0c;可以直接在代码中定义和使用 匿名函数主要有两种形式&#xff1a;匿名方法和Lambda 表…

Jetpack Compose多页面跳转示例

示例&#xff1a; 使用Jetpack Compose开发android,实现功能&#xff1a;第1个界面有一个文本输入框输入消费金额&#xff0c;下面有个确定按钮&#xff0c;点击确定按钮后跳转到第2个界面&#xff0c;显示你的消费金额是XX,这个金额来自第1个界面的输入。 实操 使用 Jetpack …

C语言实现顺序结构二叉树-堆

文章目录 &#x1f3af;引言&#x1f453;C语言实现顺序结构二叉树-堆1.树的概念与结构1.1概念与结构1.2树的相关术语 2.二叉树2.1概念与结构2.2特殊的二叉树2.2.1满二叉树2.2.2完全二叉树 3.二叉树的存储结构3.1顺序存储3.2链式存储 4.堆的实现4.1堆的概念与结构4.2向上调增算…

AI+HPC 部署优化面试范围分享

背景 最近几年生成式AI技术和自动驾驶技术发展发展很快&#xff0c;这些行业对于算法的运行效率有很高的要求&#xff0c;尤其一个模型在训练完成后运行到设备上&#xff0c;需要大量的工作&#xff0c;包括模型的剪枝、蒸馏、压缩、量化、算子优化、系统优化等。 对于传统的…

浏览器的最大并发数(http1.1)

HTTP/1.1&#xff1a;每个资源请求通常需要单独的TCP连接&#xff0c;尽管支持Keep-Alive机制&#xff0c;允许在同一个TCP连接上连续发送多个请求。但通常浏览器限制并发TCP连接数&#xff08;例如&#xff0c;每个域名最多6个并发连接&#xff09;。 HTTP/2&#xff1a;引入…

C++:函数对象和函数调用运算符(函数、函数指针、lambda函数对象、bind创建的对象、重载了函数调用符的类对象)

函数对象和函数调用运算符 A.What&#xff08;函数对象&#xff09; 如果类定义了函数调用运算符&#xff0c;则该类的对象称为函数对象 其中重载的运算符operator()被称为函数调用运算符 B.Which&#xff08;有哪些可调用函数对象&#xff09; 函数&#xff1a;一般函数&…

UE4-打包游戏,游戏模式,默认关卡

一.打包游戏 注意windows系统无法打包苹果系统的执行包&#xff0c;只能使用苹果系统打包。 打包完之后是一个.exe文件。 打包要点&#xff1a; 1.确定好要操控的角色和生成位置。 2.设置默认加载的关卡和游戏模式。 在这个界面可以配置游戏的默认地图和游戏的模式&#xff0c;…

springboot+webSocket对接chatgpt

webSocket对接参考 话不多说直接上代码 WebSocket package com.student.config;import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType; import org.springfram…

C#知识|账号管理系统:实现修改管理员登录密码

哈喽,你好啊,我是雷工! 本节主要记录实现修改管理员登录密码的后端逻辑及相关功能,以下为学习笔记。 01 实现逻辑 ①:首先输入原密码,验证,验证通过然后可以输入新密码进行修改; ②:新密码修改为了避免输入失误导致输入的密码与自己以为修改的密码不符的情况,增加了…

Langchain核心模块与实战[7]:专业级Prompt工程调教LLM[输入输出接口、提示词模板与例子选择器的协同工程]

Langchain核心模块与实战[7]:专业级Prompt工程调教LLM[输入输出接口、提示词模板与例子选择器的协同工程] 1. 大模型IO接口 任何语言模型应用的核心元素是…模型的输入和输出。LangChain提供了与任何语言模型进行接口交互的基本组件。 提示 prompts : 将模型输入模板化、动态…

**卷积神经网络典型CNN**

LeNet&#xff1a;最早用于数字识别的CNN AlexNet&#xff1a;2012年ILSVRC比赛冠军&#xff0c;远超第二名的CNN&#xff0c;比LeNet更深&#xff0c;用多层小卷积叠加来替换单个的大卷积 ZF Net&#xff1a;2013ILSVRC冠军 GoogleNet&#xff1a;2014ILSVRC冠军 VGGNet&a…

go语言Gin框架的学习路线(十一)

目录 GORM的CRUD教程 更新操作 更新所有字段 更新指定字段 使用 Select 和 Omit 更新 无 Hooks 更新 批量更新 删除操作 删除记录 批量删除 软删除 物理删除 示例代码 GORM的CRUD教程 CRUD 是 "Create, Read, Update, Delete"&#xff08;创建、查询、…

百度,有道,谷歌翻译API

API翻译 百度&#xff0c;有道&#xff0c;谷歌API翻译&#xff08;只针对中英相互翻译&#xff09;,其他语言翻译需要对应from&#xff0c;to的code 百度翻译 package fills.tools.translate; import java.util.ArrayList; import java.util.HashMap; import java.util.Lis…

windows服务器启动apache失败,提示请通过cmd命令行启动:net start apache

Windows Server 2012 R2服务器突然停止运行apche&#xff0c;启动apache失败&#xff0c;提示请通过cmd命令行启动:net start apache 1.报错截图&#xff1a; 进入服务里输入命令启动也不行&#xff0c;提示由于登录失败而无法启动服务。 2.问题原因&#xff1a; 服务器www用…

数据库(MySQL)-DQL数据查询语言

DQL(Data Query Language 数据查询语言)的用途是查询数据库数据&#xff0c;如select语句。其中&#xff0c;可以根据表的结构和关系分为单表查询和多表联查。 单表查询 单表查询&#xff1a;针对数据库中的一张数据表进行查询 全字段查询 语法&#xff1a;select 字段名 fro…