关于centos7:Linux资源文件数修改

一 查看文件以后状态ulimit -a二 查看某个过程的资源限度cat /proc/{{pid}}/limits三 批改配置3.1 一般服务批改cat <<EOF>>/etc/security/limits.conf* soft nofile 65535* hard nofile 65535* soft nproc 4096* hard nproc 4096EOF3.2 零碎服务批改下面这种形式可能不实用版本较高的Centos服务器systemd启动的服务,须要批改以下两个配置文件 /etc/systemd/system.conf 全局实例读取/etc/systemd/user.conf 用户过程读取cat <<EOF>>/etc/systemd/system.confDefaultLimitCORE=infinityDefaultLimitNOFILE=65535DefaultLimitNPROC=65535EOF加载配置 systemctl daemon-reload

March 4, 2024 · 1 min · jiezi

关于centos7:Centos7-系列磁盘挂载和磁盘扩容新加硬盘方式

@TOC 一、零碎环境操作系统:Centos 7已配置环境:空 二、磁盘挂载到新目录(磁盘挂载)2.1 查找新硬盘查看机器所挂硬盘及分区状况: fdisk -l红框圈中的即是本次要挂载的磁盘,与 /dev/sda 和 /dev/sdb 相比,其没有下方的 /dev/sda1 等信息,代表 /dev/sdc 磁盘并没有进行过分区操作,是一个新加的硬盘。 红框中的信息解释: 1、【Disk /dev/sdc 】: 硬盘名称2、【10.7 GB】:硬盘大小,不过这个数字并不准确3、【10737418240 bytes】:10737418240/1024/1024/1024=100GB4、【20971520 sectors】:20971520 个扇区5、【Units = sectors of 1 512 = 512 bytes】: 因为每一个磁头都是在同一个柱面的,1 示意每个磁道上的扇区数量,1 512 示意一个柱面上的扇区数量6、【Sector size (logical/physical): 512 bytes / 512 bytes】:示意一个扇区的大小是512 字节除了 fdisk -l 命令能够查找硬盘和分区,还能够通过以下命令进行查找: lsblk其中,TYPE 为 disk 类型,且没有下分支的,即是没有被分区的硬盘。 2.2 创立挂载目录查看以后机器的磁盘应用状况: df -h 创立待挂载目录(必须是空目录): mkdir /newdir2.3 创立新分区通过上一步,咱们曾经晓得了新磁盘是/dev/sdc ,当初对新磁盘进行分区: fdisk /dev/sdcnp回车(默认值)回车(默认值)回车(默认值)w创立好分区后再次执行 fdisk -l 命令能够看到 /dev/sdc 曾经新生成了一个分区: 2.4 创立新物理卷应用刚刚的分区创立物理卷: ...

April 13, 2023 · 1 min · jiezi

关于centos7:centos安装mysql7

