Centos7部署zabbix(源码安装)

1.监控工具

Cacti–用于监控,以时间为单位。不停变化的数据(使用率-cpu 网络流量)
Nagios–主要用于监控服务状态on–off
一台web——同时100人请求–响应时候一个一个回复
一个人1s,回复100s–等待期间,不判定服务状态
软状态:在他确定死亡之前,所有测试获取的状态
硬状态:确定你game over
很多模板:监控什么?(监控什么系统?什么系统上什么服务?什么服务 什么指标?时间?报警给谁?)–都需要自己去定义
zabbix–zabbix是完全取代前两者,完全能够通过web页面去直观展示监控结果

   SNMP--简单网络管理协议
  多简单——认证上--
  100台路由器--监控其中20台--“团体名”--明文传输
  各个厂商都支持--监控流量(cpu 内存)

MIB库 OID –帮助建立监控体系(唯一性)
zabbix-proxy–分布式(1、跨机房,2、当下有终端过多(500台左右)分担Server压力
## 台左右)

## 万年老二—永远不可能单独工作,收集到agent数据,定期向Server汇报(Proxy具备自己的数据库,数据库+Proxy组件,绝对不可和Server同台服务器–进行数据备份)
官方-proxy不支持GUI界面

2.实战部署zabbix(本次安装以3.2版本为例,安装方法同样适用于4.0以上版本)
部署环境:centos7

[root@ceshi_server ~]# cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)部署前环境检查:
[root@ceshi_server ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 114.114.114.114
nameserver 8.8.8.8

[root@ceshi_server ~]# ping baidu.com
PING baidu.com (39.156.69.79) 56(84) bytes of data.
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=128 time=69.3 ms

[root@ceshi_server ~]# cd /etc/yum.repos.d/
[root@ceshi_server yum.repos.d]# ll
总用量 20
-rw-r--r-- 1 root root   67 11月  8 08:59 aa.repo
-rw-r--r-- 1 root root  990 11月  7 11:16 CentOS-Base.repo
-rw-r--r-- 1 root root 1050 9月  18 07:25 epel.repo
-rw-r--r-- 1 root root 1149 9月  18 07:25 epel-testing.repo
-rw-r--r-- 1 root root  120 11月  8 08:59 mongodb.repo


[root@ceshi_server yum.repos.d]# yum repolist all
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: ftp.riken.jp
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
源标识                                源名称                                                                     状态
!aa                                   aa                                                                         启用: 24,570
!base/7/x86_64                        CentOS-7 - Base - mirrors.aliyun.com                                       启用: 10,097
!epel/x86_64                          Extra Packages for Enterprise Linux 7 - x86_64                             启用: 13,447
!extras/7/x86_64                      CentOS-7 - Extras - mirrors.aliyun.com                                     启用:    305
!mongodb                              mongodb                                                                    启用:     10
!updates/7/x86_64                     CentOS-7 - Updates - mirrors.aliyun.com                                    启用:    711
repolist: 49,140

如果没有安装epel源,请先安装,安装完重建yum元数据并更新yum软件包

yum -y install epel-release
yum clean all
yum makecache
yum update 

下载zabbix安装包,可以通过wget官网下载链接,也可以下载到本地在上传,先安装两个辅助命令

yum -y install wget
yum -y install lrzsz
用法:
wget +下载链接。不指定路径默认当前路径
rz -E +包名(请用crt或者xshell执行)

因为官网下载链接较慢,可以切换到国内的源(请自行查阅相关文档),然后查看软件包是否下载成功或上传成功这里不在演示zabbix软件包下载过程,我已经提前下载到本地,下载链接复制官网的即可或者下载到本地再上传也可)

[root@ceshi_server ~]# ll
总用量 15656
-rw-r--r--  1 root root 16016367 11月 15 14:31 zabbix-3.2.7.tar.gz

解压软件包

[root@ceshi_server ~]# tar -zxvf zabbix-3.2.7.tar.gz

进入解压目录

[root@ceshi_server ~]# cd zabbix-3.2.7/

创建zabbix安装目录

[root@ceshi_server zabbix-3.2.7]# mkdir /usr/local/zabbix

开始进行预编译

[root@ceshi_server zabbix-3.2.7]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-libcurl --with-net-snmp 

编译过程报错处理

configure: error: in `/root/zabbix-3.2.7':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
安装C语言依赖,解决此问题
yum -y install gcc gcc-c++
安装完c依赖后继续执行编译
[root@ceshi_server zabbix-3.2.7]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-libcurl


checking for mysql_config... no
configure: error: MySQL library not found
安装mysql-devel解决此报错
yum -y install mysql-devel
解决依赖后继续执行编译
[root@ceshi_server zabbix-3.2.7]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-libcurl



checking for curl-config... no
configure: error: Curl library not found
安装curl-deverl解决此报错
yum -y install curl-devel
解决依赖后继续执行编译
[root@ceshi_server zabbix-3.2.7]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-libcurl


预编译结束,如下

***********************************************************
*            Now run 'make install'                       *
*                                                         *
*            Thank you for using Zabbix!                  *
*              <http://www.zabbix.com>                    *

开始编译安装zabbix

[root@ceshi_server zabbix-3.2.7]# make && make install

安装组件

[root@ceshi_server zabbix-3.2.7]# yum -y install httpd mariadb mariadb-server php php-mysql

启动Apache,关闭防火墙,关闭selinux(或者自行添加防火墙规则和匹配上下文,为了方便我这里选择禁用)

[root@ceshi_server zabbix-3.2.7]# systemctl start httpd
[root@ceshi_server zabbix-3.2.7]# systemctl enable httpd
[root@ceshi_server zabbix-3.2.7]# iptables -F
[root@ceshi_server zabbix-3.2.7]# setenforce 0
[root@ceshi_server zabbix-3.2.7]# systemctl stop firewalld

拷贝zabbix目录下的php文件到Apache目录

[root@ceshi_server zabbix-3.2.7]# cp /root/zabbix-3.2.7/frontends/php/* /var/www/html/ -a
[root@ceshi_server zabbix-3.2.7]# systemctl restart httpd.service 

打开浏览器输入http://ip

http://172.30.90.25

报错处理(谷歌浏览器自动翻译后的页面,注意看关键词)

PHP帖子的最小要求大小为16M(配置选项“ post_max_size”)。
PHP脚本执行时间的最低要求限制为300(配置选项“ max_execution_time”)。
PHP脚本的输入解析时间的最低要求限制为300(配置选项“ max_input_time”)。
未设置PHP的时区(配置参数“ date.timezone”)。
缺少PHP bcmath扩展名(PHP配置参数--enable-bcmath)。
缺少PHP mbstring扩展名(PHP配置参数--enable-mbstring)。
缺少PHP gd扩展名(PHP配置参数--with-gd)。
缺少PHP gd PNG图片支持。
缺少PHP gd JPEG图像支持。
缺少PHP gd FreeType支持。
PHP xmlwriter扩展名丢失。
PHP xmlreader扩展名丢失。

安装php相关组件依赖(需要用到开始安装的epel源)

yum -y install php-gd php-mbstring php-bcmath php-xml
[root@ceshi_server zabbix-3.2.7]# systemctl restart httpd

再次登录浏览器,刷新页面

PHP帖子的最小要求大小为16M(配置选项“ post_max_size”)。
PHP脚本执行时间的最低要求限制为300(配置选项“ max_execution_time”)。
PHP脚本的输入解析时间的最低要求限制为300(配置选项“ max_input_time”)。
未设置PHP的时区(配置参数“ date.timezone”)。
当前值	需要	
PHP版本	5.4.16	5.4.0	好
PHP选项“ memory_limit”	128M	128M	好
PHP选项“ post_max_size”	8M	1600万	失败
PHP选项“ upload_max_filesize”	2M	2M	好
PHP选项“ max_execution_time”	30	300	失败
PHP选项“ max_input_time”	60	300	失败

修改php配置文件

[root@ceshi_server zabbix-3.2.7]# vim /etc/php.ini 
:/post_max     直接定位到报错的关键行
post_max_size = 16M  就按报错提示的最低要求修改即可
:/max_exe       直接定位到报错的关键行
max_execution_time = 300   就按报错提示的最低要求修改即可
:/max_in        直接定位到报错的关键行
max_input_time = 300        就按报错提示的最低要求修改即可
:/date.time     直接定位到报错的关键行
date.timezone = Asia/shanghai     时区改为亚洲/上海,注意date前面的字符要去掉,否则修改无效
确认无误保存退出后重启apache
[root@ceshi_server zabbix-3.2.7]# systemctl restart httpd.service

再次刷新页面

PHP版本	5.4.16	5.4.0	好
PHP选项“ memory_limit”	128M	128M	好
PHP选项“ post_max_size”	1600万	1600万	好
PHP选项“ upload_max_filesize”	2M	2M	好
PHP选项“ max_execution_time”	300	300	好
PHP选项“ max_input_time”	300	300	好
PHP选项“ date.timezone”	亚洲/上海		好
PHP数据库支持	的MySQL
好
PHP的bcmath	上		好
PHP的mbstring	上		好
PHP选项“ mbstring.func_overload”	关	关	好
PHP套接字	上		好
PHP gd	2.1.0	2.0	好
PHP gd PNG支持	上		好
PHP gd JPEG支持	上		好
PHP gd FreeType支持	上		好
PHP的libxml	2.9.1	2.6.15	好
PHP xmlwriter	上		好
PHP xmlreader	上		好
PHP LDAP	关		警告
PHP的ctype	上		好
PHP会话	上		好
PHP选项“ session.auto_start”	关	关	好
PHP的gettext	上		好
PHP选项“ arg_separator.output”	和	和	好

全部ok后执行下一步(ldap警告忽略掉,未配置相关服务)

无法连接到数据库。
细节
连接数据库时出错:无法通过套接字'/var/lib/mysql/mysql.sock'(2)连接到本地MySQL服务器

启动数据库

[root@ceshi_server zabbix-3.2.7]# systemctl start mariadb.service 
[root@ceshi_server zabbix-3.2.7]# systemctl enable mariadb.service 

配置数据库

[root@ceshi_server zabbix-3.2.7]# mysql

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)
创建数据库zabbix
MariaDB [(none)]> create database zabbix;
Query OK, 1 row affected (0.00 sec)
授权本地主机访问zabbix数据库权限
MariaDB [(none)]> grant all on *.* to 'zabbix'@'localhost' identified by '';
Query OK, 0 rows affected (0.00 sec)
刷新
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
设置完后exit退出数据库

再次刷新页面

无法连接到数据库。
细节
前端与Zabbix数据库不匹配。

创建zabbix数据库前端匹配

创建zabbix数据库用户

MariaDB [(none)]> use zabbix;
Database changed
MariaDB [zabbix]> show tables;
Empty set (0.00 sec)

导入zabbix数据库

[root@ceshi_server zabbix-3.2.7]# cd /root/zabbix-3.2.7/database/mysql/
[root@ceshi_server mysql]# ll
总用量 3068
-rw-r--r-- 1 bfchain bfchain 1036662 7月  18 2017 data.sql
-rw-r--r-- 1 bfchain bfchain 1978341 7月  18 2017 images.sql
-rw-r--r-- 1 bfchain bfchain  122134 7月  18 2017 schema.sql

[root@ceshi_server mysql]# mysql zabbix < schema.sql 
[root@ceshi_server mysql]# mysql zabbix < images.sql 
[root@ceshi_server mysql]# mysql zabbix < data.sql 

再次刷新zabbix安装页面

Database type	MySQL
Database server	localhost
Database port	default
Database name	zabbix
Database user	zabbix
Database password	
 	
Zabbix server	localhost
Zabbix server port	10051
Zabbix server name	
发现现在已经没有报错项了,点击下一步

下一步后出现如下提示

Cannot create the configuration file.
Details
Unable to create the configuration file.
Alternatively, you can install it manually:

Download the configuration file
Save it as "/var/www/html/conf/zabbix.conf.php"

解决方案

按照上面的提示,点击下载文件到本地,然后上传到上面的路径下面,注意,这里有个坑,请按我的操作执行,否则可能会陷入页面刷新死循环,如果发现上传后还是出现这个提示,请把拷贝的文件删除掉(cp /root/zabbix-3.2.7/frontends/php/* /var/www/html/ -a),重新拷贝,在执行下载上传操作

[root@ceshi_server html]# cd /var/www/html/conf/
[root@ceshi_server conf]# ll
总用量 8
-rw-r--r-- 1 bfchain bfchain 1036 7月  18 2017 maintenance.inc.php
-rw-r--r-- 1 bfchain bfchain  411 7月  18 2017 zabbix.conf.php.example

用开始说的rz命令上传文件到此目录下面
[root@ceshi_server conf]# rz -E 
rz waiting to receive.
Starting zmodem transfer.  Press Ctrl+C to cancel.
Transferring zabbix.conf.php...
  100%     409 bytes  409 bytes/sec 00:00:01       0 Errors  

[root@ceshi_server conf]# ll
总用量 12
-rw-r--r-- 1 bfchain bfchain 1036 7月  18 2017 maintenance.inc.php
-rw-r--r-- 1 root    root     409 11月 12 21:22 zabbix.conf.php
-rw-r--r-- 1 bfchain bfchain  411 7月  18 2017 zabbix.conf.php.example

再次刷新页面,发现已经可以正常登陆了,登陆账号为Admin密码为zabbix
登陆以后,发现zabbix-server未运行,给出如下解决方案

Zabbix服务器正在运行	没有	本地主机:10051
[root@ceshi_server ~]# cp -a /root/zabbix-3.2.7/misc/init.d/tru64/zabbix_* /etc/init.d/
[root@ceshi_server ~]# chmod +x /etc/init.d/zabbix_*
[root@ceshi_server ~]# ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/sbin/
[root@ceshi_server ~]# useradd zabbix -s /sbin/nologin
[root@ceshi_server ~]# /etc/init.d/zabbix_server start
[root@ceshi_server ~]# /etc/init.d/zabbix_agentd start

再次刷新页面

Zabbix服务器端运行中	是	localhost:10051

centos7部署PXE批量安装内网服务器(kickstart无人值守)

1.原理:

在这里插入图片描述

2.部署环境:(先关闭防火墙和selinux)

需要3台服务器,2台PXE服务器,一台RPM包管理服务器(内网YUM源服务器,需要两张网卡,一张指向公网一张指向内网)

PXE_Server_mini:DHCP_Server+TFTP_Server+FTP/HTTP/NFS(用于批量安装最小化安装的系统)

PXE_Server_GUI:DHCP_Server+TFTP_Server+FTP/HTTP/NFS(用于批量安装带GUI服务器的系统)

YUM_Server:YUM_Server+RPM_Server(用于解决内网环境安装rpm包依赖问题)

3.为方便等会部署完PXE服务器后写入内网机器yum源脚本,先部署好yum源服务器

a.安装centos7操作系统(带GUI的服务器),此步骤略过,建议2cpu4G以上内存100G硬盘

b.安装完后,配置好ip地址,外网网卡要保证能上公网,内网ip我这里设置为10.0.1.5/24,不用设置网关

NAME="ens34"
DEVICE="ens34"
ONBOOT=yes
NETBOOT=yes
IPV6INIT=yes
BOOTPROTO=static
TYPE=Ethernet
IPADDR=10.0.1.5
NETMASK=255.255.255
DEVICE="ens33"
IPV6INIT="yes"
BOOTPROTO="static"
UUID="5b24467e-4fdb-4a3c-909c-eafbf21d915e"
ONBOOT="yes"
IPADDR=192.168.230.132
NETMASK=255.255.255.0
GATEWAY=192.168.230.2
DNS1=114.114.114.114
DNS2=8.8.8.8

c.配置yum源

这里可以挂载镜像来配置,也可以cp光盘里面的包到指定目录来配置,两种方法都可以,因为等会都会修改指向私有仓库

为了方便,这里我采用挂载光盘的形式来配置yum源,把光盘挂载到/mnt,建议将镜像上传到服务器再进行挂载,下面以脚本的方式配置光盘yum源,因为只是临时用一下,光盘无需永久挂载

#!/bin/bash

#This is an initial environment script !

#start

cd /etc/yum.repos.d/
touch aa.repo

echo [aa] >>aa.repo
echo name=aa >>aa.repo
echo baseurl=file:///mnt >>aa.repo
echo enabled=1 >>aa.repo
echo gpgcheck=0 >>aa.repo

yum clean all
yum makecache
yum -y update

注意:执行前先把镜像挂载到/mnt

将脚本放在你能找到的位置,然后运行脚本即可

注意:在执行脚本之前,不建议执行rm -rf /etc/yum.repos.d/*,因为我们现在是在部署yum源服务器,现在删除掉centos7自带的yum源,等会你还得去镜像站点下载

d.配置好本地yum源后开始配置epel源

yum -y install epel-release

e.因为批量部署的环境,内网服务器需要预装MongoDB,所以还需要配置一下mongodb源(这一步不需要的可以省略)

cd /etc/yum.repos.d/
vim mongodb.repo
[mongodb]
name=mongodb
baseurl=https://repo.mongodb.org/yum/redhat/7Server/mongodb-org/4.2/x86_64/
enabled=1
gpgcheck=0

f.更新yum源

yum clean all
yum makecache
yum -y update

g.安装vsftp

yum -y install vsftpd

h.创建私有yum仓库目录,用于存放各种rpm包,后续会以脚本的方式写入PXE服务器,这里我通过ftp的方式来共享到内网,也可以通过http等方式

mkdir -p /var/ftp/yum_repo/centos/7

i.关键的一步,创建私有仓库,以及解决新包的各种依赖关系,下面以脚本的方式来创建

#!/bin/bash
#Author: wang yuliang

#start


#YUM private warehouse automation update script
yum install createrepo yum-utils -y          安装creatrepo和reposync命令
cd /var/ftp/yum_repo/centos/7                进入上一步创建好的私有仓库目录
reposync -r base                             开始创建centos7的base源的rpm包仓库
reposync -r updates                          开始创建centos7的updates源的rpm包仓库
reposync -r extras                           开始创建centos7的extras源的rpm包仓库
reposync -r epel                             开始创建epel源的rpm包仓库
reposync -r mongodb                          开始创建mongodb源的rpm包仓库


#Add the RPM package to the YUM repository index and update it to the YUM package repository
createrepo -pdo /var/ftp/yum_repo  /var/ftp/yum_repo       自动解决新包的依赖关系
createrepo --update  /var/ftp/yum_repo                     自动解决新包的依赖关系
yum clean all
yum makecache
yum -y update



#end

如果需要手动下载包,如下载openssl,执行yumdownloader openssl-*即可,建议单独建一个下载目录专门用于存放手动下载的包

j.私有仓库创建完成后,将yum源换成新建的仓库目录,至此,内网私有rpm包仓库搭建完毕

[aa]
name=aa
baseurl=file:///var/ftp/yum_repo
enabled=1
gpgcheck=0

4.开始部署PXE服务器

a.安装系统(带GUI服务器),此步骤略过,建议配置4cpu8G硬盘50-100G

b.上传镜像到服务器,不要直接挂载安装光盘,因为光盘读写速度较慢,批量部署内网机器的时候,安装速度会非常慢,我这里上传到/iso(crt/xshell都支持上传大于4G的文件)

yum -y install tree
tree /iso

/iso/
└── CentOS-7-x86_64-DVD-1908.iso

c.创建一个目录专门用于挂载镜像用,将上传到/iso下的镜像cp过去,我这里创建的是/yum,并且配置为开机自动挂载,其中第二条挂载先不要执行,因为还没安装vsftp,安装完在执行,如下

tree /yum
/yum/
└── CentOS-7-x86_64-DVD-1908.iso

vim /etc/fstab 
/yum/CentOS-7-x86_64-DVD-1908.iso	/mnt		iso9660		defaults	0 0
/yum/CentOS-7-x86_64-DVD-1908.iso       /var/ftp/dvd	iso9660	 defaults	0 0

d.安装vsftp前先配置yum源,创建一个本地源,名字随便写,我这里创建aa.repo

cd /etc/yum.repos.d
vim aa.repo
[development]  这里不要修改名字,否则后面PXE软件包会出问题,创建应答文件将提示找不到软件包
name=aa
baseurl=file:///mnt
enabled=1
gpgcheck=0

e.再建一个指向yum服务器的源

cd /etc/yum.repos.d
vim yum_repo.repo
[yum_repo]
name=yum_repo
baseurl=ftp://10.0.1.5/yum_repo
enabled=1
gpgcheck=0

设置好后要刷新下源并update
yum clean all
yum makecache
yum  -y update

f.安装vsftp

yum -y install vsftpd

g.创建镜像挂载目录,并挂载,用于后续引导程序读取软件包

mkdir -p /var/ftp/dvd
mount /yum/CentOS-7-x86_64-DVD-1908.iso       /var/ftp/dvd

h.配置PXE服务器ip地址为10.0.1.3(这里以自己环境实际为主)

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"
DEVICE="ens37"
ONBOOT="yes"
IPADDR=10.0.1.3
NETMASK=255.255.255.0

5.搭建PXE环境

a.开始配置DHCP_Server

安装dhcp

yum -y install dhcp

查看dhcpd的配置文件在什么地方

rpm -qc dhcp
/etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd6.conf
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
/var/lib/dhcpd/dhcpd.leases
/var/lib/dhcpd/dhcpd6.leases

查看模板位置

rpm -ql dhcp | grep example
/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
/usr/share/doc/dhcp-4.2.5/dhcpd6.conf.example

把dhcp模板覆盖到配置文件里面去

cat /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example > /etc/dhcp/dhcpd.conf

删除掉一些不必要的配置,开始配置dhcp

vim /etc/dhcp/dhcpd.conf

# dhcpd.conf
subnet 10.0.1.0 netmask 255.255.255.0 {     指定子网
  range 10.0.1.50 10.0.1.254;               指定地址池范围      
  option domain-name-servers 10.0.1.1;      指定dns
  option domain-name "example.com";         指定域名
  option routers 10.0.1.1;                  指定路由,一般指向网关
  option broadcast-address 10.0.1.255;      广播地址
  next-server 10.0.1.3;                     PXE服务器的ip地址,这里不要写错了
  filename"/pxelinux.0";                   告诉客户端需要获取一个什么文件,这里的/不是指根,指/tftp
  default-lease-time 600;                   地址租赁时间
  max-lease-time 7200;                      dhcp请求超时时间

由于我是在虚拟机里面搭建的环境,所以网关我设置的是物理机的ip,这里请自行斟酌

启动dhcp,并开机自启动

systemctl start dhcpd
systemctl enable dhcpd

b.安装tftp_server

yum -y install tftp-server
yum -y install xinetd

配置tftp

cd /etc/xinetd.d/
vim tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no  这里改成no即可
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

启动xinetd服务并开机自启动

systemctl start xinetd
systemctl enable xinetd

在tftp服务器上面开始准备必要的三个文件

引导程序(pxelinux.0)、vmlinuz、initrd

引导程序:

查询pxelinux.0是由哪个包安装的

yum whatprovides */pxelinux.0
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.163.com
syslinux-4.05-15.el7.x86_64 : Simple kernel loader which boots from a FAT filesystem
源    :base
匹配来源:
文件名    :/usr/share/syslinux/pxelinux.0

复制下来,安装这个包

yum -y install syslinux-4.05-15.el7.x86_64

拷贝这个包到tftp目录下

cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot

进入挂载的镜像/mnt,找到vmlinuz、initrd,并cp到tftpboot目录下面

cd /mnt/images/pxeboot
cp initrd.img vmlinuz /var/lib/tftpboot/

最好重新命名这两个文件,好区分以后要部署多个镜像

initrd_centos7.img
vmlinuz_centos7

在tftpboot目录下创建配置文件

mkdir pxelinux.cfg

进入/mnt把模板拷贝过来,并且给w权限

cd /mnt/isolinux
cp isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
cp boot.msg  /var/lib/tftpboot/ 
chmod u+W  /var/lib/tftpboot/pxelinux.cfg/default
chmod u+W  /var/lib/tftpboot/boot.msg

编辑default配置文件

cd /var/lib/tftpboot/pxelinux.cfg/
vim default

找到label行,不同的label用来引导不同的操作系统

default centos7
timeout 600
#prompt 1

display boot.msg



label centos7
  menu label ^Install CentOS 7
  kernel vmlinuz_centos7
  append initrd=initrd_centos7.img inst.ks=ftp://10.0.1.3/bnqkl.cfg    quiet

label check
  menu label Test this ^media & install CentOS 7
  menu default
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet

更改默认配置,如下

default centos7   这里修改默认引导系统
timeout 600       这里默认即可
#prompt 1         需要引导多种操作系统的时候启用,现在先注释掉或者不添加这一行


label centos7  这里一定要与最顶上的default一样,否则会报错
  menu label ^Install CentOS 7
  kernel vmlinuz_centos7
  append initrd=initrd_centos7.img inst.ks=ftp://10.0.1.3/bnqkl.cfg    quiet   这一行是重点一定不要写错,否则将无法引导起来,我这里通过ftp方式来安装

写法

在这里插入图片描述

编辑提示用户的配置文件,需要安装一下figlet包,因为是内网环境,这里就需要用到指向yum源服务器的源,并创建figlet目录,建议在/root下面创建,方便好找

 yum -y install figlet
 cd /root
 mkdir figlet
 cd figlet
 figlet BNQKL
 ____  _   _  ___  _  ___     
| __ )| \ | |/ _ \| |/ / |    
|  _ \|  \| | | | | ' /| |    
| |_) | |\  | |_| | . \| |___ 
|____/|_| \_|\__\_\_|\_\_____|

把上面figlet出来的图像复制到提示用户的配置文件里面去,并修改成如下界面

cd  /var/lib/tftpboot

vim boot.msg

^L
^Xsplash.lss

____  _   _  ___  _  ___

| __ )| \ | |/ _ \| |/ / |
|  _ \|  \| | | | | ' /| |
| |_) | |\  | |_| | . \| |___
|____/|_| \_|\__\_\_|\_\_____|
 -  Press the ^O01<ENTER>^O07 key to begin the installation process.

#-- enter centos7  install centos7     一个操作系统的话,这个地方要注释掉,否则引导界面需要手动选择

c.配置nfs-server

启动nfs-server 并编辑共享配置文件

systemctl start nfs-server
systemctl enable nfs-server

vim /etc/exports
修改成如下,把光盘共享出去
/mnt   *(rw,sync)

测试
[root@pxe_server tftpboot]# exportfs -arv
exporting *:/mnt

修改完成后,现在就可以新建一台虚拟机或者物理机测试了,看一下是否能引导起来,并进入系统安装界面,并且看看软件包界面是否异常,这里请自行尝试,我这里就不演示了

在这里插入图片描述

d.配置kickstart无人值守安装

在这里插入图片描述

应答文件/root就有,我们可以直接用安装后系统生成的应答文件,然后修改一些需要的参数生成新的应答文件

安装kickstart管理工具包,并启动起来

yum -y insatll system-config-kickstart
system-config-kickstart &

下面我以图形的方式配置应答文件

在这里插入图片描述

注意每次修改完,确认要保存的时候,请把root密码重新输一遍,否则会被系统随机生成!

在这里插入图片描述

注意要安装新的引导程序

在这里插入图片描述

建议分/boot 分区 (1G足够,建议600M) /swap 分区(4G足够) /分区(设置为剩余所有空间)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最小化安装脚本

cd /etc/yum.repos.d/
rm -rfv *

echo [aa] >>aa.repo
echo name=aa >>aa.repo
echo baseurl=ftp://10.0.1.5/yum_repo >>aa.repo
echo enabled=1 >>aa.repo
echo gpgcheck=0 >>aa.repo

yum clean all
yum makecache
yum -y update
yum -y install vim
yum -y install wget
yum -y install net-tools
yum -y install tree
yum -y install lrzsz
yum -y install bash-c*
yum -y install supervisor
yum -y install mongodb-org
yum -y install lsof

配置完成后另存为bnqkl.cfg

配置让客户端访问应答文件

yum –y install vsftpd
systemctl start vsftpd
systemctl enable vsftpd

拷贝应答文件到/var/ftp(此目录为ftp共享目录)

cp /root/bnqkl.cfg  /var/ftp

注意:每次修改完应答文件都需要覆盖掉/var/ftp下的应答文件并且重启xinetd服务

systemctl restart xinetd

6.部署安装带GUI的PXE服务器,直接克隆就可以,把ip改为10.0.1.2,脚本改一下,其它不变

cd /etc/yum.repos.d/
rm -rfv *

echo [aa] >>aa.repo
echo name=aa >>aa.repo
echo baseurl=ftp://10.0.1.5/yum_repo >>aa.repo
echo enabled=1 >>aa.repo
echo gpgcheck=0 >>aa.repo

yum clean all
yum makecache
yum -y update
yum -y install wget
yum -y install tree
yum -y install lrzsz
yum -y install supervisor
yum -y install mongodb-org
yum -y install lsof

7.如果部署较为复杂的多操作系统多网段环境,可以使用cobbler工具配合PXE使用

SecureCRT上传大于4G的文件到linux服务器

1.通过crt远程连接到服务器

2.连接上服务器后鼠标停留在服务器任意界面,如图

在这里插入图片描述

3.快捷键Alt+P键调出sftp,如图

在这里插入图片描述

4.进入需要把镜像上传到服务器的位置,我这里上传到服务器的/yum下面,如图

在这里插入图片描述

5.复制本地镜像目录路径,如图

在这里插入图片描述

6.进入本地目录,如图

sftp> lcd G:\iso
在这里插入图片描述

7.put (可以按两下tab键查看当前目录下所有文件)上传镜像文件

在这里插入图片描述

8.出现此界面就代表镜像已经在上传了

在这里插入图片描述

centos7部署samba文件服务器

1.确保有可用yum源

[root@ceshi ~]# yum repolist all
在这里插入图片描述

2.yum安装samba

yum -y install samba

3.配置samba

vi /etc/samba/smb.conf
打开后跳到最后一行,新建对外共享目录
[share] 括号里面的名字随便写,建议写英文,也支持中文,这个里面写的什么主目录就显示什么
     comment = this is share    这一行为描述,自行定义
     path = /samba/share        这一行为samba共享目录路径,可以先创建也可以改完配置文件再创建                                                    
     public = no                这一行不要让public有写权限,直接no就好
     writable = yes             这一行要给写权限,否则主目录下面的所有部门文件都不能下载和上传

4.关闭防火墙(或者匹配规则)和selinux(或者匹配上下文)

防火墙:
临时关闭
systemctl stop firewalld
永久关闭
systemctl disable firewalld
selinux:
临时关闭
setenforce 0
永久关闭
vi /etc/selinux/config
SELINUX=disabled

5.创建共享路径、user(员工姓名)、group(所属部门)、samba数据库用户以及samba用户家目录

创建共享目录
mkdir -p /samba/share    这个目录一定要与上面path路径里面的目录一致
创建samba用户家目录
mkdir /samba/user
创建user、group
groupadd it_group
useradd -g it_group -d /samba/user/zhangsan  -s /sbin/nologin zhangsan
groupadd kaifa_group
useradd -g kaifa_group -d /samba/user/lisi -s /sbin/nologin lisi

6.把员工账号关联到samba数据库并设置登录密码

pdbedit -a zhangsan
new password:
retype new password:

Unix username:        zhangsan
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-3923639829-3326368539-267407369-1008
Primary Group SID:    S-1-5-21-3923639829-3326368539-267407369-513
Full Name:            
Home Directory:       \\samba\zhangsan
HomeDir Drive:        
Logon Script:         
Profile Path:         \\samba\zhangsan\profile
Domain:               SAMBA
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          三, 06 2月 2036 23:06:39 CST
Kickoff time:         三, 06 2月 2036 23:06:39 CST
Password last set:    一, 23 12月 2019 16:21:36 CST
Password can change:  一, 23 12月 2019 16:21:36 CST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
看见以上提示就算创建成功了,李四的我这里就不演示了

7.配置权限

首先配置员工权限
员工权限这里,创建好默认是700权限,无需更改,如下所示
drwx------ 2 chenhuiqing ceshi       62 12月  3 20:37 chenhuiqing
drwx------ 2 chenxiaobin ceshi       62 12月  3 20:38 chenxiaobin
drwx------ 2 guanxintai  ceshi       62 12月  3 20:40 guanxintai
drwx------ 2 lisi        kaifa_group 62 12月 23 16:19 lisi
drwx------ 2 liulinmei   ceshi       62 12月  3 20:36 liulinmei
drwx------ 2 lixiaobing  ceshi       84 12月  5 09:34 lixiaobing
drwx------ 2 wangdongfu  ceshi       62 12月  3 20:39 wangdongfu
drwx------ 2 wangyuliang it          62 12月  3 16:11 wangyuliang
drwx------ 2 wenkan      ceshi       62 12月  3 20:36 wenkan
drwx------ 2 zhangsan    it_group    62 12月 23 16:17 zhangsan
配置共享目录权限
共享目录一般配置为770权限,也就是说只有除开root,部门之间禁止互访,如下
[root@samba samba]# cd share/
[root@samba share]# ll
总用量 0
drwxrwx--- 2 root it     6 12月  3 20:43 it团队
drwxrwx--- 5 root ceshi 53 12月  5 13:40 测试团队
drwxrwxrwx 3 root root  29 12月  3 21:51 公共资源   (此目录为什么部门都可以访问的公共目录,权限配置为chmod -R 777 公共资源/)

8.访问方式

直接在运行里面 \\ip 就能访问,回车后会提示输入账号密码,就是上面pdbedit命令创建出来那个,登录以后会有两个文件夹显示,一个是自己的私人文件夹,另外一个就是共享主目录了,能看到里面的部门以及公共资源

七:扩展pdbedit命令
-a 用户名  建立 Samba 账户
-x 用户名  删除 Samba 账户
-L 列出账户列表
-Lv 列出账户详细信息的列表
在这里插入图片描述

centos7部署Jenkins

1.部署环境

cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)

2.安装epel源并重建yum元数据(不在阐述yum配置)

yum -y install epel-release
yum clean all
yum makecache

3.安装jenkins依赖环境openJDK8

[root@jenkins ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

[root@jenkins ~]# cat > /etc/profile.d/java8.sh <<EOF 
export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))
export PATH=\$PATH:\$JAVA_HOME/bin
export CLASSPATH=.:\$JAVA_HOME/jre/lib:\$JAVA_HOME/lib:\$JAVA_HOME/lib/tools.jar
EOF




[root@jenkins ~]# alternatives --config java 

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-1.b14.el7.x86_64/jre/bin/java
*+ 2           /usr/java/jdk1.8.0_71/jre/bin/java

# select the latest one
Enter to keep the current selection[+], or type selection number: 1





[root@jenkins ~]#  vi day.java
import java.util.Calendar;

class day {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH) + 1;
        int day = cal.get(Calendar.DATE);
        int hour = cal.get(Calendar.HOUR_OF_DAY);
        int minute = cal.get(Calendar.MINUTE);
        System.out.println(year + "/" + month + "/" + day + " " + hour + ":" + minute);
    }
}



[root@jenkins ~]# javac day.java
[root@jenkins ~]# java day

4.rpm安装jenkins

[root@jenkins ~]# wget -c https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.164.2-1.1.noarch.rpm
[root@jenkins ~]# rpm -ivh jenkins-2.164.2-1.1.noarch.rpm

5.启动jenkins并开机自启动

systemctl start jenkins
systemctl enable jenkins

6.配置防火墙规则、放通jenkins默认端口8080(或者直接关闭)

firewall-cmd --list-all
firewall-cmd --zone=public --add-port=8080/tcp 
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

注意:selinux也要关掉
setenforce 0 (临时关闭)

7.浏览器访问http://172.30.90.26:8080

初始密码查看,首次登陆会弹出界面提示,按上面操作即可,下面是超级管理员初始密码路径
cat /var/lib/jenkins/secrets/initialAdminPassword

8.建议安装推荐包,不然后期自己安装起来很麻烦,安装推荐包进度较慢,进入以下界面代表jenkins安装完成

在这里插入图片描述

更改centos云服务器字体显示为中文

1.修改/etc/locale.conf配置文件

vim /etc/locale.conf
进去以后把里面内容都删除掉,新增配置文件,如下
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
在这里插入图片描述

2.重启后生效

reboot

centos各个镜像版本下载地址

很多人不清楚centos旧版本在哪里下载,百度上面很多都是被集成封装过的版本,谨慎下载,进入上面的链接后要下载什么版本就点哪个即可

http://vault.centos.org/

jenkins无法执行shell脚本问题

1.如图,jenkins在构建的时候,打开控制台可以看到执行到shell脚本那里,提示权限不足

在这里插入图片描述

2.这时候我们需要修改jenkin的配置文件和目录文件权限(不建议直接给777权限)

vim /etc/sysconfig/kenkins
进去以后找到JENKINS_USER="jenkins" 这一行,修改为jenkins用户为root用户,如下
JENKINS_USER="root"

3.修改为jenkins配置文件后,再修改jenkins目录权限

chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
systemctl restart jenkins  重新启动jenkins以后重新构建一次项目,发现可以成功执行了,如图
在这里插入图片描述

4.修改相应文件夹的所有者为jenkins

chown -R jenkins <path>  这一步自行定义,每个人环境不一样路径也不一样,前面三步已经可以执行shell脚本了

VirtualBox开启VT

话不多说,直接开干

VirtualBox中要让虚拟机开启VT稍微比较麻烦,在界面中改功能是置灰状态,无法勾选,需要通过命令行设置。

设置方法

  1. 在cmd中定位到VirtualBox根目录 : cd C:\Program Files\Oracle\VirtualBox
  2. 打印出所有的虚拟机 : VBoxManage.exe list vms
  3. 开启虚拟机的VT: VBoxManage.exe modifyvm “Windows7_x64” –nested-hw-virt on注意”Windows7_x64″是我的虚拟机名称, 你需要把这个设置为你希望修改的虚拟机名称设置完毕后,重新打开虚拟机设置,可以发现CheckBox已经是可勾选状态,并且已经勾选上了。

VirtualBox安装mac系统

需要解锁mac系统标识,Virtual Box安装目录一般不会手动指定,代码如下

以管理员运行cmd

cd C:\Program Files\Oracle\VirtualBox

VBoxManage.exe modifyvm “flutter” –cpuidset 00000001 000106e5 00100800 0098e3fd bfebfbff

VBoxManage setextradata “flutter” “VBoxInternal/Devices/efi/0/Config/DmiSystemProduct” “iMac11,3”

VBoxManage setextradata “flutter” “VBoxInternal/Devices/efi/0/Config/DmiSystemVersion” “1.0”

VBoxManage setextradata “flutter” “VBoxInternal/Devices/efi/0/Config/DmiBoardProduct” “Iloveapple”

VBoxManage setextradata “flutter” “VBoxInternal/Devices/smc/0/Config/DeviceKey” “ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc”

VBoxManage setextradata “flutter” “VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC” 1

等待命令运行完即可正常安装mac系统