Nginx DHCP TFTP Kickstart搭建自动安装系统

之前使用Cobbler搭建自动安装系统,最近Cobbler网站http://www.cobblerd.org/无法访问,执行命令cobbler get-loaders下载获取PXE启动需要的文件时报404,即使下载成功,所有文件都为0字节,导致服务器安装系统自动获取到IP地址后卡住。不得已自己想办法解决,重新用Nginx DHCP TFTP Kickstart搭建了一套自动安装系统。Nginx安装和配置都挺简单,代替了Cobbler中使用的Apache。

虚拟环境

网段:192.168.200.0

掩码:255.255.255.0

网关:192.168.200.2

自动安装系统地址:192.168.200.10

DHCP分配地址范围:192.168.200.11 - 192.168.200.254

一、安装配置Nginx

  • 下载编译安装Nginx
cd /App/src
wget 
tar zxf nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure ./configure --prefix=$AppDir --with-http_stub_status_module --without-http_access_module --without-http_auth_basic_module --without-http_browser_module --without-http_empty_gif_module --without-http_fastcgi_module --without-http_geo_module --without-http_limit_conn_module --without-http_limit_req_module --without-http_map_module --without-http_memcached_module --without-http_proxy_module --without-http_referer_module --without-http_rewrite_module --without-http_scgi_module --without-http_split_clients_module --without-http_ssi_module --without-http_upstream_hash_module --without-http_upstream_ip_hash_module --without-http_upstream_keepalive_module --without-http_upstream_least_conn_module --without-http_userid_module --without-http_uwsgi_module --without-mail_imap_module --without-mail_pop3_module --without-mail_smtp_module --without-pcre --without-poll_module --without-select_module

make && make install
  • 修改Nginx配置文件/App/nginx/conf/nginx.conf
user  nginx nginx;
worker_processes  auto;

error_log  logs/error.log error;

pid        logs/nginx.pid;
worker_rlimit_nofile    65536;

events
{
    use epoll;
    accept_mutex off;
    worker_connections  65536;
}

http
{
    include       mime.types;
    default_type  text/html;

    charset	UTF-8;
    server_names_hash_bucket_size	128;
    client_header_buffer_size		4k;
    large_client_header_buffers	 4	32k;
    client_max_body_size            8m;

    open_file_cache max=65536  inactive=60s;
    open_file_cache_valid      80s;
    open_file_cache_min_uses   1;

    log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                      ‘$status $body_bytes_sent "$http_referer" ‘
                      ‘"$http_user_agent" "$http_x_forwarded_for"‘;

    access_log  logs/access.log  main;

    sendfile    on;
    server_tokens off;

    keepalive_timeout  60;

    gzip  on;
    gzip_min_length	1k;
    gzip_buffers  4	64k;
    gzip_http_version	1.1;
    gzip_comp_level	2;
    gzip_types text/plain text/css application/json application/javascript application/xml;

    server
    {
        listen       80;
        server_name  localhost;
        index        index.html;
        root         /App/web;
        autoindex    on;
    }
}
  • 新建Nginx运行账号和Web目录
useradd -s /bin/false -M nginx
mkdir -p /App/web
  • 下载CentOS镜像iso文件并导入Web目录
wget 
mount -o loop CentOS-6.6-x86_64-bin-DVD1.iso /mnt
rsync -avP /mnt/ /App/web/CentOS-6.6-x86_64
  • 启动Nginx
/App/nginx/sbin/nginx

二、安装配置DHCP

  • Yum安装dhcp服务端
yum -y install dhcp
  • 修改配置dhcp文件/etc/dhcp/dhcpd.conf
allow booting;
allow bootp;

subnet 192.168.200.0 netmask 255.255.255.0 {
     option routers             192.168.200.2;
     option domain-name-servers 223.5.5.5,223.6.6.6;
     option subnet-mask         255.255.255.0;
     range dynamic-bootp        192.168.200.11 192.168.200.254;
     filename                   "/pxelinux.0";
     default-lease-time         21600;
     max-lease-time             43200;
     next-server                192.168.200.10;
}
  • 启动dhcp服务
/etc/init.d/dhcpd start

三、安装配置TFTP

  • Yum安装tftp服务端
yum -y install tftp-server
  • 修改tftp配置并启动xinetd服务