删除mysql相干的依赖查问已装置的rpm包rpm -qa | grep mysql若查问有后果,需删除rpm -e --nodeps mysql-libs-xxx删除相干mysql目录并删除查问mysql目录find / -name mysql 查问mysql命令whereis mysql下载mysql二进制包进入/user/local/src/cd /user/local/src/下载mysqlwget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz解压tar -zxvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz构建mysql目录创立mysql BaseDirmkdir -p /usr/local/mysql/data挪动mysql文件至BaseDirmv mysql-5.7.37-linux-glibc2.12-x86_64/* /usr/local/mysql/初始化mysql用户创立mysql用户、创立用户组并将mysql退出mysql用户组groupadd mysqluseradd -r -g mysql mysql扭转mysql目录所属组和所属用户chown -R mysql:mysql /usr/local/mysql赋予mysql用户及用户组对mysql目录对最大拜访权限chmod +775 /usr/local/mysql装置mysql初始化mysql,须要保留以下命令输入后的最初一段的长期明码,至关重要!sh /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql启动mysql/usr/local/mysql/support-files/mysql.server start增加软连贯,并重启mysql服务ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql ln -s /usr/local/mysql/bin/mysql /usr/bin/mysqlservice mysql restart登陆mysqlmysql -u root -p 刚刚的保留的长期明码输出以下sql语句,批改root用户明码ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;近程拜访use mysql;update user set user.Host='%' where user.User='root';容许root用户在任何中央进行近程登录,并具备所有库任何操作权限GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;刷新权限FLUSH PRIVILEGES;设置mysql零碎服务复制mysql服务并赋予执行权限cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldchmod +x /etc/init.d/mysqld增加mysql零碎服务chkconfig --add mysqld

March 29, 2023 · 1 min · jiezi

关于centos7:Centos防火墙和端口操作

防火墙设置开机启用防火墙systemctl enable firewalld.service设置开机禁用防火墙systemctl disable firewalld.service启动防火墙systemctl start firewalld敞开防火墙systemctl stop firewalld查看防火墙状态systemctl status firewalld重启防火墙systemctl restart firewalld.service端口开始口命令firewall-cmd --zone=public --add-port=80/tcp --permanent命令含意: --zone #作用域--add-port=80/tcp #增加端口,格局为:端口/通信协定--permanent #永恒失效,没有此参数重启后生效端口应用状况查看8080端口应用状况:netstat -ntulp |grep 8080查看所有端口应用状况:netstat -ntlp

March 26, 2023 · 1 min · jiezi

关于centos7:服务器报错-Cannot-allocate-memory

一、问题背景连贯CnetOS7.9服务器后提醒: -bash: fork: Cannot allocate memory或启动某个过程报错:Cannot allocate memory 二、问题起因查看这个过程的脚本,发现脚本启动须要调用零碎内核的内存,然而以后内核内存曾经不调配了。 三、问题排查1、查看以后物理机的残余内存 free -h2、查看以后零碎内的过程数 # 零碎容许的最大过程数sysctl kernel.pid_max# 以后主机的最大过程数ps -eLf | wc -l3、查看内存申请及可用状况 [root@6Z ~]# cat /proc/meminfo | grep CommitCommitLimit: 7995408 kBCommitted_AS: 10868004 kB四、解决方案

February 23, 2023 · 1 min · jiezi

关于centos7:Centos7对外开放端口-运维-Linux

Centos7对外开放端口 | 运维 | Linux概要本篇文章记录Centos7下查看防火墙状态和网络状态命令 firewall相干操作查看对外开放的端口状态查问已凋谢的端口 $ netstat -anp查问指定端口是否已开 $ firewall-cmd --query-port=666/tcp提醒 yes,示意开启;no示意未开启。 查看防火墙状态查看防火墙状态 $ systemctl status firewalld开启防火墙 $ systemctl start firewalld 敞开防火墙 $ systemctl stop firewalld开启防火墙 $ service firewalld start 若遇到无奈开启,能够执行 $ systemctl unmask firewalld.service $ systemctl start firewalld.service增加指定须要开发的端口$ firewall-cmd --add-port=123/tcp --permanent重载入增加的端口 firewall-cmd --reload查问指定端口是否开启胜利 $ firewall-cmd --query-port=123/tcp移除指定端口 $ firewall-cmd --permanent --remove-port=123/tcpiptables相干操作装置查看yum更新 $ yum check update而后执行 $ yum install iptables-services初始化配置 $ systemctl enable iptables启动服务 $ systemctl start iptables查看状态$ service iptables status查看或增加指定端口查看或编辑配置文件内容 ...

October 24, 2022 · 1 min · jiezi

关于centos7:CentOS7-解决pingwwwbaiducom未知的名称或服务

我应用我租的3A服务器发现了报错,前面解决了,把办法教给你们,如果须要服务器也能够后盾私信我CentOS7 ping外网报错“未知的名称或服务” 这里我以Nat的网络连接形式做几点排查的办法 首先查看网卡配置文件这里的ifcfg-ens对应的是本人的网卡,不晓得的能够输出ip address查看本人的网卡是什么编辑文件:vi /etc/sysconfig/network-scripts/ifcfg-ens33 看看本人的ip地址,网关,DNS有没有错等各方面有没有设置好,配置好记得重启网卡systemctl restart network 这里的GATEWAY对应的是虚构网络编辑器的NAT设置,配置好记得重启网卡systemctl restart network 能够测试一下物理机和虚拟机互ping,如果物理机能够ping通虚拟机,虚拟机不能ping通物理机阐明虚拟机还是拜访不了外网 能够尝试第二个办法 增加网关如果以上没问题网还是不通,能够到这个文件中vi /etc/resolv.conf 增加nameserver 你的网关 而后:wq保留退出,再测试一下 胜利ping通!再测试一下ping物理机

September 9, 2022 · 1 min · jiezi

关于centos7:centos7搭建DNS服务完整版

dns服务:是域名解析服务,它的作用是将域名解析成IP地址,或者是将IP地址解析成域名。试验环境:我租了一个VPS服务器,搭建的centoswin7客户端 192.168.80.1前提是他们要在同一环境外面第一步,敞开防火墙和selinux个性,再装置服务yum -y install bind长期敞开防火墙systemctl stop firewalld永恒敞开防火墙systemctl disable firewalld长期敞开selinux个性setenforce 0永恒敞开selinux,首先要进入配置文件 vim /etc/selinux/config 把下面的SELINUX=disabled即可,wq保留退出第二步进入dns配置文件,进行配置 vim /etc/named.conf listen-on port 53 {192.168.80.150;}; 设置为本地的IP地址即可。allow-query {any;} 设置为所有人都能够拜访。第三步,进入vim /etc/named.rfc1912.zones配置文件,进行配置,pip.cc是我要设置的域名,而80.168.192是我设置的网段,其中file 名字,可依据你的须要起,并且要与/var/named/文件的配置文件一一对应 第四步,而后cd /var/named/目录下应用touch 创立两个文件要与下面的文件一一对应。而后应用模板文件named.localhost 出项笼罩方才创立的文件 留神下面创立完要应用 chown root:named zheng 和fan 来扭转文件权限 第五步,而后进入你创立的A文件外面 @dns.pip.cc. 是你的主机名加上域名(留神细节cc.的点点)而后增加主机记录NS dns.pip.cc. 本机的域名dns A 192.168.80.150 dns为pip.cc的域名前坠,对应着192.168.80.150www A 192.168.80.170 www为pip.cc的域名前坠,对应着192.168.80.170ftp A 192.168.80.180 ftp为pip.cc的域名前坠,对应着192.168.80.180写完保留退出第六步,编辑PTR文件 依照下面的反着写即可,原理都是一样的。第七步,重启服务systemctl restart named再用客户端输出nslookup拜访即可

September 8, 2022 · 1 min · jiezi

关于centos7:Centos7安装Maven363

进入地址https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/,下载maven3.6.3压缩包apache-maven-3.6.3-bin.tar.gz 上传apache-maven-3.6.3-bin.tar.gz到jenkins同服务器,并解压到/usr/local/目录下。 配置Maven环境变量,批改/etc/profile文件,追加以下内容到文件最初。 # MavenMAVEN_HOME=/usr/local/apache-maven-3.6.3export PATH=${MAVEN_HOME}/bin:${PATH}其中MAVEN_HOME=后的/usr/local/apache-maven-3.6.3更换为本人解压的maven目录门路。 从新加载环境变量,source /etc/profile。验证Maven环境是否筹备实现,mvn -v,如果呈现相似以下内容,即示意胜利。 Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)Maven home: /usr/local/apache-maven-3.6.3Java version: 1.8.0_202, vendor: Oracle Corporation, runtime: /usr/local/java/jreDefault locale: zh_CN, platform encoding: UTF-8OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"配置maven国内镜像、指定jdk编译版本。进入maven根目录/conf,编辑文件settings.xml。减少以下内容: <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf></mirror><profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties></profile>留神要加到对应的地位,例如<mirror>相干的配置就搜寻<mirrors>,加到<mirrors>中,而<profile>也是同理。

September 5, 2022 · 1 min · jiezi

关于centos7:在centos上安装Anaconda

介绍:Anaconda包含Conda、Python以及一大堆装置好的工具包,比方:numpy、pandas等Miniconda包含Conda、Pythonconda是一个开源的包、环境管理器,能够用于在同一个机器上装置不同版本的软件包及其依赖,并可能在不同的环境之间切换 环境:应用3A服务器近程搭建的centos上操作 1、应用wget下载安装包 wget https://repo.anaconda.com/arc...2、装置anaconda chmod +x Anaconda3-5.3.0-Linux-x86_64.sh./Anaconda3-5.3.0-Linux-x86_64.sh3、点击回车键此时显示Anaconda的信息,并且会呈现More,持续按Enter,直到如下图所示 输出yes 持续点击回车,这段须要期待输出yes那你须要本人到这个文件夹设置你装置Anaconda门路(比方下面显示我的是) /home/wangke/.bashrc单击进去,在最初一行增加:export PATH=/home/anaconda3/bin:$PATH援用须要把之前的那句话给正文掉如下所示:export PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/sbin:/sbin:$PATHexport PATH=/root/anaconda3/bin:$PATH这里只是个示例,具体的还是要看你们本人装置的门路。 而后保留更改,输出上面这句指令: source ~/.bashrc援用1.8 实现装置以及检测是否装置胜利关上新的终端后,进入本人的文件夹目录下,输出anaconda -V(留神a要小写,V要大写),conda -V ,显示版本信息,若显示则示意装置胜利。 root@dev-wyf-react:~/wyf# conda -Vconda 4.5.11援用

August 29, 2022 · 1 min · jiezi

关于centos7:centos7搭建zabbix60

此办法实用于zabbix6以上版本 环境搭建:www.cnaaa.com zabbix6.0后期环境筹备:Lamp(linux httpd mysql8.0 php) mysql官网下载地位:https://dev.mysql.com/downloa... Zabbix源码包地址:https://www.zabbix.com/cn/dow... Zabbix6官网文档地址: .https://www.zabbix.com/docume... 构建过程: 敞开防火墙和平安机制 敞开防火墙systemctl stop firewalld.service 敞开平安机制setenforce 0一 丶 装置MySQL8.0(RPM) 1:配置mysql源 下载MySQL源wget https://dev.mysql.com/get/mys... 配置MySQL源yum -y install mysql80-community-release-el7-5.noarch.rpm2:为避免后续编译装置zabbix时报错 提前装置依赖 装置MySQL相干依赖yum -y install gcc-c++ mysql-devel net-snmp-devel libevent-devel 3:下载MySQL和zabbix 下载zabbixwget https://cdn.zabbix.com/zabbix... 下载MySQLwget https://dev.mysql.com/get/Dow...4:解压并装置下载好的MySQL安装包 创立MySQL目录mkdir /usr/local/mysql 解压MySQL安装包tar xf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar -C /usr/local/mysql 挪动到mysql目录cd /usr/local/mysql/ RPM形式装置MySQLrpm -ivh mysql-community-common-8.0.28-1.el7.x86_64.rpm --force --nodepsrpm -ivh mysql-community-libs-8.0.28-1.el7.x86_64.rpm --force --nodepsrpm -ivh mysql-community-libs-compat-8.0.28-1.el7.x86_64.rpm --force --nodepsrpm -ivh mysql-community-client-8.0.28-1.el7.x86_64.rpm --force --nodepsrpm -ivh mysql-community-server-8.0.28-1.el7.x86_64.rpm --force --nodeps5:查看MySQL的个RPM包是否被装置 ...

August 15, 2022 · 2 min · jiezi

关于centos7:centOS7如何安装MariaDB

装置形式罕用yum形式和自行下载安装包的形式。前者版本更新较迟缓,但胜在稳固,后者版本抉择灵便自主。这里次要介绍yum形式一、yum形式装置1.1 装置步骤1.yum间接装置 yum install mariadb-server2.启动并设置开机启动 systemctl start mariadbsystemctl enable mariadb3.查看数据库状态 systemctl status mariadb 1.2 初始化和配置MariaDB(数据库明码等)须要理解的是,linux中的很多输出不像windows是有提醒的,在linux中可能是空白,然而的确输出进去了,大家请释怀。执行安全性相干工作。输出mysql_secure_installation后,会弹出以下列表选项 #相干选项及含意#设置系统管理员的明码(root用户),啥也不想设就间接回车即可Enter current password for root (enter for none): #是否设置root明码,ySet root password? [Y/n] #设置新密码并反复 明码输出后不显示,然而你失常输出就能够New password: Re-enter new password: #是否不容许匿名用户拜访,平安起见,倡议选yRemove anonymous users? [Y/n] #是否回绝近程登录。这里必定选n吧。后续必定会用各种工具近程拜访的吧。Disallow root login remotely? [Y/n] #是否删除test数据库,依据本人爱好抉择即可Remove test database and access to it? [Y/n] #从新加载权限表。y即可Reload privilege tables now? [Y/n] 补充一句,mariadb不像MySQL,没有明码复杂度的要求 1.3 测试本地登录先测试本地登录,在命令行执行mysql -u root -p命令,如果看到如上面所示内容,阐明本地登录胜利 -u 是mysql数据库用户名,默认为root,-p是输出明码 mysql -u 用户名 -p 明码 是连贯数据库服务器的命令。要求你输出本人连贯数据库的用户名和明码。 ...

May 18, 2022 · 2 min · jiezi

关于centos7:centos7系统部署hexo博客新手入门进阶看这一篇就够了

@TOC *本文阐明 请大家务必查看目录构造:重点是简洁版、谬误记录详情查看自我总结 本文有两个版本,具体版、简洁版。 前者适宜老手,后者适宜新手(不便大家查找,从而过滤掉某些步骤,节约工夫老本) 所以大家按需查看哟。 具体版简洁版简洁版:蕴含所有步骤,以及命令的执行过程(适宜老手) 简洁版:只蕴含命令(适宜有肯定熟练度的人) 前言大家有艳羡过他人的博客网站吗?本人最后接触电脑的时候,看见一个敌人的博客就很是艳羡。 明天就教大家如何搭建本人的博客网站,非常简单,小白轻松上手。 首先介绍一下配角:Hexo什么是 Hexo?Hexo 是一个疾速、简洁且高效的博客框架。Hexo 应用 Markdown(或其余渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成动态网页。 Markdown是一种轻量级标记语言,排版语法简洁 ,不到半小时就能齐全把握。这里就不做过多介绍了。 环境筹备零碎VcpuMemory网卡类型centos724NAT模式配置yum源,不会的看这里:(35条音讯) linux+centos7 配置本地yum源_YG-刻骨铭心的博客-CSDN博客_为什么要配置本地yum源 具体版入门:搭建步骤装置git:[root@localhost ~]# rm -rf /etc/yum.repos.d/* #删除本地repo文件[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo ## 下载阿里云centos7镜像源 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed100 2523 100 2523 0 0 5701 0 --:--:-- --:--:-- --:--:-- 5721[root@localhost ~]# yum clean all ; yum makecache #清理缓存、建设缓存[root@localhost ~]# yum install -y git # yum源 下载安装gitLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.comResolving Dependencies--> Running transaction check---> Package git.x86_64 0:1.8.3.1-23.el7_8 will b装置node:node官网下载地址Index of /dist/ (nodejs.org) # (Node.js 版本需不低于 10.13,倡议应用 Node.js 12.0 及以上版本) ...

April 15, 2022 · 9 min · jiezi

关于centos7:centos7-环境安装

centos7 环境装置一:yum命令工具应用举例 https://www.cnblogs.com/ITsqh... yum update 降级零碎 yum install ~ 装置指定软件包 yum update ~ 降级指定软件包 yum remove ~ 卸载指定软件 1. CentOS 7 yum装置 PHP7.3 教程 查问php 版本yum search php1、首先装置 EPEL 源:yum install epel-release 装置 REMI 源:yum install http://rpms.remirepo.net/ente... 2.装置 Yum 源管理工具:yum install yum-utils 3、装置 PHP7.3:yum install -y php73-php-fpm php73-php-cli php73-php-bcmath php73-php-gd php73-php-json php73-php-mbstring php73-php-mcrypt php73-php-mysqlnd php73-php-opcache php73-php-pdo php73-php-pecl-crypto php73-php-pecl-mcrypt php73-php-pecl-geoip php73-php-recode php73-php-snmp php73-php-soap php73-php-pecl-swoole4 php73-php-pecl-redis4 装置实现后最好重启一下计算机,不然有可能无奈启动php设置开机启动、运行服务: systemctl enable php73-php-fpmsystemctl start php73-php-fpm ...

March 23, 2022 · 1 min · jiezi

关于centos7:记一次-centos7-nginx-phpfpm-部署-wordpress

前置阐明断断续续,花了半天的工夫才把这些内容都买通,特此分享给有须要的人 根底软件下载nginx对着人家官网领导搞,总不会错的:https://nginx.org/en/linux_pa...,不多BB php74与php-fpm参考这篇文档:https://shouts.dev/articles/i...先实现下载,启动即可,配置待会再说 wordpress下载并解压到当前目录wget https://wordpress.org/wordpress-5.9.1.tar.gz & tar -zxvf wordpress-5.9.1.tar.gz 配置php-fpm 配置php-fpm过程用户与用户组,这里能够采纳centos已有的nobody用户与用户组,次要是用来限度目录权限,前面就会看到它的作用(本人也能够新建零碎用户填到这里,然而目前来说还不须要,留神 root 用户是无奈填写的php-fpm监听音讯的ip+端口,除此之外还有unix socket模式,但该种形式是本机socket,无奈进行近程通信,可自行后续尝试该局部即unix socket文件所属与权限,默认是正文的,配置了ip+端口后,该局部没什么作用nginx这里次要配置将/wordpress申请打到php-fpm内解决 location ~* /wordpress/.*\.php$ { # fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name;}fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name;该局部的作用须要举个: 原拜访地址:http://example.com/wordpress/index.php转到php-fpm内会找以后主机内的门路为:/www/wordpress/index.php; 该局部弄清楚之后就很简略了:如呈现404 File not found问题:查看对应目录是否有对应文件如呈现403 forbidden问题:查看从最外层目录开始该文件是否能够拜访,可参考命令:sudo -u nobody ls -l /www/wordpress/index.php 如果不能拜访,可递归批改所属,参考命令:sudo chown -R nobody:nobody 对应目录 启动依照wordpress文件夹内的readme一步步操作即可,或间接拜访其对应目录下的/index.php即可,如果mysql都没有下,可参考该篇文档:https://tecadmin.net/install-... 结语心愿能对各位有所帮忙,如果能给个点赞那就更好了。Thanks♪(・・)ノ

February 25, 2022 · 1 min · jiezi

关于centos7:Centos7注册服务项

cd /usr/lib/systemd/systemchmod u+x xxx.service[Unit]Description=dashboard systemAfter=NetworkManager.service [Service]Type=forkingExecStart=启动服务的命令或者脚本ExecStop=进行服务的命令或者脚本PrivateTmp=true [Install]WantedBy=multi-user.targetsystemctl enable xxxsystemctl daemon-reload

February 23, 2022 · 1 min · jiezi

关于centos7:Centos7一键部署Docker脚本

#!/bin/bashinstall_docker(){ #更新yum包 sudo yum update -y #装置依赖 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 #设置yum源 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #装置docker sudo yum install docker-ce -y; #版本查看 docker -v; #配置镜像减速 mkdir -p /etc/docker; cd /etc/docker;cat > daemon.json <<EOF{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]}EOF #重新启动服务 systemctl daemon-reload; systemctl restart docker; #查看减速是否失效 docker info; #启动docker并设置开机自启动 systemctl enable docker systemctl start docker systemctl status docker docker ps -a }install_docker

February 17, 2022 · 1 min · jiezi

关于centos7:centos设置连接外网

惯例步骤设置完结后独自设置下网关配置:vi /etc/sysconfig/network: GATEWAY设置同虚构网络编辑器网关统一 重启网络 service network restart

January 5, 2022 · 1 min · jiezi

关于centos7:CentOS-停服龙蜥社区已上线解决方案专区

CentOS 8 将于明天(12 月 31日)正式进行保护,龙蜥开源社区(OpenAnolis )已上线「CentOS 停服专区」,为受 CentOS 停服影响的用户提供迁徙计划及长期稳固反对。 此次上线的 CentOS 停服专区,既有基于龙蜥开源社区能力开发出的 CentOS 停服迁徙整体解决方案 AOMS,也有多款与之配套的工具(包含适配客户场景的迁徙工具、性能调优工具和软硬件兼容性验证平台等),不便 CentOS 用户平滑迁徙到龙蜥操作系统(Anolis OS)。 「CentOS 停服专区」详情可参看:

December 31, 2021 · 1 min · jiezi

关于centos7:CMake实战四安装测试和添加环境生成安装包

title: CMake实战四:装置测试和增加环境生成安装包 categories:[实战四] tags:[CMake] date: 2021/12/24 作者:hackett 微信公众号:加班猿 1、装置测试CMake 也能够指定装置规定,以及增加测试。这两个性能别离能够通过在产生 Makefile 后应用 make install 和 make test 来执行。在 GNU Makefile 里,你可能须要为此编写 install 和 test 两个伪指标和相应的规定,但在 CMake 里,这样的工作同样只须要简略的调用几条命令。 1.1定制装置规定首先先在 math/CMakeLists.txt 文件里增加上面两行: # 指定 MathFunctions 库的装置门路install (TARGETS MathFunctions DESTINATION bin)install (FILES MathFunctions.h DESTINATION include)指明 MathFunctions 库的装置门路。之后同样批改根目录的 CMakeLists 文件,在开端增加上面几行: # 指定装置门路install (TARGETS Demo DESTINATION bin)install (FILES "${PROJECT_BINARY_DIR}/config.h" DESTINATION include)通过下面的定制,生成的 Demo 文件和 MathFunctions 函数库 libMathFunctions.o 文件将会被复制到 /usr/local/bin 中,而 MathFunctions.h 和生成的 config.h 文件则会被复制到 /usr/local/include 中。咱们能够验证一下(顺带一提的是,这里的 /usr/local/ 是默认装置到的根目录,能够通过批改 CMAKE_INSTALL_PREFIX 变量的值来指定这些文件应该拷贝到哪个根目录): ...

December 24, 2021 · 4 min · jiezi

关于centos7:VMware虚拟机安装Centos7

想装置个centos不便学习,又不想双系统,所以抉择在VMware虚拟机里装置Centos7 先下载centos镜像 先去阿里巴巴开源镜像站的os镜像 下载centos7 创立虚拟机 2依据如图提醒抉择,一些举荐配置的,就按举荐的选。 抉择稍后装置零碎 抉择下载下来的镜像centos零碎地位 启动虚拟机 抉择install centos Linux 7 装置

December 22, 2021 · 1 min · jiezi

关于centos7:centos-76-libstdcso6-软链接库升级

                         背景:武汉某野人我的项目须要近程近程反对,施行现场部署的时候忽然报了这么一个错 error while loading shared libraries: libmvec.so.1: cannot open shared object file: No such file or directory原先是在SUSE12 和EulerOS2.9的机器上演练过数次,客户临阵换枪,给了一台centos7.6的mini版本的机器,导致部署在下面的人脸识别的sdk包启动间接原地爆炸,霎时腾飞,灵魂出窍,神游天外,投胎转世...... 百度了一下形形色色的起因都有 gcc版本过低,倡议降级(没尝试过)centos7自带的gcc版本是4.8,通过gcc官网装置手册可知,依赖文件太多了,手动降级装置太繁琐。能够通过装置devtoolset的形式间接降级gcc至高版本(内网环境,不可行)本地模仿现场环境,下载了centos7.6 将另外一台机器上的libmvec.so 复制到指标机器的 /usr/lib64/ 门路下 报错: [root@centosb aw_kunpeng_sdk.v3.11.1]# ./attendance: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by ./attendance)./attendance: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./attendance)./attendance: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /data01/aw_kunpeng_sdk.v3.11.1/libawface.so)./attendance: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /data01/aw_kunpeng_sdk.v3.11.1/libawface.so)./attendance: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /data01/aw_kunpeng_sdk.v3.11.1/libawface.so)报错信息解析: ...

November 24, 2021 · 1 min · jiezi

关于centos7:Centos7升级Python2到Python3

在Centos7零碎中,默认带的Python版本是Python2.7的,想用到Python3的新个性就须要降级.装置依赖包对于Python3.7以上的版本,须要多装置一个依赖包:> yum install -y libffi-devel否则会呈现ModuleNotFoundError: No module named _ctypes的报错。装置python 3.7.3# 下载> wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz# 解压> tar -zxf Python-3.7.3.tgz# 装置依赖包> yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc libffi-devel# 进入python目录> cd Python-3.7.3# 编译> ./configure --prefix=/usr/local/python3.7#装置> make && make install备份Python2版本因为零碎有些软件还是依赖Python2运行,所以不能删除Python2,须要对原来的python软连贯指向python3>mv /usr/bin/python /usr/bin/python.bak创立新的软连贯> ln -s /usr/local/python/bin/python3.7 /usr/bin/python查看Python版本> python -V更改yum配置因为yum须要应用python2,将/usr/bin/python改为python3后,yum就不能失常运行了,因而须要更改一下yum的配置。编辑这两个文件,将文件头的#!/usr/bin/python改为#!/usr/bin/python2> vim /usr/bin/yum> vim /usr/libexec/urlgrabber-ext-down原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站

September 29, 2021 · 1 min · jiezi

关于centos7:LNMP环境搭建

零碎:Centos7Nginx:1.20 Nginx装置:yum -y install nginx1.开机启动systemctl enable nigin2.启动服务systemctl start nginx或nginx3.重载服务systemctl reload nginx或pkill -HUP nginx4.重启服务systemctl restart nginx5.敞开服务systemctl stop nginx或pkill nginx6.Nginx过程治理pstree |grep nginx或ps -ef |grep nginx7.Nginx端口治理netstat -tunpl |grep nginx8.Nginx启动测试间接拜访80端口就行

September 27, 2021 · 1 min · jiezi

关于centos7:centos7虚拟机ping不通百度

场景明天应用VMware装置了centos7零碎,在搭建docker环境的时候,yum更新不了。期初我认为是yum出错了,我更改了yum源为清华源的,起初发现依然更新不了yum。 我猜想是虚拟机不能连贯外网,我在虚拟机内ping百度,果不其然的确发现ping不通,如下图所示。 当初确定虚拟机内无奈联网。我尝试用多种发放去解决虚拟机联网问题,都是失败了。苦心人天不负呀,多个文档进行整合试错,最初终于解决了。 思考到后边开发应用,为了更好区别虚拟机,这里用动态IP为例来演示网络修复问题。 排查本机虚拟机服务状态1.首先查看电脑虚拟机服务有没有开启,抉择电脑外面的服务查看; 2.进入治理抉择VM结尾的服务如果没有开启的话就右键开启 排查虚拟机网络并配置1.虚拟机服务开启后就查看本地网络虚拟机的网卡启动没有,具体操作步骤如下图所示。 2.点击更改适配器,查看虚拟机的虚构网卡启动没有,没有启动的话右键点击启动 3.网卡开启后设置ip地址,此处设置的ip和本机的ip没有关系,设置成你虚拟机外面运行的计算机须要的ip地址网段。 这里配置VMware网络的默认网关,起到限定IP范畴作用。 批改虚拟机虚构网络配置1.在VMware里,顺次点击“编辑===》虚构网络编辑器”,如下图所示。 2.进来后会呈现这个窗口,抉择右下角更改设置,应用管理员进行批改 3.编辑VMnet0,桥接时请留神本人抉择的是无线网络还是本地连接,此处我不做批改抉择主动。 4.批改VMnet8虚构网络配置 设置NAT网关IP,NAT网关要与虚拟机网络配置的默认网关保持一致。 设置虚拟机配置文件进入CentOS 7后,关上终端,进入vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=EthernetBOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noNAME=ens33UUID=697a1221-e102-46b8-a9b8-ee504086e9adDEVICE=ens33ONBOOT=yesPEERDNS=yesPEERROUTES=yesIPV6_PEERNDS=yesIPV6_PEERROUTES=yesIPV6_PRIVACY=noGATEWAY=192.168.1.3IPADDR=192.168.1.130NETMASK=255.255.255.0DNS1=8.8.8.8重启network服务service network restart 验证ping www.baidu.com

August 23, 2021 · 1 min · jiezi

关于centos7:找不到ZSTD丢失ZSTDLIBRARY-ZSTDINCLUDEDIR

问题-- Could NOT find ZSTD (missing: ZSTD_LIBRARY ZSTD_INCLUDE_DIR) CMake Error at 3rdparty/libbacktrace/CMakeLists.txt:160 (message): Could not find dwarf.h, try installing the dwarf or elfutils development package.-- Configuring incomplete, errors occurred!解决办法 yum install -y libdwarf-devel libzstd-devel

August 20, 2021 · 1 min · jiezi

关于centos7:洞悉你的服务器性能

查看服务器性能查看核数 cat /proc/cpuinfo | grep "model name" | sort | uniq && cat /proc/cpuinfo | grep "physical id" | sort | uniq 查看物理cpu个数 cat /proc/cpuinfo |grep "physical id" |sort |uniq|wc -l 查看逻辑cpu个数 cat /proc/cpuinfo |grep "processor" | wc -l 查看CPU是几核 cat /proc/cpuinfo |grep "cores" | uniq 查看cpu的信息 cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 查看内存大小 cat /proc/meminfo | grep Mem | sort -n | awk '{print $2/1024/1024"G", $1}' ...

August 15, 2021 · 1 min · jiezi

关于centos7:centos-yum-安装软件提示-BDB1507-Thread-died-in-Berkeley-DB-library异常

场景:明天在应用服务器的依照软件的时候,yum命令忽然生效了,与其相干的命令都呈现上面的谬误。error: rpmdb: BDB0113 Thread/process 6926/139936008357952 failed: BDB1507 Thread died in Berkeley DB libraryerror: db5 error(-30973) from dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recoveryerror: cannot open Packages index using db5 - (-30973)error: cannot open Packages database in /var/lib/rpmCRITICAL:yum.main: 查了相干材料原来是上次 应用Ctrl+c 或者 Ctrl + z 或者 kill 或者其余起因 完结掉了yum过程,因为强制完结yum过程导致rpm数据被毁坏,当再次执行yum的相干操作时报错: 解决办法:从新构建即可,步骤如下:cd /var/lib/rpmrm __db.* -rf #删除所有rpm库rpm --rebuilddb #rpm的从新构建命令yum clean all #用yum clean all革除yum makecache #从新生成yum缓存 这一步破费的工夫比拟长,请急躁期待。 问题已解决,功败垂成!

August 5, 2021 · 1 min · jiezi

关于centos7:WARNING-IPv4-forwarding-is-disabled-Networking-will-not-work

启动docker容器时报错,解决方案如下: step1: 关上零碎配置文件: [root@centos7-1 ~]# vi /etc/sysctl.confstep2: 在关上的文件中增加上面这句话: net.ipv4.ip_forward=1 step3:重启网络服务: [root@centos7-1 ~]# systemctl restart networkstep4:查看是否批改胜利: [root@centos7-1 ~]# sysctl net.ipv4.ip_forwardnet.ipv4.ip_forward = 1 # 呈现这句话阐明批改胜利step5:重新启动容器即可

July 11, 2021 · 1 min · jiezi

关于centos7:CentOS-74-64位-编译安装-LNMP

CentOS 7.4 64位 编译装置 LNMP查看 Linux 版本cat /etc/redhat-release# CentOS Linux release 7.4.1708 (Core)1. 装置 nginx1-1. 装置 nginx 源 yum localinstall http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm1-2. 装置 nginx yum install nginx1-3. 启动 nginx systemctl start nginx2. 装置 MySQL2-1. 装置 MySQL 源 yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm2-2. 装置 MySQL yum install mysql-community-server装置 MySQL 开发包 (*) yum install mysql-community-devel2-3. 启动 MySQL systemctl start mysqld2-4. 查看 MySQL 是否启动 systemctl status mysqld2-5. 查看 MySQL 默认明码 # 首次启动,会把明码放在 /var/log/mysqld.log 外面# 2018-10-13T15:51:47.482124Z 1 [Note] A temporary password is generated for root@localhost: r)eS,gjku4tsgrep 'temporary password' /var/log/mysqld.log2-6. 更改 MySQL 明码 ...

June 29, 2021 · 4 min · jiezi

关于centos7:CentOS-7-搭建宝塔面板并搭建-LNMP-环境

CentOS 7 搭建宝塔面板并搭建 LNMP 环境本地环境为:Linux 零碎环境为:CentOS Linux release 7.4.1708 (Core)常见 Web 面板目前市面上风行的面板很多,例如: AMHAppNode宝塔WDCP装置前筹备服务器放行 8888 端口内存:512M 以上,举荐 768M 以上(纯面板约占零碎 60M 内存)硬盘:100M 以上可用硬盘空间(纯面板约占 20M 磁盘空间)零碎:CentOS 7.1+ (Ubuntu16.04+.、Debian9.0+),确保是洁净的操作系统,没有装置过其它环境带的 Apache/Nginx/php/MySQL(已有环境不可装置)装置:Linux 面板 6.9.2 装置命令:yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.shLinux 面板 6.9.2 降级命令:curl http://download.bt.cn/install/update6.sh|bash Do you want to install Bt-Panel to the /www directory now?(y/n):意为询问你是否当初装置宝塔面板到 /www 目录?请输出 y 持续。 随后大略须要 2 分钟左右装置,会有一大堆输入,咱们不用关注。 若装置胜利,你将会看到如下输入: ==================================================================Congratulations! Installed successfully!==================================================================Bt-Panel: [治理面板 URL]username: [宝塔面板用户名]password: [宝塔面板明码]Warning:If you cannot access the panel,release the following port (8888|888|80|443|20|21) in the security group请务必记住宝塔面板的用户名和面板明码!包含治理面板 url 中 8888 端口后的平安校验码 ...

June 28, 2021 · 1 min · jiezi

关于centos7:堂固定虚拟机CentOS7-中IP地址操作

ip等信息截图: 固定虚拟机CentOS7 中IP地址操作 主动调配网络内可用IP[root@tang ~]# dhclient固定动态IP[root@tang ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens 33 初始:TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO="dhcp"DEFROUTE="yes"IPV4_FAILURE_FATAL="no"IPV6INIT="yes"IPV6_AUTOCONF="yes"IPV6_DEFROUTE="yes"IPV6_FAILURE_FATAL="no"IPV6_ADDR_GEN_MODE="stable-privacy"NAME="ens33"UUID="d5c29673-866e-4fa4-8613-d2c11cccc16c"DEVICE="ens33"ONBOOT="yes"批改后(#处为批改类容):TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"# BOOTPROTO="static"DEFROUTE="yes"IPV4_FAILURE_FATAL="no"IPV6INIT="yes"IPV6_AUTOCONF="yes"IPV6_DEFROUTE="yes"IPV6_FAILURE_FATAL="no"IPV6_ADDR_GEN_MODE="stable-privacy"NAME="ens33"UUID="d5c29673-866e-4fa4-8613-d2c11cccc16c"DEVICE="ens33"ONBOOT="yes"# IPADDR="192.168.12.131"NETMASK="255.255.255.0"GATEWAY="192.168.12.1"DNS1="119.29.29.29"重启网络[root@tang ~]# systemctl restart network.service

April 15, 2021 · 1 min · jiezi

关于centos7:Centos7-k8s-1182-metrics

K8S从1.8版本开始,CPU、内存等资源的metrics信息能够通过 Metrics API来获取,用户能够间接获取这些metrics信息(例如通过执行kubect top命令),HPA应用这些metics信息来实现动静伸缩。本文介绍K8S集群基于metric server的HPA。在开始之前咱们须要理解一下Metrics API和Metrics Server。 Metrics API:1、通过Metrics API咱们能够获取到指定node或者pod的以后资源应用状况,API自身不存储任何信息,所以咱们不可能通过API来获取资源的历史应用状况。2、Metrics API的获取门路位于:/apis/metrics.k8s.io/ 3、获取Metrics API的前提条件是metrics server要在K8S集群中胜利部署4、更多的metrics材料请参考:https://github.com/kubernetes/metrics Metrics server:1、Metrics server是K8S集群资源应用状况的聚合器2、从1.8版本开始,Metrics server默认能够通过kube-up.sh 脚本以deployment的形式进行部署,也能够通过yaml文件的形式进行部署3、Metrics server收集所有node节点的metrics信 Plan-A[root@master49 metrics-images]# cat metrics-applaction.yaml apiVersion: v1kind: ServiceAccountmetadata: name: metrics-server namespace: kube-system labels: kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: system:metrics-serverrules:- apiGroups: - "" resources: - pods - nodes - nodes/stats - namespaces verbs: - get - list - watch- apiGroups: - "extensions" resources: - deployments verbs: - get - list - watch---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata: name: system:metrics-serverroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:metrics-serversubjects:- kind: ServiceAccount name: metrics-server namespace: kube-system---apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata: name: metrics-server:system:auth-delegatorroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:auth-delegatorsubjects:- kind: ServiceAccount name: metrics-server namespace: kube-system---apiVersion: rbac.authorization.k8s.io/v1beta1kind: RoleBindingmetadata: name: metrics-server-auth-reader namespace: kube-systemroleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: extension-apiserver-authentication-readersubjects:- kind: ServiceAccount name: metrics-server namespace: kube-system---apiVersion: apiregistration.k8s.io/v1beta1kind: APIServicemetadata: name: v1beta1.metrics.k8s.iospec: service: name: metrics-server namespace: kube-system group: metrics.k8s.io version: v1beta1 insecureSkipTLSVerify: true groupPriorityMinimum: 100 versionPriority: 100---apiVersion: v1kind: Servicemetadata: name: metrics-server namespace: kube-system labels: kubernetes.io/name: "Metrics-server"spec: selector: k8s-app: metrics-server ports: - port: 443 protocol: TCP targetPort: 443---apiVersion: v1kind: ConfigMapmetadata: name: metrics-server-config namespace: kube-system labels: kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: EnsureExistsdata: NannyConfiguration: |- apiVersion: nannyconfig/v1alpha1 kind: NannyConfiguration---apiVersion: apps/v1kind: Deploymentmetadata: name: metrics-server namespace: kube-system labels: k8s-app: metrics-server-v0.3.1 kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile version: v0.3.1spec: selector: matchLabels: k8s-app: metrics-server version: v0.3.1 template: metadata: name: metrics-server labels: k8s-app: metrics-server version: v0.3.1 annotations: scheduler.alpha.kubernetes.io/critical-pod: '' seccomp.security.alpha.kubernetes.io/pod: 'docker/default' spec: priorityClassName: system-cluster-critical serviceAccountName: metrics-server containers: - name: metrics-server image: htcfive/metrics-server-amd64 command: - /metrics-server - --kubelet-insecure-tls - --kubelet-preferred-address-types=InternalIP ports: - containerPort: 443 name: https protocol: TCP - name: metrics-server-nanny image: wcollin/addon-resizer:1.8.1 resources: limits: cpu: 100m memory: 300Mi requests: cpu: 5m memory: 50Mi env: - name: MY_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: MY_POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace volumeMounts: - name: metrics-server-config-volume mountPath: /etc/config command: - /pod_nanny - --cpu=40m - --extra-cpu=0.5m - --memory=40Mi - --extra-memory=4Mi - --threshold=5 - --deployment=metrics-server-v0.2.1 - --container=metrics-server - --poll-period=300000 - --estimator=exponential volumes: - name: metrics-server-config-volume configMap: name: metrics-server-config tolerations: - key: "CriticalAddonsOnly" operator: "Exists"[root@master49 metrics-images]# kubectl apply -f metrics-applaction.yaml serviceaccount/metrics-server createdclusterrole.rbac.authorization.k8s.io/system:metrics-server createdclusterrolebinding.rbac.authorization.k8s.io/system:metrics-server createdclusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator createdrolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader createdapiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io createdservice/metrics-server createdconfigmap/metrics-server-config createderror: unable to recognize "metrics-applaction.yaml": no matches for kind "Deployment" in version "extensions/v1beta1"[root@master49 metrics-images]# kubectl delete -f metrics-applaction.yaml serviceaccount "metrics-server" deletedclusterrole.rbac.authorization.k8s.io "system:metrics-server" deletedclusterrolebinding.rbac.authorization.k8s.io "system:metrics-server" deletedclusterrolebinding.rbac.authorization.k8s.io "metrics-server:system:auth-delegator" deletedrolebinding.rbac.authorization.k8s.io "metrics-server-auth-reader" deletedapiservice.apiregistration.k8s.io "v1beta1.metrics.k8s.io" deletedservice "metrics-server" deletedconfigmap "metrics-server-config" deletederror: unable to recognize "metrics-applaction.yaml": no matches for kind "Deployment" in version "extensions/v1beta1"[root@master49 metrics-images]# vim metrics-applaction.yaml [root@master49 metrics-images]# kubectl apply -f metrics-applaction.yaml serviceaccount/metrics-server createdclusterrole.rbac.authorization.k8s.io/system:metrics-server createdclusterrolebinding.rbac.authorization.k8s.io/system:metrics-server createdclusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator createdrolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader createdapiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io createdservice/metrics-server createdconfigmap/metrics-server-config createddeployment.apps/metrics-server created[root@master49 metrics-images]# [root@master49 metrics-images]# kubectl get pods -n kube-systemNAME READY STATUS RESTARTS AGEcalico-kube-controllers-75d555c48-c66ll 1/1 Running 0 18hcalico-node-4w9rr 1/1 Running 0 18hcalico-node-hrvcq 1/1 Running 0 18hcalico-node-srz5h 1/1 Running 0 18hcalico-node-xmb28 1/1 Running 0 18hcalico-node-zhrs2 1/1 Running 0 18hcoredns-7ff77c879f-46sjv 1/1 Running 0 19hcoredns-7ff77c879f-txpw9 1/1 Running 0 5hetcd-master49 1/1 Running 6 18hetcd-master50 1/1 Running 3 18hetcd-master56 1/1 Running 17 18hkube-apiserver-master49 1/1 Running 1 18hkube-apiserver-master50 1/1 Running 0 18hkube-apiserver-master56 1/1 Running 0 18hkube-controller-manager-master49 1/1 Running 8 18hkube-controller-manager-master50 1/1 Running 6 18hkube-controller-manager-master56 1/1 Running 6 18hkube-proxy-2gcg5 1/1 Running 0 18hkube-proxy-4ckzn 1/1 Running 0 18hkube-proxy-bffn9 1/1 Running 0 18hkube-proxy-kdjtv 1/1 Running 0 18hkube-proxy-w9xzf 1/1 Running 0 18hkube-scheduler-master49 1/1 Running 8 18hkube-scheduler-master50 1/1 Running 5 18hkube-scheduler-master56 1/1 Running 7 18hlog-pilot-2d2s9 1/1 Running 0 5h1mlog-pilot-cnfvq 1/1 Running 0 5h1mlog-pilot-hgbkm 1/1 Running 0 5h1mlog-pilot-vwjtm 1/1 Running 0 5hlog-pilot-zqvnp 1/1 Running 0 5hmetrics-server-99d8bb9cc-m5lp9 2/2 Running 0 3m42s[root@master49 metrics-images]# kubectl top pods -n kube-systemNAME CPU(cores) MEMORY(bytes) calico-kube-controllers-75d555c48-c66ll 2m 9Mi calico-node-4w9rr 41m 25Mi calico-node-hrvcq 44m 39Mi calico-node-srz5h 40m 25Mi calico-node-xmb28 41m 25Mi calico-node-zhrs2 44m 41Mi coredns-7ff77c879f-46sjv 8m 8Mi coredns-7ff77c879f-txpw9 6m 8Mi etcd-master49 64m 99Mi etcd-master50 91m 428Mi etcd-master56 95m 423Mi kube-apiserver-master49 66m 471Mi kube-apiserver-master50 61m 504Mi kube-apiserver-master56 59m 474Mi kube-controller-manager-master49 4m 15Mi kube-controller-manager-master50 27m 67Mi kube-controller-manager-master56 6m 15Mi kube-proxy-2gcg5 1m 13Mi kube-proxy-4ckzn 14m 14Mi kube-proxy-bffn9 20m 14Mi kube-proxy-kdjtv 1m 20Mi kube-proxy-w9xzf 15m 19Mi kube-scheduler-master49 4m 18Mi kube-scheduler-master50 6m 24Mi kube-scheduler-master56 4m 17Mi log-pilot-2d2s9 3m 18Mi log-pilot-cnfvq 3m 21Mi log-pilot-hgbkm 3m 7Mi log-pilot-vwjtm 4m 7Mi log-pilot-zqvnp 3m 7Mi metrics-server-99d8bb9cc-m5lp9 1m 28Mi [root@master49 metrics-images]# kubectl top nodeserror: metrics not available yet###### 别慌,等会就好了[root@master49 metrics-images]# kubectl top nodesNAME CPU(cores) CPU% MEMORY(bytes) MEMORY% master49 378m 9% 1851Mi 15% master50 498m 12% 2476Mi 20% master56 470m 11% 2196Mi 18% node52 2949m 12% 65802Mi 31% node53 1285m 5% 31770Mi 15% [root@master49 metrics-images]# lsmetrics-applaction.yamlPlan-B[root@master49 metrics-server]# lltotal 32-rw-r--r--. 1 root root 304 Dec 24 13:57 auth-delegator.yaml-rw-r--r--. 1 root root 325 Dec 24 13:57 auth-reader.yaml-rw-r--r--. 1 root root 294 Dec 24 13:57 metrics-apiservice.yaml-rw-r--r--. 1 root root 284 Dec 24 13:57 metrics-server-cluster-role-binding.yaml-rw-r--r--. 1 root root 409 Dec 24 13:57 metrics-server-cluster-role.yaml-rw-r--r--. 1 root root 585 Mar 30 14:31 metrics-server-deployment.yaml-rw-r--r--. 1 root root 94 Dec 24 13:57 metrics-server-service-account.yaml-rw-r--r--. 1 root root 245 Dec 24 13:57 metrics-server-service.yaml[root@master49 metrics-server]# ll|awk '{print $9}'auth-delegator.yamlauth-reader.yamlmetrics-apiservice.yamlmetrics-server-cluster-role-binding.yamlmetrics-server-cluster-role.yamlmetrics-server-deployment.yamlmetrics-server-service-account.yamlmetrics-server-service.yaml[root@master49 metrics-server]# ll|awk '{print $9}' | xargs cat apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata: name: metrics-server:system:auth-delegatorroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:auth-delegatorsubjects:- kind: ServiceAccount name: metrics-server namespace: kube-systemapiVersion: rbac.authorization.k8s.io/v1beta1kind: RoleBindingmetadata: name: metrics-server-auth-reader namespace: kube-systemroleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: extension-apiserver-authentication-readersubjects:- kind: ServiceAccount name: metrics-server namespace: kube-systemapiVersion: apiregistration.k8s.io/v1beta1kind: APIServicemetadata: name: v1beta1.metrics.k8s.iospec: service: name: metrics-server namespace: kube-system group: metrics.k8s.io version: v1beta1 insecureSkipTLSVerify: true groupPriorityMinimum: 100 versionPriority: 100apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata: name: system:metrics-serverroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:metrics-serversubjects:- kind: ServiceAccount name: metrics-server namespace: kube-systemapiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: system:metrics-serverrules:- apiGroups: - "" resources: - pods - nodes - nodes/stats - namespaces verbs: - get - list - watch- apiGroups: - "apps" resources: - deployments verbs: - get - list - watch- apiGroups: - "extensions" resources: - deployments verbs: - get - list - watchapiVersion: apps/v1kind: Deploymentmetadata: name: metrics-server namespace: kube-system labels: k8s-app: metrics-serverspec: selector: matchLabels: k8s-app: metrics-server template: metadata: name: metrics-server labels: k8s-app: metrics-server spec: serviceAccountName: metrics-server containers: - name: metrics-server image: docker.io/carlziess/metrics-server-amd64-v0.2.1:latest imagePullPolicy: Always command: - /metrics-server - --source=kubernetes.summary_api:''apiVersion: v1kind: ServiceAccountmetadata: name: metrics-server namespace: kube-systemapiVersion: v1kind: Servicemetadata: name: metrics-server namespace: kube-system labels: kubernetes.io/name: "Metrics-server"spec: selector: k8s-app: metrics-server ports: - port: 443 protocol: TCP targetPort: 443[root@master49 metrics-server]# kubectl apply -f .clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator createdrolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader createdapiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io createdclusterrolebinding.rbac.authorization.k8s.io/system:metrics-server createdclusterrole.rbac.authorization.k8s.io/system:metrics-server createddeployment.apps/metrics-server createdserviceaccount/metrics-server createdservice/metrics-server created

March 30, 2021 · 5 min · jiezi

关于centos7:CentOS7的Chrony系统时钟同步

一、CentOS6中的工夫同步1、工夫同步的两种形式 在晚期Linux操作系统中,工夫同步次要有两种形式:ntpdate与ntpd,那这两者有什么区别呢? 假如有一台Linux设施,零碎工夫18:00。然而实在的精确工夫(来源于原子钟、天文台、卫星)为19:30。如果咱们应用ntpdate进行工夫同步"# ntpdate http://cn.ntp.org.cn",操作系统的工夫立刻更新为19:30,那这种状况有什么问题呢? 2、ntpdate与ntpd工夫同步案例 当咱们的零碎有一个打算工作,是在每天19:40运行,那么理论明天这个的工作曾经运行过了(以后工夫是18:00),当初被ntpdate批改为19:30,那么象征作10分钟后,又会执行一次打算工作,这是ntpdate工夫同步的隐患。那有啥解决办法呢? 解决方案: 应用ntpd工夫平滑同步,不会让一个工夫点在一天内经验两次,这就是ntpd服务形式平滑同步工夫,它每次同步工夫的偏移量不会太陡,一次一点一点的同步,齐全同步好须要较长时间。所以个别开启ntpd服务同步前先用ntpdate手动同步一次。 二、CentOS7中的工夫同步1、什么是chrony? Chrony是一个开源的自由软件,其是网络工夫协定的 (NTP) 的另一种实现,它由两个程序组成,别离是chronyd和chronyc。chronyd是一个后盾运行的守护过程,用于调整内核中运行的零碎时钟和时钟服务器同步。它确定计算机增减工夫的比率,并对此进行弥补。chronyc提供了一个用户界面,用于监控性能并进行多样化的配置。它能够在chronyd实例管制的计算机上工作,也能够在一台不同的近程计算机上工作。 2、装置chrony # yum install chrony -y3、chrony主配置文件 # cat /etc/chrony.conf |grep -v ^# |grep -v ^$server http://0.centos.pool.ntp.org iburstserver http://1.centos.pool.ntp.org iburstserver http://2.centos.pool.ntp.org iburstserver http://3.centos.pool.ntp.org iburstdriftfile /var/lib/chrony/driftmakestep 1.0 3rtcsynclogdir /var/log/chrony4、启动chrony # systemctl start chrony# systemctl enable chrony5、设置时区Asia/ Shanghai # timedatectl set-timezone Asia/Shanghai6、显示以后正在拜访的工夫源 # chronyc sources -v7、强制同步零碎工夫 # chronyc -a makestep喜爱就关注一下吧。

March 11, 2021 · 1 min · jiezi

关于centos7:Enable-SSH-access-configure-network-in-rescue-mode-CentOS-7

昨天新导入的业务测试数据和新写的存储过程(那种一想起来就一片乌云飘过来的存储过程),夜里公司断电,开发服务器是一台ESXi6.0,数据库虚拟机再也启动不了——找不到操作系统。 起初想通过导出OVF把虚拟机拷贝到本地来做测试和复原,后果公司的TP-LINK无线总是精准地断开,重复三次,都是在流量达到肯定值之后,WiFi就断开了,不得不放弃OVF。 折腾了四五个小时,切实有点困倦,数据损失无限,无非是争取一些工夫,如果明天没后果,那就没必要复原了,间接重装并复原以前的数据,再让程序员重写一下存储过程,也能过得去。 然而,我总感觉这种事儿吧,微微放过来,切实心有不甘。 于是我重建了一个虚拟机,挂上原来那个磁盘文件,发现零碎能够疏导,但依然无奈启动,会卡在"Starting Switch Root",无奈持续,Google无果,只能另想办法。 再尝试Resue模式,又折腾了一会儿,应用ISO文件把原来那个客户机启动起来进入了Recue模式,惋惜chroot依然报错,预计和Swith Root失败是同一个起因。 切到原来的目录中查看,发现Oracle数据目录完整无损,管制文件、数据文件、参数文件都在,那就想方法拿下来。 在主机上尝试用USB,未果。 尝试在Resue模式下启动sshd和网络。 网络很快搞定,但启动sshd的办法必须记录一下:

January 22, 2021 · 1 min · jiezi

关于centos7:Redis-主从复制

唠个嗑前段时间记录了下 Redis 长久化的内容 回顾 。当初聊下 Redis 的主从复制,简略点的有一主一从、一主二从的配置,简单点的例如哨兵模式。明天先从简略的动手,以一主二备配置来说,哨兵模式后续再补充。 环境筹备[root@localhost local]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)[root@localhost local]# redis-server -vRedis server v=6.0.9 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=12df50b3a8341c0e配置信息失常状况一主二备须要三台服务器,一台是主机,另外两台作为备机,我这里就起一台服务器,开三个不同的端口来演示,成果大体是一样的。另外咱们应用默认的 RDB 的存储形式来做同步。稍后咱们会启动如下三个 Redis 服务。 192.168.1.89:6379192.168.1.89:6380192.168.1.89:6381先看下我 Redis 装置的目录构造 [root@localhost redis]# pwd/usr/local/redis[root@localhost redis]# ll总用量 84-rw-r--r--. 1 root root 84861 12月 20 02:02 6379.confdrwxr-xr-x. 2 root root 134 12月 19 22:56 bin如果想别离启动端口 6379、6380、6381,则须要复制三份 conf 文件,复制之前,先把根底配置配好,如下 #bind 127.0.0.1 #将这行代码正文,监听所有的ip地址,外网能够拜访requirepass admin #配置登陆密码daemonize yes #把 no 改成 yes,后盾运行pidfile /var/run/redis_6379.pid #过程logfile "6379.log" #日志dbfilename dump_6379.rdb #数据存储文件而后把 6379.conf 复制两个, 6380.conf、6381.conf,如下 ...

December 20, 2020 · 2 min · jiezi

关于centos7:服务器被攻击挖矿用户CPU爆满TOP无法找到挖矿进程问题处理

解决领会从利用拜访巨慢,到发现被挖矿攻打,再到进行解决,最初CPU恢复正常从头至尾还是没有查明病毒到底是从什么破绽入侵到我的服务器里的。也没明确到底是在哪一步才真正的杀死了病毒,亦或者病毒还仍然蛰伏在隐秘的角落。环境阐明Centos7,外网只裸露了利用80端口,22端口只容许内网拜访Mysql5.7Nginx1.16.1Redis(只容许本机拜访,且有明码)Apache Tomcat/9.0.13病毒表现形式利用拜访变慢,比方查问,平时100毫秒内的可能会要个1000毫秒,而之前在1000毫秒左右的可能会卡的查问超时。服务器的命令响应会变慢,例如TOP、LL等根底命令。进行SSH登录服务器会巨慢。TOP命令无奈看到CPU爆满的过程,然而切换至用户CPU会看到每个CPU都跑满了TOP里按CPU使用量查问并没有找到 以上就是为什么利用变慢了,因为CPU资源都被占满了嘛。解决过程1、革除被新增的用户名和明码# 找到了一个名为ftp1的账户,账户ID和权限组都是0跟root同级别了,不是我建的,删掉保留。vim /etc/passwd2、删除免密登录# 免密登录里也被退出了Key, 这里要确保本人没有设置免密登录,并且账密登录能失常应用才间接删除,防止本人在近程状况下无奈应用,rm -rf ~/.ssh/authorized_keys3、革除定时工作crontab -l 不肯定能看到被病毒新增的定时工作,所以咱们间接更改文件cd /etc/cron.d # 找到不是属于本人建设的定时工作,这里能够比照其余失常机器发现异常工作还有一个中央也需查看删除vim /etc/crontab# 同上操作统一tips:以上操作可能会提醒无奈保留或者删除,是因为病毒将文件加了锁。咱们执行 charttr -isa [文件|目录]之后就能够删除了4、删除ld.so.preload文件rm -rf ld.so.preload5、做完以上操作,重启服务器,挖矿的过程终于得以在top命令里显行然而杀掉还是会重启 top# 找到cpu利用率最高的PIDsystemctl status [PID]# 找到Loaded:前面的文件进行删除# 删一次文件之后再杀一次过程,然而挖矿病毒还会再开过程,我就持续删文件持续杀过程。# 直到我再应用systemctl status 去查看挖矿的过程ID的时候,居然提醒我 Failed to get unit for PID 29073: Access denied6、重启服务器说实话在无奈查看过程的时候我真没法子了,毕竟服务器这块不是业余。有些法子网上搜不到我就不好解决了。我就想着也删了这么多文件了,重启试试吧,折腾了一天也累了,顺带也有点失落,reboot之后没抉择持续重连,而是讪讪回了家。而后第二天登陆一看,cpu利用率居然没再回升了。然而我仍然快乐不起来。 所以最终后果是服务器看似失常了,然而我还是抉择重装加格式化,因为怕了,我之前也被攻打过一次,我晓得是因为redis的起因导致的,也很快解决了,而这一次实属败的很惨。

October 16, 2020 · 1 min · jiezi

关于centos7:centos-修改静态-IP

设置 Centos 为应用动态 IP 1 批改网络配置vi /etc/sysconfig/network-scripts/ifcfg-eth192批改后的内容如下 TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=no# 这里能够应用 static 或者 noBOOTPROTO=noneDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens192UUID=cd93f1df-d2d5-4c63-a64c-761e9ee23aaeDEVICE=ens192# 开机启用此配置ONBOOT=yes# 动态 IPIPADDR=192.168.1.12# 默认网关GATEWAY=192.168.1.12 重启网络服务systemctl restart network3 查看地址[isproot@192 ~]$ ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:51:63:21 brd ff:ff:ff:ff:ff:ff inet 192.168.1.12/24 brd 192.168.1.255 scope global noprefixroute ens192 valid_lft forever preferred_lft forever inet6 2408:8256:a80:313:6ba6:7ad0:edd0:defe/64 scope global noprefixroute dynamic valid_lft 183241sec preferred_lft 96841sec inet6 fe80::b6f3:1daa:4b7b:6994/64 scope link noprefixroute valid_lft forever preferred_lft forever参考起源:https://blog.csdn.net/johnnyc... ...

October 16, 2020 · 1 min · jiezi

关于centos7:Centos7内网环境搭建yum源

在很多状况下,咱们服务器因为平安问题,必须处在内网环境,这时候就无奈主动通过yum命令下载互联网上的软件源,很多人为这个问题头疼,这里我简略介绍下如果在内网环境搭建yum源。对于centos7装置,能够参考我另一篇文章:Centos7的装置全过程 centos官网下载镜像包 拜访centos官网,我这里用的centos7.4版本,因为我之前零碎装置的都是7.4版本,咱们下载对应的iso镜像包CentOS-7-x86_64-Everything-1708.iso,大概8G大小,下载速度比较慢,肯定要提前下载好。 将下载好的CentOS-7-x86_64-Everything-1708.iso镜像文件上传到服务器的/home目录下。 留神:如果咱们是用的虚拟机装的centos7,则肯定先要装置VMware Tools,而后开启共享文件夹,能力把镜像文件拷贝至虚拟机的centos零碎中去。如果咱们没用虚拟机,间接U盘拷贝进去便可。如果是间接装置在服务器上,能够通过软件xftp上传,因为U盘上传过程中,文件大于8G,会呈现各种问题。而xftp不受文件大小限度。 创立镜像挂载[root@localhost ~]# mkdir -p /media/CentOS7 ##/media目录下创立文件夹CentOS7文件夹挂载镜像文件# 先进行手动挂载 [root@localhost ~]# mount -t iso9660 -o loop /home/CentOS-7-x86_64-Everything-1708.iso /media/CentOS7/ mount: /dev/loop0 写爱护,将以只读形式挂载 手动挂载结束后,进行主动挂载。执行以下命令,关上文件。 [root@localhost ~]# vim /etc/fstab在开端退出以下语句(门路依据本人挂载理论地址填写),留神空格。 /home/CentOS-7-x86_64-Everything-1708.iso /media/CentOS7 iso9660 defaults,ro,loop 0 0 之所以要批改此文件,是因为,磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时依然须要从新挂载。零碎开机时会被动读取/etc/fstab这个文件中的内容,依据文件外面的配置挂载磁盘。这样咱们只须要将磁盘的挂载信息写入这个文件中咱们就不须要每次开机启动之后手动进行挂载了。 命令执行结束后,查看挂载状况。 [root@localhost ~]# df -h 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 70G 3.9G 67G 6% / devtmpfs 473M 0 473M 0% /dev tmpfs 489M 0 489M 0% /dev/shm tmpfs 489M 7.2M 481M 2% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda1 1014M 161M 854M 16% /boot /dev/mapper/centos-home 77G 8.4G 69G 11% /home /dev/loop0 8.1G 8.1G 0 100% /media/CentOS7 vmhgfs-fuse 932G 131G 802G 14% /mnt/hgfs tmpfs 98M 4.0K 98M 1% /run/user/42 tmpfs 98M 24K 98M 1% /run/user/0发现/dev/loop0逻辑目录挂载胜利,挂载点为/media/CentOS7 ...

September 13, 2020 · 1 min · jiezi

关于centos7:Centos7的安装全过程

在装置前,先筹备一个至多8G的U盘。咱们前面应用U盘装置。 下载Centos 安装包拜访:Centos官网点击上图中CentOS Linux 点击跳转网页后,如下图,因为上市工夫不长,材料较少,我临时不装置centos8零碎,而是咱们抉择下载centos7版本的64位零碎下载。点击x86_64版本后,进入镜像下载页面,轻易选取一个开始下载ios文件吧。~~~~比方我抉择了第一个镜像地址下载。点击进入后如下图:个别如果要依照的服务器不是处在内网环境下,不须要批改yum源的话,则抉择下面的4.5G的下载即可。下载过程不再形容。 下载U盘装置工具这里我应用的U盘装置工具是:USBWriter,这里提供了下载地址,大家也能本人网上自行下载其他软件。 制作U盘启动盘当centos的ios文件和U盘工具下载安装后,咱们开始制作U盘安装盘。间接关上软件USBWriter,按下图操作即可。 装置centos7更改电脑的BIOS启动程序,这里不再形容,每个品牌电脑批改形式大同小异,另外有些服务器装置前,因为带硬raid卡,须要先进行raid操作,我个别抉择raid5或者raid10,尤其是raid10,速度快安全性高。 插入U盘,进入装置界面。 呈现上图操作界面,这时候键盘抉择第一项Install CentOS 7,切记别选错了,避免浪费工夫。 接下去零碎会进入装置操作界面,我上面间接上图阐明。首先进入语言界面,咱们间接选简体中文即可。 软件抉择默认状况都是最小装置,能够不更改,如果你想要桌面操作,则进入选项抉择GNOME桌面,GNOME桌面的子选项不做勾选。 装置地位:点击进入如下图所示依据理论状况抉择要装置的目的地磁盘,勾选要装置的硬盘,而后抉择我要配置分区,再点击左上角的实现。 点击实现后,会进入分区操作界面,这里我的分区计划批改为LVM,而不是规范分区,而后点击“点这里主动创立他们”。如果你的硬盘先去装置过零碎,则必须先点击-号,删除格式化原先零碎。 依据需要调整分区大小,个别swap是内存的2倍,最大别超过16G。/boot是用于一些配置启动文件,个别500MB-1G就足够。/home用于存放数据,配置完后点击实现。个别状况下,/目录的硬盘容量会默认调配为50G,这里倡议放大一部分/home硬盘容量,增加到/容量中,因为前期装置oracle等,随着服务器运行工夫变成,会发现很多/分区中会被占用很多文件,尽管咱们能够通过定期清理尽量放大/容量,然而50G空间还是有点顾此失彼。所有都批改好后点击下一步。零碎会进入筹备装置界面。 以上所有操作都实现后,咱们进入配置装置界面,如下图:此界面能够设置root明码和创立低权限用户明码。填好后接下来就是期待装置,直至实现,会呈现重启按钮。点击重启。 重启后进入欢送界面(记得U盘拔掉,否则还是U盘优选加载),批准许可信息后就进入正式页面,能够应用了。

September 13, 2020 · 1 min · jiezi

关于centos7:CentOSRHEL-7-Failed-to-load-selinux-policy-freezing-问题的解决

“Failed to load selinux policy, freezing” in CentOS/RHEL 7嘿!!!您在启动过程中是否遇到过此类问题。 这是解决问题的办法。 步骤1:在疏导过程中烦扰失常疏导,并在疏导之前应用“ e”编辑内核疏导参数步骤2:在_linux16_行的开端应用以下关键字selinux = 0禁用selinux 。 步骤3:当初应用ctrl + x疏导零碎,这将禁用selinux并疏导零碎。请记住,这只是一个长期解决方案,要在启动后永恒修复,请重新安装以下软件包 # yum reinstall selinux-policy-targeted -y这将永恒修复它 通过重新启动进行验证

August 7, 2020 · 1 min · jiezi

关于centos7:centos-netstat查看端口占用情况

centos7 netstat查看端口占用状况 netstat -tlunp[root@7tpZ ~]# netstat -tlunpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program nametcp 0 0 0.0.0.0:8009 0.0.0.0:* LISTEN 792/jsvc.exectcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 8634/nginx: mastertcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 755/sshdtcp 0 0 172.31.227.168:22391 0.0.0.0:* LISTEN 835/pythontcp 0 0 0.0.0.0:9081 0.0.0.0:* LISTEN 792/jsvc.exectcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 11101/trojantcp6 0 0 :::3306 :::* LISTEN 834/mysqldtcp6 0 0 :::21 :::* LISTEN 799/vsftpdudp 0 0 0.0.0.0:44886 0.0.0.0:* 835/pythonudp 0 0 172.31.227.168:22391 0.0.0.0:* 835/pythonudp 0 0 172.31.227.168:123 0.0.0.0:* 564/ntpdudp 0 0 127.0.0.1:123 0.0.0.0:* 564/ntpdudp 0 0 0.0.0.0:123 0.0.0.0:* 564/ntpdudp6 0 0 :::123 :::* 564/ntpd ...

August 4, 2020 · 1 min · jiezi

关于centos7:centos-netstat查看端口占用情况

centos7 netstat查看端口占用状况 netstat -tlunp[root@7tpZ ~]# netstat -tlunpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program nametcp 0 0 0.0.0.0:8009 0.0.0.0:* LISTEN 792/jsvc.exectcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 8634/nginx: mastertcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 755/sshdtcp 0 0 172.31.227.168:22391 0.0.0.0:* LISTEN 835/pythontcp 0 0 0.0.0.0:9081 0.0.0.0:* LISTEN 792/jsvc.exectcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 11101/trojantcp6 0 0 :::3306 :::* LISTEN 834/mysqldtcp6 0 0 :::21 :::* LISTEN 799/vsftpdudp 0 0 0.0.0.0:44886 0.0.0.0:* 835/pythonudp 0 0 172.31.227.168:22391 0.0.0.0:* 835/pythonudp 0 0 172.31.227.168:123 0.0.0.0:* 564/ntpdudp 0 0 127.0.0.1:123 0.0.0.0:* 564/ntpdudp 0 0 0.0.0.0:123 0.0.0.0:* 564/ntpdudp6 0 0 :::123 :::* 564/ntpd ...

August 4, 2020 · 1 min · jiezi

关于centos7:监控Linux服务器CPU和内存

利用脚本获取Linux服务器的CPU和内存。 须要装置bc计算器 yum install -y bc创立执行脚本计算CPU利用率,配置了5秒采样。 执行脚本,5秒后输入采集日期|CPU负载|可用内存|总内存 #!/bin/sh##echo user nice system idle iowait irq softirqCPULOG_1=$(cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}')SYS_IDLE_1=$(echo $CPULOG_1 | awk '{print $4}')Total_1=$(echo $CPULOG_1 | awk '{print $1+$2+$3+$4+$5+$6+$7}')# 休眠5秒,持续采样sleep 5CPULOG_2=$(cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}')SYS_IDLE_2=$(echo $CPULOG_2 | awk '{print $4}')Total_2=$(echo $CPULOG_2 | awk '{print $1+$2+$3+$4+$5+$6+$7}')SYS_IDLE=`expr $SYS_IDLE_2 - $SYS_IDLE_1`Total=`expr $Total_2 - $Total_1`SYS_USAGE=`expr $SYS_IDLE/$Total*100 |bc -l`SYS_Rate=`expr 100-$SYS_USAGE |bc -l`Disp_SYS_Rate=`expr "scale=3; $SYS_Rate/1" |bc`echo $Disp_SYS_Rate%# 减少内存统计Memory=`free -m | awk 'NR==2{print $4"|"$2}'`# 采集日期 | CPU负载 | 可用内存 | 总内存echo `date '+%Y-%m-%d %H:%M'`"|"$Disp_SYS_Rate%"|"$Memoryexit 0在CentOS7上测试通过。 ...

July 29, 2020 · 1 min · jiezi

关于centos7:centos7-安装git-2x

1. 新增仓库新增Wandisco GIT repository $ sudo vi /etc/yum.repos.d/wandisco-git.repo在文件中退出内容/etc/yum.repos.d/wandisco-git.repo [wandisco-git]name=Wandisco GIT Repositorybaseurl=http://opensource.wandisco.com/centos/7/git/$basearch/enabled=1gpgcheck=1gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco插入仓库 $ sudo rpm --import http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco2. 装置$ sudo yum install git3. 查看版本$ git --version输出后果应该就是 git version 2.x

July 27, 2020 · 1 min · jiezi

关于centos7:2步完成centos-7安装yarn

有时候须要在centos服务器环境装置开发工具,如maven,npm,node,yarn等,可能用于打包公布,也有可能用于devops也说不定。上面是介绍2步实现yarn的装置1. 装置前环境配置1.1 装置源配置$ sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo1.2 nodejs装置1.2.1查看nodejs版本# 查看node以后版本,如显示版本示意已存在nodejs环境,不须要再进行装置$ node -v1.2.1装置nodejs版本如何在centos7上装置nodejs?请查看我发表的另一高达20K左右浏览量的文章:在centos7装置nodejs并降级nodejs到最新版本装置胜利后,再次查看nodejs版本,确认已存在nodejs环境2. 装置$ sudo yum install yarn3. 查看版本$ yarn --version

July 23, 2020 · 1 min · jiezi

关于centos7:Centos77-yum安装LNMP-nginx1180php746mysql5730

## 写在后面的 最近又来折腾本人的服务器 尝试yum装置并记录下装置过程和遇到的问题 心愿能帮到各位## 初始化服务器 yum update -y装置nginx设置nginx装置源可依据官网给出的进行设置 点我跳转到官网设置 这里将官网给出的centos的配置复制如下[nginx-stable]name=nginx stable repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=1enabled=1gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true[nginx-mainline]name=nginx mainline repobaseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/gpgcheck=1enabled=0gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true设置装置源cd /etc/yum.repos.d/#进入源目录vim nginx.repo #新建且编写nginx源文件 将下面复制的内容粘贴至此 保留#测试yum 源是否设置胜利yum list | grep nginx 装置nginxyum -y install nginx呈现如下图即示意装置胜利 启动nginxsystemctl start nginx设置开机启动systemctl enable nginx装置php7.4装置yum-utils并启用EPEL存储库yum install -y epel-release yum-utils 应用yum命令下载并装置remirepoyum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm要配置PHP 7.4存储库,请应用以下命令yum-config-manager --enable remi-php74装置PHP 7.4yum install -y php php-fpm php-common php-opcache php-mcrypt php-cli php-mysql php-dom php-simplexml php-ssh2 php-xml php-xmlreader php-curl php-date php-exif php-filter php-ftp php-gd php-hash php-iconv php-json php-libxml php-pecl-imagick php-mbstring php-mysqlnd php-openssl php-pcre php-posix php-sockets php-spl php-tokenizer php-zlib php-zip查看可安转的php其余扩大yum search php74 | more在这里楼主整顿了一份比拟残缺的扩大 大家能够依据本人的需要 来进行减少或者更改 节俭大家的工夫去整顿了yum install -y php74-php-pecl-http-message-devel php74-php-pecl-propro-devel php74-php-pecl-psr-devel php74-php-pecl-raphf-devel php74-php-pecl-xmldiff-devel php74-php-pecl-yaconf-devel php74-php-zephir-parser-devel php74-runtime php74-scldevel php74 php74-build php74-php php74-php-ast php74-php-bcmath php74-php-brotli php74-php-cli php74-php-common php74-php-componere php74-php-dba php74-php-dbg php74-php-devel php74-php-embedded php74-php-enchant php74-php-ffi php74-php-fpm php74-php-gd php74-php-geos php74-php-gmp php74-php-imap php74-php-intl php74-php-ioncube-loader php74-php-json php74-php-ldap php74-php-libvirt php74-php-libvirt-doc php74-php-litespeed php74-php-lz4 php74-php-maxminddb php74-php-mbstring php74-php-mysqlnd php74-php-oci8 php74-php-odbc php74-php-opcache php74-php-pdo php74-php-pdo-dblib php74-php-pdo-firebird php74-php-pear php74-php-pecl-ahocorasick php74-php-pecl-amqp php74-php-pecl-apcu php74-php-pecl-apcu-bc php74-php-pecl-apcu-devel php74-php-pecl-apfd php74-php-pecl-base58 php74-php-pecl-bitset php74-php-pecl-cassandra php74-php-pecl-cmark php74-php-pecl-couchbase2 php74-php-pecl-crypto php74-php-pecl-csv php74-php-pecl-datadog-trace php74-php-pecl-dbase php74-php-pecl-decimal php74-php-pecl-dio php74-php-pecl-druid php74-php-pecl-ds php74-php-pecl-eio php74-php-pecl-env php74-php-pecl-ev php74-php-pecl-event php74-php-pecl-fann php74-php-pecl-gearman php74-php-pecl-gender php74-php-pecl-geoip php74-php-pecl-geospatial php74-php-pecl-gnupg php74-php-pecl-grpc php74-php-pecl-handlebars php74-php-pecl-hdr-histogram php74-php-pecl-hprose php74-php-pecl-hrtime php74-php-pecl-http php74-php-pecl-http-devel php74-php-pecl-http-message php74-php-pecl-ice php74-php-pecl-igbinary php74-php-pecl-igbinary-devel php74-php-pecl-imagick php74-php-pecl-imagick-devel php74-php-pecl-inotify php74-php-pecl-interbase php74-php-pecl-ip2location php74-php-pecl-json-post php74-php-pecl-krb5 php74-php-pecl-krb5-devel php74-php-pecl-leveldb php74-php-pecl-lua php74-php-pecl-luasandbox php74-php-pecl-lzf php74-php-pecl-mailparse php74-php-pecl-mcrypt php74-php-pecl-memcache php74-php-pecl-memcached php74-php-pecl-memprof php74-php-pecl-mogilefs php74-php-pecl-mongodb php74-php-pecl-mosquitto php74-php-pecl-msgpack php74-php-pecl-msgpack-devel php74-php-pecl-mustache php74-php-pecl-mysql php74-php-pecl-mysql-xdevapi php74-php-pecl-mysqlnd-azure php74-php-pecl-nsq php74-php-pecl-oauth php74-php-pecl-opencensus php74-php-pecl-parle php74-php-pecl-pcov php74-php-pecl-pdflib php74-php-pecl-pq php74-php-pecl-propro php74-php-pecl-protobuf php74-php-pecl-psr php74-php-pecl-radius php74-php-pecl-raphf php74-php-pecl-rar php74-php-pecl-rdkafka php74-php-pecl-rdkafka4 php74-php-pecl-recode php74-php-pecl-redis4 php74-php-pecl-redis5 php74-php-pecl-request php74-php-pecl-rpminfo php74-php-pecl-rrd php74-php-pecl-runkit7 php74-php-pecl-scoutapm php74-php-pecl-scrypt php74-php-pecl-sdl php74-php-pecl-seasclick php74-php-pecl-seaslog php74-php-pecl-selinux php74-php-pecl-skywalking php74-php-pecl-solr2 php74-php-pecl-ssdeep php74-php-pecl-ssh2 php74-php-pecl-stats php74-php-pecl-stomp php74-php-pecl-svm php74-php-pecl-svn php74-php-pecl-swoole4 php74-php-pecl-sync php74-php-pecl-taint php74-php-pecl-termbox php74-php-pecl-timecop php74-php-pecl-trader php74-php-pecl-translit php74-php-pecl-uopz php74-php-pecl-uploadprogress php74-php-pecl-uuid php74-php-pecl-uv php74-php-pecl-varnish php74-php-pecl-vld php74-php-pecl-wddx php74-php-pecl-xattr php74-php-pecl-xdebug php74-php-pecl-xdiff php74-php-pecl-xhprof php74-php-pecl-xlswriter php74-php-pecl-xmldiff php74-php-pecl-xxtea php74-php-pecl-yac php74-php-pecl-yaconf php74-php-pecl-yaf php74-php-pecl-yaml php74-php-pecl-yar php74-php-pecl-yaz php74-php-pecl-zip php74-php-pecl-zmq php74-php-pggi php74-php-pgsql php74-php-phalcon4 php74-php-phpiredis php74-php-pinba php74-php-process php74-php-pspell php74-php-smbclient php74-php-snappy php74-php-snmp php74-php-snuffleupagus php74-php-soap php74-php-sodium php74-php-tidy php74-php-wkhtmltox php74-php-xml php74-php-xmlrpc php74-php-zephir-parser php74-php-zstd php74-unit-php php74-uwsgi-plugin-php php74-xhprof php74-zephir扩大中文阐明php74-php-snuffleupagus:x86_64: PHP的平安模块php74-php-pecl-cassandra:用于Apache的DataStax PHP驱动程序卡桑德拉php74-php-pecl-nsq:NSQ客户端的PHP扩大php74-php-cli:用于PHP的命令行接口php74-php-pecl-oauth:PHP OAuth消费者扩大php74-php-pecl-decimal:任意精度浮点小数php74-php-gmp:一个用于应用GNU的PHP利用程序模块议员库php74-php-pecl-rdkafka4:基于librdkafka的Kafka客户端php74-php-soap:用于应用SOAP的PHP应用程序的模块协定php74-php-phpiredis:x86_64: Redis的客户端扩展名php74-php-pecl-taint:x86_64: XSS代码嗅探器php74-php-pecl-redis4:的扩展名 Redis键值存储php74-php-pecl-propro-devel:php74-php-pecl-propro developer files (header)php74-php-pecl-psr-devel:php74-php-pecl-psr developer files (header)php74-php-pecl-redis5:的扩展名 Redis键值存储php74-zephir:用于创立扩大的Zephir语言PHPphp74-php-pecl-selinux:用于PHP脚本的SELinux绑定语言php74-php-pecl-rdkafka:基于librdkafka的Kafka客户端php74-php-pecl-grpc:x86_64:通用RPC框架php74-php-brotli:用于PHP的Brotli扩大php74-php-pecl-http-message-devel:php74-php-pecl-http-message developer files (headers)php74-php-pecl-fann:用于FANN库的包装器php74-php-pecl-yaz:x86_64: Z39.50/SRU客户端php74-php-lz4:x86_64: PHP的LZ4扩大php74-php-libvirt:用于Libvirt的PHP语言绑定php74-php-pecl-zmq:ZeroMQ消息传递php74-php-pecl-mongodb:x86_64:用于PHP的MongoDB驱动程序php74-php-process:用于PHP脚本的模块应用零碎过程接口php74-php-zephir-parser-devel:php74-php-zephir-parser developer files (headers)php74-php-pspell:x86_64:用于PHP应用程序的模块中接口php74-php-pecl-yar:轻量级并发RPC框架php74-php:用于创立动静web的PHP脚本语言网站php74-php-pecl-rrd:x86_64: rrdtool的PHP绑定php74-runtime:解决php74软件汇合的包php74-php-pecl-xmldiff-devel:php74-php-pecl-xmldiff developer files (header)php74-php-pecl-hprose:用于PHP的h散文php74-php-pecl-propro:属性代理php74-php-pecl-yac:无锁用户数据缓存php74-php-pecl-csv:CSV PHP extensionphp74-php-pecl-swoole4:PHP的异步并发分布式网络框架php74-php-pecl-pcov:x86_64:代码笼罩驱动程序php74-php-pecl-sync:已命名和未命名同步对象php74-php-pecl-yaf:x86_64:又一个框架php74-php-pecl-varnish:Varnish缓存绑定php74-php-pggi:GTK绑定php74-php-pecl-handlebars:Handlebars模板语言php74-php-pecl-rar:用于读取RAR存档的PHP扩大php74-php-pecl-xdebug:用于调试PHP脚本的PECL包php74-php-oci8:x86_64:用于应用OCI8的PHP应用程序的模块数据库php74-php-fpm:PHP FastCGI过程管理器php74-php-common:PHP的公共文件php74-php-pecl-xlswriter:一个高效、疾速的xlsx文件进口扩大php74-php-pecl-stats:用于统计计算的例程php74-php-pecl-krb5:Kerberos验证扩大php74-php-pecl-xhprof:x86_64: XHProf的PHP扩大,层次结构分析器php74-php-pecl-ssdeep:libfuzzy库的包装器php74-php-pecl-imagick:x86_64:用于创立和批改映像的扩大应用ImageMagickphp74-php-pecl-apcu-bc:APCu向后兼容模块php74-php-xml:x86_64:用于应用XML的PHP应用程序的模块php74-php-sodium:x86_64:钠明码库的包装php74-php-pecl-apfd:总是填充表单数据php74-php-componere:在运行时编写PHP类php74-php-pecl-cmark:CommonMark扩展名php74-php-pecl-uploadprogress:x86_64:跟踪进度的扩大文件上传php74-php-pecl-apcu-devel:APCu开发人员文件(头文件)php74-php-devel:构建PHP扩大所需的文件php74-php-pecl-http-message:x86_64: PSR-7 HTTP音讯实现php74-xhprof:一个用于PHP - Web接口的档次分析器php74-php-pear:noarch: PHP扩大和利用程序库框架php74-php-pecl-igbinary:x86_64:代替规范PHP序列化器php74-php-pecl-sdl:简略的PHP DirectMedia层php74-php-pecl-parle:x86_64:解析和词法剖析php74-php-pecl-zip:一个ZIP文件的扩展名php74:装置PHP 7.4的包php74-php-pecl-memcached:x86_64:应用Memcached的扩大缓存守护过程php74-php-zstd:x86_64: Zstandard扩展名php74-php-pecl-json-post:JSON POST处理程序php74-php-pecl-couchbase2:Couchbase服务器PHP扩大php74-php-pecl-krb5-devel:Kerberos扩大开发人员文件(头)php74-php-pecl-memcache:x86_64:应用Memcached的扩大缓存守护过程php74-php-pecl-xattr:扩大属性php74-php-pecl-svn:x86_64: Subversion版本的PHP绑定控制系统php74-php-pecl-seaslog:一个无效、疾速、稳固的日志 PHP扩大php74-php-pecl-protobuf:序列化结构化的机制数据php74-php-enchant:加强PHP的拼写扩大应用程序php74-php-pecl-mogilefs:要与之通信的PHP客户端库 MogileFS存储php74-php-phalcon4:Phalcon框架php74-php-pecl-xmldiff:x86_64: XML差别和合并php74-php-pecl-trader:为贸易商提供技术剖析php74-php-litespeed:LiteSpeed Web服务器PHP反对php74-php-pecl-rpminfo:x86_64: RPM信息php74-php-pecl-uopz:x86_64: Zend的用户操作php74-php-pecl-gnupg:x86_64: gpgme库的包装php74-php-pecl-vld:x86_64:转储PHP的外部示意脚本php74-php-pecl-apcu:APC用户缓存php74-php-maxminddb:MaxMind DB Reader扩大php74-php-embedded:用于嵌入应用程序的PHP库php74-php-pecl-wddx:Web分布式数据交换php74-php-pecl-seasclick:一个Yandex ClickHouse客户端驱动 PHP扩大php74-php-pecl-ip2location:获取an的地理位置信息IP地址php74-php-pecl-xdiff:文件差别/补丁php74-php-pecl-psr:PSR接口php74-build:根本的构建配置php74-php-pgsql:一个用于PHP的PostgreSQL数据库模块php74-php-json:x86_64: PHP的JavaScript对象符号扩大php74-php-pecl-yaconf-devel:php74-php-pecl-yaconf developer files (header)php74-php-pecl-scoutapm:本地扩大组件 ScoutAPM的PHP代理php74-php-pecl-druid:一个PHP的德鲁伊驱动php74-php-mysqlnd:x86_64:用于应用MySQL的PHP应用程序的模块数据库php74-php-pecl-xxtea:XXTEA加密算法扩大PHPphp74-php-smbclient:libsmbclient的PHP包装php74-php-pecl-mysql:MySQL数据库拜访函数php74-php-pecl-http:扩大的HTTP反对php74-php-pecl-recode:A module for PHP applications for using the recode libraryphp74-php-odbc:x86_64:用于应用ODBC的PHP应用程序的模块数据库php74-php-tidy:规范PHP模块提供了tidy库反对php74-php-xmlrpc:的PHP利用程序模块xml - rpc协定php74-php-gd:用于PHP应用程序应用gd的模块图形库php74-php-pecl-uuid:通用惟一标识符扩大对于PHPphp74-php-pecl-lua:嵌入式lua解释器php74-php-intl:x86_64: PHP国际化扩大应用程序php74-php-pecl-datadog-trace:APM和分布式跟踪PHPphp74-php-ffi:内部函数接口php74-php-pecl-timecop:x86_64:工夫旅行和解冻扩大php74-php-pecl-mailparse:用于解析和的PHP PECL包解决电子邮件音讯php74-php-pecl-skywalking:x86_64: Apache的PHP工具代理人行天桥php74-php-sqlsrv:x86_64:用于SQL Server的PHP Microsoft驱动程序php74-php-pecl-memprof:x86_64:内存应用分析器php74-php-zephir-parser:x86_64: Zephir解析器扩大php74-php-bcmath:用于PHP应用程序的模块bcmath库php74-php-pecl-runkit7:为了这些你…不应该…无论如何我始终在做……然而必定做的!php74-scldevel:x86_64:打包php74的开发文件php74-php-pecl-geoip:将IP地址映射到的扩展名地理位置php74-php-pinba:x86_64: Pinba统计服务器的客户端扩大php74-php-pecl-dbase:dBase数据库文件拜访函数php74-php-pecl-ssh2:x86_64: libssh2库的绑定php74-php-pecl-pq:PostgreSQL客户端库(libpq)绑定php74-php-pecl-pdflib:生成PDF文件的包php74-php-pecl-radius:Radius客户端库php74-php-pecl-eio:提供libeio库的接口php74-php-pecl-sphinx:Sphinx SQL全文的PECL扩大搜索引擎php74-php-pecl-mustache:Mustache模板语言php74-php-pecl-yaconf:x86_64:另一个配置容器php74-php-ast:形象语法树php74-php-pecl-gearman:PHP包装器到libgearmanphp74-php-pecl-hdr-histogram:x86_64: C语言的PHP扩大包装hdrhistogram APIphp74-php-pdo-dblib:x86_64: PDO驱动程序,用于Microsoft SQL Server和Sybase数据库php74-php-pecl-scrypt:Scrypt散列函数php74-php-pecl-ahocorasick:无效的Aho-Corasick字符串模式匹配算法php74-php-pecl-raphf-devel:php74-php-pecl-raphf developer files (header)php74-php-pecl-bitset:位集库php74-php-pecl-mcrypt:x86_64: libmcrypt库的绑定php74-php-mbstring:一个用于PHP应用程序的模块多字节字符串解决php74-php-pdo:一个用于PHP的数据库拜访形象模块应用程序php74-php-pecl-gmagick:的包装器GraphicsMagick库php74-php-pecl-amqp:与任何AMQP兼容的服务器通信php74-php-libvirt-doc:noarch: php-libvirt文件php74-php-pecl-mosquitto:libmosquito - to的扩大php74-php-pecl-leveldb:LevelDB PHP绑定php74-php-pecl-lzf:x86_64:解决LZF de/压缩的扩大php74-php-pecl-base58:用base58编码和解码数据php74-php-pecl-inotify:x86_64: Inotifyphp74-php-pecl-crypto:OpenSSL明码库的包装器php74-php-imap:x86_64:用于应用IMAP的PHP应用程序的模块php74-php-pecl-yaml:x86_64: yaml的PHP绑定php74-php-pecl-imagick-devel:imagick扩大开发人员文件(头)php74-php-pecl-solr2:Apache Solr的API定向对象php74-php-horde-horde-lz4:Horde LZ4压缩扩大php74-php-ioncube-loader:Loader for ionCube Encoded Files with ionCube 24 supportphp74-php-snappy:PHP的Snappy扩大php74-php-pecl-hrtime:x86_64:高分辨率定时php74-php-pecl-raphf:资源和长久句柄工厂php74-php-pecl-http-devel:x86_64:扩大HTTP反对开发人员文件(头)php74-php-pecl-stomp:Stomp客户端扩大php74-php-pecl-uv:Libuv包装器php74-php-pecl-luasandbox:带有限度和平安的Lua解释器环境php74-php-pecl-msgpack:用于与MessagePack通信的API序列化php74-php-pecl-mysql-xdevapi:MySQL数据库拜访函数php74-php-pecl-event:提供libevent库的接口php74-php-dbg:交互式PHP调试器php74-php-pecl-msgpack-devel:MessagePack开发人员文件(头)php74-php-pecl-env:加载环境变量php74-php-pecl-ds:x86_64: PHP的数据结构php74-php-dba:一个用于PHP的数据库形象层模块应用程序php74-php-pecl-gender:x86_64:性别扩大php74-php-pecl-translit:将非拉丁字符音译设置为拉丁文php74-php-wkhtmltox:HTML转换器php74-php-pecl-vips:x86_64:与libvip接口的PHP扩大php74-unit-php:用于NGINX单元的PHP模块php74-php-pecl-opencensus:一个stats汇合和分布式跟踪框架php74-php-snmp:一个用于PHP应用程序查问的模块SNMP-managed设施php74-php-ldap:x86_64:用于应用LDAP的PHP应用程序的模块php74-php-opcache:x86_64: Zend OPcachephp74-php-pecl-mysqlnd-azure:x86_64: mysqlnd的重定向插件php74-php-pecl-dio:间接I/O函数php74-php-pecl-geospatial:PHP扩大来解决公共天文空间性能php74-php-pecl-ev:提供libev库的接口php74-php-pecl-igbinary-devel:Igbinary开发人员文件(头)启动phpsystemctl start php-fpm设置开机启动systemctl enable php-fpm测试装置胜利与否在指定目录下创立index.php文件(楼主创立在home文件下写入phpinfo();) ...

July 22, 2020 · 3 min · jiezi

关于centos7:centos7-tomcat服务开启web访问目录浏览模式

默认状况下,因为安全性的思考,Tomcat是不让列出目录下的下的文件的。然而,在特定的场景下,你可能又须要用到这一性能。上面是步骤: 1. 配置web.xml文件地位:%tomcat_home%/conf/ tomcat 的web.xml 配置文件中有一个属性值 listing ,这个属性值是管制是否展现虚拟目录;默认配置是 false,即不对外展现文件虚拟目录咱们将它改成true <servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>true</param-value> <!-- 这个默认是false,改成 true --> </init-param> <load-on-startup>1</load-on-startup> </servlet>2. 配置 server.xml文件地位:%tomcat_home%/conf/ 减少配置URIEncoding="utf-8"。目标是让中文能显示失常 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="utf-8" /> 3. 重启tomcat# 可能你有其余启运行tomcat命令,不肯定用上面这句$ systemctl restart tomcat.service# 启动胜利后,可查到tomcat过程$ ps -ef|grep tomcat4. 查看成果胜利把文件和文件夹列出来。 5. 可能存在的问题5.1 重启后不失效,报404可能是用户权限问题。如果你是应用 下载-批改-删除-上传 的形式进行配置文件的,请查看文件的用户权限是否受限例如:文件是由root新增,但原文件用户和用户组却是www www将root变更为www用户组权限的办法:$ chowm www:www web.xml

July 20, 2020 · 1 min · jiezi

centos7全自动生成letsencrypt通配符证书最佳实践

完成centos7完全自动化的生成letsencrypt通配符证书,整个过程花了我差不多一周的时间,其中有6天半的时间都是在搜集各种资料,当资料找齐之后,很快就完成了证书生成。写下这篇文章希望能为你节省6天半的时间。 之所有能够实现自动化的ssl通配符证书要得益于两次更新1.2018年3月letsencrypt开始支持通配符证书2.certbo支持以hook的方式通过操作DNS服务商的API进行域名所有权的验证。 我们这次要用到两个工具1.certbot2.支持阿里云DNS的hook 操作过程1.安装certbo yum install certbot2.获取dns验证插件 git clone https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-aucd certbot-letencrypt-wildcardcertificates-alydns-auchmod 0777 au.sh3.在阿里云后台获取操作DNS服务的API key和密钥然后配置到au.sh文件里面的ALY_KEY 和 ALY_TOKEN 4.执行下面的操作就可以生成你的通配符证书了 ./certbot-auto certonly -d *.example.com --manual \--preferred-challenges dns \--manual-auth-hook "/脚本目录/au.sh php aly add" \--manual-cleanup-hook "/脚本目录/au.sh php aly clean"5.你可以通过Mozilla的ssl配置生成网站生成你的最佳配置 6.因为是通配符证书,所以你可能在很多虚拟主机上都会用到,那么你可以把ssl部分的配置写在一个单独文件里面,然后在其他需要用到的低脂肪直接include 7.你可以通过这个网站来查看你的域名证书等级。

July 4, 2020 · 1 min · jiezi

certos7-安装使用certbot遇到的问题

问题1: ImportError: cannot import name UnrewindableBodyError网上搜索了一下,发现是python的软件包urlib3的问题,需要卸载重装 # sudo pip uninstall urllib3 # sudo yum remove python-urllib3 # sudo pip install urllib3 # sudo yum install python-urllib3 问题2: ImportError: 'pyOpenSSL' module missing required functionality问题原因是openssl包的版本太低了,centos7默认是0.13,cert要求最低0.14.网上搜到的一个解决方案是通过rpm包升级到0.15 rpm -Uvh http://cbs.centos.org/kojifiles/packages/pyOpenSSL/0.15.1/1.el7/noarch/pyOpenSSL-0.15.1-1.el7.noarch.rpm如果你这么做了,那么你会遇到另外一个问题: AttributeError: 'module' object has no attribute 'SSL_ST_INIT'网上找到这个问题的解决方法是让你降级到centos7的默认版本。。。。。。。。。终极解决方案:升级到0.16或者更高版本 rpm -Uvh https://cbs.centos.org/kojifiles/packages/pyOpenSSL/16.2.0/3.el7/noarch/python2-pyOpenSSL-16.2.0-3.el7.noarch.rpm

July 2, 2020 · 1 min · jiezi

搬运一个centos-75升级后wifi设备无法正常工作的解决方法

昨天把刚拿到手的mini电脑centos 7.5跑了一下yum upgrade,重启之后发现wifi连不上网了,所以研究了一下。 首先用ip addr命令查看可用的网络设备列表,发现没有wifi设备,只能看到lo设备和两个有线网卡: [root@localhost ~]# ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: enp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000 link/ether dc:9c:52:00:01:da brd ff:ff:ff:ff:ff:ff inet 192.168.3.252/24 brd 192.168.3.255 scope global noprefixroute enp2s0 valid_lft forever preferred_lft forever inet6 fe80::676f:d9f0:e14a:9e32/64 scope link tentative noprefixroute valid_lft forever preferred_lft forever3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether dc:9c:52:00:01:db brd ff:ff:ff:ff:ff:ff inet 192.168.3.251/24 brd 192.168.3.255 scope global noprefixroute enp3s0 valid_lft forever preferred_lft forever inet6 fe80::7289:760:7f85:7c19/64 scope link noprefixroute valid_lft forever preferred_lft forever然后用lspci命令查看了一下pci设备列表,可以看到wifi设备 ...

June 22, 2020 · 1 min · jiezi

CentOS-7安装MySQL

一、下载MySQL安装包1、打开MySQL官网https://www.mysql.com/downloads/ 2、选择MySQL Community (GPL) Downloads » 3、选择MySQL Yum Repository 4、选择Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package,点击DownLoad 5、跳转到登录页面,点击下方No thanks, just start my download. 二、安装1、查询是否安装了mysql rpm -qa|grep mysql2、 卸载mysql (下面是卸载mysql的库,防止产生冲突,mysql也是类似卸载方式) rpm -e --nodeps mysql-libs-5.1.*卸载之后,记得:find / -name mysql删除查询出来的所有东西3、将下载好的rpm文件上传到CentOS服务器上 4、输入以下命令开始安装 yum localinstall mysql80-community-release-el7-3.noarch.rpm 5、安装完毕,重启mysql服务 service mysqld restart6、查看mysql服务是否启动成功 ps -ef|grep mysql 三、修改密码1、查询MySQL的临时密码 grep 'temporary password' /var/log/mysqld.log 2、复制临时密码,然后登录MySQL mysql -uroot -p输入临时密码 3、修改密码 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';然后刷新权限 ...

June 4, 2020 · 1 min · jiezi

Centos7命令行安装新版Node

# 更新系统sudo yum -y update# 安装curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -sudo yum clean all && sudo yum makecache fastsudo yum install -y gcc-c++ makesudo yum install -y nodejs# 验证node -v

June 2, 2020 · 1 min · jiezi

centos-7-设置固定ip

编辑配置$ vim /etc/sysconfig/network-script/ens-33 TYPE="Ethernet"DEFROUTE="yes"PEERDNS="yes"PEERROUTES="yes"IPV4_FAILURE_FATAL="no"IPV6INIT="yes"IPV6_AUTOCONF="yes"IPV6_DEFROUTE="yes"IPV6_PEERDNS="yes"IPV6_PEERROUTES="yes"IPV6_FAILURE_FATAL="no"IPV6_ADDR_GEN_MODE="stable-privacy"NAME="ens33"UUID="e22979db-f642-4e0d-b6df-f8a0fd5cc440"DEVICE="ens33"ONBOOT="yes"# 要修改的部分# 此处修改成static代表静态ipBOOTPROTO="static"# 新增的部分# 自定义的静态ipIPADDR=192.168.58.131NETMASK=255.255.255.0GATEWAY=192.168.58.2DNS1=8.8.8.8如果是克隆的机器,需要添加如下内容,MAC地址可通过ifconfig查出HWADDR=00:0c:39:7f:c8:6c重启服务$ systemctl restart network注意:可能需要重启reboot

November 2, 2019 · 1 min · jiezi

Docker-安装-MySQL

本篇将介绍如何使用 Docker 部署 MySQL 数据库及远程访问配置 安装 MySQL拉取镜像使用下面的命令拉取 MySQL 数据库的镜像: $ sudo docker pull mysql # 拉取最新版本的镜像,当前为 MySQL 8 版本,tag 为 latest$ sudo docker pull mysql:5.7 # 指定拉取 MySQL 5.7 版本也可以使用搜索命令,查找其他的 MySQL 相关镜像,其中有标识 Stars 数,即受欢迎程度。 $ sudo docker search mysql运行 MySQL$ sudo docker run -p 3306:3306 \ --name mysql \ -v $PWD/conf:/etc/mysql/conf.d \ -v $PWD/logs:/logs \ -v $PWD/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=your-password \ -d mysql命令说明: -p 3306:3306 :将容器的 3306 端口映射到主机的 3306 端口。-v $PWD/conf:/etc/mysql/conf.d :将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。-v $PWD/logs:/logs :将主机当前目录下的 logs 目录挂载到容器的 /logs。-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。-e MYSQL_ROOT_PASSWORD=your-password :初始化 root 用户的密码,建议使用复杂度高的密码。-d mysql : 要部署的镜像名,如果是5.7版本的话,这里则为mysql:5.7配置远程访问远程访问 MySQL 属于基本配置,但是在配置的时候要注意安全性问题,否则将存在安全性隐患,尤其是企业用服务器更要注重安全性。 ...

October 13, 2019 · 2 min · jiezi

使用VirtalBox最小化安装CentOS7

本文介绍如何使用virtual box虚拟机安装cenos-7,并进行网络配置,使虚拟机可以连外网,使宿主机可以连虚拟机。 宿主机:windows 10 (2019.06.02更新,版本号1809,操作系统版本号17763.503。在设置--系统--关于中查看)虚拟机: virtual box 5.2.30CentOS: CentOS-7-x86_64-DVD-1810.iso工具:XShell 5. xshell在Linux下配色选择BlackPoppingCandy.xcsvirtual box默认安装即可,本文不再赘述。 1. 设置virtual box打开virtual box,点击新建按钮 在新打开的窗口中,类型选择Linux,版本选择Red Hat 64bit,名称写自己喜欢的名称设置内存,添加硬盘(现在创建虚拟硬盘),VDI,动态分配,然后为虚拟硬盘选择一个位置,并设置大小 点击创建点击新创建好的虚拟机,然后点击设置 系统设置中,反选“软驱”。这一步不做也可以存储设置中,为光驱(IDE控制器下的圆盘)加载CentOS的镜像文件: 网络设置中,网卡1是“网络地址转换(NAT)”,这个默认应该已经启动。然后再把网卡2启动,选择“仅主机(Host-Only)网络”,此时应该会自动选择一个界面名称,每个机器可能不一样: 共享文件夹界面,点击右侧的添加按钮,设置一个共享文件夹,可以在windows和linux之间传文件。不需要自动挂载: 配置完之后,点击确定可以通过设置CPU数量为4,CPU使用率降低到50%,降低VirtualBox的CPU使用率2. 安装CentOS-7virtual box的主界面上,点击启动,启动刚才的虚拟机。在新界面中,会提示安装CentOS。通过按上下键选择不同的选项。这里我们直接选择“install CentOS 7”来安装 语言选择界面,我们选择English>English(United States)。如果鼠标在虚拟机中出不来,按键盘右侧的ctl键即可让鼠标跳出虚拟机INSTALLATION SUMMARY界面: 设置Data&Time为中国地界,设置完后点击左上角的“Done”按钮。设置INSTALLATION DESTINATION,进去后选择分配的磁盘(需要点它两次),使用默认分区(Automatic partition)即可。SOFTWARE SELECTION中默认选择的就是Minamal Install,如果需要安装其他功能,可以进入这个选择其它功能进行安装。 然后就开始安装了,此时我们可以设置root密码,并新建一个用户。如果密码设置过于简单,需要点击两次Done按钮,强制设置简单的密码。在新建的用户中,最好选择上“设置为管理员”,这样新用户就可以执行sudo操作。安装完后点击reboot重启3. 设置网络使用root用户登陆重启后的虚拟机执行ip a命令查看现有的网络地址cd /etc/sysconfig/network-scriptsvi ifcfg-enp0s3,把最后的ONBOOT设置为yes。enp0s3就是virtual box中设置的NAT网络。这个网络是为了让虚拟机可以上网 vi ifcfg-enp0s8,修改BOOTPROTO=staic, ONBOOT=yes,添加IPADDR=192.186.56.103,103可以换成其它的。enp0s8就是virtual box中设置的host-only网络。这个网络是为了让宿主机和虚拟机之间互联(IP地址需要先使用ip a命令查看现有地址,再修改最后一位) service network restart重启网络ip addr查看网络状态: 使用XShell 5,用ssh命令连接192.168.56.103地址,可以连接通,说明宿主机和虚拟机通了。ping www.baidu.com也通,则说明外网通了至此在Windows10下使用virtual box安装centos-7就成功了 4. 安装增强功能并设置共享目录参考VirtualBox使用Centos7与主机共享文件夹 这里我们切换到了具有sudo权限的普通用户,不再直接使用root用户操作lsscsi 查看设备。其中的/dev/sr0就是虚拟机的虚拟光驱 在虚拟机界面,点击设备--分配光驱-->然后选择virtual box安装目录中的VBoxGuestAddition.iso文件sudo mkdir /media/cdromsudo mount /dev/sr0 /media/cdrom,把光盘挂在到/media/cdrom目录cd /media/cdrom后,能看到很多文件,说明挂载成功sudo yum install gcc kernel-devel kernel-headers dkms make bzip2 安装依赖软件sudo yum update更新软件sudo sh ./VBoxLinuxAdditons.run,安装增强功能 ...

October 8, 2019 · 1 min · jiezi

CentOS-7-使用-docker-安装-typecho-博客系统

前言我的博客 https://savokiss.com 用的是 typecho,一直使用的是 阿里云ECS 直接安装的 MySQL 和 PHP,由于买的时间比较早,当时用的是 CentOS 6.5。后来想玩 docker,发现 docker 只支持 CentOS 7+,加上之前的系统上东西太乱了,所以这次有时间就将数据库和 typecho 源码备份了一下,然后换了一个纯净的 CentOS 7.6 的镜像。由于我买的 ECS 是 1CPU 1GB 内存,之前还一直担心跑不起来 docker,这次升级完之后发现完全没问题,内存用了一半都不到哈~于是记录下这个过程,说不定可以帮到其他小伙伴。 升级系统,建议备份好数据,由于我的 ECS 上面主要就一个博客,所以直接用全新的镜像,安装完后啥都木有,当然也可以直接将快照创建为自定义镜像,然后升级系统的时候选择即可该快照即可。本人也是 docker 小白,如果对 docker 不熟悉,可以先看笔者的另一篇文章: 写给前端工程师的 docker 入门 下面开搞: 配置新用户如果想要用非 root 用户执行 docker 命令,请参考此步骤。新增的用户名叫 savokiss。下面的命令使用 root 执行。添加用户useradd savokiss修改密码passwd savokiss加入 sudo 权限visudo找到下面两行,将新用户写入,如: ## Allow root to run any commands anywhereroot ALL=(ALL) ALLsavokiss ALL=(ALL) ALL创建 docker 用户组groupadd docker将新用户加入 docker 组usermod -aG docker savokiss让变更生效: ...

October 7, 2019 · 3 min · jiezi

使用Docker封装java应用

使用Docker封装java应用本文介绍如何使用docker应用封装一个java应用(名字叫cspj)。这个java应用涉及数据持久化以及RMI调用。 1. docker介绍docker是一种容器技术,对操作系统、文件系统、网络等进行了封装,使其中的进程可以完整运行。 docker和虚拟机是不同的技术。虚拟机虚拟了一套硬件环境,需要在这个硬件环境之上安装完整的操作系统、jdk等相关软件,才能运行一个java应用,虚拟机和宿主机在操作系统层面就是相互隔离的。以Linux下的docker为例,它使用的依旧是宿主机中的Linux内核,只不过在宿主机的用户层上虚拟了一个容器,这个容器中的Linux只是操作系统中的一小部分,使用的依旧是宿主机的Linux内核。比如宿主机是Ubuntu,docker虚拟的操作系统可以是alpine,这只是虚拟了alpine和Ubuntu不同的部分。 一个docker容器中一般只运行一个应用,这和虚拟机也是不同的。比如我们的一个应用有java应用,有数据库mysql,那么java应用运行在一个容器里,mySql运行在另一个容器里。他们之间可以通过docker虚拟的网络进行交互。 docker中的容器就是运行中的进程。它是通过镜像进行启动的。docker中的镜像就相当于一个模板,启动一个容器就相当于通过模板创建一个可执行的应用。因此,只要镜像不变,所有通过这个镜像创建的容器都是一摸一样的。又因为docker进行了操作系统、文件系统、网络等方面的封装,所以这个镜像就可以在各种不同的环境上运行,从而保证一致的执行效果。 容器运行之后,在其中会有一个可读写层,这是用来临时保存容器中应用在运行中产生的数据的。当这个容器被销毁之后,所保存的数据也就消失了。使用原有的镜像重新运行一个新的容器,就又是一个全新的应用了。 所以,如果我们需要对容器中的数据进行持久化,就需要用到volume或者bind mounts技术。比如我们的java应用中有一个内置文件数据库Derby,如果需要保留对这个文件数据库的修改,同时又不想改变镜像文件,就可以把这个文件数据库使用volume或bind mounts技术保存到宿主机的文件系统中。这样,即使容器被销毁,容器中所修改的文件数据库也会被保留下来。 还有一种方法保存容器中的临时数据,就是使用commit命令把容器可读写层中的临时数据也一起生成一个新的镜像。以后通过这个新镜像运行的容器,就都保留了这部分数据,这部分数据也就成了新镜像的一层,而且无法被修改。通过这个新镜像运行的容器,会生成一个新的可读写层,用来临时保存此次运行中生成的数据。如果一直使用commit保存数据,新的镜像就会越来越大。docker官方不推荐使用这种方法保存数据。 在详细说一下docker的镜像。docker的镜像是使用Dockerfile制作的。Dockerfile是一个脚本,docker build命令会读取这个脚本,按照其指令构造镜像。docker的镜像是一层一层的。每一个Dockerfile指令,都会生成镜像中的一层。 我们自己制作的docker镜像通常不会从最底层开始构建。比如我们要制作一个java应用的镜像,我们就要依赖于openjdk:8-alpine的官方镜像。在这个基础之上,再制作我们的java应用镜像层。而官方的openjdk:8-alpine则是基于alpine操作系统制作的镜像,在这个操作系统之上,它为我们设置好了各种环境变量,我们在这个镜像之上就可以直接制作我们自己的java应用镜像,而不必关心jdk的设置了。 aphine 是一个特别简洁的官方的Linux操作系统系统容器镜像,只有5M大小。从中也可以看出docker和虚拟机的区别,虚拟机中运行的操作系统一定是完整的操作系统,通常都会有几个G的大小。 2. 环境准备Intel-Core-i7 CPU, 安装Windows10操作系统,使用VirtualBox安装了CentOS-7虚拟机。我们将在CentOS-7虚拟机上安装Docker。关于如何在安装设置虚拟机,请参看这里。 如果要执行8.2节中的实例,必须使用VMWare虚拟机安装CentOS-7系统,因为VMWare支持nested vm。还需要设置vmware虚拟机的处理器中,选择“虚拟化Intel VT-x/EPT或AMD-V/RVI(V)。 如果使用AMD处理器,则可以使用VirtualBox安装CentOS-7,因为最新的VirtualBox-6支持在AMD系统上打开netstad vm。 VirtualBox中安装的CentOS-7系统的IP地址是192.168.56.104. 3. 安装DockerDocker分为社区版和企业版,我们使用社区版即可。 卸载旧docker$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine安装docker# 安装依赖$ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2# 设置国内镜像源$ sudo yum-config-manager \ --add-repo \ https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo# 安装最新版本$ sudo yum install docker-ce docker-ce-cli containerd.io# 启动$ sudo systemctl start docker# 验证,或从docker官方下载hello-world镜像并根据镜像运行容器。这个镜像只有不到2K$ sudo docker run hello-world# 把用户添加到docker组中,这样执行docker命令时就不必使用sudo了$ sudo usermod -aG docker your-user设置镜像加速器可以加速从Docker Hub获取镜像的速度。在/etc/docker/daemon.json文件中(如不存在请新建)添加如下内容: ...

October 4, 2019 · 10 min · jiezi

Centos7-编译安装-LNMP-可能是全网最全

声明本文档请用于学习,生产环境谨慎使用 前言网络上有很多关于Windows或者Linux下面安装LNMP的教程,非常多。但是我还是选择自己去一步一步实现,即使我已经按照网上的教程在不同系统中装了N多次。为什么?因为不懂。不懂为什么需要那些系统软件,不懂那些编译项为什么要加?有何作用?只会复制粘贴。 几点建议: 编译安装只是环境搭建的开始,别想着把所有问题都在此阶段解决坚持按需编译,最小化安装,把问题暴露出来,去解决它对使用的每一个编译参数负责远离复制粘贴,你可能还有救完全不了解的软件尽可能避免编译安装目标我们把Laravel跑起来! 基本情况软件文档列表此处文档是基础软件文档,不是很全,一部分软件文档在内容中。 NginxMysqlRedisPhpSwoole系统要求# 查看CentOS版本[root@bogon source]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@bogon source]# cat /proc/versionLinux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018软件列表系统内置 CURL 命令,所以我们选择CURL下载软件curl -O xxx,如果软件包出现解压问题,不是因为tar -zxf 解压不了这个包。而是说明这个包下载的不完整,或者说因为网络原因只是一个空包,解决办法是删除后重新下载。另外防止网站迁移,请使用curl -OL参数.-L:跟踪重定向国外资源下载太慢,请使用迅雷下载,然后通过scp上传到服务器,常用参数: -r 下载整个目录-p 指定端口,默认 22使用场景: scp -p <server port> <server user>@<server ip>:<server path>/<server file> <local path> 这是下载服务器资源,资源将被保存到 <local path>。scp -p <server port> <local path>/<local file> <server user>@<server ip>:<server path> 这是上传本地文件到服务器指定路径mysql-8.0.17.tar.gznginx-1.16.1.tar.gzphp-7.3.9.tar.gzredis-5.0.5.tar.gzswoole-4.4.4.tgzSoftware Collections为什么先说这个,为了给大家提供一个不需要关注 lnmp 系统依赖,而只是编译安装 lnmp 的方法。 ...

September 9, 2019 · 16 min · jiezi

supervisord进程管理服务

简介官网 http://supervisord.org/supervisor是一个允许用户监视和控制在linux操作系统的进程数量的客户端/服务器系统。由python语言编写,用以监控服务器的运行,发现问题能立即自动预警及自动重启等功能。supervisor还要求管理的程序是非daemon程序,supervisord会帮你把它转成daemon程序。 组件supervisord服务端,他负责在他自己的进程下起一个子进程,相应来自客户端的命令,重启崩溃或异常退出的子进程,输出相关日志,针对于子进程活跃期间的时间进行生成和管理配置文件位置: /etc/supervisord.conf 注意配置合理权限 supervisorctl命令行客户端,有supervisord提供的一个shell-like接口,通过它,用户可以连接到不同的supervisorctl进程,查看,起停子进程,列出正在运行的子进程。通过TCP进行交互,提供认证,在[supervisorctl]段进行统一的配置 web serversupervisorctl的web管理界面,通过访问http://localhost:9001/来管理子进程状态,[inet_http_server]这段进行配置 安装前提条件是要有python环境,linux一般自带python环境,这里以centOS为例。 yum安装yum install -y supervisor启动systemctl start supervisor配置文件解析生成配置文件:echo_supervisord_conf > /tmp/supervisord.conf一般yum安装后配置文件默认位置是/etc/supervisor/supervisord.conf。其中注释是以分号开头 [unix_http_server] #这段是通过socket文件启动的web server,这个要有,因为命令行supervisorctl是通过这个实现的。file = /tmp/supervisor.sockchmod = 0777chown= nobody:nogroupusername = userpassword = 123[inet_http_server] #通过网络端口启动的web serverport = 127.0.0.1:9001username = userpassword = 123[supervisord] #这块是服务配置logfile = /tmp/supervisord.log 日志文件logfile_maxbytes = 50MB 日志文件最大sizelogfile_backups=10 日志轮询下备份数loglevel = info 日志级别pidfile = /tmp/supervisord.pid pid文件位置nodaemon = false 如果是true,supervisor将在前端启动minfds = 1024 supervisord启动成功的最小文件描述符数minprocs = 200 supervisord启动成功的最小进程描述符数umask = 022user = chrism 启动用户,这块要注意,这个用户要有相应的目录权限identifier = supervisor supervisor进程的 identifier字符串,用户RPC协议接口directory = /tmp 当supervisord服务daemonizes时,切换到这个目录,可用这个%(here)s变量来扩展到整个配置文件nocleanup = true 禁止supervisord在启动时间清空任何存在的AUTO子日志文件childlogdir = /tmp AUTO自日志文件目录strip_ansi = false 除去在子日志文件中所有的 ANSI转义序列environment = KEY1="value1",KEY2="value2" 一个键/值的列表,一个环境变量吧?[supervisorctl]serverurl = unix:///tmp/supervisor.sockusername = chrispassword = 123prompt = mysupervisor String used as supervisorctl prompt.作为supervisorctl提示字符串。管理进程配置配置文件位置:/etc/supervisor/conf.d/一般有如下配置项: ...

August 20, 2019 · 2 min · jiezi

Centos7下PHP源码编译和通过yum安装的区别和以后的选择

最近在Centos7下配置PHP+Nginx+MySQL,对源码编译和yum编译的两种方法产生好奇。究竟这两种哪一种好?其实这两种方法各有千秋: 从yum安装来说吧,yum相当于是自动化帮你安装,你不用管软件的依赖关系,在yum安装过程是帮你把软件的全部依赖关系帮你傻瓜式的解决了。而且现在Centos7的服务启动已经换成systemctl命令来控制了。通过yum安装会帮你自动注册服务,你可以通过systemctl start xxx.service启动服务,方便快捷。但是缺点是yum安装你没办法干预,安装的目录也是分散的。你可能要执行whereis或者find命令去找yum安装的路径。有时候yum安装的软件版本比较低,你不得不去找其他的yum源,或者rpm包。 源码编译在安装过程中可能要解决很多的依赖问题,才能装好一个软件。装好的软件你还不能通过systemctl来启动服务,因为在/usr/lib/systemd/system/路径下并没有你的服务的配置文件,你要自己手写一个。但是好处在于你能选择软件的版本,自定义安装目录,安装的模块。更加灵活方便。 以上两种都是有各自的优点,建议是初学者一定要掌握源码编译的过程,手动解决安装过成中遇到的问题,熟悉如何编译一个软件,对于以后的发展是很有利的,而且有些软件没办法通过yum安装,这时候源码编译就显得很重要了。而像PHP这类软件来说,如果是编译安装的,如果缺少一个扩展,你就得做phpize, ./configure, make && make install等方式编译PHP扩展,这是很繁琐的。通过yum安装的话,当你要增加一个扩展,例如pdo,你就能够yum search php | grep pdo来寻找合适的pdo包,然后下载安装,系统会自动帮你添加到PHP扩展列表。省去我们很多工作。 个人愚见,不喜勿喷。

August 18, 2019 · 1 min · jiezi

virtualbox-解决文件挂载问题-相当详细

废话不多说首先,我们要知道,我们使用 vagrant init centos/7vagrant up会有下面的问题: Vagrant was unable to mount VirtualBox shared folders. This is usuallybecause the filesystem "vboxsf" is not available. This filesystem ismade available via the VirtualBox Guest Additions and kernel module.Please verify that these guest additions are properly installed in theguest. This is not a bug in Vagrant and is usually caused by a faultyVagrant box. For context, the command attempted was:mount -t vboxsf -o uid=1000,gid=1000 home_vagrant_labs /home/vagrant/labsThe error output from the command was:/sbin/mount.vboxsf: mounting failed with the error: No such device因为没有在 vagrant box 中安装 VBoxGuestAdditions ( centos/7 base box 就没装,不怪你们)虚拟机安装VBoxAdditions增强功能,该功能有如下作用: ...

July 9, 2019 · 2 min · jiezi

CentOS-6升级到CentOS-7

转载请注明文章出处:https://tlanyan.me/upgrade-ce... 注意非必要情况,请使用重新安装系统的方式升级,原因如下: 并非所有的系统都能顺利从6升级到7,安装的软件越少,升级成功的可能性越大;只支持6.5及以上系统升级到不高于7.2系统;升级的耗时完全不比重新安装少,绝大多数情况下会耗费更长的时间和更多精力;升级完成后处理各种依赖是一个非常头大的问题。本人在同一天升级了两台电脑,一个成功一个失败。成功的那台电脑额外花了一天时间处理各种依赖和问题,失败的电脑半小时装好系统和必备软件,用得爽歪歪。所以如非必要,建议采用备份数据后直接重装系统的方式。 操作通过软件方式从6升级到7,请参考下面的步骤: 升级当前系统到最新版本:yum update -y安装旧版openscap: yum remove -y openscap && yum install -y http://dev.centos.org/centos/6/upg/x86_64/Packages/openscap-1.0.8-1.0.1.el6.centos.x86_64.rpm;添加upgradetool源: cat <<EOF >/etc/yum.repos.d/upgradetool.repo[upgrade]name=CentOS-$releasever - Upgrade Toolbaseurl=http://dev.centos.org/centos/6/upg/x86_64/gpgcheck=1enabled=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6EOF安装升级工具:yum install -y redhat-upgrade-tool preupgrade-assistant preupgrade-assistant-contents;执行升级可行性分析:preupg -l,该命令会耗费几分钟到几十分钟时间。如果出现preupg: error: [Errno 2] No such file or directory: '/root/preupgrade/result.html'的错误,请参考第一步安装openscap的旧版;使用清华大学的centos-vault源安装7.2版本:centos-upgrade-tool-cli --network 7 --instrepo=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.2.1511/os/x86_64/。注意:7.2是支持升级的最高版本,升级其他版本将会出现Downloading failed: invalid data in .treeinfo: No section: 'checksums'的错误提示; 如果升级成功,用reboot命令重启系统;如果提示The requested URL returned error: 404 Not Found等错误,基本上说明当前系统不支持直接升级。果断采用重装系统的正道吧,少年!系统重启后,有可能因为依赖库确实导致ssh无法启动,grep不能正常使用等问题。基本功底够好的手动排查,然后一个个问题解决;搞不懂错误原因或者觉得处理麻烦的,备份数据后重装系统吧!使用rpm -qa | grep el6查看系统上残留的软件包。如果能手动清理掉,让系统update无障碍,耐心一个个处理掉。如果觉得依赖太麻烦或者搞不定,备份数据后重装系统吧!参考https://blog.51cto.com/moerji...

July 7, 2019 · 1 min · jiezi

centOS7-搭建k8s-少受翻墙的苦

都是走的国内镜像源 -- 鲁迅关闭 selinuxsetenforce 0 #实时动态关闭 selinuxsed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #禁止重启后自动开启关闭交换分区swapoff -a #实时动态关闭交换分区sed -i '/ swap / s/^/#/' /etc/fstab #禁止重启后自动开启网络配置文件cat <<EOF > /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1vm.swappiness=0EOFmodprobe br_netfilter #执行该命令 如果不执行就会在应用k8s.conf时出现加载错误sysctl -p /etc/sysctl.d/k8s.conf #应用配置文件yum换国内源cd /etc/yum.repos.d && \sudo mv CentOS-Base.repo CentOS-Base.repo.bak && \sudo wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && \yum clean all && \yum makecache配置k8s资源的下载地址cat <<EOF > /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0repo_gpgcheck=0gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF安装依赖yum install -y docker kubelet kubeadm kubectl docker换源mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{"registry-mirrors": ["https://registry.docker-cn.com"]}EOFservice docker restart开机启动systemctl disable firewalld.service && systemctl stop firewalld.service systemctl enable docker && systemctl start dockersystemctl enable kubelet && systemctl start kubelet下载k8s依赖镜像获取依赖的镜像 ...

July 4, 2019 · 2 min · jiezi

MysqlCenterOs7-安装-Mysql

第一次安装mysql服务端。记录一下 查看当前Linux 版本,确认版本后,方便选择对应的mysql服务 cat /etc/redhat-release下载MySQL官方的 Yum Repositoryhttps://dev.mysql.com/downloa...上传到linux上后 安装Repository安装 Repository yum -y install mysql80-community-release-el7-3.noarch.rpm 成功后,安装 mysql server yum -y install mysql-community-server 启动 mysql 服务 更改mysql 用户密码 登录mysql mysql -uroot -p修改密码 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;修改用户运行远程登录 mysql> use mysql;mysql> update user set host = '%' where user = 'root';mysql> select host, user from user;修改navicat链接mysql 的密码 mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';刷新 ...

July 1, 2019 · 1 min · jiezi

阿里云centos7线上项目绑定域名且使用https的方式访问

导读如今,毕业将近一年了。一直使用公司的老框架,该框架采用前后端不分离的模式。但是,最近公司想要采用前后端分离的模式,并让我重新架构新框架。对于,毕业不久的我,担任了架构师的角色,于是,徒手编写新的框架,最后,成功了,已实现前后端分离的效果。并把它部署到线上,同时,使用了HTTPS格式。 前后端具体怎么分离的,在这里,我就不细说了,我就说部署之后绑定域名和ssl这部分吧。 准备工作服务器。我使用阿里云的centos7服务器Tomcat。我用的是Tomcat7MySQL。我用的是MySQL5.7jdk。我用的是jdk8ssldns解析域名备案前提条件我已经把项目部署到centos7上,并能够通过ip访问。接下来,就是域名解析和绑定,并结合ssl。 具体做法阿里云后台首先登录阿里云的后台,你会看到如下界面 步骤1,单击之后,你会看到如下界面,选择云服务器 ECS 单击步骤2,你会看到步骤3,单击步骤4之后,再单击步骤4,会跳出配置安全组的弹框。具体如何配置安全组,在创建安全组旁边会有教程。 在安全组中加入 443 这个端口,为什么要加入这个端口号?HTTPS默认是的443端口。 绑定域名单击步骤1之后,选择域名服务,选单击下图中的域名 如果你还没有备案你的域名,可以单击此链接进行备案。 此时,你可以看到你备案完成的域名,如图所示: 单击右面的 解析,进入到域名解析页面,如图所示: 如果不太熟悉解析操作,直接单击新手指导,输入你公网的ip即可解析,如图所示: 此时,已完成解析。你解析完成后,也不能立即访问,因为可能有延迟。即便可以访问,但是,你不能使用 http 访问,因为,你还没有配置 ssl。接下来,就是配置ssl的操作。 配置ssl阿里云证书申请阿里云服务控制台->安全(云盾)->SSL证书 单击 购买证书 ,前去购买证书,填入补全资料,按照默认提示勾选,并绑定域名,即可申请成功。但是,你无法立即下载证书,因为的状态不是 已签发,这里有个审核期,如图所示: 此时,你的状态是已签发,你可以下载证书。此时,它是压缩包。你解压之后,会看到两个文件。一个是PDF格式的文件,这是证书名称,即keystoreFile;一个是以TXT结尾的文件,这是证书密码,即keystorePass。 然后,在你的服务器上的Tomcat目录下,建一个名为cert的文件夹,把解压后的文件拷贝进去,如图所示: 进入到文件夹cert下的 conf 文件中,找到 server.xml文件并打开,找到8443端口号。Tomcat默认将其注释,此时,将注释去掉,并修改端口号为 443 填写如下内容: <Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" keystoreFile="你证书名称的全路径" keystoreType="PKCS12" keystorePass="你证书的密码" /> 此时,用不到 SSLProtocol和ciphers,直接注释掉就可以。 此时,找到host标签,如下图所示: 有人建议,需要在autoDeploy="true"后添加docBase属性,来配置指定目录的绝对路径。也就是说,当用户输入域名时,默认的展示页面。我没有添加,而是,直接再目录WebApps/ROOT中的目录中,将前端项目放在里面,如图所示: 此时,输入域名:https://www.superjson.com 即可访问该项目。 备注成为架构师还真不容易,需要掌握太多的知识点。越努力,越幸运。

June 26, 2019 · 1 min · jiezi

本地Navicat连接阿里云的centos7数据库

安装mysql如果你还没有安装mysql数据库,可以参考这篇文章安装数据库:https://blog.csdn.net/luowenm... 创建用户由于mysql会默认创建4个数据库,如下表所示: 用户主机mysql.infoschemalocalhostmysql.sessionlocalhostmysql.syslocalhostrootlocalhost我们此时需要创建一个新用户,允许所有的ip都能访问,因为,我们的SQL语句是: create user 'root'@'%' identified by '你的数据库登录密码#';但是,mysql报错了,报错信息是:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements翻译过来就是:在现在的版本中,你的密码不安全。我们通过该SQL语句,查看设置密码的要求 SHOW VARIABLES LIKE 'validate_password%';如下表所示: Variable_nameValuevalidate_password.check_user_nameONvalidate_password.dictionary_file validate_password.length8validate_password.mixed_case_count1validate_password.number_count1validate_password.policyMEDIUMvalidate_password.special_char_count1我们发现 validate_password.policy 是判断修改的新密码是否符合当前的策略,不满足报错,不让修改。如图所示: 因而,我们可以将其修改成低版本的,如代码所示: set global validate_password.policy=LOW;如果原来的数据库里有这%的用户,我可以根据以下流程,来创建新的用户: -- 删除用户 drop user 'root'@'%'; -- 刷新修改权限 flush privileges; -- 创建新用户create user 'root'@'%' identified by '你的密码';-- 查询用户mysql> select user,host from user;userhostroot%mysql.infoschemalocalhostmysql.sessionlocalhostmysql.syslocalhostrootlocalhost测试连接

June 25, 2019 · 1 min · jiezi

mmap137363456-bytes-failed-errno-12-错误

今天登陆我的centos服务器上的mysql数据库时,居然报出了这个错误: 是不是一头雾水,此时,别紧张,我们通过cat命令查看mysql的错误日志在哪里,于是乎: cat /etc/my.cnf 我们通过tail命令查看保存信息: tail -n 20 /var/log/mysqld.log 这表示只看最新的20行错误信息我们会发现错误是这样的: 这是缓存溢出的现象,如果你想更深入的了解,可以参考这篇文章:https://blog.csdn.net/shaoche... 而我,直接修改my.cnf中的 innodb_buffer_pool_size = 8M 这个值。因为我的服务器比较小,而mysql默认缓冲池的大小是128M。我们计算128M是多少字节:$ 128 * 1024 * 1024 = 134217728 $ ,几乎等同于错误的字节数。我小小的服务器不支持这么大的缓冲池,因而,将其设置为8M。

June 25, 2019 · 1 min · jiezi

CentOS-7安装GUI界面及远程连接

转载请注明文章出处:https://tlanyan.me/install-gu... 用基于浏览器(webdriver)的selenium技术爬取数据,所以程序需运行在GUI环境下。本文分三个部分简要介绍安装GUI界面及远程连接的步骤。 安装GUI界面大多数云服务器厂商提供的镜像都无GUI界面,所以要先安装图形环境。本文使用GNOME桌面环境: yum -y groups install "GNOME Desktop" 这条命令将安装GNOME桌面的必要软件包,执行完后配置X系统使用GNOME: echo "exec gnome-session" >> ~/.xinitrc 安装KDE或者MATE桌面环境的两个命令稍微不一样: <pre class="sh"># kdeyum -y groups install "KDE Plasma Workspaces"echo "exec startkde" >> ~/.xinitrc mateyum --enablerepo=epel -y groups install "MATE Desktop"echo "exec /usr/bin/mate-session" >> ~/.xinitrc</pre> 以上便安装好了GUI桌面环境。 启动桌面环境有两种方式: 一次性的:在终端里输入startx;系统启动时默认进入桌面环境: systemctl set-default graphical.target,然后重启;安装vnc-server有了桌面环境,一般可以通过云服务器厂商提供的web终端远程连接进入桌面。用web终端每次都需要打开浏览器,然后登陆云管理后台再连接,比较麻烦。我们采取直接从桌面客户端远程连接的方式,省去打开浏览器和登录云管理后台的操作。 远程桌面技术有多种,例如VNC, TeamViewer, RDP等,本文使用免费且广泛使用的VNC。 在服务器上先安装服务端(tigervnc是tightvnc的分支): yum install -y tigervnc-server 接着复制一份VNC配置: cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service 注意上述命令参数重的“@:1”,可以将数字1换成30000内的任意数字,“5900+数字”即为程序的显示(监听)端口,如"@:1"表示监听5901端口。 编辑该配置文件,将文件内的<USER>替换成远程连接时的登录用户名(如果是root,注意将第二个<USER>所在行的"/home"移除掉)。以root身份的配置示例: # The vncserver service unit file## Quick HowTo:# 1. Copy this file to /etc/systemd/system/vncserver@.service# 2. Replace <USER> with the actual user name and edit vncserver# parameters appropriately# (ExecStart=/usr/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"# PIDFile=/home/<USER>/.vnc/%H%i.pid)# 3. Run `systemctl daemon-reload`# 4. Run `systemctl enable vncserver@:<display>.service`## DO NOT RUN THIS SERVICE if your local area network is# untrusted! For a secure way of using VNC, you should# limit connections to the local host and then tunnel from# the machine you want to view VNC on (host A) to the machine# whose VNC output you want to view (host B)## [user@hostA ~]$ ssh -v -C -L 590N:localhost:590M hostB## this will open a connection on port 590N of your hostA to hostB's port 590M# (in fact, it ssh-connects to hostB and then connects to localhost (on hostB).# See the ssh man page for details on port forwarding)## You can then point a VNC client on hostA at vncdisplay N of localhost and with# the help of ssh, you end up seeing what hostB makes available on port 590M## Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.## Use "-localhost" to prevent remote VNC clients connecting except when# doing so through a secure tunnel. See the "-via" option in the# `man vncviewer' manual page.[Unit]Description=Remote desktop service (VNC)After=syslog.target network.target[Service]Type=forking# Clean any existing files in /tmp/.X11-unix environmentExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'ExecStart=/usr/sbin/runuser -l root -c "/usr/bin/vncserver %i"PIDFile=/root/.vnc/%H%i.pidExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'[Install]WantedBy=multi-user.target接下来设置vnc连接密码: ...

June 23, 2019 · 2 min · jiezi

CentOS-7上升级安装gcc

转载请注明文章出处:https://tlanyan.me/install-up... CentOS 7官方源带的gcc最新版本是4.8.5,发布于2015年,年代久远且不支持c++14。要编译c++14及以上项目,必须要升级现有版本或者安装高版本的gcc。 问题的解决办法主要有两种:手动编译安装(也可以从其他机器拷贝或者网上下载),或从源安装。大多数情况下本人都不推荐从源码编译,因为过程中常会出现各种依赖问题需要人工手动解决,费时(单核编译gcc至少一小时)且耗费精力,并且软件升级还要再来一次,相当的折腾。鉴于此下文介绍从源安装的方法。 红帽其实已经编译好了高版本的gcc,但未更新到base和epel这两个常用的源中,而是放在scl中。第一步便是安装scl: yum install -y centos-release-scl如果你之前用过grouplist/install等命令,应该知道gcc包含在Development Tools这个组中。那么scl中的gcc/g++软件包的前缀都是devtoolset,也就不难理解了。安装gcc 6版本的命令是: yum install -y devtoolset-6-gcc devtoolset-6-gcc-c++devtoolset-6中的gcc版本为gcc 6,除此之外还有如下版本: devtoolset-3: gcc 4.9devtoolset-4: gcc 5devtoolset-6: gcc 6devtoolset-7: gcc 7devtoolset-8: gcc 8至于为什么没有devtoolset-5,我也不清楚,估计是包含在devtoolset-4中了吧。值得说明的是这些软件包可以同时安装,不会相互覆盖和冲突,也不会覆盖系统的版本。即可以在系统中同时安装gcc 6, gcc 7, gcc 8等多个版本。 因为不会覆盖系统默认的gcc,使用这些软件的方法有四种: 使用绝对路径;添加可执行文件路径到PATH环境变量;使用官方推荐的加载命令:scl enable devtoolset-x bash, x为要启用的版本;执行安装软件自带的脚本: source /opt/rh/devtoolset-x/enable,x为要启用的版本。推荐使用最后两种方式,例如启用gcc 6: source /opt/rh/devtoolset-6/enable,然后输入gcc -v查看版本已经变成gcc 6.3.1。使用类似的命令可以随时在多个gcc版本中切换。如果希望长期使用高版本,可将此命令写入.bashrc等配置文件。 最后说一下,scl以及scl-rh源中的软件包都安装在/opt/rh/目录下,包含可执行文件、配置等。所以启用命令的路径是/opt/rh/xxx/enable,安装的服务重启命令则可能是systemctl restart rh-xxx,需要加rh或scl前缀以区别其他源的包。如果你用过remi/gitlab等源,其行为方式也是类似的。 参考https://www.softwarecollectio...

June 23, 2019 · 1 min · jiezi

CentOS-7上安装CMake-3

转载请注明文章出处:https://tlanyan.me/install-cm... CentOS 7上官方的CMake版本是2.8.12,比较旧。许多新的C/C++项目要求的最低版本至少是3,需要升级旧版本或者直接安装新版。 有两种方法可以安装/升级CMake 3: 从源码编译;CMake是开源软件,可从官方下载源代码,只要系统上安装了gcc/g++,编译安装即可。不方便之处是要下载、解压、编译和安装,一系列操作对新手可能有难度;另外升级也要进行同样的操作,略显繁琐;从yum源安装。配置好yum源,yum install/update两条命令就可以方便的安装和升级。本人采用的方法是第二种,以下是安装脚本,复制到终端上执行即可: <pre>echo '[group_kdesig-cmake3_EPEL]name=Copr repo for cmake3_EPEL owned by @kdesigbaseurl=https://copr-be.cloud.fedorap...$basearch/type=rpm-mdskip_if_unavailable=Truegpgcheck=1gpgkey=https://copr-be.cloud.fedorap...repo_gpgcheck=0enabled=1enabled_metadata=1' >> /etc/yum.repos.d/cmake3.repo yum install cmake3</pre> 注意安装的命令是cmake3,意味着不会覆盖系统上已有的cmake 2版本。使用时用cmake3替代cmake,例如:cmake3 .。如果想以后都用新版,在.bashrc等配置文件中加一个别名即可:alias cmake=cmake3。 参考CMake 3.x for Centos 7, Red Hat Linux 7 ( Epel 7 )

June 23, 2019 · 1 min · jiezi

centos7-install-VirtualBox

参考资料:VirtualBox 官方地址 不啰嗦:cd /etc/yum.repos.d/sudo wget https://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repoyum update -y && yum install -y VirtualBox-6.0验证执行:(检查每一步是否正确)[centos@ip-172-26-0-234 ~]$ cd /etc/yum.repos.d/[centos@ip-172-26-0-234 yum.repos.d]$ lsCentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo epel-7.repo[centos@ip-172-26-0-234 yum.repos.d]$ sudo wget https://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repo--2019-06-13 10:07:25-- https://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repoResolving download.virtualbox.org (download.virtualbox.org)... 104.103.44.231Connecting to download.virtualbox.org (download.virtualbox.org)|104.103.44.231|:443... connected.HTTP request sent, awaiting response... 200 OKLength: 259 [text/plain]Saving to: ‘virtualbox.repo’100%[===========================================================================================================================>] 259 --.-K/s in 0s 2019-06-13 10:07:27 (42.6 MB/s) - ‘virtualbox.repo’ saved [259/259][centos@ip-172-26-0-234 yum.repos.d]$ lsCentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo virtualbox.repoCentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo epel-7.repo[centos@ip-172-26-0-234 yum.repos.d]$ yum update -y[centos@ip-172-26-0-234 yum.repos.d]$ yum search VirtualBox-6.0[centos@ip-172-26-0-234 yum.repos.d]$ yum install VirtualBox-6.0

June 13, 2019 · 1 min · jiezi

Centos-iptablesconfig-配置参数说明

下面是Centos7 默认的iptables-config 配置 # Load additional iptables modules (nat helpers)# Default: -none-# Space separated list of nat helpers (e.g. 'ip_nat_ftp ip_nat_irc'), which# are loaded after the firewall rules are applied. Options for the helpers are# stored in /etc/modprobe.conf.# 每次防火墙规则应用以后加载的模块,可以指定多个,以空格分开IPTABLES_MODULES=""# Unload modules on restart and stop# Value: yes|no, default: yes# This option has to be 'yes' to get to a sane state for a firewall# restart or stop. Only set to 'no' if there are problems unloading netfilter# modules.# 在重新启动和停止iptables模块时,是否卸载此模块IPTABLES_MODULES_UNLOAD="yes"# Save current firewall rules on stop.# Value: yes|no, default: no# Saves all firewall rules to /etc/sysconfig/iptables if firewall gets stopped# (e.g. on system shutdown).# 当防火墙停止时,是否保存当前防火墙规则到iptables文件,默认不保存IPTABLES_SAVE_ON_STOP="no"# Save current firewall rules on restart.# Value: yes|no, default: no# Saves all firewall rules to /etc/sysconfig/iptables if firewall gets# restarted.# 当防火墙重启时,是否保存当前防火墙规则到iptables文件,默认不保存IPTABLES_SAVE_ON_RESTART="no"# Save (and restore) rule and chain counter.# Value: yes|no, default: no# Save counters for rules and chains to /etc/sysconfig/iptables if# 'service iptables save' is called or on stop or restart if SAVE_ON_STOP or# SAVE_ON_RESTART is enabled.# 重启时是否保存并恢复所有chain和规则中的数据包和字节计数器,默认否IPTABLES_SAVE_COUNTER="no"# Numeric status output# Value: yes|no, default: yes# Print IP addresses and port numbers in numeric format in the status output.# 输出的IP地址是数字的格式,而不是域名和主机名的形式,yes:(默认值)在状态输出中只包括IP地址,no:在状态输出中返回域名或主机名IPTABLES_STATUS_NUMERIC="yes"# Verbose status output# Value: yes|no, default: yes# Print info about the number of packets and bytes plus the "input-" and# "outputdevice" in the status output.# 输出iptables状态时,是否包含输入输出设备,默认是IPTABLES_STATUS_VERBOSE="no"# Status output with numbered lines# Value: yes|no, default: yes# Print a counter/number for every rule in the status output.# 输出iptables状态时,是否同时输出每条规则的匹配数,默认是IPTABLES_STATUS_LINENUMBERS="yes"# Reload sysctl settings on start and restart# Default: -none-# Space separated list of sysctl items which are to be reloaded on start.# List items will be matched by fgrep.# 在启动和重新启动时重新加载sysctl设置,指定配置文件#IPTABLES_SYSCTL_LOAD_LIST=".nf_conntrack .bridge-nf"# Set wait option for iptables-restore calls in seconds# Default: 600# Set to 0 to deactivate the wait.# 装载由iptables-save保存的规则集的等待时间,默认600秒,设置为0表示不等待#IPTABLES_RESTORE_WAIT=600# Set wait interval option for iptables-restore calls in microseconds# Default: 1000000# Set to 100000 to try to get the lock every 100000 microseconds, 10 times a# second.# Only usable with IPTABLES_RESTORE_WAIT > 0# 和上面一样,但单位是微秒#IPTABLES_RESTORE_WAIT_INTERVAL=1000000

June 13, 2019 · 2 min · jiezi

CentOS7安装Elasticsearch7

CentOS7安装Elasticsearch7下载地址:https://www.elastic.co/cn/dow...使用YUM安装# 下载并安装公共签名密钥rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch# 配置RPM仓库vim /etc/yum.repos.d/elasticsearch.repo[elasticsearch-7.x]name=Elasticsearch repository for 7.x packagesbaseurl=https://artifacts.elastic.co/packages/7.x/yum# Apache 2.0 license#baseurl=https://artifacts.elastic.co/packages/oss-7.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-mdyum install -y elasticsearch配置服务启动服务之前一定要先配置/etc/elasticsearch/elasticsearch.yml的network.host、http.port和cluster.initial_master_nodes。 firewall-cmd --zone=public --add-port=9200/tcp --permanentfirewall-cmd --reloadsudo /bin/systemctl daemon-reloadsudo /bin/systemctl enable elasticsearch.service# 启动停止服务sudo systemctl start elasticsearchsudo systemctl stop elasticsearch测试服务[root@localhost ~]# curl "http://127.0.0.1:9200/"{ "name" : "localhost.localdomain", "cluster_name" : "elasticsearch", "cluster_uuid" : "Pxdp0Z24SJ-MIBH_2oMe2A", "version" : { "number" : "7.1.1", "build_flavor" : "default", "build_type" : "rpm", "build_hash" : "7a013de", "build_date" : "2019-05-23T14:04:00.380842Z", "build_snapshot" : false, "lucene_version" : "8.0.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search"}常用文件# 配置文件vim /etc/elasticsearch/elasticsearch.yml# JVM配置vim /etc/elasticsearch/jvm.options# 启动日志tail -n 10 -f /var/log/elasticsearch/elasticsearch.log问题处理绑定IP和跨域vim /etc/elasshellticsearch/elasticsearch.yml# 允许任意IP访问network.host: 0.0.0.0# 修改开放的端口http.port: 9200# 最后添加跨域http.cors.enabled: truehttp.cors.allow-origin: "*"启动失败启动报错信息如下:the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configuredvim /etc/elasticsearch/elasticsearch.yml# 修改【#cluster.initial_master_nodes: ["node-1", "node-2"] 】cluster.initial_master_nodes: ["node-1"]进程虚拟内存不足vim /etc/sysctl.conf# 添加vm.max_map_count=262144# 保存后执行sysctl -pRPM目录类型描述默认位置设置homeElasticsearch主目录或 $ES_HOME/usr/share/elasticsearch bin二进制脚本,包括elasticsearch启动节点和elasticsearch-plugin安装插件/usr/share/elasticsearch/bin conf配置文件elasticsearch.yml/etc/elasticsearchES_PATH_CONFconf环境变量,包括堆大小,文件描述符/etc/sysconfig/elasticsearc data节点上分配的每个索引、分片的数据文件的位置。可以容纳多个位置。/var/lib/elasticsearchpath.datalogs日志文件位置/var/log/elasticsearchpath.logsplugins插件文件位置。每个插件都将包含在一个子目录中。/usr/share/elasticsearch/plugins repo共享文件系统存储库位置。可以容纳多个位置。文件系统存储库可以放在此处指定的任何目录的任何子目录中。Not configuredpath.repo配置ElasticsearchElasticsearch默认使用/etc/elasticsearch运行时配置。此目录的所有权以及此目录中的所有文件在安装时都设置为root:elasticsearch,并且目录设置了setgid标志,以便在/etc/elasticsearch下创建的所有文件和子目录,例如使用密钥库创建密钥库工具等。 ...

June 11, 2019 · 3 min · jiezi

ERROR-node-with-name-rabbit-already-running-on-localhost

rabbitmq-server使用rabbitmq-server启动RabbitMQ后,进行start、restart或stop都会提示错误ERROR: node with name "rabbit" already running on "localhost",原因是RabbitMQ已在localhost里运行了,但是停止不了。解决记录如下: zhangguoyedeMacBook-Pro:~ zhangguoye$ rabbitmq-serverERROR: node with name "rabbit" already running on "localhost"zhangguoyedeMacBook-Pro:~ zhangguoye$ ps aux|grep epmdzhangguoye 35736 0.0 0.0 4328468 676 ?? S 四03下午 0:00.08 /usr/local/Cellar/erlang/22.0.2/lib/erlang/erts-10.4.1/bin/epmd -daemonzhangguoye 67752 0.0 0.0 4268036 804 s009 S+ 10:05上午 0:00.00 grep epmdzhangguoyedeMacBook-Pro:~ zhangguoye$ ps aux|grep erlzhangguoye 65864 0.1 0.5 5517096 84836 s009 S 10:00上午 0:09.27 /usr/local/Cellar/erlang/22.0.2/lib/erlang/erts-10.4.1/bin/beam.smp -W w -A 128 -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -K true -B i -- -root /usr/local/Cellar/erlang/22.0.2/lib/erlang -progname erl -- -home /Users/zhangguoye -- -pa /usr/local/Cellar/rabbitmq/3.7.15/ebin -noshell -noinput -s rabbit boot -sname rabbit@localhost -boot /usr/local/opt/erlang/lib/erlang/bin/start_clean -kernel inet_default_connect_options [{nodelay,true}] -rabbit tcp_listeners [{"127.0.0.1",5672}] -sasl errlog_type error -sasl sasl_error_logger false -rabbit lager_log_root "/usr/local/var/log/rabbitmq" -rabbit lager_default_file "/usr/local/var/log/rabbitmq/rabbit@localhost.log" -rabbit lager_upgrade_file "/usr/local/var/log/rabbitmq/rabbit@localhost_upgrade.log" -rabbit enabled_plugins_file "/usr/local/etc/rabbitmq/enabled_plugins" -rabbit plugins_dir "/usr/local/Cellar/rabbitmq/3.7.15/plugins" -rabbit plugins_expand_dir "/usr/local/var/lib/rabbitmq/mnesia/rabbit@localhost-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/usr/local/var/lib/rabbitmq/mnesia/rabbit@localhost" -kernel inet_dist_listen_min 25672 -kernel inet_dist_listen_max 25672zhangguoye 35736 0.0 0.0 4328468 688 ?? S 四03下午 0:00.08 /usr/local/Cellar/erlang/22.0.2/lib/erlang/erts-10.4.1/bin/epmd -daemonzhangguoye 68953 0.0 0.0 4268036 804 s009 S+ 10:11上午 0:00.00 grep erlzhangguoye 65877 0.0 0.0 4270068 828 ?? Ss 10:00上午 0:00.36 erl_child_setup 7168zhangguoyedeMacBook-Pro:~ zhangguoye$ kill -9 65864zhangguoyedeMacBook-Pro:~ zhangguoye$ rabbitmq-server ## ## ## ## RabbitMQ 3.7.15. Copyright (C) 2007-2019 Pivotal Software, Inc. ########## Licensed under the MPL. See https://www.rabbitmq.com/ ###### ## ########## Logs: /usr/local/var/log/rabbitmq/rabbit@localhost.log /usr/local/var/log/rabbitmq/rabbit@localhost_upgrade.log Starting broker... completed with 6 plugins.brew管理RabbitMQ使用mac的用户可以直接使用brew进行安装与管理RabbitMQ1. 安装Homebrew安装:https://www.rabbitmq.com/inst... ...

June 11, 2019 · 2 min · jiezi

在GitHub-Pages上搭建jekyll

每个人都应该要有自己的博客,下面介绍下自己使用jekyll在GitHub Pages部署搭建个人博客的内容 目录基本介绍从事互联网行业日久后,技术渐长,总想着写写,把自己回,让别人更多的看到自己。个人是这样想的哈哈。之前曾经自己使用laravel自己写了个项目,不了了之值。当时的感觉就会耗时不说,最重要的感觉上班在写,下班后继续写博客代码。失去了,做这件事情的本意(分享)。 其实现在搭建一个技术博客,非常简单。 常用的有下面几种: GitHub Pages + JekyllGitHub Pages + Hexowordpress自行构建依托与java或者PHP,配合前端vue,h5等什么是GitHub PagesGithub Pages 是面向用户、组织和项目开放的公共静态页面搭建托管服务,站点可以被免费托管在 Github 上,你可以选择使用 Github Pages 默认提供的域名 github.io 或者自定义域名来发布站点。Github Pages 支持 自动利用 Jekyll 生成站点,也同样支持纯 HTML 文档,将你的 Jekyll 站点托管在 Github Pages 上是一个不错的选择。 什么是jekylljekyll是一个简单的免费的Blog生成工具,类似WordPress。但是和WordPress又有很大的不同,原因是jekyll只是一个生成静态网页的工具,不需要数据库支持。但是可以配合第三方服务,例如Disqus。最关键的是jekyll可以免费部署在Github上,而且可以绑定自己的域名。 个人博客搭建整体流程: 选择一个jekyll主题,fork到自己的github仓库内使用gitHub的GitHub Pages,配置项目设置 GitHub Pages删除原有博客中内容,编写自由内容步骤详解1. fork项目以我个人项目为例,打给地址https://github.com/MyStudytime/studytime-Blog,点击Fork按钮复制代码到自己的仓库。大概1分钟左右可以完成。 2. 删除 CNAME 文件删除项目中的 CNAME 文件,CNAME 是定制域名的时候使用的内容,如果不使用定制域名会存在冲突。 3. 设置 GitHub Pages点击Settings按钮打开设置页面,页面往下拉到GitHub Pages相关设置,在Source下面的复选框中选择master branch,然后点击旁边的Save按钮保存设置。 4. 重命名项目点击Settings按钮打开设置页面,重命名项目名称为:YourGithubUserName.github.io 5. 重命名之后,再次回到 Settings > GitHub Pages 页面会发现存在这样一个地址: https://YourGithubUserName.github.io 特别注意此处完成后,虽然也可以打开页面,但是跳转页面还是我的页面,需要修改jekyll配置文件。 ...

June 11, 2019 · 1 min · jiezi

Centos-7-ntp时间同步和时区设置

安装ntp服务的软件包sudo yum install ntp 将ntp服务设置为缺省启动systemctl enable ntpdsystemctl start ntpd 修改启动参数,增加-g -x参数,允许ntp服务在系统时间误差较大时也能正常工作sudo vi /etc/sysconfig/ntpd 启动ntp服务sudo service ntpd restart 将系统时区改为上海时间 (亦即CST时区)ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 查看时间是否正确执行date命令即可。

June 4, 2019 · 1 min · jiezi

Centos-下安装-WebRTC

一、环境安装安装 java yum -y install java-1.8.0-openjdk*安装 node.js curl -sL https://rpm.nodesource.com/setup_10.x | bash -yum install -y nodejs# 确认是否成功node --versionnpm --version# 构建 apprtc 用到npm -g install grunt-cligrunt --version安装 python 和 python-webtest # 安装epel扩展源yum -y install epel-releaseyum install python python-webtest python-pippip install --upgrade pip安装 google_appengine mkdir /root/webrtccd /root/webrtcwget https://storage.googleapis.com/appengine-sdks/featured/google_appengine_1.9.40.zip# 安装 unzip 解压工具yum -y install unzip unzip google_appengine_1.9.40.zip 配置环境变量,在 /etc/profile 文件最后增加下列代码: export GOOGLE_ENGINE_HOME=/root/webrtc/google_appengineexport PATH=$PATH:$GOOGLE_ENGINE_HOME使环境变量生效 source /etc/profile安装 go yum -y install go #安装 Golang创建 go 工作目录 ...

June 4, 2019 · 4 min · jiezi

CentOS-7-中安装-Oracle11g-R2

准备修改用户的 SHELL 限制: vim /etc/security/limits.conf添加如下内容: oracle soft nproc 2047oracle hard nproc 16384oracle soft nofile 1024oracle hard nofile 65536修改 /etc/pam.d/login 文件 vim /etc/pam.d/login添加如下内容: session required /lib/security/pam_limits.sosession required pam_limits.so修改 Linux 内核配置 vim /etc/sysctl.conf添加如下内容: fs.file-max = 6815744fs.aio-max-nr = 1048576kernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shmmni = 4096kernel.sem = 250 32000 100 128net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 4194304net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048576source /etc/sysctl.conf# 使修改立即生效,我当时键入如下命令时报没有找到命令,所以重启了centos修改 /etc/profile 文件 vim /etc/profile添加如下内容: if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fifi创建用户和组 ...

May 27, 2019 · 3 min · jiezi

vmware-上安装-centos

首先来说一下为什么写这篇文章吧!其实,是我自己在家玩的时候想装一下centos玩玩的,但是中间碰到各种问题,而且这些问题在别人哪里竟然莫名其妙的被忽略掉了额,我很不理解,最后各种尝试才解决了。(更多背景请看:https://segmentfault.com/q/10...我来介绍一下我本次安装所使用的的版本:vmware(VMware-workstation-full-15.0.4-12990004.exe,下载地址就贴上我的网盘地址吧:链接: https://pan.baidu.com/s/1XY5V... 提取码: hezj),之所以采用这一版完全是因为这一版比较旧,相对而言稳定有破解;centos(CentOS-7-x86_64-NetInstall-1810.iso,下载地址:https://mirrors.aliyun.com/ce...。然后就是各种默认安装即可。 来说一下会遇到的问题吧。整个过程中可能会遇到这个问题比较难以解决。贴图如下: 对的,你没看错,就是别人都没提过的 安装源的错误,如果这一步出错没解决的话,你是继续不了下一步的(ps这也是这篇文章主要解决的一个问题)。那么我们怎么解决呢?你如果去查国内那些网站,他们可能给出的建议都是各种aliyun,163,华为云等乱七八糟的安装源地址,我想说这些都没用,都解决不了这个问题(因为我在解决之前,试了许多地址,都没能够解决,也许没找对吧)。 说下解决方法啦:如果你安装的是 64 位的os,你只需要在安装源地址中填写 http://mirror.centos.org/centos/7/os/x86_64/ 地址即可;如果是 32 位,填写 http://mirror.centos.org/centos/7/os/i386/即可, 接下来,就可以一直下一步,按照默认的安装即可

May 23, 2019 · 1 min · jiezi

centos7-离线安装-mariadb-103

官方下载https://downloads.mariadb.com... 这个文件有400多M 按照里面的readme文档安装,最后会联网校验,实际上只是离线下载了文件,修改了软件源,还是要在线的 然后因为网络原因还经常校验失败... 安装完后通过rpm qa | grep MariaDB 来看实际上要安装的只有4个文件,使用rpm 安装一下就可以了 galera-25.3.25-1.rhel7.el7.centos.x86_64.rpmMariaDB-common-10.3.15-1.el7.centos.x86_64.rpmMariaDB-compat-10.3.15-1.el7.centos.x86_64.rpmMariaDB-server-10.3.15-1.el7.centos.x86_64.rpmrpm -ivh galera-25.3.25-1.rhel7.el7.centos.x86_64.rpm# 这个两个包相互依赖,需要一起安装rpm -ivh MariaDB-common-10.3.15-1.el7.centos.x86_64.rpm MariaDB-compat-10.3.15-1.el7.centos.x86_64.rpmrpm -ivh MariaDB-client-10.3.15-1.el7.centos.x86_64.rpmrpm -ivh MariaDB-server-10.3.15-1.el7.centos.x86_64.rpm最终这个4个包大小是47M

May 22, 2019 · 1 min · jiezi

Centos7-SSH远程登录十分缓慢的解决方案

修复登录缓慢的两种方案一、修改ssh配置文件 vim /etc/ssh/sshd_config增加两行记录: UseDNS no GSSAPIAuthentication no二、删除错误登录日志 #路径/var/log

April 29, 2019 · 1 min · jiezi

Docker搭建GitLab

官方中文教程:https://www.gitlab.com.cn/ins... 官方安装链接:https://about.gitlab.com/install 普通方式安装请见:https://segmentfault.com/a/11...环境要求:内存至少4G,GitLab是很耗内存滴 一、安装一般会将 GitLab 的配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外, 便于日后升级 docker pull gitlab/gitlab-ce:11.6.4-ce.0# 通过docker run中加入环境变量,取名为gitlabdocker run --detach \ # 后台运行 -d # --hostname song.local \ # 指定容器域名,未知功能:创建镜像仓库的时候使用到 -p 8443:443 \ # 将容器内443端口映射到主机8443,提供https服务 -p 80:80 \ # 将容器内80端口映射到主机8080,提供http服务 -p 10022:22 \ # 将容器内22端口映射到主机1002,提供ssh服务 --name gitlab \ # 指定容器名称 --restart=unless-stopped \ # 容器运行中退出时(不是手动退出),自动重启 --volume /var/lib/docker/volumes/gitlab-data/etc:/etc/gitlab \ # 将本地/var/lib/docker/volumes/gitlab-data/etc挂载到容器内/etc/gitlab --volume /var/lib/docker/volumes/gitlab-data/log:/var/log/gitlab \ # 将本地将本地/var/lib/docker/volumes/gitlab-data/log挂载到容器内/var/log/gitlab --volume /var/lib/docker/volumes/gitlab-data/data:/var/opt/gitlab \ # 将本地将本地/var/lib/docker/volumes/gitlab-data/data挂载到容器内/var/opt/gitlab gitlab/gitlab-ce:11.6.4-ce.0 # 镜像名称:版本为了方便日后启动,创建一个启动脚本:gitlab-docker-restart.sh,代码如下:#!/bin/bashserverName="gitlab"imageName="gitlab/gitlab-ce:11.6.4-ce.0"function runServer(){ docker run --detach \ -p 8443:443 \ -p 80:80 \ -p 10022:22 \ --name ${serverName} \ --volume /var/lib/docker/volumes/gitlab-data/etc:/etc/gitlab \ --volume /var/lib/docker/volumes/gitlab-data/log:/var/log/gitlab \ --volume /var/lib/docker/volumes/gitlab-data/data:/var/opt/gitlab \ -v /etc/localtime:/etc/localtime \ --restart=unless-stopped \ ${imageName}}runningCount=`docker ps -f status=running -f status=restarting | grep -w ${serverName} |wc -l`;if [[ ${runningCount} > 0 ]];then echo "docker restart 重启项目:${serverName}" docker restart ${serverName} exit 0fiserverCount=`docker ps -f status=exited -f status=created | grep -w ${serverName} |wc -l`;# 判断是否已经启动过,且端口为默认端口if [[ ${serverCount} > 0 ]];then if [[ ${serverCount} > 1 ]]; then echo "Error : 查找到多个 ${serverName} 容器,请手动启动" exit 1 else echo "docker start 启动项目:${serverName}" docker start ${serverName} fielse name=${imageName%%:*} tag=${imageName##*:} # 判断是否有该镜像 imageCount=`docker images | grep -w ${name} | wc -l`; if [[ ${imageCount} > 0 ]];then echo "docker run 第一次启动项目: ${imageName}" runServer else echo "Error : 还没有该镜像" exit 1 fifi将 gitlab-docker-restart.sh赋予执行权限: ...

April 28, 2019 · 2 min · jiezi

CentOS7搭建GitLab

官方中文教程https://www.gitlab.com.cn/ins... 环境要求:内存至少4G 一、 安装并配置必要的依赖关系在 CentOS 系统上,下面的命令将会打开系统防火墙 HTTP 和 SSH 的访问。 $ sudo yum install -y curl policycoreutils-python openssh-server$ sudo systemctl enable sshd$ sudo systemctl start sshd$ sudo firewall-cmd --permanent --add-service=http$ sudo systemctl reload firewalld安装 Postfix ,用来发送邮件,在安装 Postfix 的过程中选择 'Internet Site'。 $ sudo yum install postfix$ sudo systemctl enable postfix$ sudo systemctl start postfix也可以配置自定义的 SMTP 服务器。 二、 添加 GitLab 镜像仓库并安装gitlab-ce 是社区版,免费 gitlab-ee 是企业版,收费 2.1 使用官方镜像安装$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash$ sudo EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ce # 安装 GitLab2.2 使用国内镜像安装(推荐)如果提示连接超时,可以使用 清华大学开源软件镜像站:https://mirror.tuna.tsinghua....。进入该网站后,有详细的安装步骤,跟着安装即可。 ...

April 28, 2019 · 2 min · jiezi

工具资源系列之给虚拟机装个centos

前文我们已经讲解了如何在 mac 系统上安装虚拟机软件,这节我们接着讲解如何利用虚拟机安装 centos 镜像. 安装镜像的大致步骤基本相同,只不过是配置项略显不同而已,如果需要安装其他系统镜像,请参考另外两篇教程. 下载镜像centos 操作系统下载: https://www.centos.org/download/DVD ISO 和 Minimal ISO 两种类型,普通用户推荐选择前一种标准版,开发用户建议选择后一种最小版. 标准版功能比较齐全,最小版保证最小依赖,后续缺啥填啥,比较灵活节省空间内存. 按照实际需要选择适合自己的操作系统,这里选择的是 centos7.6 ,然后选择合适的下载方式(直接下载或下载种子链接). 建议选择镜像服务器下载,如果直接下载官网的地址,速度感人,时间有点长. 依次选择 list of current mirrors -> http://mirrors.aliyun.com/centos/ -> 7.6.1810/ -> isos/ -> x86_64/ -> CentOS-7-x86_64-Minimal-1810.iso 选择合适的版本点击下载.配置镜像准备好已下载的镜像文件: CentOS-7-x86_64-Minimal-1804.iso打开 VMware 软件,选择 文件->新建 选项开始安装镜像文件. 弹出安装配置界面,选择 从光盘或镜像中安装 选项,然后将已下载的镜像文件拖动到安装区进行识别. 识别到镜像文件后选中该文件,点击 继续 准备下一步安装. 选择固件类型,默认方式 传统 BIOS .然后点击 继续 . 确认配置信息无误后,点击 完成 ,等待镜像安装,,, 安装镜像只因在人群中看见了 centos ,便确定了你就是我要安装的操作系统. 阅览安装摘要信息,等待继续安装. ...

April 21, 2019 · 1 min · jiezi

阿里云centos7.2下安装chrome浏览器+webdriver+selenium及常见设置-傻瓜教程

Linux版本:阿里云CentOS Linux release 7.2.1511 (Core) root用户下python版本python3.6,python3安装方法https://www.cnblogs.com/FZfangzheng/p/7588944.html 测试时间:2019-04-161.安装chrome浏览器1.1 创建yum源文件cd /etc/yum.repo.d/touch google-chrome.repo1.2 输入yum源信息[google-chrome]name=google-chromebaseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearchenabled=1gpgcheck=1gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub1.3 安装google chromeyum -y install google-chrome-stable –nogpgcheck2.安装chromedriver及seleniumyum install chromedriverpip install selenium默认安装路径:chromedriver: /usr/bin/chromedriver3.修改配置来执行代码,及常见错误处理3.1测试demo#!/usr/bin/env python# -- coding=UTF-8 --#测试代码import timefrom selenium import webdriverdef test(): chromeOptions = webdriver.ChromeOptions() chromeOptions.add_argument(’–headless’) #浏览器无窗口加载 chromeOptions.add_argument(’–disable-gpu’) #不开启GPU加速 """ 解决报错: selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally (unknown error: DevToolsActivePort file doesn’t exist) """ chromeOptions.add_argument(’–disable-dev-shm-usage’) #禁止 chromeOptions.add_argument(’–no-sandbox’)#以根用户打身份运行Chrome,使用-no-sandbox标记重新运行Chrome #其它设置(可选): #chromeOptions.add_argument(’–hide-scrollbars’) #隐藏滚动条, 应对一些特殊页面 #chromeOptions.add_argument(‘blink-settings=imagesEnabled=false’) #不加载图片, 提升速度 #chromeOptions.add_argument(“user-agent=Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36”) #伪装其它版本浏览器,有时可以解决代码在不同环境上的兼容问题,或者爬虫cookie有效性保持一致需要设置此参数 #创建driver对象 #chrome_options=chromeOptions加载设置 #executable_path="/usr/bin/chromedriver"指定webdriver路径(可选) driver = webdriver.Chrome(chrome_options=chromeOptions,executable_path="/usr/bin/chromedriver") try: driver.get(“http://www.baidu.com”) time.sleep(3) print(driver.page_source) except Exception as e: print(e) finally: driver.quit()if name == ‘main’: test()4.参考资料https://www.cnblogs.com/ianduin/p/8727333.html https://www.cnblogs.com/baijing1/p/9751399.html https://www.cnblogs.com/z-x-y/p/9507467.html ...

April 16, 2019 · 1 min · jiezi

centos7安装mysql

最近打算在家里服务器上部署云盘,所以又开始了一系列的环境搭建操作,在安装mysql的时候发现有一些与以前不同,于是记录下来,避免下次再出现像今天这样到处搜索问题。一.卸载旧版本使用下面的命令检查是否安装有MySQL Serverrpm -qa | grep mysql有的话通过下面的命令来卸载掉rpm -e mysql //普通删除模式rpm -e –nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除二:安装MySQL1.安装依赖yum -y install make gcc-c++ cmake bison-devel ncurses-devel2.获取源码(国内建议去sohu的镜像下载http://mirrors.sohu.com/mysql…mysql5.7需要boost这个库,网上很难找到合适的版本,建议直接下载有boost库的mysql版本wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-boost-5.7.24.tar.gztar xvf mysql-boost-5.7.24.tar.gzcd mysql-5.7.243.编译安装cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/usr/local/mysql/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boostmake && make install编译的参数可以参考http://dev.mysql.com/doc/refm…。三:配置MySQL使用下面的命令查看是否有mysql用户及用户组cat /etc/passwd #查看用户列表cat /etc/group #查看用户组列表如果没有就创建groupadd mysqluseradd -g mysql mysql修改/usr/local/mysql权限chown -R mysql:mysql /usr/local/mysqlmysql5.7.18以后不再提供默认的mysql配置文件,这里我们再网上找了一个简单的配置,vi /etc/my.cnf 然后写入一下内容[client]port = 3306default-character-set=utf8[mysqld]# 一般配置选项basedir = /usr/local/mysqldatadir = /usr/local/mysql/dataport = 3306character-set-server=utf8default_storage_engine = InnoDBsql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION配置服务脚本cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqlchkconfig mysql on #添加到开机启动项service mysql start #启动mysql将mysql执行文件加到path目录,vi /etc/profilePATH=/usr/local/mysql/bin:$PATHexport PATH然后执行source /etc/profile四:初始化mysql1.执行初始化脚本(初始化成功最后一行会生成mysql root密码注意记录下来,或者也可以用./mysqld –initialize–insecure初始化一个空密码的账号)cd /usr/local/mysql/bin./mysqld –initialize –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data…2019-04-11T14:34:15.922856Z 1 [Note] A temporary password is generated for root@localhost: /rTmud(Th5Yy2.防火墙开放3306端口Firewalld中添加端口方法如下:firewall-cmd –zone=public –add-port=3306/tcp –permanentfirewall-cmd –reload参考文章https://www.cnblogs.com/hsbt2…http://www.cnblogs.com/xiongp… ...

April 12, 2019 · 1 min · jiezi

Centos7.6安装MySQL+Redis(最新版)

本博客 猫叔的博客,转载请申明出处本系列教程为HMStrange项目附带。历史文章如何在VMware12安装Centos7.6最新版Centos7.6安装Java8MySQL教程1、下载mysql,地址:http://dev.mysql.com/get/mysq…2、使用xftp上传到自己想要得目录3、代码操作,安装并重启mysql服务# rpm -ivh mysql-community-release-el7-5.noarch.rpm# yum install mysql-community-server# service mysqld restart4、设置mysql的root密码# mysql -u rootmysql> set password for ‘root’@’localhost’ =password(‘你的密码’);mysql> flush privileges;5、配置mysql编码# vi /etc/my.cnf[mysql]default-character-set =utf86、允许远程链接,进入mysqlmysql> grant all privileges on . to root@’%‘identified by ‘远程密码’;mysql> flush privileges;7、开启3306端口,或者关闭防火墙,我是虚拟机环境且自己用的,我直接关了防火墙。systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止firewall开机启动Redis教程1、下载redis,地址: http://download.redis.io/rele...2、安装gcc等默认需要的yum install -y gcc tcl3、解压安装# tar xzf redis-5.0.4.tar.gz# cd redis-5.0.4# make install4、修改redis.confbind 0.0.0.0 #允许远程protected-mode no #关闭保护模式daemonize yes #守护进程模式开启5、启动redis# cd src# ./redis-server ./../redis.conf公众号:Java猫说学习交流群:728698035现架构设计(码农)兼创业技术顾问,不羁平庸,热爱开源,杂谈程序人生与不定期干货。

April 10, 2019 · 1 min · jiezi

CentOS 7 安装 PostgreSQL 11

CentOS 7 安装 PostgreSQL 11PostgreSQL: The World’s Most Advanced Open Source Relational Database为了学一学号称世界上最先进的开源关系型数据库,就要先安装,接下来就在CentOS 7上安装PostgreSQL 11。环境阿里云 CentOS 7.3.1611PostgreSQL 11PostgreSQLPostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引。免费使用、修改、和分发 PostgreSQL,不管是私用、商用、还是学术研究使用。PostgreSQL从9.3版本开始内置了JSON数据类型,而9.4开始支持JSONB,标志着<span style=“color: yellow;">PostgreSQL实际上已经是一个关系型数据库和NoSQL数据库的结合体</span>。虽然PostgreSQL还定位在关系型数据库,但是<span style=“color: yellow;">近几次更新PostgreSQL的NoSQL性能飙升甚至超过MongoDB</span>。PostgreSQL安装这里以rpm的方式安装PostgreSQL 11# 下载rpm包yum install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-redhat11-11-2.noarch.rpm -y# 安装yum -y install postgresql11 postgresql11-server postgresql11-libs# 初始化数据库/usr/pgsql-11/bin/postgresql-11-setup initdb# 设置开机自启动PostgreSQL和启动服务systemctl enable postgresql-11systemctl start postgresql-11systemctl status postgresql-11## 看到控制台输出的Active后有Running的字样说明启动完成PostgreSQL连接# 登录数据库,这里切换账号postgressu - postgrespsql# Navicat连接PostgreSQL# 这里要修改配置文件postgresql.conffind / -name postgresql.confvi /var/lib/pgsql/11/data/postgresql.conf# 找到listen_address那里,解开注释并修改引号内localhost的值为listen_address=””# 保存并退出,重启postgresql服务systemctl restart postgresql-11# 阿里云安全组规则配置 -> 快速添加安全组规则 -> 选中PostgreSQL并添加# 在navicat连接,如果不修改localhost为*,navicat连接会提示错误“Connection Refuse”# 我在这里修改了postgres用户的密码,步骤如下:## 切换用户后进入psqlsu - postgrespsql## 修改密码alter user postgres password ‘密码’连接成功!至此,PostgreSQL搭建完成,Windows平台下的PostgreSQL搭建比较简单。接下来,学PostgreSQL! ...

April 10, 2019 · 1 min · jiezi

centos7 安装ELK做日志收集(elasticsearch,logstash,kibana)

关于elk不用说,大家多多少少都听过,最近我搭建了一套用作收集日志,供大家参考:一.安装elasticsearch,logstash,kibana强烈建议安装去es的官网安装: 今天是2019.4.9,目前最新的版本是6.7.1,三个都装6.7.1版本(版本最好一致,否则会有各种疑难杂症)elasticsearch: https://www.elastic.co/downlo...logstash: https://www.elastic.co/cn/dow...kibana:https://www.elastic.co/cn/dow…其中es的安装教程我在这篇文章里面已经写了:https://segmentfault.com/a/11…,下面介绍logstash和kibana的安装过程1.logstash: 下载后##进入安装包所在目录,解压tar -xf logstash-6.7.1.tar.gz##切换到bin目录cd /logstash-6.7.1/bin##编辑或者创建一个启动的配置文件,到时候用这个配置文件启动vim input_flter_output.confinput { file{ path=> “/crawler/jenkins/.log” ##生成日志的目录 type=> “cml” ##索引的类型 start_position=> “beginning” ##一开始就输入原来的日志信息 } stdin{}}filter{ }output{ elasticsearch{ action=> “index” hosts=> “www.iamcrawler.cn:9500” ##输出到elasticsearch上面 index=> “log-%{+yyyy.MM.dd}” ##生成一个log-时间的索引 }} #最后保存退出 ##在bin目录下再编写一个启动bat vim run.bat sh logstash -f input_flter_output.conf & #最后保存退出 然后运行run.bat即可 [root@iamcrawler bin]# sh run.bat ##正常会出现以下情况: [root@iamcrawler bin]# Sending Logstash logs to /crawler/logstash/logstash-6.7.1/logs which is now configured via log4j2.properties [2019-04-09T13:11:40,120][WARN ][logstash.config.source.multilocal] Ignoring the ‘pipelines.yml’ file because modules or command line options are specified [2019-04-09T13:11:40,138][INFO ][logstash.runner ] Starting Logstash {“logstash.version”=>“6.7.1”} [2019-04-09T13:11:50,041][INFO ][logstash.pipeline ] Starting pipeline {:pipeline_id=>“main”, “pipeline.workers”=>2, “pipeline.batch.size”=>125, “pipeline.batch.delay”=>50} [2019-04-09T13:11:50,697][INFO ][logstash.outputs.elasticsearch] Elasticsearch pool URLs updated {:changes=>{:removed=>[], :added=>[http://www.iamcrawler.cn:9500/]}} [2019-04-09T13:11:51,065][WARN ][logstash.outputs.elasticsearch] Restored connection to ES instance {:url=>“http://www.iamcrawler.cn:9500/"} [2019-04-09T13:11:51,191][INFO ][logstash.outputs.elasticsearch] ES Output version determined {:es_version=>6} [2019-04-09T13:11:51,196][WARN ][logstash.outputs.elasticsearch] Detected a 6.x and above cluster: the type event field won’t be used to determine the document _type {:es_version=>6} [2019-04-09T13:11:51,232][INFO ][logstash.outputs.elasticsearch] Using default mapping template [2019-04-09T13:11:51,253][INFO ][logstash.outputs.elasticsearch] New Elasticsearch output {:class=>“LogStash::Outputs::ElasticSearch”, :hosts=>[”//www.iamcrawler.cn:9500"]} [2019-04-09T13:11:51,287][INFO ][logstash.outputs.elasticsearch] Attempting to install template {:manage_template=>{“template”=>“logstash-”, “version”=>60001, “settings”=>{“index.refresh_interval”=>“5s”}, “mappings”=>{"default"=>{“dynamic_templates”=>[{“message_field”=>{“path_match”=>“message”, “match_mapping_type”=>“string”, “mapping”=>{“type”=>“text”, “norms”=>false}}}, {“string_fields”=>{“match”=>"", “match_mapping_type”=>“string”, “mapping”=>{“type”=>“text”, “norms”=>false, “fields”=>{“keyword”=>{“type”=>“keyword”, “ignore_above”=>256}}}}}], “properties”=>{"@timestamp"=>{“type”=>“date”}, “@version”=>{“type”=>“keyword”}, “geoip”=>{“dynamic”=>true, “properties”=>{“ip”=>{“type”=>“ip”}, “location”=>{“type”=>“geo_point”}, “latitude”=>{“type”=>“half_float”}, “longitude”=>{“type”=>“half_float”}}}}}}}} [2019-04-09T13:11:51,399][INFO ][logstash.outputs.elasticsearch] Installing elasticsearch template to _template/logstash [2019-04-09T13:11:51,783][INFO ][logstash.inputs.file ] No sincedb_path set, generating one based on the “path” setting {:sincedb_path=>"/crawler/logstash/logstash-6.7.1/data/plugins/inputs/file/.sincedb_6677650ec826fa62a735f6625357dead", :path=>["/crawler/jenkins/.log"]} [2019-04-09T13:11:51,896][INFO ][logstash.pipeline ] Pipeline started successfully {:pipeline_id=>“main”, :thread=>"#<Thread:0x729fdee9 run>"} [2019-04-09T13:11:52,010][INFO ][filewatch.observingtail ] START, creating Discoverer, Watch with file and sincedb collections [2019-04-09T13:11:52,033][INFO ][logstash.agent ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]} [2019-04-09T13:11:52,723][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600} 2.kibana的安装 kibana安装比较简单,下载后,进入安装目录的config目录,如: cd /crawler/kibana/kibana-6.7.1-linux-x86_64/configvim kibana.yml##添加如下命令server.host: 0.0.0.0elasticsearch.url: “http://localhost:9500” #这里是es的http地址##进入kibana目录,执行以下命令,后台运行kibana./bin/kibana &二.kibana的使用可以参照网上的很多教程,这里就不过多的描述了 ...

April 9, 2019 · 2 min · jiezi

Openstack Centos7实例重启网卡名称与顺序错乱的问题解决

修改内核参数1.修改内核启动参数为了使网卡名称恢复到旧的网卡名称(ethX),需要修改/etc/default/grub文件的GRUB_CMDLINE_LINUX内容,增加net.ifnames=0,修改后内容如下:2.更新内核启动参数:(BIOS)grub2-mkconfig -o /boot/grub2/grub.cfg修改udev rules文件在/usr/lib/udev/rules.d/60-net.rules文件中将原有内容删除,然后将每块网卡对应的MAC地址及修改后的名称依次写入/usr/lib/udev/rules.d/60-net.rules文件。样例如下:修改网卡配置文件修改/etc/sysconfig/network-scripts/目录下的网卡配置文件。这里只需要修改HWADDR对应的MAC地址即可。重启实例重启后,网卡顺序及MAC,IP一致。

April 9, 2019 · 1 min · jiezi

Nginx修复漏洞打补丁过程

漏洞报告最近收到安全部门的安全扫描报告。内容如下:nginx 安全漏洞(CVE-2018-16845) 中危 nginx类 nginx是由俄罗斯的程序设计师Igor Sysoev所开发的一款轻量级Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 Nginx 1.15.5及之前的版本和1.14.1版本中的ngx_http_mp4_module组件存在内存泄露漏洞,该漏洞源于程序没有正确处理MP4文件。远程攻击者可利用该漏洞获取敏感信息或造成拒绝服务。 厂商补丁: 目前厂商已发布升级补丁以修复漏洞,补丁获取链接: http://mailman.nginx.org/pipermail/nginx-announce/2018/000221.html一个高危漏洞,赶紧网上查询下资料这准备修复。修复过程去补丁地址获取补丁,可以看到这个内容:Patch for the issue can be found here:http://nginx.org/download/patch.2018.mp4.txt点击获取查看补丁信息:— src/http/modules/ngx_http_mp4_module.c+++ src/http/modules/ngx_http_mp4_module.c@@ -942,6 +942,13 @@ ngx_http_mp4_read_atom(ngx_http_mp4_file atom_size = ngx_mp4_get_64value(atom_header + 8); atom_header_size = sizeof(ngx_mp4_atom_header64_t); + if (atom_size < sizeof(ngx_mp4_atom_header64_t)) {+ ngx_log_error(NGX_LOG_ERR, mp4->file.log, 0,+ “"%s" mp4 atom is too small:%uL”,+ mp4->file.name.data, atom_size);+ return NGX_ERROR;+ }+ } else { ngx_log_error(NGX_LOG_ERR, mp4->file.log, 0, “"%s" mp4 atom is too small:%uL”,第一行和第二行表示漏洞发生的文需要修改的文件第三行表示修复前的漏洞位置在942行的后6行,942,13为补丁添加的位置到第13行真正需要添加的部分为+号部分,复制定漏洞文件需要删除+号(+表示新增)接着去nginx的启动文件夹,查看编译参数信息:./nginx -V得到如下信息:nginx version: nginx/1.11.5 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) built with OpenSSL 1.0.1c 10 May 2012 TLS SNI support enabled configure arguments: –prefix=/app/nginx/nginx –with-pcre=/app/nginx/soft/pcre-8.35 –with-zlib=/app/nginx/soft/zlib-1.2.8 –with-openssl=/app/nginx/soft/openssl-1.0.1c –with-http_ssl_module –with-http_realip_module需要用到的内容为configure arguments:后的内容去nginx源码目录编译cd nginx-1.11.5 && ./configure –prefix=/app/nginx/nginx –with-pcre=/app/nginx/soft/pcre-8.35 –with-zlib=/app/nginx/soft/zlib-1.2.8 –with-openssl=/app/nginx/soft/openssl-1.0.1c –with-http_ssl_module –with-http_realip_module && make 注意:不要make install,不然会覆盖现有的等待编译成功后会生成一个objs目录,进入目录cd objs复制编译生成的可执行文件到原先的nginx的sbin目录cp nginx /app/nginx/nginx/sbin注意,复制前建议先备份原有的sbin文件切换进程:make upgrade或者去替换的sbin目录,./nginx -s reload ...

April 8, 2019 · 1 min · jiezi

Centos 7 配置Nginx-Aliyun ECS

Centos 7 配置Nginx,常用的nginx操作,启动/停止,代理,反向代理设置以及https ssl 443配置Linux查询nginx主进程号ps -ef | grep nginx启动/重启## 在nginx/sbin下执行命令 . (查看是否在 /usr/local/nginx/sbin)## 启动./nginx -c /usr/local/nginx/conf/nginx.conf## 重启./nginx -s reload停止## 从容停止Nginx:kill -QUIT 主进程号 ## 例如:kill -QUIT 16391## 快速停止Nginx:kill -TERM 主进程号 ## 强制停止Nginx:kill -9 主进程号 ## 停止nginxnginx -s stop代理/请求转发http { server { ### … listen 4000; server_name localhost; location / { root /Users/zhangguoye/Documents/Porject/Gitee/searchWX/src/main/internetapp; index index.html index.htm; } location /oauth/ { proxy_pass http://localhost:8080/oauth/; } location /api/ { proxy_pass http://localhost:8080/api/; } ### … }}443/SSL/未开启SSL模块安装模块切换到源码包:cd /usr/local/src/nginx-1.11.3查看nginx原有的模块/usr/local/nginx/sbin/nginx -V在configure arguments:后面显示的原有的configure参数如下:–prefix=/usr/local/nginx –with-http_stub_status_module那么我们的新配置信息就应该这样写:./configure –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module运行上面的命令即可,等配置完配置完成后,运行命令makes然后备份原有已安装好的nginxcp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak然后将刚刚编译好的nginx覆盖掉原有的nginx(这个时候nginx要停止状态)cp ./objs/nginx /usr/local/nginx/sbin/然后启动nginx,仍可以通过命令查看是否已经加入成功/usr/local/nginx/sbin/nginx -V配置Http和Https共存把ssl on;这行去掉,ssl写在443端口后面。这样http和https的链接都可以用server { listen 80 default backlog=2048; listen 443 ssl; server_name wosign.com; root /var/www/html; ssl_certificate /usr/local/Tengine/sslcrt/ wosign.com.crt; ssl_certificate_key /usr/local/Tengine/sslcrt/ wosign.com .Key; }配置SSL安全证书重启避免输入密码可以用私钥来做这件事。生成一个解密的key文件,替代原来key文件。openssl rsa -in server.key -out server.key.unsecureSSL性能调优ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM;ssl_prefer_server_ciphers on;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;MAC (Brew Nginx)mac 使用homebrew安装Nginx,Nginx的位置与启动## 在mac上安装完nginx后的提示信息==> nginxDocroot is: /usr/local/var/wwwThe default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so thatnginx can run without sudo.nginx will load all files in /usr/local/etc/nginx/servers/.To have launchd start nginx now and restart at login: brew services start nginxOr, if you don’t want/need a background service you can just run: nginx## 查看nginx版本nginx -v## 启动nginx服务brew services start nginx## 关闭nginx服务brew services stop nginx## 重新加载nginxnginx -s reload## 停止nginxnginx -s stop ...

April 8, 2019 · 1 min · jiezi

Centos 7 安装Nginx-yum方式

前言Nginx (engine x) 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 服务器。。 本例演示 CentOS 7 下安装和配置 Nginx 的基本步骤。环境说明CentOS 7(Minimal Install)$ cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core)步骤步骤 1: 添加 yum 源Nginx 不在默认的 yum 源中,可以使用 epel 或者官网的 yum 源,本例使用官网的 yum 源。$ sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm安装完 yum 源之后,可以查看一下。$ sudo yum repolistLoaded plugins: fastestmirror, langpacksLoading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.comrepo id repo name statusbase/7/x86_64 CentOS-7 - Base 9,911extras/7/x86_64 CentOS-7 - Extras 368nginx/x86_64 nginx repo 108updates/7/x86_64 CentOS-7 - Updates 1,041repolist: 11,428可以发现 nginx repo 已经安装到本机了。步骤 2: 安装yum 安装 Nginx,非常简单,一条命令。$ sudo yum install nginx步骤 3: 启动配置 Nginx 服务设置开机启动$ sudo systemctl enable nginx启动服务$ sudo systemctl start nginx停止服务$ sudo systemctl restart nginx重新加载,因为一般重新配置之后,不希望重启服务,这时可以使用重新加载。$ sudo systemctl reload nginx配置### nginx默认配置位置/etc/nginx/conf.d/default.conf## 默认wwwroot位置/usr/share/nginx/html步骤 4: 打开防火墙端口默认 CentOS7 使用的防火墙 firewalld 是关闭 http 服务的(打开 80 端口)。$ sudo firewall-cmd –zone=public –permanent –add-service=httpsuccess$ sudo firewall-cmd –reloadsuccess打开之后,可以查看一下防火墙打开的所有的服务$ sudo sudo firewall-cmd –list-servicessh dhcpv6-client http可以看到,系统已经打开了 http 服务。步骤 5: 反向代理Nginx 是一个很方便的反向代理,配置反向代理可以参考 Module ngx_http_proxy_module 。本文不做累述。需要指出的是 CentOS 7 的 SELinux,使用反向代理需要打开网络访问权限。$ sudo setsebool httpd_can_network_connect 1打开网络权限之后,反向代理可以使用了。结论本文演示了 CentOS 7 下 yum 安装 Nginx,配置服务等。参考资料Install Nginx Binary ReleasesModule ngx_http_proxy_module ...

April 8, 2019 · 1 min · jiezi

CentOS7-MySQL排坑历程

PS:如果觉得文章有什么地方写错了,哪里写得不好,或者有什么建议,欢迎指点。一、报错及起因今天在 CentOS7 安装了 mysql5.7,然后为了测试数据库环境是否配置成功,便写了个基于 mybatis+Spring 的 java web 程序连接操作 mysql 数据库,于是就一些发生了令人感到很烦的报错和故事:当涉及到关于数据库的操作如查询、插入等操作时,首先浏览器访问会很慢,进度条一直旋转,然后页面会报 500 错误: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exception 。然而我在 CentOS7 服务端和 Windows 本地的 Navicat 连接 mysql 都没问题。。。二、排错历程1.检查 sql 语句看着这似乎是 mybatis 引起的错误,所有先检查 mapper 的 xml 中 sql 语句是否有错误,例如参数的格式转化、resultType 为 JavaBean、resultMap 需要定义、JavaBean 和 dao 的引入等。检查中并没有发现什么问题,而且错误仍然存在。2. MySql Host is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’ 报错原因分析:查看 tomcat 的日志文件,发现在报错开始部分出现了这个错误。经过查询,发现这个错误的原因是:同一个 ip 在短时间内产生太多(超过 mysql 数据库 max_connection_errors 的最大值)中断的数据库连接而导致的阻塞。解决方法:进入 CentOS7 服务器:方法一:提高允许的max_connection_errors数量(治标不治本):进入Mysql数据库查看max_connection_errors: show variables like ‘%max_connection_errors%’;修改max_connection_errors的数量为1000: set global max_connect_errors = 1000;查看是否修改成功:show variables like ‘%max_connection_errors%’;方法二:使用 mysqladmin flush-hosts 命令清理一下 hosts 文件:查找 mysqladmin 的路径:whereis mysqladmin执行命令,如:/usr/local/mysql5.5.35/bin/mysqladmin -uroot -pyourpwd flush-hosts注: 方法二清理 hosts 文件,也可以直接进入 mysql 数据库执行命令:flush hosts;3.com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 异常解决了 hosts 的问题后,在 tomcat 的日志文件,发现在报错开始部分又出现了这个错误: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failureThe last packet successfully received from the server was 32 milliseconds ago. The last packet sent successfully to the server was 32 milliseconds ago. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:990) ……原因分析:表示程序与 MySQL 通讯失败了,即连接失败了。The last packet successfully received from the server was 32 milliseconds ago 表示 mysql 重连,连接丢失。此为数据库连接空闲回收问题,程序打开数据库连接后,等待做数据库操作时,发现连接被 MySQL 关闭掉了。一开始认为是连接等待超时问题。在 mysql 数据库的配置中,其连接的等待时间(wait_timeout)缺省值为 8 小时。在 mysql 中可以查看:mysql﹥ mysql﹥ show global variables like ‘wait_timeout’; +—————+———+ | Variable_name | Value | +—————+———+ | wait_timeout | 28800 | +—————+———+ 1 row in set (0.00 sec) 28800 seconds,也就是8小时。如果在 wait_timeout 秒期间内,数据库连接(java.sql.Connection)一直处于等待状态,mysql 就将该连接关闭。这时,Java 应用的连接池仍然合法地持有该连接的引用。当用该连接来进行数据库操作时,就碰到上述错误。MySQL 连接一次连接需求会经过 6 次「握手」方可成功,任何一次「握手」失败都可能导致连接失败。前三次握手可以简单理解为 TCP 建立连接所必须的三次握手,MySQL 无法控制,更多的受制于 tcp 协议的不同实现,后面三次握手过程超时与 connect_timeout 有关。解决方法:改变数据库参数是最简单的处理方式(修改 /etc/my.cnf 中的 wait_timeout 值),但是需要重启数据库,影响较大。在不修改数据库参数的前提下,可以做已下处理:如果使用的是 jdbc ,在 jdbc url 上添加 autoReconnect=true ,如:dataSource.url=jdbc:mysql://132.231.xx.xxx:3306/shop?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true如果是在Spring中使用DBCP连接池,在定义datasource增加属性 validationQuery 和 testOnBorrow ,如:<bean id=“vrsRankDataSource” class=“org.apache.commons.dbcp.BasicDataSource” destroy-method=“close”> <property name=“driverClassName” value="${dataSource.driver}"/> <property name=“url” value="${dataSource.url}"/> <property name=“username” value="${dataSource.user}"/> <property name=“password” value="${dataSource.password}"/> <property name=“validationQuery” value=“SELECT 1”/> <property name=“testOnBorrow” value=“true”/></bean>如果是在Spring中使用c3p0连接池,则在定义datasource的时候,添加属性 testConnectionOnCheckin 和 testConnectionOnCheckout ,如:<bean name=“cacheCloudDB” class=“com.mchange.v2.c3p0.ComboPooledDataSource”> <property name=“driverClass” value="${dataSource.driver}"/> <property name=“jdbcUrl” value="${dataSource.url}"/> <property name=“user” value="${dataSource.user}"/> <property name=“password” value="${dataSource.password}"/> <property name=“initialPoolSize” value=“10”/> <property name=“maxPoolSize” value=“10”/> <property name=“testConnectionOnCheckin” value=“false”/> <property name=“testConnectionOnCheckout” value=“true”/> <property name=“preferredTestQuery” value=“SELECT 1”/></bean>4. 远程连接 Mysql 太慢问题尝试解决了一下上面的连接超时问题,但是发现并没有什么用,还是会出现上面的问题。于是便怀疑是不是远程连接 Mysql 太慢导致了连接超时?因为我在 CentOS7 服务端和 Windows 本地的 Navicat 连接 mysql 都没问题。在网上查询了下,发现在 mysql 的配置文件 /etc/my.cnf 中增加如下配置参数:# 注意该配置是加在[mysqld]下面[mysqld]skip-name-resolve然后需要重启 mysql 服务。因为根据说明,如果 mysql 主机查询和解析 DNS 会导致缓慢或是有很多客户端主机时会导致连接很慢。同时,请注意在增加该配置参数后,mysql的授权表中的host字段就不能够使用域名而只能够使用ip地址了,因为这是禁止了域名解析的结果。5. 终极解决:Could not create connection to database server. Attempted reconnect 3 times. Giving up 报错原因分析:经过上面的配置后,重新测试程序,就又出现了这个错误。经过查询,发现这是由于 SSL 引起的错误。因为我是在 CentOS7 上新装的 MySQL5.7,默认是没有配置 MySQL SSL 的。而我以前一直使用的 Ubuntu16.04 上的 mysql 数据库,它默认是配置了 MySQL SSL 的,所以我习惯在连接数据库的 jdbc 的 url 里面加上 &useSSL=false ,即使用 SSL 加密。导致我在连接当前 mysql 的时候,一直连接不上。查看 tomcat 日志的报错末尾,会有如下报错:Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1946) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:316) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:310) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1639) at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:223) at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1037) at sun.security.ssl.Handshaker.process_record(Handshaker.java:965) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1064) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379) at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:186) … 24 moreCaused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors at com.mysql.jdbc.ExportControlled$X509TrustManagerWrapper.checkServerTrusted(ExportControlled.java:302) at sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:1091) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1621) … 32 moreCaused by: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors at sun.security.provider.certpath.PKIXCertPathValidator.validate(PKIXCertPathValidator.java:154) at sun.security.provider.certpath.PKIXCertPathValidator.engineValidate(PKIXCertPathValidator.java:80) at java.security.cert.CertPathValidator.validate(CertPathValidator.java:292) at com.mysql.jdbc.ExportControlled$X509TrustManagerWrapper.checkServerTrusted(ExportControlled.java:295) … 34 more遂恍然大悟。。。解决方法:在配置 JDBC URL 时使用 &useSSL=false ,即不使用 SSL 加密,配置后连接正常:dataSource.url = jdbc:mysql://132.231.xx.xxx:3306/shop?useUnicode=true&characterEncoding=utf8&useSSL=false&autoReconnect=true如果安全性较高的数据建议在 MySQL 端还是把 SSL 配上。三、总结由于 MySQL 的 SSL 问题引起了一连串的问题。由于 SSL 加密的问题,导致程序向 mysql 的连接超时,然后一直向 mysql 发送连接,导致了同一个 ip 在短时间内产生太多中断的数据库连接而导致的阻塞。以后看报错日志,除了看报错的最开始部分,也要看看报错的结尾部分,弄不好会有一些其他的发现的。欢迎您的点赞、收藏和评论!(完) ...

April 8, 2019 · 3 min · jiezi

如何在 CentOS 7 上生成 SSL 证书为 Nginx 加密

本文首发:开发指南:如何在 CentOS 7 上安装 NginxLet’s Encrypt 是由 Internet Security Research Group (ISRG) 开发的一个自由、自动化和开放的证书颁发机构。目前几乎所有的现代浏览器都信任由 Let’s Encrypt 颁发的证书。这个教程,将会一步一步的教你如何在 CentOS 7 上通过 Certbot 来生成 SSL 安全证书,并配置到 Nginx 上。开始前的准备在继续此教程之前,请确保你已经满足了以下两个条件:请确保你已经拥有了一个属于你的域名,并且已经解析到了你的服务器 IP 上,在接下来的教程中,我将会用 kaifazhinan.com 作为本教程的域名。请确保你已经启用了 EPEL 仓库,并且已经安装了 Nginx,如果你还没有安装 Nginx,你可以先阅读 如何在 CentOS 7 上安装 Nginx 这篇文章来安装 Nginx。安装 CertbotCertbot 是一个非常简单方便的工具,它可以帮助我们生成 SSL 证书,自动更新 SSL 证书,并且将证书配置到 Web 服务上。可以运行以下命令,从 EPEL 仓库中安装 Certbot:sudo yum install certbot生成 Dh (Diffie-Hellman) 组Diffie–Hellman 密匙交换是一种可以在不安全的通信信道上安全交换密钥的方法。现在运行以下命令,可以来生成一个新的 2048 位的 DH 参数:sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 20482048 位,生成时间大概 3-5 分钟左右。当然,如果您愿意也可以将大小改为 4096 位,但是这样的话,可能生成的时间至少需要花费 30 分钟,此操作具体时长取决于系统熵。生成 SSL 证书要生成域名的 SSL 证书,我们将使用 Webroot 插件在 ${webroot-path}/.well-known/acme-challenge 目录中创建临时文件来验证请求的域名。Let’s Encrypt 服务器会向临时文件发出 HTTP 请求,以验证请求的域名是否被正确的解析到了正在运行 Certbot 的服务器。为了简便,我们将把所有访问 .well-known/acme-challenge 的 HTTP 请求都映射到 /var/lib/letsencrypt 这个目录中。下面的命令将会创建这个目录,并且使 Nginx 对它拥有读写的权限。sudo mkdir -p /var/lib/letsencrypt/.well-knownsudo chgrp nginx /var/lib/letsencryptsudo chmod g+s /var/lib/letsencrypt创建代码片段为了避免 Nginx 配置文件中存在重复的代码,请创建以下两个代码片段(里面是 Nginx 的配置代码),我们将在相关的 Nginx 配置文件中包含这些片段:1、首先,创建一个目录,用于存放 Nginx 配置的代码片段文件:sudo mkdir /etc/nginx/snippets2、创建第一个片段文件, letsencrypt.conf,其全路径为: /etc/nginx/snippets/letsencrypt.conflocation ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type “text/plain”; try_files $uri =404;}3、创建第二个片段文件,ssl.conf,其全路径为: /etc/nginx/snippets/ssl.confssl_dhparam /etc/ssl/certs/dhparam.pem;ssl_session_timeout 1d;ssl_session_cache shared:SSL:50m;ssl_session_tickets off;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ‘ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS’;ssl_prefer_server_ciphers on;ssl_stapling on;ssl_stapling_verify on;resolver 8.8.8.8 8.8.4.4 valid=300s;resolver_timeout 30s;add_header Strict-Transport-Security “max-age=15768000; includeSubdomains; preload”;add_header X-Frame-Options SAMEORIGIN;add_header X-Content-Type-Options nosniff;上面的代码中包含 Mozilla 的推荐部分。 支持 OCSP Stapling,HTTP 严格传输安全(HSTS)并强制执行几个以安全为中心的 HTTP 头。加载 letsencrypt.conf代码片段创建完成之后,就可以打开 Nginx 的域名独立配置文件,将 letsencrypt.conf 文件引入。在这里,我们的域名是 kaifazhinan.com ,所以我们的配置文件为 kaifazhinan.com.conf, 文件的全路径为 /etc/nginx/conf.d/kaifazhinan.com.conf。server { listen 80; server_name kaifazhinan.com www.kaifazhinan.com; include snippets/letsencrypt.conf;}注意: 我们建议针对不同的域名,创建不同的独立配置文件。这样会比较清晰,便于管理和查找对应的配置。Nginx 的主配置文件中有一行代码是 include /etc/nginx/conf.d/*.conf,这行代码的意思就是加载 /etc/nginx/conf.d/ 目录下所有以 .conf 结尾的配置文件,所以我们直接将独立的配置文件保存在 /etc/nginx/conf.d/ 目录下就会自动引入。生成证书重新加载 Nginx 配置使更改生效:sudo systemctl reload nginx你现在可以运行 Certbot 使用 Webroot 插件,为你的域名生成 SSL 证书:sudo certbot certonly –agree-tos –email admin@kaifazhinan.com –webroot -w /var/lib/letsencrypt/ -d kaifazhinan.com -d www.kaifazhinan.com注意: 记得将 admin@kaifazhinan.com 换成你自己的邮箱,还有 kaifazhinan.com 和 www.kaifazhinan.com 换成你的域名。如果成功的生成了 SSL 证书,那么 Certbot 将打印类似以下的内容:IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/kaifazhinan.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/kaifazhinan.com/privkey.pem Your cert will expire on 2019-02-11. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew all of your certificates, run “certbot renew” - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le配置 Nginx现在你已经成功生成了 SSL 证书,现在可以修改 Nginx 的域名配置了,这里我们的域名是配置文件是 kaifazhinan.com.conf,文件的全路径是 /etc/nginx/conf.d/kaifazhinan.com.conf:server { listen 80; server_name www.kaifazhinan.com kaifazhinan.com; include snippets/letsencrypt.conf; return 301 https://$host$request_uri;}server { listen 443 ssl http2; server_name www.kaifazhinan.com; ssl_certificate /etc/letsencrypt/live/kaifazhinan.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/kaifazhinan.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/kaifazhinan.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; return 301 https://kaifazhinan.com$request_uri;}server { listen 443 ssl http2; server_name kaifazhinan.com; ssl_certificate /etc/letsencrypt/live/kaifazhinan.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/kaifazhinan.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/kaifazhinan.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; # 如果有补充的配置,可以写在这里}上面的代码,我们将 HTTP 的请求重定向到了 HTTPS,将 www.kaifazhinan.com 重定向到了 kaifazhinan.com 上。最后,通过下面的命令,重新加载 Nginx,使上面的配置生效:sudo systemctl reload nginx自动更新 Let’s Encrypt SSL 证书Let’s Encrypt 颁发的 SSL 证书有效时间是 90 天。我们需要在证书过期之前自动续订证书,这里将创建一个每天运行两次的定时任务 ,并在证书到期前 30 天自动续订。通过运行 crontab 命令,来创建一个定时任务:sudo crontab -e上面的命令,会自动创建一个文件,并自动进入编辑状态,所以直接复制下面的内容粘贴到里面即可:0 */12 * * * root test -x /usr/bin/certbot -a ! -d /run/systemd/system && perl -e ‘sleep int(rand(3600))’ && certbot -q renew –renew-hook “systemctl reload nginx"保存并关闭文件。如果要测试是否能够正常更新证书,你可以在 certbot 命令后面添加 –dry-run 这个参数来主动触发更新命令。sudo certbot renew –dry-run如果没有输出错误,则表示 SSL 证书更新成功。总结通过此教程,你学会了:如何使用 Let’s Encrypt 客户端 Certbot 为你的域名创建了 SSL 证书;也通过创建 Nginx 的代码片段,来避免 Nginx 配置文件中的代码冗余,并且将 SSL 证书配置到了 Nginx 服务中;最后,你还创建了一个定时任务,来自动更新你的 SSL 证书,保证它不会过期。如果你想了解 Certbot 的更多信息,可以参考它的官方文档。期待下次与你相见 : )本文首发:开发指南:如何在 CentOS 7 上安装 Nginx ...

