Linux企业化运维
实验所用系统为Redhat-rhel7.6。
目录
- Linux企业化运维
- Linux企业化运维--Rhel7.6的封装与nginx
-
- 一、虚拟机的封装
-
- 1、建立
- 2、配置
- 3、封装
- 二、nginx源码安装
- 三、nginx开机自启
Linux企业化运维–Rhel7.6的封装与nginx
一、虚拟机的封装
1、建立
在真机执行
virt-manager
命令,建立虚拟机。点击左上角的小电视
create a new virtual machine
,选择
Local install media
,
iso
选择
rhel7.6
,
Memory
需要
2048
,
CPU
2个,
iamge
20G就好,对其进行命名,就可以点击
finish
。
选择第一条安装,对时区、键盘、关掉
kdump
内存灾难恢复、选择自动分区(系统默认分区方式为
lvm
,更适合生产环境),然后对
root
用户进行密码设定即可。
虚拟机安装完成。
2、配置
对建立好的虚拟机进行
主机名
,
IP
,
网关
,DNS设定,重启网络,并
停掉网络管理器
,因其可能会自动变动网络,作
地址解析
使ssh连接更迅速。
hostnamectl set-hostname server1 ##主机名
vi /etc/sysconfig/network-scripts/ifcfg-eth0 ##IP,网关,DNS设定
///
TYPE=Ethernet
BOOTPROTO=static
IPADDR=172.25.24.1
PREFIX=24
GATEWAY=172.25.24.250
DNS1=114.114.114.114
NAME=eth0
DEVICE=eth0
ONBOOT=yes
///
systemctl restart network ##重启网络
systemctl disable --now NetworkManager ##停掉网络管理器,可能会自动变动网络
vi /etc/hosts ##地址解析,使ssh连接更迅速
///
172.25.24.250 foundation24.ilt.example.com ##真机IP
172.25.24.1 server1 ##快照1IP
///
然后在真机ssh连上该虚拟机,为了方便之后的多虚拟机实验,重新进行
地址解析
,添加IP,并且
配置网络软件仓库
,
安装常用软件
,设定
selinux
状态为
disabled
,
关闭火墙
,最后
关闭虚拟机
。
###真机
ssh -l root 172.25.24.1
vi /etc/hosts ##地址解析,使ssh连接更迅速
///
172.25.24.250 foundation24.ilt.example.com
172.25.24.1 server1
172.25.24.2 server2
172.25.24.3 server3
172.25.24.4 server4
172.25.24.5 server5
172.25.24.6 server6
172.25.24.7 server7
172.25.24.8 server8
172.25.24.9 server9
172.25.24.10 server10
///
cd /etc/yum.repos.d
vi dvd.repo ##软件仓库
///
[dvd]
name=dvd
baseurl=http://172.25.24.250/rhel7.6
gpgcheck=0
///
yum repolist ##列出
yum install -y vim lftp net-tools(常用网络工具) bash-*(补齐命令)
vim /etc/sysconfig/selinux ##设定selinux状态
///
disabled
///
systemctl disable --now firewalld ##关闭火墙
poweroff ##必须关闭虚拟机
3、封装
切入硬盘目录,发现我们建立的
base
虚拟机系统太大,占用资源,对其进行封装。
cd /var/lib/libvirt/images ##硬盘目录
ls
du -sh base.qcow2 ##系统太大,占用资源,对其封装
安装清理压缩的软件,然后清理磁盘文件(注意,此处不能加.qcow2后缀,只写域名),压缩原虚拟机为
base-new.qcow2
,然后检验压缩后的大小,确实节省资源。
yum install libguests-tools.noarch libguestfs-tools-c.x86_64 -y ##清理压缩的软件
virt-sysprep -d base ##清理磁盘文件(注意,此处不能加.qcow2后缀,只写域名)
which virt-sparsify ##压缩原虚拟机的命令,查找此命令
rpm -qf /usr/bin/virt-sparsify ##没有则安装
virt-sparsify --compress base.qcow2 base-new.qcow2 ##压缩原虚拟机为base-new.qcow2
du -sh base-new.qcow2 ##确定大小,一般只有几百兆
创建快照,在后在管理器上添加快照,快照打开后,进入
root
用户,设定其主机名,IP,然后重启网络,检查IP,在真机上试着ssh连接。并将其他两个虚拟机快照按此过程进行设定。
qemu-img create -f qcow2 -b base-new.qcow2 server1 ##创建快照
qemu-img create -f qcow2 -b base-new.qcow2 server2
qemu-img create -f qcow2 -b base-new.qcow2 server3
virt-manager ##在管理器上添加快照
create a new virtual machine-->import existing disk image-->/var/lib/libvirt/images/server1-->Red Hat Enterprise Linux 7.6-->2048-->server1--finish
###server1
root ##登陆root用户
hostnamectl set-hostname server1
vi /etc/sysconfig/network-scripts/ifcfg-eth0
///172.25.24.1
systemctl restart network ##注意重启网络
ip addr ##检查ip
在真机试连接ssh
###其他快照皆如此
关闭快照,查看基本信息,并设定火墙策略。
qemu-img info server4 ##查看基本信息
iptables -t nat -I POSTROUTING -s 172.25.24.0/24 -j MASQUERADE ##火墙策略(本机网段)
封装完成。
[注意] 最开始的虚拟机base的主机名设为server1,但其作为之后的快照的母盘是不可轻易写与执行的,因此需要将其缓存清理掉,保持最干净的状态,然后对其进行虚拟机快照,我们的实验都将在快照上执行,读的是母盘虚拟机base,写的是快照server*。因此第一个快照完全复制母盘,主机名为server1,IP为172.25.24.1,与母盘相同。
二、nginx源码安装
三部曲–>
configure
–>
makefile
make install
- 第一步
在server1中,安装nginx,并解压。cofigure
###server1
lftp 172.25.254.250 ##此处可以在网上寻找该开源软件
> ls
> cd pub/docs/lamp
> get nginx-1.20.1.tar.gz
> exit
ls
tar zxf nginx-1.20.1.tar.gz ##解压
源码编译,但在编译过程中会提醒缺少依赖,安装依赖后重新编译。
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio ##源码编译;设定下载目录同时安装服务,但是失败,需要下载依赖
yum install -y gcc
yum install -y pcre-devel
yum install -y openssl-devel
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio ##重新configure
- 第二步 执行
结束会生成cofigure
makefile
cd objs/
ls-->nginx
du -sh nginx
- 第三步
make install
cd ..(nginx-1.20.) ##切入该目录
make install
cd /usr/local
ls-->nginx
cd nginx/
ls
cd sbin
ls
./nginx ##开启服务
netstat -antlp ##查看端口,80端口
curl localhost ##可以看到源码
但是如果每次开启或者关闭服务都需要进入指定目录,很不方便,则关闭服务后,建立软链接以开启全局nginx。
cd nginx-1.20.1/
cd /usr/local/nginx/sbin/ ##开启nginx服务需要进入该目录,不方便
./nginx -s stop ##关闭服务
netstat -antlp ##没有80端口
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ ##建立软链接方便开启全局nginx
然后清空缓存,编辑配置文件,缩小nginx大小,删除版本号,减少被攻击的机会,提高安全性。
make clean ##清除缓存
cd auto
cd cc
vim gcc ##瘦身nginx,减少被攻击机会
///
# debug
#CFLAGS="$CFLAGS -g"
///
cd nginx-1.20.1/
vim src/core/nginx.h ##删除隐藏版本号以及“/”,提高安全性
///
#define NGINX_VER "nginx"
///##原本是"nginx/" NGINX_VERSION
重新进行源码编译
configure
,然后执行
make
(注意不要执行
make install
),可以查看到nginx被缩小。
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio
make
cd objs/
ls-->nginx
du -h nginx ##瘦身成功,安全性提高
检测语法,并检验,版本号是否被隐藏。
进一步对nginx进行配置,新建nginx用户,通过该用户进行配置,然后重启服务。
cd /usr/local/nginx/conf
useradd -d /usr/local/nginx -M -s /sbin/nologin nginx
vim nginx.conf
///
user nginx;
worker_processes auto;
events {
worker_connections 65535;
}
///
cd /etc/pam.d
vim /etc/security/limits.conf
///
ngnix - nofile 65536 ##最后一行加入
///
nginx -s reload
三、nginx开机自启
关闭nginx服务,编辑nginx服务文件,然后刷新服务列表,开启服务。
cd /usr/lib/systemd/system/
lftp 172.25.254.250
> ls
> cd pub/docs/lamp
> get nginx.service
> exit
vim nginx.service
///
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
///
systemctl daemon-reload ##刷新服务列表
systemctl enable --now nginx.service ##开机自启
如果不能刷新,则过滤工作端worker,并关闭,然后重新执行。
ps ax | grep nginx
kill -9 worker的id