sed -i ‘/disable/s/yes/no/‘ /etc/xinetd.d/tftp
/etc/init.d/xinetd start
  • 拷贝相关文件至tftp根目录
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
/App/web/CentOS-6.6-x86_64/isolinux/
cp vesamenu.c32 boot.msg splash.jpg vmlinuz initrd.img  memtest /var/lib/tftpboot/
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
  • 修改启动菜单/var/lib/tftpboot/pxelinux.cfg/default,特别注意menu default这个配置决定了默认启动哪个选项,如果是【label linux】下,服务器一旦重启将删除所有分区并格式化,非常危险,一定要修改此项。
default vesamenu.c32
prompt 0
timeout 60

display boot.msg

menu background splash.jpg
menu title Welcome to CentOS 6.6!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000

label linux
  menu label ^Install or upgrade an existing system
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.200.10/CentOS-6.6-x86_64/ks.cfg
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img xdriver=vesa nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
  menu label Boot from ^local drive
  menu default
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append -

四、添加Kickstart配置

  • Web目录中添加kickstart配置文件/App/web/CentOS-6.6-x86_64/ks.cfg
install
keyboard us
lang zh_CN
url --url=http://192.168.200.10/CentOS-6.6-x86_64/
network --onboot yes --device eth0 --bootproto dhcp --noipv6
rootpw  --iscrypted $6$y0UTGMGnCEgUJmUB$IPcaQ8ipx24V8lAq.XepGoilvjXM9kFs5YrivQQoejYmLOmeVXSeM6IvzxtdsUJ0CFuTMzANEmlj5FOluuwy40
auth --useshadow --passalgo=sha512
reboot
firewall --disabled
firstboot --disable
selinux --disabled
logging --level=info
timezone  Asia/Shanghai
bootloader --location=mbr
zerombr yes
clearpart --all --initlabel
part /boot --fstype ext4 --size=200
part swap --size=2048
part / --fstype ext4 --size=200 --grow

%packages
@chinese-support
@core
@server-policy
@workstation-policy
%end

%post
ServiceList=`chkconfig --list | grep ‘0‘ | awk ‘{print $1}‘ | grep -Ev ‘sshd|network|crond|syslog‘`
for Service in $ServiceList
do
/etc/init.d/$Service stop
chkconfig --level 0123456 $Service off
done

cat >> /etc/sysctl.conf << EOF
vm.swappiness = 0
net.core.rmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_default = 262144
net.core.wmem_max = 16777216
net.core.somaxconn = 262144
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_max_tw_buckets = 10000
net.ipv4.ip_local_port_range = 1024 65500
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_mem = 786432 1048576 1572864
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
fs.inotify.max_user_watches = 1048576
EOF
sysctl -p

cat >> /etc/security/limits.conf << EOF
* - nofile 1048576
* - nproc  65536
* - stack  1024
EOF

cat >> /etc/profile << EOF
ulimit -n 1048576
ulimit -u 65536
ulimit -s 1024

alias grep=‘grep --color=auto‘
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
EOF

sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/‘ /etc/selinux/config
setenforce 0

sed -i ‘s/.*UseDNS yes/UseDNS no/‘ /etc/ssh/sshd_config
sed -i ‘s/.*GSSAPIAuthentication yes/GSSAPIAuthentication no/‘ /etc/ssh/sshd_config
/etc/init.d/sshd restart

cat >> $HOME/.bash_profile << EOF
export PATH=/App/script:\$PATH
EOF

mkdir -p /App/script /App/src

mount --bind /dev/shm /tmp
echo "/bin/mount --bind /dev/shm /tmp" >> /etc/rc.local

五、检查相关服务监听端口

  • http:80、dhcp:67、tftp:69
netstat -tunlp | grep -E ‘(0.0.0.0:80|0.0.0.0:67|0.0.0.0:69)‘

如下图说明各服务已监听

本文出自 “松松” 博客,请务必保留此出处http://dongsong.blog.51cto.com/916653/1678460

时间: 2024-11-04 19:48:56

Nginx DHCP TFTP Kickstart搭建自动安装系统的相关文章

PXE+Kickstart无人值守自动安装系统