February 19, 2019 · 3 min · jiezi

Centos7.x下Nginx安装及SSL配置与常用命令

一、安装 采用yum方式安装##自动安装yum nginx##启动nginx 二、SSL及默认端口配置 泛解析配置server{ listen 443; server_name *.banacoo.cn; ssl on; ssl_certificate /etc/nginx/conf.d/1_banacoo.cn_bundle.crt; ssl_certificate_key /etc/nginx/conf.d/2_banacoo.cn.key; gzip on; gzip_buffers 16 8k; gzip_comp_level 6; gzip_min_length 200; gzip_types text/css text/xml application/javascript text/javascript application/x-javascript text/plan image/jpeg image/png image/gif; location /room/static { alias /home/room/; } location /statics { alias /home/quanyou/; } location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; if ($request_method = ‘OPTIONS’) { add_header ‘Access-Control-Allow-Credentials’ true; add_header ‘Access-Control-Allow-Origin’ “$http_origin”; add_header ‘Access-Control-Allow-Methods’ ‘GET, POST, OPTIONS’; add_header ‘Access-Control-Allow-Headers’ ‘DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range’; add_header ‘Access-Control-Max-Age’ 1728000; return 204; } if ($host ~ ^(uatapi).banacoo.cn$){ proxy_pass http://127.0.0.1:8033; } if ($host ~ ^(uatapp).banacoo.cn$){ proxy_pass http://127.0.0.1:8022; } if ($host ~ ^(uatai).banacoo.cn$){ proxy_pass http://127.0.0.1:8011; } if ($host ~ ^(uatui).banacoo.cn$){ proxy_pass http://127.0.0.1:9080; } if ($host ~ ^(uatmarket).banacoo.cn$){ proxy_pass http://127.0.0.1:8088; } if ($host ~ ^(uatmarketui).banacoo.cn$){ proxy_pass http://127.0.0.1:9089; } if ($host ~ ^(uateasyjoy).banacoo.cn$){ proxy_pass http://127.0.0.1:8036; } } access_log logs/banacoo.cn.access.log;}server{ listen 80; server_name uatmarketui.banacoo.cn; charset utf-8; gzip on; gzip_buffers 16 8k; gzip_comp_level 6; gzip_min_length 200; gzip_types text/css text/xml application/javascript text/javascript application/x-javascript text/plan image/jpeg image/png image/gif; location / { proxy_pass http://127.0.0.1:9089; } autoindex on; autoindex_exact_size off; autoindex_localtime on; access_log logs/uatmarketui.banacoo.cn.access.log;}server{ listen 80; server_name uatmarket.banacoo.cn; charset utf-8; gzip on; gzip_buffers 16 8k; gzip_comp_level 6; gzip_min_length 200; gzip_types text/css text/xml application/javascript text/javascript application/x-javascript text/plan image/jpeg image/png image/gif; location / { proxy_pass http://127.0.0.1:8088; } autoindex on; autoindex_exact_size off; autoindex_localtime on; access_log logs/uatmarket.banacoo.cn.access.log;} 三、常用命令 ##重新加载配置nginx -s reload##停止服务nginx -s stop ...

