• [技术干货] Centos搭建KMS(vlmcsd)激活服务器的步骤【转】
    概述:kms: Kms(Key Management Service): 是微软官方认可的一种系统激活方式。这个激活方式主要用于企业批量激活计算机的windows和officevlmcsd:vlmcsd:'vlmcsd'是一个开源项目,它是一个 KMS(Key Management Service)的仿真器。KMS 是 Microsoft 为批量激活 Windows 和 Office 产品提供的服务,而 'vlmcsd' 则可以模拟这种服务。 具体来说,vlmcsd 可以接受kms请求并返回激活数据,这使得你可以在没有直接从 microsoft 获取授权的情况下激活windows 或office。具体步骤1、下载vlmcsd进行配置12345678910111213141516171819202122232425262728wget  https://github.com/Wind4/vlmcsd/releases/download/svn1113/binaries.tar.gz   #下载vlmcsd压缩包 tar  xf  binaries.tar.gz   #解压到当前目录 cp /root/binaries/Linux/intel/static/vlmcsd-x64-musl-static  /usr/bin/kms  #将vlmcsd复制到/usr/bin目录下,并更名为kms /usr/bin/kms       #运行kms ps -ef |grep kms   #查看kms是否运行 ss -lntup | grep kms #查看kms端口是否正常 vi /usr/lib/systemd/system/kms.service  #创建服务文件,方便通过systemctl管理 ​ ############################################################ [Unit] Description=KMS Server By vlmcsd After=network.target [Service] Type=forking PIDFile=/run/kms.pid ExecStart=/usr/bin/kms -p /run/kms.pid ExecStop=/bin/kill -HUP $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target ############################################################ ​ pkill kms  #结束kms进程 systemctl daemon-reload   #重新加载配置文件    systemctl  enable kms.service #设置开机自启 systemctl  start  kms.service #启动服务 ps -ef |grep kms   #查看kms是否运行 ss -lntup | grep kms #查看kms端口是否正常2、防火墙放行端口,关闭selinux12345setenforce  0  #临时关闭selinux firewall-cmd --zone=public --add-port=1688/tcp --permanent #永久放行1688端口 firewall-cmd --reload #防火墙配置重新加载 #直接关闭防火墙也可以 systemctl stop firewalld3、在window10上进行测试123456789101112#以管理员身份运行cmd C:\Windows\system32> slmgr /upk  | slmgr /skms 10.0.0.55 | slmgr /ipk NPPR9-FWDCX-D2C8J-H872K-2YT43 | slmgr /ato     (Windows10企业版)            # /upk:卸载秘钥            # /skms:设置kms服务器的地址或域名            # /ipk:安装(指定)密钥            # /ato:执行激活 #查看激活信息的cmd命令 C:\Windows\system32> slmgr /xpr     #查看激活后的到期时间 ​ C:\Windows\system32> slmgr /dli     #查看详细激活信息 ​ C:\Windows\system32>slmgr /dlv      #查看详细的产品密钥许可信息
  • [技术干货] 【Linux】Centos7 shell实现MySQL5.7 tar 一键安装-转载
     一、安装下载  下载地址:  https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.44-el7-x86_64.tar.gz  脚本和tar包结构   my.cnf 配置文件  [root@windp-aio opt]# cat config/my.cnf  [mysql] socket=/var/lib/mysql/mysql.sock # set mysql client default chararter default-character-set=utf8   [mysqld] socket=/var/lib/mysql/mysql.sock # set mysql server port   port = 3306 # set mysql install base dir basedir=/usr/local/mysql # set the data store dir datadir=/usr/local/mysql/data # set the number of allow max connnection max_connections=200 # set server charactre default encoding character-set-server=utf8 # the storage engine default-storage-engine=INNODB lower_case_table_names=1 max_allowed_packet=16M explicit_defaults_for_timestamp=true [mysql.server] user=mysql basedir=/usr/local/mysql  二、执行安装 install_mysql.sh 安装脚本  #! /bin/bash # # Author: kangll # CreateTime: 2023-11-10 # Desc: install mysql5.7.44 # echo "******** INSTALL MYSQL *********"   BASEDIR=$(cd "$(dirname "$0")"; pwd)   # 卸载原有的mariadb OLD_MYSQL=`rpm -qa|grep mariadb` profile=/etc/profile for mariadb in $OLD_MYSQL do     rpm -e --nodeps $mariadb done   # 删除原有的my.cnf rm -rf /etc/my.cnf   #添加用户组 用户 groupadd mysql useradd -g mysql mysql   #解压mysql包并修改名称 tar -zxvf  $BASEDIR/mysql-5.7.44-el7-x86_64.tar.gz -C /usr/local mv /usr/local/mysql-5.7.44-el7-x86_64 /usr/local/mysql   #更改所属的组和用户 chown -R mysql /usr/local/mysql chgrp -R mysql /usr/local/mysql   mkdir -p /usr/local/mysql/data mkdir -p /usr/local/mysql/log chown -R mysql:mysql /usr/local/mysql/data   #粘贴配置文件my.cnf 内容见八 中的 my.cnf cp $BASEDIR/config/my.cnf /usr/local/mysql/   # 安装mysql /usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/   # 设置文件及目录权限: cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chown 777 /usr/local/mysql/my.cnf chmod +x /etc/init.d/mysqld   mkdir /var/lib/mysql chmod 777  /var/lib/mysql   # 启动mysql /etc/init.d/mysqld start   # 设置开机启动 chkconfig --level 35 mysqld on chmod +x /etc/rc.d/init.d/mysqld chkconfig --add mysqld   # 修改环境变量  ln -s /usr/local/mysql/bin/mysql /usr/bin ln -s /var/lib/mysql/mysql.sock   /tmp/ cat > /etc/profile.d/mysql.sh<<EOF   export PATH=$PATH:/usr/local/mysql/bin EOF mysqlPw=`sed -n 2p /root/.mysql_secret` mysqlPwTMP=`sed -n 2p /root/.mysql_secret`1 mysqlNewPw=Winner001 hostname=`"hostname"` #ssh $hostname "source /etc/profile;java -version" ssh $hostname "source /etc/profile;mysqladmin -h127.0.0.1 -uroot -p'$mysqlPw' password '$mysqlPwTMP';mysqladmin -h127.0.0.1 -uroot -p'$mysqlPwTMP' password '$mysqlNewPw';exit"     echo "******** MYSQL installation completed *******  执行完脚本 成功登录   ssh 操作需要免密 附上 本机免密脚本 ssh_keygen.sh  #! /bin/bash # #Author: kangll #CreateTime: 2023-11-10 #Desc: 本机免密 # set -x # get ip  ip=$(ip addr show | grep -E 'inet [0-9]' | awk '{print $2}' | awk -F '/' '{print $1}' | sed -n '$p') ssh_hosts=${ip} ssh_networkname=(windp-aio) ssh_passwd=winner@001   # 定义修改/etc/hosts文件的方法 #echo "开始修改地址映射"   #for ((i=0;i<${#ssh_hosts[*]};i++));do #    sed -i '/^'"${ssh_hosts[$i]}"'/d' /etc/hosts #    echo "尝试连接: ${ssh_networkname[$i]}" #    timeout 5 ssh root@${ssh_networkname[$i]} "echo ${ssh_networkname[$i]}: 'This is success!'" #    if [[ $? -ne 0 ]];then #        echo "添加地址映射:${ssh_hosts[$i]} ${ssh_networkname[$i]}" #        echo "${ssh_hosts[$i]} ${ssh_networkname[$i]}" >> /etc/hosts #    fi #done   expect -v if [ `echo $?` -ne 0 ];then     echo "安装expect命令"     yum install -y expect fi  ################################ # ################################ create_ssh_pub(){     echo "生成本地ssh公钥"     /usr/bin/expect << eof     # 设置捕获字符串后,期待回复的超时时间     set timeout 30           spawn ssh-keygen -t rsa -b 1024           ## 开始进连续捕获     expect    {         ".ssh/id_rsa)"      { send "\n";  exp_continue }         "Overwrite (y/n)?"  { send "y\n"; exp_continue }         "no passphrase):"   { send "\n";  exp_continue }         "passphrase again:" { send "\n";  exp_continue }     } eof } if [ ! -f /root/.ssh/id_rsa.pub ];then     create_ssh_pub fi   ################################# # 定义复制ssh公钥方法 ################################# config_copy_ssh(){     echo "复制公钥到对应的主机上"     /usr/bin/expect << eof     # 设置捕获字符串后,期待回复的超时时间     set timeout 30           spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $1@$2           ## 开始进连续捕获     expect    {         "connecting (yes/no)?" { send "yes\n";  exp_continue }         "s password:"          { send "${ssh_passwd}\n"; exp_continue }     } eof } for name in ${ssh_networkname[*]};do     timeout 5 ssh root@${name} "echo ${name}: 'This is success!'"     if [[ $? -ne 0 ]];then         echo "复制文件到: ${name}"         config_copy_ssh root ${name} > /dev/null     fi       ———————————————— 版权声明:本文为CSDN博主「阿龙先生啊」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_35995514/article/details/134350572 
  • [技术干货] selinux 是什么,centos7为什么要把这个默认禁掉
    SELinux(Security-Enhanced Linux)是美国国家安全局(NSA)对于强制访问控制的实现,是Linux历史上最杰出的新安全子系统。NSA在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。SELinux 是2.6版本的Linux内核中提供的强制访问控制(MAC)系统。对于可用的 Linux安全模块来说,SELinux 是功能最全面且测试最充分的,它是在20年的MAC研究基础上建立的。SELinux在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。大部分使用 SELinux 的人使用的都是 SELinux 就绪的发行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian或 Centos。它们都是在内核中启用 SELinux 的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用 SELinux 的功能。SELinux是一种基于域-类型模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他。SELinux提供了比传统的UNIX权限更好的访问控制。至于CentOS 7为什么要默认禁用SELinux,这可能是由于SELinux虽然提供了强大的安全功能,但是使用起来相对复杂,需要专门的管理员来配置和管理。对于一些小型的或者不需要额外安全保障的系统,使用默认的Linux权限可能就足够了,因此默认情况下可能会禁用SELinux。控制台里面输入 setenforce 0 可以关闭 selinux
  • [技术干货] CentOS_7.6_aarch64虚拟化组件libvirt升级
    由于CentOS 7.6系统libvirt-4.5.0存在bug,所以使用virt-manager时会触发一些报错,例如:Error polling connection 'qemu:///system':internal error: Socket 4314 can't be handled (max socket is 4095),如果一定要用 virt-manager操作,可按照以下所述安装升级libvirt 5.6.0版本。问题    已安装libvirt版本    ​    打开virt-manager后,界面提示“Error polling connection 'qemu:///system':internal error: Socket 4314 can't be handled (max socket is 4095)”的报错。    ​安装一、安装edk2    1) wget https://www.kraxel.org/repos/firmware.repo -O /etc/yum.repos.d/firmware.repo​    2)yum clean all && yum makecache    3)yum -y install edk2.git-aarch64    ​二、安装依赖包  yum -y install gluster* libxml2-devel readline-devel ncurses-devel libtasn1-devel gnutls-devel libattr-devel libblkid-devel augeas systemd-devel libpciaccess-devel yajl-devel sanlock-devel libpcap-devel libnl3-devel libselinux-devel dnsmasq radvd cyrus-sasl-devel libacl-devel parted-devel device-mapper-devel xfsprogs-devel librados2-devel librbd1-devel glusterfs-api-devel glusterfs-devel numactl-devel libcapng-devel fuse-devel netcf-devel libcurl-devel audit-libs-devel systemtap-sdt-devel nfs-utils dbusdevel scrub numad libcap-ng-devel dbus-devel​三、获取源码包    在线执行以下命令    wget https://libvirt.org/sources/libvirt-5.6.0-1.fc30.src.rpm --no-check-certificate​四、编译安装    1) 安装获取的源码包    rpm -ivh libvirt-5.6.0-1.fc30.src.rpm​    2) 编译生成rpm包    cd /root/rpmbuild/SPECS    rpmbuild -ba libvirt.spec​    3) 安装rpm包    cd /root/rpmbuild/RPMS/aarch64/​    yum -y install *.rpm4) 修改配置文件    在/etc/libvirt/QEMU.conf文件中添加以下内容    nvram = ["/usr/share/edk2.git/aarch64/QEMU_EFI-pflash.raw:/usr/share/edk2.git/aarch64/vars-template-pflash.raw"]​    5) 关闭SELinux(临时)    setenforce 0    6) 重启libvirtd服务    systemctl restart libvirtd.service五、验证环境    libvirtd --version    ​参考来源:https://www.cnblogs.com/lin-wang/p/15750165.html
  • [问题求助] 建议增加centos-stream镜像
    Centos Stream是Centos 8之后一个滚动发布的Linux发行版。在2021年年底,Centos 8将会停止维护,届时Centos Stream将作为RHEL的上游分支进行持续更新。在红帽开源开发模式中,红帽在发布红帽企业Linux新版本前,会先在CentOS Stream上开发红帽企业Linux源代码,使CentOS Stream成为红帽企业Linux未来版本的预览。建议增加Centos Stream镜像。官方主页: cid:link_0
  • [问题求助] 华为云有没有提供NTP服务器,怎样配置?_弹性云服务器 ECS_常见问题_网络配置_DNS与NTP配置类_华为云
    标记内容:执行以下命令,系统重新启动时启动服务。 对于Euler、CentOS操作系统: systemctl restart chronyd文档反馈:应为 “系统重新启动服务” 或 “系统重新启动时间服务” 页面链接:https://support.huaweicloud.com/ecs_faq/zh-cn_topic_0093971249.html?ticket=ST-8732331-STO44A0LPlaKtFSE6OmT67WQ-sso
  • [技术干货] 多级部署MySql数据库
      在日常运维工作中,当对服务器进行批量安装MySql数据库时,一台一台的安装将会浪费大量的时间、人力等资源、这时就需要用户进行多机部署MySql数据库,如下:vim mysql_install.sh#!/bin/bash#mysql install 2#by tianze#Yumrm -rf /etc/yum.repos.d/*wget ftp://172.16.8.100/yumrepo/CentOs 7.repo -p /etc/yum.repos.d/wget ftp://172.16.8.100/yumrepo/Mysql 157.repo -p /etc/yum.repos.d/yum -y install 1ftp vim-enhanced bash-completion#Firewalld &SeLinuxsystemctl stop firewalld; systemctl disable firewalldsetenforce 0; sed -ri '/^SELINUX/c\SELINUX=disabled'/etc/selinux/config#ntpyum -y install chronysed -ri '/3.centos/a\server 172.16.5.100 iburst ' /etc/chrony.confsystemctl start chronyd; systemctl enable chronyd#install mysql5.7yum -y install mysql-community-serversystemctl start mysqldsystemctl enable mysqldgrep 'temporary password '/var/log/mysql.log |awk '{print SNF}'>/root/mysqloldpass.txtmysqladmin ''-uroot-p'' cat /root/mysqloldpass.txt ''password''{Tianze123}  上述代码首先下载了yum源,安装vim工具,接着关闭防火墙和selinux、更新系统时间,然后开始安装MySQL数据库,代码是在一台机器上实现的部署Mysql。然而项目要求是堕胎机器实现部署Mysql,因此,使用shell循环实现多台服务器部署MYSQL,具体代码如下:vim ip.txt10.0.104.510.0.104.2710.0.104.3410.0.104.13610.0.104.108vim main.sh#!bin/bash#mainwhile read ipdo{ping -c 1-w 2$ip >/dev/nullif{$? -eq0};thenscp -r mysql_install.sh root@$ip:/tmp/ssh root@$ip ''/tmp/mysql_install.sh''}$done<ip.txtwaitecho "all finsh..."以上代码是针对ip.txt文件中的主机IP地址进行多级部署MySQL。首先是ping一下ip.txt 中的ip地址。判断机器是否正常,然后把安装mysql脚本复制到多台服务器上/tmp/下,远程使用管理员权限执行安装Mysql脚本。如果显示All finsh.... 则表示所有服务器安装已完成。
  • [技术干货] centos同步windows时间
    在 CentOS 中同步 Windows 时间,可以通过以下步骤进行操作: 在 Windows 操作系统上进行时间同步设置: 在 Windows 操作系统上,确保时间设置正确并与您期望的时间同步。 右键点击任务栏中的时间显示,选择"调整日期/时间"选项。 在打开的窗口中,确保日期、时间和时区等信息准确无误。 在 CentOS 中安装并配置 NTP 服务: 使用以下命令安装 NTP 服务:sudo yum install ntp 配置 NTP 服务器,编辑 /etc/ntp.conf 文件。 找到 "server" 行,并添加 Windows 时间服务器的 IP 地址或域名。例如:server windows_ntp_server 保存并关闭文件后,重启 NTP 服务:sudo systemctl restart ntpd 在 CentOS 中同步时间: 运行以下命令来手动同步时间:sudo ntpdate windows_ntp_server windows_ntp_server 是您在第2步中配置的 Windows 时间服务器的地址或域名。 您也可以使用 ntpdate 命令将其包含在定时任务中,以便定期自动同步时间。 完成上述步骤后,CentOS 系统的时间将被同步为 Windows 操作系统的时间。请注意,确保您的 CentOS 服务器能够访问 Windows 时间服务器,并且正确设置了防火墙规则以允许 NTP 通信。 
  • [技术干货] 获取服务器实时日志
    获取centos日志要在 CentOS 系统中获取实时日志,可以使用 tail 命令来查看日志文件的实时输出。例如,要查看系统日志文件 messages,可以使用以下命令:tail -f /var/log/messages 此命令将显示 messages 日志文件的实时输出,并且只有在日志文件中有新内容时才会更新输出。使用 ctrlC 组合键可以终止实时查看。获取tomcat日志如果要查看其他日志文件,只需将文件名替换为所需的日志文件名即可。例如,要查看 catalina.out 日志文件,可以使用以下命令:tail -f /opt/tomcat/logs/catalina.out同样,此命令将显示 catalina.out 日志文件的实时输出,并且只有在日志文件中有新内容时才会更新输出。使用 ctrlC 组合键可以终止实时查看。除了使用 tail 命令外,还可以使用其他命令来查看实时日志,例如 less、head、grep 等。具体使用哪个命令取决于需要查看的日志文件类型和需要查找的内容。打开日志文件查看,命令:cd /opt/apache-tomcat-8.0.30/log vi catalina.out可以使用如下快捷键进行操作?exception 查找日志的报错位置:q! 退出界面
  • [技术干货] CentOs7安装nginx【详细】-转载
     entOs7安装nginx 卸载nginx 先查看是否启动了 nginx 服务 ps -ef|grep nginx 出现这个则 nginx 没启动服务 出现这个则 nginx 启动了服务 如果 nginx 启动了服务,则需要先关闭 nginx 服务 【没启动就略过这一步】 kill 进程id 查看所有与 nginx 有关的文件夹 find / -name nginx 删除与 nginx 有关的文件夹 rm -rf file /usr/local/nginx* 卸载Nginx相关的依赖 yum remove nginx 1 这样就卸载完成了  安装nginx 查看安装nginx所需要的环境  #查看 C++ 环境是否安装(查看版本号) gcc -v #查看 zlib 是否安装 cat /usr/lib64/pkgconfig/zlib.pc #查看 pcre 是否安装(查版本号) pcre-config --version 配置 nginx 安装所需的环境  #一次安装4个插件 yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel  #一次安装如果有问题,可以试一下分开安装(上面命令执行成功了就无需执行以下命令了)      #安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境 yum install gcc-c++      #pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库 yum install -y pcre pcre-devel      #zlib库提供了很多种压缩和解压缩方式nginx使用zlib对http包的内容进行gzip,所以需要安装 yum install -y zlib zlib-devel      #nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库 yum install -y openssl openssl-devel 安装 nginx  方法一:在官网直接下载.tar.gz安装包,然后通过远程工具拉取到 linux 里面【在 /usr/local 里面创建个nginx文件夹,拉进来。(也可以拉到其他地方)】 方法二:使用wget命令下载,确保系统已经安装了wget,如果没有安装,执行 yum install wget 安装。 这里使用方法二进行安装: 进入 usr/local 里面创建 nginx 文件夹,方便后期删除干净 #进入usr下的local目录 cd usr/local #在local目录下创建 mysql 文件夹 mkdir nginx #进入nginx目录 cd nginx 通过 wget 下载 nginx 安装包  wget https://nginx.org/download/nginx-1.21.6.tar.gz 1  解压 并进入解压后的目录  #解压 tar xvf nginx-1.21.6.tar.gz #进入解压后的目录 cd nginx-1.21.6 配置(带有https模块)【需要进入解压后的目录】 ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module 编译和安装【需要进入解压后的目录】  #编译 make #安装 make install 启动、关闭 nginx 服务  ###启动服务 #需要先进入sbin目录下 cd /usr/local/nginx/sbin #启动nginx服务 ./nginx ###关闭服务 #需要先进入sbin目录下 cd /usr/local/nginx/sbin #关闭nginx服务 ./nginx -s stop 到这里 nginx 就安装完成了  其他命令  ####端口号操作 #查询开启的所有端口 firewall-cmd --list-port #设置80端口开启 firewall-cmd --zone=public --add-port=80/tcp --permanent #验证80端口是否开启成功 (单个端口查询) firewall-cmd --zone=public --query-port=80/tcp #设置80端口关闭 firewall-cmd --zone=public --remove-port=80/tcp --permanent  ####防火墙操作 #检查防火墙是否开启 systemctl status firewalld #开机自启防火墙 systemctl enable firewalld #开机禁止自启防火墙 systemctl disable firewalld #启动 systemctl start firewalld #关闭 systemctl stop firewalld #重启 firewall-cmd --reload 文章知识点与官方知识档案匹配,可进一步学习相关知识 ———————————————— 版权声明:本文为CSDN博主「小二,,来杯咖啡」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_45316925/article/details/128957728 
  • [内容拦截申诉] 【博客】图文并茂!手把手教你在VMware中的安装部署Linux-CentOS7.4
    发帖正文:内容所属频道:博客内容标题名称:图文并茂!手把手教你在VMware中的安装部署Linux-CentOS7.4内容链接: https://bbs.huaweicloud.com/blogs/397475审核未通过,麻烦帮忙看看什么原因,如何修改
  • [其他] centos启动jar脚本
    #!/bin/bash # 应用名APP_NAME=application # 应用端口APP_PORT=8081 # 应用健康检查URLHEALTH_CHECK_URL=http://127.0.0.1:${APP_PORT}/v2/api-docs # jar所在的根目录APP_HOME=/home/admin/${APP_NAME} # jar的绝对路径JAR_NAME=${APP_HOME}/api-0.0.1-SNAPSHOT.jar #应用的启动日志JAVA_OUT=${APP_HOME}/logs/start.log PROG_NAME=$0ACTION=$1APP_START_TIMEOUT=20 # 等待应用启动的时间 # 创建出相关目录mkdir -p ${APP_HOME}mkdir -p ${APP_HOME}/logsusage() { echo "Usage: $PROG_NAME {start|stop|restart}" exit 2} health_check() { exptime=0 echo "checking ${HEALTH_CHECK_URL}" while true do status_code=`/usr/bin/curl -L -o /dev/null --connect-timeout 5 -s -w %{http_code} ${HEALTH_CHECK_URL}` if [ "$?" != "0" ]; then echo -n -e "\rapplication not started" else echo "code is $status_code" if [ "$status_code" == "200" ];then break fi fi sleep 1 ((exptime++)) echo -e "\rWait app to pass health check: $exptime..." if [ $exptime -gt ${APP_START_TIMEOUT} ]; then echo 'app start failed' exit 1 fi done echo "check ${HEALTH_CHECK_URL} success"}start_application() { echo "starting java process" nohup java -jar ${JAR_NAME} > ${JAVA_OUT} 2>&1 & echo "started java process"} stop_application() { checkjavapid=`ps -ef | grep java | grep ${APP_NAME} | grep -v grep |grep -v 'deploy.sh'| awk '{print$2}'` if [[ ! $checkjavapid ]];then echo -e "\rno java process" return fi echo "stop java process" times=60 for e in $(seq 60) do sleep 1 COSTTIME=$(($times - $e )) checkjavapid=`ps -ef | grep java | grep ${APP_NAME} | grep -v grep |grep -v 'deploy.sh'| awk '{print$2}'` if [[ $checkjavapid ]];then kill -9 $checkjavapid echo -e "\r -- stopping java lasts `expr $COSTTIME` seconds." else echo -e "\rjava process has exited" break; fi done echo ""}start() { start_application health_check}stop() { stop_application}case "$ACTION" in start) start ;; stop) stop ;; restart) stop start ;; *) usage ;;esac
  • [问题求助] 华为云 鲲鹏服务器(CPU 鲲鹏920) 安装KAEZIP zlib加速库 失败(虚拟文件系统下 没有 对应的加速器设备)
    通过 https://www.hikunpeng.com/document/detail/zh/kunpengaccel/compress/devg-kaezip/kunpengaccel_kaezip_0007.html 进行操作,虚拟文件系统下 没有 对应的加速器设备,kaezip_perf 测试的压缩速度 也没到预期。
  • [技术干货] CentOS Docker 安装
    CentOS Docker 安装 Docker 支持以下的 64 位 CentOS 版本:CentOS 7 CentOS 8 更高版本... 使用官方安装脚本自动安装 安装命令如下:curl -fsSL cid:link_4 | bash -s docker --mirror Aliyun 也可以使用国内 daocloud 一键安装命令:curl -sSL cid:link_3 | sh 手动安装 卸载旧版本 较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。$ sudo yum remove dockerdocker-clientdocker-client-latestdocker-commondocker-latestdocker-latest-logrotatedocker-logrotatedocker-engine 安装 Docker Engine-Community 使用 Docker 仓库进行安装 在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。设置仓库安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。$ sudo yum install -y yum-utilsdevice-mapper-persistent-datalvm2 使用以下命令来设置稳定的仓库。使用官方源地址(比较慢) $ sudo yum-config-manager--add-repocid:link_2 可以选择国内的一些源地址:阿里云 $ sudo yum-config-manager--add-repocid:link_1 清华大学源 $ sudo yum-config-manager--add-repocid:link_0 安装 Docker Engine-Community 安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:$ sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin 如果提示您接受 GPG 密钥,请选是。有多个 Docker 仓库吗?如果启用了多个 Docker 仓库,则在未在 yum install 或 yum update 命令中指定版本的情况下,进行的安装或更新将始终安装最高版本,这可能不适合您的稳定性需求。Docker 安装完默认未启动。并且已经创建好 docker 用户组,但该用户组下没有用户。要安装特定版本的 Docker Engine-Community,请在存储库中列出可用版本,然后选择并安装:1、列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序。$ yum list docker-ce --showduplicates | sort -rdocker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable 2、通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1。$ sudo yum install docker-ce- docker-ce-cli- containerd.io 启动 Docker。$ sudo systemctl start docker 通过运行 hello-world 镜像来验证是否正确安装了 Docker Engine-Community 。$ sudo docker run hello-world 卸载 docker 删除安装包:yum remove docker-ce 删除镜像、容器、配置文件等内容:rm -rf /var/lib/docker
  • [技术干货] openGauss数据库在CentOS上的安装实践
    1. 安装前准备安装数据库前先要有已安装centOS 7.6的服务器+数据库安装包。首先找小伙伴申请了华为云ECS服务器安装好了OS,这里使用的是x86_64+centos。  华为云服务器现在可是很划算呢,安装也很方便。[root@pekphisprb70593 ~]# cat /etc/os-release NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:7" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/" CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7"通过软件包 | openGauss登录openGauss开源社区,选择3.0.0版本对应平台企业版安装包。我用的centos_x86_64,安装包下载到本地。文件名:openGauss-3.0.0-CentOS-64bit-all.tar.gz。2. python3准备centos自带的python是python2,不符合官方文档要求。(实际也确实不能支撑openGauss安装,我已经试过了)而且官方文档只写了要求有python3,并没有详细的说明要怎么装,所以就对一些新手不太友好。centos要求python只能是3.6.X,而不是及以上,也就是不能用3.7。我这里用的3.6.15。Python3安装还依赖zlib。所以无论在线还是离线安装都需要先把zlib相关安装完成。如果服务器可以直接连到互联网yum源或者自己公司的yum源 ,就可以参考在线版安装。否则使用离线安装。 2.1 在线版安装这里要求服务器可以直接连到互联网用yum 或者wget,或者配置了代理。安装依赖包,有些可能系统自带,没关系。yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel完成后会提示“Complete!”下载python安装包。wget https://www.python.org/downloads/release/python-3615/因为下载很慢,也可以先去python官网 https://www.python.org/downloads/release/python-3615/下载一个新版本到本地再上传到服务器。解压然后安装python3.6。make编译时间比较长,耐心等待,满屏的输出陪着你。tar -zxvf Python-3.6.15.tgz cd Python-3.6.15/ ./configure --prefix=/usr/local/python3 --enable-shared make make install最后提示Successfully就说明安装成功了。         但是,注意此时还需要设置下OS上python的软连接。其中,/usr/local/python3/需要替换为你自己python安装包的实际路径,就是上面./configure的路径。如果是按照           我的指导做的就不用改。ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3 ln -s /usr/local/python3/lib/libpython3.6m.so.1.0 /usr/lib64/ export LD_LIBRARY_PATH=/usr/local/python3/lib:$LD_LIBRARY_PATH到这里在centos上安装python3.6就完成了。2.2 离线版安装由于有时需要在公司内网安装,服务器直接下载不方便,什么 yum 、wget 统统不可用。只能去官网下载软件到windows然后上传linux后安装。[root@pekphisprb70593 software]# rpm -qa|grep zlib zlib-1.2.7-18.el7.x86_64所以我机器上自带了1.2.7版本,需要安装1.2.7版本的zlib-devel。自己去搜一个对应版本的上传到服务器上。rpm -ivh zlib-devel-1.2.7-18.el7.x86_64.rpm 剩下的就是按照在线版中说的,将python安装包下载本地后上传,执行与在线版相同的安装和配置动作即可。3. 修改操作系统配置目前仅支持在防火墙关闭的状态下进行安装。修改/etc/selinux/config文件中的“SELINUX”值为“disabled”。使用VIM打开config文件。vi /etc/selinux/config查看“SELINUX”的值是否为“disabled”。是的话直接下一步。不是的话修改“SELINUX”的值“disabled”,执行:wq保存并退出修改,然后reboot重启。检查防火墙是否关闭。若防火墙状态显示为inactive (dead),直接下一步。systemctl status firewalld若防火墙状态显示为active (running),则表示防火墙未关闭,请关闭防火墙。systemctl disable firewalld.service systemctl stop firewalld.service将各数据库节点的字符集设置为相同的字符集,可以在/etc/profile文件中添加“export LANG=en_US.UTF-8”(也可以设置成GBK,看你习惯用啥)。使用swapoff -a命令将交换内存关闭。修改/etc/systemd/logind.conf的“RemoveIPC”的值“no”,前面的#也删掉。    6.重新加载参数并检查。[root@pekphisprb70594 ~]# systemctl daemon-reload [root@pekphisprb70594 ~]# systemctl restart systemd-logind7.执行ifconfig命令查询服务器的网卡名称。默认一般就是对的。如下图所示,服务器IP为10.244.53.173,则该服务器的网卡名称为eth0。对于X86,官方文档MTU值推荐1500。设置root用户远程登录vim打开配置文件/etc/ssh/sshd_config。查看PermitRootLogin配置是否为yes,表示允许用户远程登录。在Banner XXX 前面加 #,注释掉欢迎语。重启sshd服务。[root@pekphisprb70596 openGauss]# systemctl restart sshd.service在其他服务器上执行上面的步骤。4. 配置文件cluster_config.xml准备从安装文档示例中,把主机名pekphisprb70593和IP 10.x.x.x替换成自己实际使用的值。保存到文件,文件名为cluster_config.xml。下面是修改后的内容。注意编码格式,我用notepad++ 可以看到编码格式为UTF-8。新手建议Windows上修改完再上传服务器。<?xml version="1.0" encoding="UTF-8"?> <ROOT> <!-- openGauss整体信息 --> <CLUSTER> <PARAM name="clusterName" value="opengSingle" /> <PARAM name="nodeNames" value="pekphisprb70593" /> <PARAM name="gaussdbAppPath" value="/opt/huawei/install/app" /> <PARAM name="gaussdbLogPath" value="/var/log/omm" /> <PARAM name="tmpMppdbPath" value="/opt/huawei/tmp" /> <PARAM name="gaussdbToolPath" value="/opt/huawei/install/om" /> <PARAM name="corePath" value="/opt/huawei/corefile" /> <PARAM name="backIp1s" value="10.x.x.x"/> </CLUSTER> <!-- 每台服务器上的节点部署信息 --> <DEVICELIST> <!-- node1上的节点部署信息 --> <DEVICE sn="pekphisprb70593"> <PARAM name="name" value="pekphisprb70593"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="10.x.x.x"/> <PARAM name="sshIp1" value="10.x.x.x"/> <!--dbnode--> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="15400"/> <PARAM name="dataNode1" value="/opt/huawei/install/data/dn"/> <PARAM name="dataNode1_syncNum" value="0"/> </DEVICE> </DEVICELIST> </ROOT>5. 安装及验证这一步基本上就是按照产品文档进行安装的了,没啥好说的。以root用户登录待安装openGauss的任意主机,并按规划创建存放安装包的目录。mkdir -p /opt/software/openGauss chmod 755 -R /opt/software将安装包“openGauss-3.0.0-CentOS-64bit-all.tar.gz”和配置文件“cluster_config.xml”都放到上一步所创建的/opt/software/openGauss目录中。解压安装包。cd /opt/software/openGauss tar -zxvf openGauss-3.0.0-CentOS-64bit-all.tar.gz tar -zxvf openGauss-3.0.0-CentOS-64bit-om.tar.gz进入script执行预安装命令。我采用的是交互式,所以需要在中间提示的时候输入密码。安装时长大概一两分钟。[root@opengauss1 openGauss]# cd script/ [root@opengauss1 script]# ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml Parsing the configuration file. Successfully parsed the configuration file. Installing the tools on the local node. Successfully installed the tools on the local node. Are you sure you want to create trust for root (yes/no)?yes Please enter password for root Password: Successfully created SSH trust for the root permission user. Setting host ip env ... ... Fixing server package owner. Setting finish flag. Successfully set finish flag. Preinstallation succeeded. 切换到omm用户,使用gs_install安装openGauss。中间根据提示输入要设置的数据库密码,大概两三分钟的样子。[root@pekphisprb70593 script]# su - omm Last login: Wed Jul 6 09:17:01 CST 2022 [omm@pekphisprb70593 ~]$ gs_install -X /opt/software/openGauss/cluster_config.xml Parsing the configuration file. Check preinstall on every node. Successfully checked preinstall on every node. Creating the backup directory. Successfully created the backup directory. begin deploy.. Installing the cluster. ... Please enter password for database: Please repeat for database: ... Configuration is completed. Successfully started cluster. Successfully installed application. end deploy..检查下数据库状态,state都是Normal就可以。[omm@opengauss1 dn]$ gs_om -t status --detail 现在试一下连接。[omm@opengauss1 om]$ gsql -d postgres -p 15400 gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:19 commit 0 last mr ) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. openGauss=# CREATE DATABASE mydb WITH ENCODING 'GBK' template = template0; CREATE DATABASE openGauss=# openGauss=# \q安装到此结束。6. 可能遇到的问题Python安装 make install提示zipimport.ZipImportError:can't decompress data;zlib not available。tar -zxvf Python-3.6.15.tgz cd Python-3.6.15/ ./configure prefix=/usr/local/python3 make make install然后这里报错了,提示zlib没有,解压不了数据。这种一般是没有装zlib-devel。可以用yum的话执行 yum -y install zlib-devel 装一下。只能离线装的话就按照本文离线版安装章节解决下。PS:这里我搜了很多资料,因为没有配置yum,只能离线方式安装。开始按照zlib-xxx.tar.gz安装然后编译,结果安装python一直提示上面的错,还以为是zlib配置的不对,后来尝试了zlib-devel的其他版本也不可。遇到相同问题的人避开这个坑。openGauss执行./preinstall时报错提示“Unable to import module: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory.”是python配置没弄好。       解决办法:       找到这个文件,写到python配置文件里。[root@pekphisprb70593 script]# find / -name libpython3.6m.so.1.0 /usr/local/python3/lib/libpython3.6m.so.1.0 /opt/Python-3.6.15/libpython3.6m.so.1.0 [root@pekphisprb70593 script]# cd /etc/ld.so.conf.d/在这个路径下新建python3.conf,里面写入libpython3.6m.so.1.0的上一层目录,我这里找到两条,写一条就好了,比如/usr/local/python3/lib,然后保存退出。执行下面这个重新加载下。[root@pekphisprb70593 ld.so.conf.d]# ldconfig再重新执行步骤4  ./gs_preinstall那条命令就可以了。