安装系统的方式 1.光盘安装2.U盘安装3.网络安装.......都不够方便快捷. Redhat系主要有两种Kickstart和Cobbler. Kickstart是一种无人值守的安装方式.它的工作原理是在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg的文件.如果在自动安装过程中出现要填写参数的情况,安装程序首先会去查找ks.cfg文件,如果找到合适的参数,就采用所找到的参数:如果没有找到合适的参数,便会弹出对话框让安装者手工填写.所以,如果ks.cfg文件涵盖了安装过程中所有

使用PXE+DHCP+TFTP+kickstart搭建无人执守系统安装服务器

原理和概念:  1. 什么是PXE  严格来说,PXE 并不是一种安装方式,而是一种引导的方式.进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client.PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动. 协议分为 client 和 server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行,由 PXE cli

kickstart+centos6.5+DHCP+TFTP+HTTP 实现自动部署系统

PXE工作流程,请参考下面这幅图 一.需要安装的服务(1) httpd或者VSFTP也可,用来发布系统镜像(默认安装不需要配置).Yum  install httpdservice httpd startchkconfig --level 35 httpd on 网站默认根目录为/var/www/html(2) tftp 用来加载pxe,syslinux一个很小的linux系统yum install tftp-server修改下配置/etc/xinetd.d/tftp将disable =no 默

kvm使用kickstart文件自动安装系统

假定kvm已经准备好 1.创建磁盘 qemu-img create -f qcow2 /kvm/os/vm-01.qcow2 16G 2.上传或下载安装镜像 mkdir -p /kvm/iso cd /kvm/iso 上传事先下载好的镜像文件到/kvm/iso/目录下,或在线下载 wget -O /kvm/iso/CentOS-7-x86_64-Minimal-1804.iso https://mirrors.aliyun.com/centos/7.5.1804/isos/x86_64/Cent

linux网络安装(PXE + DHCP+TFTP+ Kickstart+ FTP)

需要使用到的服务:PXE + DHCP+TFTP+ Kickstart+ FTP 运行原理如下图: 原理和概念:  1.前言        首先,简单谈谈为什么要采用无人值守网络安装linux操作系统.一方面是运维管理的需要,因各种需要,安装操作系统在实验室内时有发生,有时候更出现批量安装某一型号操作系统的情形,这时候如果用光盘挨个安装将变得异常繁琐,并且需要人工值守.此外,因操作系统种类较多(主要是针对linux),内部人员使用频繁,也会带来管理上的问题.另一方面是当前MPX项目开发的需要,为

搭建PXE服务器,实现无人值守自动安装系统

实验:搭建PXE服务器,实现无人值守自动安装系统 在PXE服务器和新安装的服务器上分别安装http实现均衡负载 建立主从DNS服务器 第一步,先配置DHCP,目的是给需要安装系统的主机分配ip地址 服务器IP地址设为192.168.100.11 [[email protected] ~]# ifconfig eth0 | grep "inet addr" inet addr:192.168.100.11  Bcast:192.168.100.255  Mask:255.255.255.

CentOS7 无人值守服务环境搭建(PXE + DHCP+TFTP+ Kickstart+ FTP)

一,搭建无人值守服务器安装软件(PXE + DHCP+TFTP+ Kickstart+ FTP)IP:192.168.2.10 系统版本:CentOS Linux release 7.4.1708 (Core)  二,配置本地yum源,安装所需软件: [[email protected] yum.repos.d]# mount /dev/cdrom /mnt/mount: /dev/sr0 写保护,将以只读方式挂载[[email protected] yum.repos.d]# vim serv

CentOS 6.9 CentOS 7.4 自动安装系统 kickstart

通过ks文件 实现 CentOS 6 自动安装系统 环境: VMware 14.0 Pro版 光盘镜像: CentOS-6.9-x86_64-minimal.iso ks文件生成器: kickstart 偶然接触一个kickstart, 通过马哥的网络直播上学到的自动安装系统, 先看一下原理: CentOS在VMware安装流程: 新建虚拟机 --> 挂载光盘镜像 --> 开始安装 --> 配置(包括地区, 语言, 时区, 键盘类型, root密码等等) --> 完成安装 --&g

西部开源学习笔记BOOK2《自动安装系统》

############################# #####  unit1自动安装系统 ##### ############################# ################################### #### Network Install(HTTP,FTP,NFS) #### ################################### #######1.kickstart脚本###### kickstart脚本是自动应答系统在安装过程中一切