February 18, 2019 · 2 min · jiezi

Centos7 安装 Odoo11

Centos7 安装 Odoo111 安装python3.6Centos7 基于稳定性考虑安装的是python2.7,而且默认的官方 yum 源中不提供 Python 3 的安装包,所以我们要先换一个提供python3的yum源– IUS 。 1、IUS软件源依赖与epel软件源包,首先要安装epel软件源包sudo yum install epel-release2、安装IUS软件源sudo yum install https://centos7.iuscommunity.org/ius-release.rpm3、安装python3.6sudo yum install python36usudo yum -y install python36u-develsudo yum -y install python36u-pip2 安装配置PostgreSQL数据库2.1 安装1、安装sudo yum install -y postgresql-server2、初始化service postgresql initdb3、启动服务systemctl start postgresql4、设置开机运行服务systemctl enable postgresql2.2 配置1、创建数据库和角色# 切换到 postgres 用户sudo su - postgres# 登录PostgreSQL控制台psql# 系统提示符会变为"postgres=#",表示这时已经进入了数据库控制台# 创建数据库用户dbuserCREATE USER dbuser WITH PASSWORD ‘password’ ENCODING=‘UTF8’;# 创建用户数据库CREATE DATABASE exampledb OWNER dbuser;# 将exampledb数据库的所有权限都赋予dbuserGRANT ALL PRIVILEGES ON DATABASE exampledb to dbuser;# 使用\q命令退出控制台(也可以直接按ctrl+D)\q如果在创建数据库时报如下错误:ERROR: new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII)则通过如下方式解决update pg_database set datallowconn = TRUE where datname = ’template0’; \c template0update pg_database set datistemplate = FALSE where datname = ’template1’; drop database template1;create database template1 with encoding = ‘UTF8’ LC_CTYPE = ’en_US.UTF-8’ LC_COLLATE = ’en_US.UTF-8’ template = template0;update pg_database set datallowconn = TRUE where datname = ’template1’;\c template1update pg_database set datallowconn = FALSE where datname = ’template0’;——————— 作者:东方-phantom 来源:CSDN 原文:https://blog.csdn.net/hkyw000/article/details/52817422 版权声明:本文为博主原创文章,转载请附上博文链接!2、配置这一步要修改两个配置文件:pg_hba.conf 和 postgresql.conf 。可以通过以下命令找到文件位置:sudo find / -name ‘filename’首先修改 pg_hba.conf :添加下面这行(这行是用于可远程连接的,如果想限制数据库只能本地访问的话,跳过)host all all 0.0.0.0/0 md5找到并修改下面这两行local all all peer md5host all all 127.0.0.1/32 ident md5修改 postgresql.conf (用于可远程连接,如不需要可调过):添加下面这行listen_addresses = ‘*‘修改完成之后,重启服务:systemctl restart postgresql至此,PostgreSQL 安装配置完成!3 安装 node.js 和 less插件Odoo 前端依赖 node.js 和 less,用以下命令安装:sudo yum install -y nodejssudo npm install -g less less-plugin-clean-css4 安装依赖yum install wkhtmltopdfyum install python-devel openldap-develyum install libxslt-devel libxml++-devel libxml2-develyum install gcc5 安装Odoo11这里我们用 pipenv 安装,首先安装 pipenvpip3.6 install pipenv拉取odoo11 代码后,在项目根目录创建虚拟环境并安装依赖pipenv –python python3.6 install -r requirments.txt安装时会有一个 win32 的模块安装失败,不用管,这个是windows系统开发时需要依赖的包。安装完成之后,创建一个 odoo 配置文件: odoo.conf 。 内容如下:[options];模块路径addons_path = odoo/addons,odoo/myaddons;超级管理员密码admin_passwd = admindb_host = localhostdb_port = 5432db_maxconn = 64;数据库名称db_name = ***;数据库用户db_user = ***;数据库密码db_password = ***然后运行如下命令启动 odoopython odoo-bin -c odoo.conf访问 127.0.0.1:8069 ,如果进入到odoo登录页面就说明安装成功了! ...

