(第十七周作業(yè))
1敞斋、搭建DHCP服務(wù),為局域網(wǎng)內(nèi)用戶提供10.1.1.0/24網(wǎng)段的IP,且租約期默認(rèn)為48小時
1)準(zhǔn)備兩臺服務(wù)器,都位于10.1.1.0/24網(wǎng)段內(nèi):
A機:DHCP服務(wù)端,
B機:客戶端亏吝,從服務(wù)器獲得IP地址。
2)A機服務(wù)端執(zhí)行以下操作:
臨時關(guān)閉防火墻
# service iptables stop?
臨時關(guān)閉 selinux
# setenforce 0?
停止網(wǎng)絡(luò)管理服務(wù)的開機自啟動設(shè)置
# chkconfig --level 2345 NetworkManager off? ?
關(guān)閉網(wǎng)絡(luò)管理服務(wù)
# service NetworkManager stop
編輯網(wǎng)卡設(shè)置
# vi? /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
#表示該接口將通過該配置文件進行設(shè)置盏混,而不是通過網(wǎng)絡(luò)管理器進行管理
NM_CONTROLLED=no
#服務(wù)器自身使用靜態(tài)IP地址
BOOTPROTO=static?
#配置地址為
IPADDR=10.1.1.88
#網(wǎng)關(guān)配置
GATEWAY=10.1.1.2?
安裝DHCP服務(wù)
# yum install dhcp*? ?-y
配置DHCP服務(wù)
#vi /etc/dhcp/dhcpd.conf?
allow bootp;
#默認(rèn)租約時間(單位為秒蔚鸥,48小時為48*3600秒,即172800秒)
default-lease-time 172800;
#最大租約時間
max-lease-time 172800;
#syslog設(shè)置许赃,可以到/var/log/syslog文件查看DHCP分配的日志
log-facility local7;
#子網(wǎng)和子網(wǎng)掩碼
subnet 10.1.1.0 netmask 255.255.255.0 {
#客戶端的默認(rèn)網(wǎng)關(guān)
option routers 10.1.1.2;?
#客戶端的子網(wǎng)掩碼
option subnet-mask 255.255.255.0;?
#客戶端的搜索域
option domain-name "magedu.com";
#客戶端的域名服務(wù)器
option domain-name-servers 10.1.1.2;?
#可供分配的IP范圍
range dynamic-bootp 10.1.1.50 10.1.1.250;?
}
重啟 dhcp 服務(wù)
# service dhcpd restart?
3)B機客戶端執(zhí)行以下操作進行測試
編輯網(wǎng)卡配置文件
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
#不通過網(wǎng)絡(luò)管理器進行管理
NM_CONTROLLED=no
#通過dhcp服務(wù)來獲得IP
BOOTPROTO=dhcp?
重啟網(wǎng)卡
# service network restart?
查看B機的IP
# ifconfig?
如果IP在10.1.1.50?和10.1.1.250之間止喷,則測試成功。
2混聊、在上述實驗基礎(chǔ)上弹谁,實現(xiàn)DHCP中繼
DHCP中繼:當(dāng)DHCP客戶機和DHCP服務(wù)器不在同一個網(wǎng)段時,由DHCP中繼傳遞DHCP報文
在第1題實驗的基礎(chǔ)上句喜,
準(zhǔn)備一臺DHCP中繼器预愤,這里稱為C機,有兩張網(wǎng)卡咳胃,一張與10.1.1.0/24網(wǎng)段連接植康,另一線與10.1.2.0/24網(wǎng)段連接,
還需要一臺D機作為10.1.2.0/24網(wǎng)段的客戶端服務(wù)器展懈,用于驗證DHCP中繼服務(wù)销睁。
1)在A機,修改DHCP服務(wù)配置文件存崖,增加一下子網(wǎng)設(shè)置:
subnet 10.1.2.0 netmask 255.255.255.0 {
#客戶端的默認(rèn)網(wǎng)關(guān)
option routers 10.1.2.2;?
option subnet-mask 255.255.255.0;?
#客戶端的搜索域
option domain-name "magedu.com";
#客戶端的域名服務(wù)器
option domain-name-servers 10.1.1.2;?
#可供分配的IP范圍
range dynamic-bootp 10.1.2.50 10.1.2.250;?
}
重啟DHCP服務(wù)
#service dhcpd restart?
2)在C機(DHCP中繼服務(wù)器)執(zhí)行的操作
安裝DHCP服務(wù)
# yum install dhcp*? ?-y
安裝dhcp軟件包榄攀,安裝完之后,就已經(jīng)包含了dhcp中繼相關(guān)的程序和腳本等文件金句。配置dhcp中繼服務(wù)器時,只需修改配置文件/etc/sysconfig/dhcrelay服務(wù)即可吕嘀,作為路由器使用時违寞,還需要開啟服務(wù)器的路由轉(zhuǎn)發(fā)功能贞瞒。
#vi??/etc/sysconfig/dhcrelay
#指定要監(jiān)聽網(wǎng)卡,不定義就是監(jiān)聽所有
INTERFACES="eth0 eth1"
#指定DHCP服務(wù)器的地址
DHCPSERVERS="10.1.1.88"
配置網(wǎng)卡配置文件
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.1.1.2
NETMASK=255.255.255.0
GATEWAY=10.1.1.2
#不通過網(wǎng)絡(luò)管理器進行管理
NM_CONTROLLED=no
#?vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.1.2.1
NETMASK=255.255.255.0
GATEWAY=10.1.2.1
#不通過網(wǎng)絡(luò)管理器進行管理
NM_CONTROLLED=no
開啟服務(wù)器的路由轉(zhuǎn)發(fā)功能
# echo 1 > /proc/sys/net/ipv4/ip_forward
重啟網(wǎng)卡
#service network restart
重啟DHCP中繼服務(wù)
#service? dhcrelay restart???
3)D機客戶端執(zhí)行以下操作進行測試
(D機執(zhí)行與B機一樣的操作,以驗證IP是否能夠獲取到)
3趁曼、借助Ansible?Playbook自動化搭建LNMP環(huán)境(可借助yum)
需要兩臺虛擬機
A機:Ansible服務(wù)器(192.168.56.70)
B機:安裝LNMP環(huán)境(192.168.56.71)
1)A機安裝Ansible服務(wù)
#yum install epel-release? -y
#yum install ansible -y?
2)A機執(zhí)行以下操作:
創(chuàng)建資產(chǎn)文件
# vi? /etc/ansible/hosts
[LNMPserver]
192.168.56.71?
創(chuàng)建playbook文件
# vi? ?/root/main.yml
---
- hosts: LNMPserver
#遠(yuǎn)程主機的用戶
? remote_user: root
? tasks:
#安裝Nginx(首先要下載 nginx-1.14.2.tar.gz?放到/root目錄下)
? - name:? copy Nginx tar to remote hosts
? ? copy: src=/root/nginx-1.14.2.tar.gz ? dest=/tmp/nginx-1.14.2.tar.gz ?
? - name:? tar x Nginx tar?
? ?? shell: cd /tmp;tar -xf? nginx-1.14.2.tar.gz
????????##安裝依賴包
?? - name: install dependcy pakger ?
? ? yum: name={{ item }} state=latest? ? ?
? ? with_items: ? ?
? ? ? - openssl-devel
? ? ? - pcre-devel
? ? ? - gcc
? ? ? ? ##創(chuàng)建nginx用戶的腳本后面給出
? - name:copy useradd nginx shell
? ? copy:? src=/root/create_users.sh? dest=/tmp/create_users.sh
? -name:? create user nginx
? ?? shell: /bin/bash /tmp/create_users.sh
? ? ? ? ##編譯安裝nginx
? - name: install Nginx
? ? shell: cd /tmp/nginx-1.14.2;./configure--user=nginx --group=nginx --prefix=/usr/local/nginx--with-http_stub_status_module --with-http_ssl_module --with-pcre;make&& make install
? - name: startnginx service? ?? ? ?
? ? shell: /usr/loal/nginx/sbin/nginx?
#安裝mysql
??- name: Install MariaDB?
? ? yum:?name={{ item }} state=present
? ??with_items:
? ? ? -?mariadb-server
? ? ? -?mariadb
? - name:?Start MariaDB Service
? ??service: name=mariadb state=started enabled=yes
#安裝php-nginx
? - name: install php-nginx
? ?? yum: name={{ item }} state=present
? ? ? -? php
? ? ? -??php-gd
? ? ? -??php-mysql
? ? ? -? gd
? ? ? -??php-fpm
?? - name: start php-fpm service
? ?? service: name=php-fpm state=started enabled=yes
編寫創(chuàng)建nginx用戶的腳本
# vi? /root/create_users.sh
#!/bin/bash
id nginx? >/dev/null? 2>&1
if [ $? -ne 0 ];then
? ?useradd nginx?
fi
使用ansible-playbook進行檢測:
#cd? /root
# ansible-playbook?main.yml? --syntax-check??
檢測無誤后執(zhí)行
# ansible-playbook?main.yml
4军浆、采用Ansible?Role方式自動化搭建LNMP
在第3題的基礎(chǔ)上
在A機執(zhí)行以下操作
# mkdir? /root/LNMP
定義主文件
# vi? /root/LNMP/lnmp.yaml
---
- name: "Install Nginx, Mysql and php-fpm"
? hosts: lnmpServer
? remote_user: root
? roles:
? ? - nginx
? ? - mysql
? ? - php-fpm
設(shè)置資產(chǎn)文件
# vi /root/LNMP/hosts
[lnmpServer]
192.168.56.32
創(chuàng)建roles目錄及各應(yīng)用子目錄
# mkdir? -p? /root/LNMP/roles/{nginx,mysql,php-fpm}
(1)關(guān)于nginx子目錄下創(chuàng)建相關(guān)的子目錄
#mkdir? -p?/root/LNMP/roles/nginx/{handlers,tasks,templates,files}
#vi??/root/LNMP/roles/nginx/handlers/main.yml
---
- name: restart nginx
? shell: /usr/loal/nginx/sbin/nginx? -s reload
# vi???/root/LNMP/roles/nginx/tasks/main.yml
---
- name:? copy Nginx tar to remote hosts
? ? copy: src=nginx-1.14.2.tar.gz?? dest=/tmp/nginx-1.14.2.tar.gz??
? - name:? tar x Nginx tar?
? ? ?shell: cd /tmp;tar -xf?nginx-1.14.2.tar.gz?
##安裝依賴包?
? ?- name: install dependcy pakger?
? ? yum: name={{ item }} state=latest?
? ? with_items:?
? ? ? - openssl-devel
? ? ? - pcre-devel
? ? ? - gcc?
? ? ? ? ##拷貝創(chuàng)建nginx用戶的腳本
? ? - name:copy useradd nginx shell
? ? ? copy:??src=create_users.sh? dest=/tmp/create_users.sh?
? ? - name:??create user nginx?
? ? ?shell: /bin/bash /tmp/create_users.sh?
? ? ? ? ##編譯安裝nginx
? - name: install Nginx
? ? shell: cd /tmp/nginx-1.14.2;./configure--user=nginx --group=nginx --prefix=/usr/local/nginx--with-http_stub_status_module --with-http_ssl_module --with-pcre;make&& make install?
? - name: startnginx service?
? ? shell: /usr/loal/nginx/sbin/nginx?
把nginx-1.14.2.tar.gz放入/root/LNMP/roles/nginx/files中
# cp? /root/nginx-1.14.2.tar.gz??/root/LNMP/roles/nginx/files
把create_users.sh放入/root/LNMP/roles/nginx/templates中
# cp? /root/create_users.sh??/root/LNMP/roles/nginx/templates
(2)關(guān)于mysql子目錄下創(chuàng)建相關(guān)的子目錄
#mkdir? -p?/root/LNMP/roles/mysql/{handlers,tasks,templates}
#vi??/root/LNMP/roles/mysql/handlers/main.yml
---
- name: restart mariadb service
? service: name=mariadb state=restarted
# vi???/root/LNMP/roles/mysql/tasks/main.yml
---
? - name: Install MariaDB?
? ? yum:?name={{ item }} state=present
? ? with_items:
? ? ? -?mariadb-server
? ? ? -?mariadb
? - name:?Start MariaDB Service
? ? service: name=mariadb state=started enabled=yes
(3)關(guān)于php-fpm子目錄下創(chuàng)建相關(guān)的子目錄
#mkdir? -p?/root/LNMP/roles/php-fpm/{handlers,tasks,templates}
#vi??/root/LNMP/roles/php-fpm/handlers/main.yml
---
- name: restart php-fpm service
? service: name=php-fpm state=restarted
# vi???/root/LNMP/roles/php-fpm/tasks/main.yml
---
- name: install php-nginx?
? ? ?yum: name={{ item }} state=present?
? ? ? -??php?
? ? ? -??php-gd
? ? ? -??php-mysql
? ? ? -? gd
? ? ? -??php-fpm
? ?- name: start php-fpm service?
? ? ?service: name=php-fpm state=started enabled=yes
(4)檢測并執(zhí)行部署
#cd? /root/LNMP
# ansible-playbook?lnmp.yaml --syntax-check??
檢測無誤后執(zhí)行
# ansible-playbook?lnmp.yaml?