天天看点

Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx

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

Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx

选择第一条安装,对时区、键盘、关掉

kdump

内存灾难恢复、选择自动分区(系统默认分区方式为

lvm

,更适合生产环境),然后对

root

用户进行密码设定即可。

Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx

虚拟机安装完成。

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
///
           
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx

然后在真机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							##必须关闭虚拟机
           
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx

3、封装

切入硬盘目录,发现我们建立的

base

虚拟机系统太大,占用资源,对其进行封装。

cd /var/lib/libvirt/images	##硬盘目录
ls
du -sh base.qcow2			##系统太大,占用资源,对其封装
           
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx

安装清理压缩的软件,然后清理磁盘文件(注意,此处不能加.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					##确定大小,一般只有几百兆
           
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx

创建快照,在后在管理器上添加快照,快照打开后,进入

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
###其他快照皆如此
           
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx

关闭快照,查看基本信息,并设定火墙策略。

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

  1. 第一步

    cofigure

    在server1中,安装nginx,并解压。
###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
           
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx
  1. 第二步 执行

    cofigure

    结束会生成

    makefile

cd objs/
ls-->nginx
du -sh nginx
           
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx
  1. 第三步

    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			##可以看到源码
           
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx

但是如果每次开启或者关闭服务都需要进入指定目录,很不方便,则关闭服务后,建立软链接以开启全局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	##瘦身成功,安全性提高
           
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx

检测语法,并检验,版本号是否被隐藏。

Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与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	##开机自启
           
Linux企业化运维--(1)Rhel7.6的封装与nginx的安装部署Linux企业化运维Linux企业化运维–Rhel7.6的封装与nginx

如果不能刷新,则过滤工作端worker,并关闭,然后重新执行。

ps ax | grep nginx
kill -9 worker的id