January 31, 2019 · 2 min · jiezi

Centos7 搭建Skywalking 6.0系列第一篇-Elasticsearch6.6集群搭建

随着Skywalking 6.0 GA版本的发布,Skywalking终于支持Elasticsearch 6.x版本,本文作为搭建Skywalking 6.0集群系列文章的第一篇介绍下Elasticsearch 6.6集群的搭建。1. 准备1.1 节点规划IPcluster.namenode.name10.130.10.11es_loges_110.130.10.12es_loges_210.130.10.13es_loges_31.2 安装Java运行环境JREwget -c -P /tmp https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u202-b08/OpenJDK8U-jre_x64_linux_hotspot_8u202b08.tar.gzmkdir /usr/java;\tar xf /tmp/OpenJDK8U-jre_x64_linux_hotspot_8u202b08.tar.gz -C /usr/java;\rm -rf /usr/java/default;\ln -s /usr/java/jdk8u202-b08-jre /usr/java/default;\tee -a /etc/profile << ‘EOF’export JAVA_HOME=/usr/java/defaultexport PATH=$JAVA_HOME/bin:$PATHEOF2. 安装2.1 导入Elasticserach软件源rpm –import https://artifacts.elastic.co/GPG-KEY-elasticsearch;\tee /etc/yum.repos.d/elasticsearch.repo << ‘EOF’[elasticsearch-6.x]name=Elasticsearch repository for 6.x packagesbaseurl=https://artifacts.elastic.co/packages/6.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-mdEOF2.2 安装软件yum install elasticsearch -y2.3 配置LimitLimitMEMLOCK开启内存锁定LimitNPROC最大进程数,系统支持的最大进程数:32768查看系统最大支持进程数:cat /proc/sys/kernel/pid_maxLimitNOFILE打开文件数,系统默认最大文件描述符:791020查看系统最大文件描述符:cat /proc/sys/fs/file-maxmkdir /etc/systemd/system/elasticsearch.service.d;\cat > /etc/systemd/system/elasticsearch.service.d/override.conf << ‘EOF’[Service]Environment=JAVA_HOME=/usr/java/default LimitMEMLOCK=infinityLimitNOFILE=204800LimitNPROC=4096EOF2.4 配置JVM(可选)默认是2G不要超过可用 RAM 的 50%Lucene 能很好利用文件系统的缓存,它是通过系统内核管理的。如果没有足够的文件系统缓存空间,性能会受到影响。 此外,专用于堆的内存越多意味着其他所有使用 doc values 的字段内存越少不要超过 32 GB如果堆大小小于 32 GB,JVM 可以利用指针压缩,这可以大大降低内存的使用:每个指针 4 字节而不是 8 字节sed -i ‘/-Xms2g/c-Xms3g’ /etc/elasticsearch/jvm.options;\sed -i ‘/-Xmx2g/c-Xmx3g’ /etc/elasticsearch/jvm.options2.5 配置elasticsearch.ymlcluster.name集群名称,默认是elasticsearch,建议修改为更明确的名称,比如es_lognode.name节点名,默认随机指定一个name列表中名字,建议修改为明确的名称,比如es_1,es_2,es_3network.host主机IPpath.data数据目录path.logs日志目录discovery.zen.ping.unicast.hosts节点发现2.5.1 所有节点执行相同的命令mkdir -p /home/elasticsearch/data /home/elasticsearch/logs;\chown -R elasticsearch. /home/elasticsearch;\sed -i ‘/cluster.name/c\cluster.name: es_log’ /etc/elasticsearch/elasticsearch.yml;\sed -i ‘/network.host/c\network.host: 0.0.0.0’ /etc/elasticsearch/elasticsearch.yml;\sed -i ‘/path.data/c\path.data: /home/elasticsearch/data’ /etc/elasticsearch/elasticsearch.yml;\sed -i ‘/path.logs/c\path.logs: /home/elasticsearch/logs’ /etc/elasticsearch/elasticsearch.yml;\sed -i ‘/discovery.zen.ping.unicast.hosts/c\discovery.zen.ping.unicast.hosts: [“10.130.10.11”,“10.130.10.12”,“10.130.10.13”]’ /etc/elasticsearch/elasticsearch.yml2.5.2 各个节点执行对应的命令#节点-1sed -i ‘/node.name/c\node.name: es_1’ /etc/elasticsearch/elasticsearch.yml#节点-2sed -i ‘/node.name/c\node.name: es_2’ /etc/elasticsearch/elasticsearch.yml#节点-3sed -i ‘/node.name/c\node.name: es_3’ /etc/elasticsearch/elasticsearch.yml2.6 启动systemctl enable elasticsearch;\systemctl daemon-reload;\systemctl start elasticsearch;\systemctl status elasticsearch2.7 配置防火墙firewall-cmd –add-port=9200/tcp –permanent;\firewall-cmd –add-port=9300/tcp –permanent;\firewall-cmd –reload3. 安装中文分词插件(可选)#查看已安装插件/usr/share/elasticsearch/bin/elasticsearch-plugin list#安装IK/usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.0/elasticsearch-analysis-ik-6.6.0.zip4. 查询#查看节点信息curl -X GET http://localhost:9200/_nodes#打开文件数信息curl -X GET http://localhost:9200/_nodes/stats/process?filter_path=**.max_file_descriptors#集群健康状态curl -X GET http://localhost:9200/_cat/health?v#查看集群索引数curl -X GET http://localhost:9200/_cat/indices?v#查看磁盘分配情况curl -X GET http://localhost:9200/_cat/allocation?v#查看集群节点curl -X GET http://localhost:9200/_cat/nodes?v#查看集群其他信息curl -X GET http://localhost:9200/_cat ...

January 31, 2019 · 1 min · jiezi

CentOS 7搭建 cnpm 私有仓库

服务端安装工具$ npm install -g –build-from-source cnpmjs.org cnpm sqlite3如果报错或者警告通过下面方式安装$ npm install -g –unsafe-perm –verbose –build-from-source cnpmjs.org cnpm sqlite3配置配置文件位于~/.cnpmjs.org/config.json中,{ “bindingHost”: “0.0.0.0”, “admins”: { “admin”: “admin@example.com” }, “scopes”: [ “@package” ], “registryHost”: “registry.company.com”}bindingHost:设置0.0.0.0后,服务可外网访问admins: 管理员配置,可多个scopes: 包前缀,如果不是以这个前缀命名的包将不能发布,可多个registryHost:下载包对应的服务器地址,如不配置会走默认r.cnpmjs.org更多配置参考:https://github.com/cnpm/cnpmj…运行$ cnpmjs.org start运行后默认将会开启两个端口:7001(registry),7001(registry)7001(registry)用来在命令行发布,下载包等对用的远程registry地址比如:cnpmjs.org官方:http://r.cnpmjs.org/npm官方:https://registry.npmjs.org/7002(web)用来在web端查看仓库信息,搜索包,包信息等。cnpmjs.org官方:https://cnpmjs.org/npm官方:http://npmjs.com/将两个端口号通过nginx配置到对应域名例如:7001配置到registry.company.com7002配置到npm.company.com通过 pm2 运行上述方法在命令行退出时,会自动关闭进程,如果需要持久化运行cnpmjs.org,可以借助进程管理工具pm2。安装 pm2$ npm install pm2 -g运行$ pm2 start which cnpmjs.org – start–可以在pm2 start的脚本后面增加参数。客户端发布包安装并配置配置 cnpm$ npm install cnpm -g$ cnpm set registry http://registry.company.com这里的registry地址为上述registryHost字段。登录$ cnpm login输入用户名、密码、邮箱登录,为配置中admins字段发布进入待发布工程目录,执行:$ cnpm publish下载包$ cnpm install @package/package_name

January 28, 2019 · 1 min · jiezi