本文共 17695 字,大约阅读时间需要 58 分钟。
测试说明:本测试重点考察在linux环境下搭建LAMP虚拟主机环境配置和调试排错的能力。请按任务要求在虚拟机上完成操作任务,并在实验报告上记录主要操作步骤和配置文件中编辑的内容。测试环境为虚拟机centos6.6,测试时间为100分钟。
所需软件包可以从ftp://172.18.74.252
下载,yum源为ftp://172.18.74.252/centos6.6
注意:为方便测试关闭防火墙(#services iptables stop
),关闭SElonux(# setenforce 0
)
任务1:配置虚拟机网络地址,使之与主机互相ping通。 (20分)
要求:设置虚拟机网卡为NAT模式,启动登录虚拟机,配置其网卡地址为静态地址,与虚拟机vmnet8在同一网段,最后三位数为“学号后三位mod254”,虚拟机主机名为姓名全拼。
检查点:虚拟机与主机能够互相ping通,虚拟机能够访问互联网。
提示:编辑/etc/sysconfig/network-scripts/ifcfg-eth*
文件,/etc/sysconfig/network
文件,重启network
服务;或者直接使用ifconfig
命令修改IP地址。
任务2:安装bind软件包,使之能够提供域名解析服务。 (20分)
要求:使用yum方式安装bind软件包,设立“姓名全拼.com”和“学号.com”两个正向区域,并分别设置www主机A记录地址为虚拟机地址。
检查点:主机ping“www.[姓名全拼].com
”和“www.[学号].com
”可以与虚拟主机通信。
提示:编辑/etc/named.conf
文件和/var/named/
区域数据文件,使用named-checkconf
和named-checkzone
进行检查,改变区域数据文件所属组,重启named
服务或rndc reload
。注意检查主机dns服务器配置为虚拟机地址。
任务3:安装apache软件,配置基于名字的虚拟主机。 (20分)
要求:使用源码方式安装apache,配置两个基于名字的虚拟主机,“www.[姓名全拼].com
”和“www.[学号].com
”,虚拟主机目录在/var/wwwroot
下,目录名为域名。
检查点:从主机访问“www.[姓名全拼].com
”和“www.[学号].com
”站点的默认主页可以分别看到“this’s 姓名 site”和“this’s 学号 site”。
提示:编辑/usr/local/apache/conf/httpd.conf
文件配置虚拟主机,注意配置虚拟主机目录的访问权限;在/var/wwwroot
建立虚拟主机目录,编辑index.html文件。
任务4:安装mysql,创建数据库和数据表并输入数据。 (10分)
要求:使用yum方式安装mysql-server
,改变root
用户登录密码为123456
,创建数据库project
。
/* 创建表 */create table news ( id int unsigned auto_increment primary key, title varchar(60) not null, content text not null, addtime timestamp default current_timestamp not null );/*插入测试数据*/insert into news (title, content) values('新闻标题1', '新闻内容1'), ('新闻标题2','新闻内容2');
检查点:select * from news;
显示全部记录,注意mysql数据库的编码格式。
提示:改密码 #mysqladmin –u root –p password
新密码字符
任务5:安装PHP环境,编写运行php脚本。 (10分)
要求:使用yum方式安装PHP,编辑index.php文件放到“学号”虚拟主机,使之能够连接mysql数据库,读取显示数据表的内容。
检查点:在主机浏览器访问http://www.[学号].com/index.php
,显示数据表news的内容。
提示:拷贝libphp 5.so
,安装php_mysql
软件包,编辑httpd.conf
,注意要重启apache
任务6:安装vsftp软件包,配置虚拟主机的ftp环境。 (10分)
要求:使用yum方式安装vsftpd。建立用户“姓名全拼”和“学号”,设定用户主目录为/var/wwwroot/[姓名全拼].com
和/var/wwwroot/[学号].com
,密码都为123
。
检查点:从主机可以访问ftp站点,并上传网站内容。
任务7:使用ab性能测试软件,优化虚拟主机性能。 (10分)
要求:使用apache自带的ab软件测试虚拟主机性能,并记录最优结果。
提示:/usr/local/apache/bin/ab –c [并发数] –n [访问次数] http://www.[学号].com/index.php
Linux shell 脚本如下:
#!/bin/bash#--------------------------------------------# 这是一个注释# author: tong707# site: https://blog.51cto.com/tong707/# slogan: 学的不仅是技术,更是梦想!#--------------------------------------------## You can enter your information following command:# ./install.sh -n [name] -s [student number]## You can also configure your information from# here ( your_name, your_stu_number ),# then, enter the following command:# # ./install.sh -y## your nameyour_name='zhangsan'# your student numberyour_stu_number='201522450123'# use local ftp yum sourceuselocal="true"# enable both local and internet yum sourcesenabledTogether="false"# modify eth0 to ethxmodifyeth0="true"# ethx's namecd /root/ifconfig >> ifconfig.txtif_str=$(cat ifconfig.txt | sed -n '1p')ethxname=`expr substr "${if_str}" 1 4`rm -rf /root/ifconfig.txtif [ $ethxname == "eth0" ]then modifyeth0="false"fi# define function: How to use this script?showHelp(){ echo -e "\033[32m How to Use this Shell Script?\033[0m" echo -e "\033[32m # $0 -n [name] -s [student number]\033[0m" echo -e "" exit}# receive parametersif [ $# == 4 ]then if [ $1 == "-n" -a $3 == "-s" ] then # echo "OK" your_name=$2 your_stu_number=$4 elif [ $1 == "-s" -a $3 == "-n" ] then # echo "OK" your_name=$4 your_stu_number=$2 else # echo "Help" showHelp fielif [ $# == 1 ]then if [ $1 == "-y" ] then # pass echo -e "" else # echo "Help" showHelp fielse # echo "Help" showHelpfi# show user infoecho -e ""datetime1=`date +%s`echo -e ""echo -e " [ \033[32mINFO\033[0m ] your name is: \033[32m${your_name}\033[0m "echo -e " [ \033[32mINFO\033[0m ] your student number is: \033[32m${your_stu_number}\033[0m "echo -e ""sleep 2s# student number after 3your_stu_num=`expr substr ${your_stu_number} 10 3`# the 4th part of the IP addressyour_ip_4=`expr ${your_stu_num} % 254`# the 3rd part of the IP addresscd /root/ifconfig >> ifconfig.txtif_str=$(cat ifconfig.txt | sed -n '2p')your_ip_3=`echo ${if_str} | cut -d '.' -f 3`rm -rf /root/ifconfig.txt# note#vim /etc/udev/rules.d/70-persistent-net.rules# turn off the firewallecho -e "\033[32m [ INFO ] Turning Off the Firewall ... \033[0m"service iptables stopsetenforce 0#echo -e "\033[32m [ INFO ] [ Firewall Closed Successfully ] \033[0m"echo -e "\n\n"# use ftp as the yum sourceyum install gcc -yif [ ${uselocal} == "true" ]then echo -e "\033[32m [ INFO ] Using FTP Server As the Yum Source ... \033[0m" mkdir /etc/yum.repos.d/bak mv /etc/yum.repos.d/CentOS-* /etc/yum.repos.d/bak/ echo -e "[FTP]" > /etc/yum.repos.d/ftp.repo echo -e "name=CentOS6.6" >> /etc/yum.repos.d/ftp.repo echo -e "baseurl=ftp://172.18.72.252/centos6.6/" >> /etc/yum.repos.d/ftp.repo echo -e "gpgcheck=0" >> /etc/yum.repos.d/ftp.repo if [ ${enabledTogether} == "true" ] then # test START mv /etc/yum.repos.d/bak/CentOS-* /etc/yum.repos.d/ yum install yum-plugin-priorities.noarch -y echo -e "priority=1" >> /etc/yum.repos.d/ftp.repo #echo -e "priority=10" >> /etc/yum.repos.d/CentOS-* # END fi yum list | tail -n 20 echo -e "\033[32m [ INFO ] Set FTP Source Successfully \033[0m" echo -e "\n\n"fi# modify the host nameecho -e "\033[32m [ INFO ] Modify the Host Name ... \033[0m"echo -e "NETWORKING=yes" > /etc/sysconfig/networkecho -e "HOSTNAME=${your_name}" >> /etc/sysconfig/networkhostname ${your_name}hostnameecho -e "Hello, ${your_name}"#echo -e "\033[32m [ INFO ] [ Modify the Host Name Successfully ] \033[0m"echo -e "\n\n"# modify the host IP addressecho -e "\033[32m [ INFO ] Modify the Host IP Address ... \033[0m"service network restartsed -i '/ONBOOT/d' /etc/sysconfig/network-scripts/ifcfg-eth0sed -i '/BOOTPROTO/d' /etc/sysconfig/network-scripts/ifcfg-eth0echo -e "ONBOOT=yes" >> /etc/sysconfig/network-scripts/ifcfg-eth0echo -e "BOOTPROTO=static" >> /etc/sysconfig/network-scripts/ifcfg-eth0echo -e "DNS1=192.168.${your_ip_3}.${your_ip_4}" >> /etc/sysconfig/network-scripts/ifcfg-eth0echo -e "DNS2=202.206.192.33" >> /etc/sysconfig/network-scripts/ifcfg-eth0echo -e "IPADDR=192.168.${your_ip_3}.${your_ip_4}" >> /etc/sysconfig/network-scripts/ifcfg-eth0echo -e "NETMASK=255.255.255.0" >> /etc/sysconfig/network-scripts/ifcfg-eth0echo -e "GATEWAY=192.168.${your_ip_3}.2" >> /etc/sysconfig/network-scripts/ifcfg-eth0if [ ${modifyeth0} == "true" ]then # test START sed -i '/HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth0 sed -i "s/DEVICE=eth0/DEVICE=${ethxname}/g" /etc/sysconfig/network-scripts/ifcfg-eth0 mv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-${ethxname} # ENDfiifconfigsed -i '$d' /etc/resolv.confecho -e "nameserver 192.168.${your_ip_3}.${your_ip_4}" >> /etc/resolv.confecho -e "nameserver 202.206.192.33" >> /etc/resolv.confping 127.0.0.1 -c 4service network restartping 127.0.0.1 -c 4ifconfigecho -e " [\033[32m INFO \033[0m] Please SSH this IP address:\033[31m 192.168.${your_ip_3}.${your_ip_4} \033[0m"echo -e "\033[32m [ INFO ] Modify the Host IP Address Successfully \033[0m"echo -e "\n\n"sleep 2s# install the bind packageecho -e "\033[32m [ INFO ] Install the Bind Package ... \033[0m"yum install bind -y# configure the named configuration fileecho -e "\033[32m [ INFO ] Configure the named.conf ... \033[0m"cd /etc/sed -i "s/127.0.0.1/any/g" named.confsed -i "s/localhost/any/g" named.confsed -i "/listen-on-v6/d" named.confsed -i '/include "/d' named.confecho -e "zone \"${your_name}.com\" IN {" >> named.confecho -e " type master;" >> named.confecho -e " file \"${your_name}.com.zone\";" >> named.confecho -e "};" >> named.confecho -e ""echo -e "zone \"${your_stu_number}.com\" IN {" >> named.confecho -e " type master;" >> named.confecho -e " file \"${your_stu_number}.com.zone\";" >> named.confecho -e "};" >> named.confecho -e "" >> named.confecho -e "include \"/etc/named.rfc1912.zones\";" >> named.confecho -e "include \"/etc/named.root.key\";" >> named.confecho -e "" >> named.confcd ~# configure the zone fileecho -e "\033[32m [ INFO ] Configure the Zone File ... \033[0m"cd /var/named/cp named.localhost ${your_name}.com.zonecp named.localhost ${your_stu_number}.com.zonesed -i '$d' ${your_name}.com.zonesed -i '$d' ${your_name}.com.zonesed -i '$d' ${your_stu_number}.com.zonesed -i '$d' ${your_stu_number}.com.zoneecho -e " A 192.168.${your_ip_3}.${your_ip_4}" >> ${your_name}.com.zoneecho -e "www IN A 192.168.${your_ip_3}.${your_ip_4}" >> ${your_name}.com.zoneecho -e " A 192.168.${your_ip_3}.${your_ip_4}" >> ${your_stu_number}.com.zoneecho -e "www IN A 192.168.${your_ip_3}.${your_ip_4}" >> ${your_stu_number}.com.zone# modify the limitecho -e "\033[32m [ INFO ] Modify the Limit ... \033[0m"chown root:named /var/named/*.com.zonenamed-checkconfservice named restartping www.${your_name}.com -c 4echo -e ""ping www.${your_stu_number}.com -c 4rm -rf /var/run/yum.pidecho -e "\033[32m [ INFO ] Install the Bind Package Successfully \033[0m"echo -e "\n\n"# install apache web serverecho -e "\033[32m [ INFO ] Install Apache Web Server ... \033[0m"echo -e "\033[32m [ INFO ] Install Apache Web Server ( install gcc ) ... \033[0m"yum install gcc -ycd ~echo -e "\033[32m [ INFO ] Install Apache Web Server ( download httpd package ) ... \033[0m"wget ftp://172.18.72.252/httpd-2.2.34.tar.gzsleep 2star -zxvf httpd-2.2.34.tar.gzcd httpd-*echo -e "\033[32m [ INFO ] Install Apache Web Server ( configure apache2 ) ... \033[0m"./configure --prefix=/usr/local/apache2echo -e "\033[32m [ INFO ] Install Apache Web Server ( make install apache2 ) ... \033[0m"make && make installcd /usr/local/apache2/bin/echo -e "\033[32m [ INFO ] Install Apache Web Server ( start apache2 ) ... \033[0m"./apachectl startcd ~wget http://localhost:80/index.htmlcat index.htmlsleep 2scd ~ls# create files and foldersecho -e "\033[32m [ INFO ] Create Files and Folders ... \033[0m"mkdir /var/wwwroot/cd /var/wwwroot/mkdir ${your_name}.commkdir ${your_stu_number}.comlsecho -e "This is wwwroot
" >> /var/wwwroot/index.htmlecho -e " " >> /var/wwwroot/info.phpecho -e "This's ${your_name} site
" >> /var/wwwroot/${your_name}.com/index.htmlecho -e "This's ${your_stu_number} site
" >> /var/wwwroot/${your_stu_number}.com/index.htmlecho -e " " >> /var/wwwroot/${your_name}.com/info.phpecho -e " " >> /var/wwwroot/${your_stu_number}.com/info.phpcd ~# configure apache virtual hostecho -e "\033[32m [ INFO ] Configure Apache Virtual Host ... \033[0m"cd /usr/local/apache2/conf/sed -i 's/\/usr\/local\/apache2\/htdocs/\/var\/wwwroot\//g' httpd.confsed -i '/httpd-vhosts/s/^#//' httpd.confcd /usr/local/apache2/conf/extra/sed -i '27,$d' httpd-vhosts.confecho -e "" >> httpd-vhosts.confecho -e "" >> httpd-vhosts.confecho -e "" >> httpd-vhosts.confecho -e " DocumentRoot \"/var/wwwroot/${your_name}.com/\"" >> httpd-vhosts.confecho -e " ServerName www.${your_name}.com" >> httpd-vhosts.confecho -e " " >> httpd-vhosts.confecho -e "" >> httpd-vhosts.confecho -e "" >> httpd-vhosts.confecho -e " DocumentRoot \"/var/wwwroot/${your_stu_number}.com/\"" >> httpd-vhosts.confecho -e " ServerName www.${your_stu_number}.com" >> httpd-vhosts.confecho -e " " >> httpd-vhosts.confecho -e "" >> httpd-vhosts.confecho -e "" >> httpd-vhosts.confcd /usr/local/apache2/bin/./apachectl restart# test visit webpageecho -e "\033[32m [ INFO ] Test Visit Website ... \033[0m"cd ~mkdir /root/viewcd /root/view/wget http://www.${your_name}.com/index.htmlmv index.html ${your_name}.com.htmlwget http://www.${your_stu_number}.com/index.htmlmv index.html ${your_stu_number}.com.htmlcd ~echo -e "${your_name}.com.html"cat /root/view/${your_name}.com.htmlcd ~sleep 2secho -e ""cd ~echo -e "${your_stu_number}.com.html"cat /root/view/${your_stu_number}.com.htmlcd ~sleep 2secho -e ""cd ~rm -rf /var/run/yum.pidecho -e "\033[32m [ INFO ] Install Apache Web Server Successfully \033[0m"echo -e "\n\n"# install MySQLecho -e "\033[32m [ INFO ] Install MySQL Server ... \033[0m"yum install mysql-server -y#mysqladmin -u root -p password 123456sed -i "7 i\skip-grant-tables" /etc/my.cnfservice mysqld restartmysql -s -e "USE mysql; UPDATE user SET Password = password('123456') WHERE User='root';"sed -i '/skip-grant-tables/d' /etc/my.cnfservice mysqld restart# modify dataecho -e "\033[32m [ INFO ] Insert Data to Database ... \033[0m"echo -e ""mysql -uroot -p123456 -s -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; FLUSH PRIVILEGES;"mysql -uroot -p123456 -s -e "CREATE DATABASE IF NOT EXISTS project;"mysql -uroot -p123456 -s -e "SET NAMES 'UTF8'; USE project;CREATE TABLE IF NOT EXISTS news(id INT unsigned auto_increment primary key,title VARCHAR(60) not null,content TEXT not null,addtime timestamp default current_timestamp not null)DEFAULT CHARSET=UTF8;"mysql -uroot -p123456 -s -e "SET NAMES 'UTF8'; USE project;INSERT INTO news(title, content)VALUES('新闻标题1', '新闻内容1'),('新闻标题2','新闻内容2');"echo -e "\033[32m [ INFO ] Show Data from Database ... \033[0m"mysql -uroot -p123456 -e "SET NAMES 'UTF8'; USE project; SELECT * FROM news WHERE 1;"sleep 2srm -rf /var/run/yum.pidecho -e "\033[32m [ INFO ] Install MySQL Server Successfully \033[0m"echo -e "\n\n"# install phpecho -e "\033[32m [ INFO ] Install PHP ... \033[0m"yum install php php-mysql -ycp /usr/lib64/httpd/modules/libphp5.so /usr/local/apache2/modules/echo -e "" >> /usr/local/apache2/conf/httpd.confecho -e "Include /etc/httpd/conf.d/php.conf" >> /usr/local/apache2/conf/httpd.confecho -e "AddType application/x-httpd-php .php" >> /usr/local/apache2/conf/httpd.confecho -e "DirectoryIndex index.php index.html" >> /usr/local/apache2/conf/httpd.confecho -e "" >> /usr/local/apache2/conf/httpd.confcd /usr/local/apache2/bin/./apachectl restartecho -e " \$row['id'], 'title' => \$row['title'], 'content' => \$row['content'], 'addtime' => \$row['addtime'] ); \$i++; } print_r(\$arr);} else { echo 'Connecting MySQL ERROR.';}?>" > /var/wwwroot/${your_stu_number}.com/index.phpcd /usr/local/apache2/bin/./apachectl restartcd /root/view/echo -e ""wget http://www.${your_stu_number}.com/index.phpmv index.php ${your_stu_number}.com.phpcd ~echo -e "${your_stu_number}.com.php"cat /root/view/${your_stu_number}.com.phpsleep 2scd ~rm -rf /var/run/yum.pidcd /usr/local/apache2/bin/./apachectl restartecho -e ""echo -e "\033[32m [ INFO ] Install PHP Successfully \033[0m"echo -e "\n\n"# install vsftpdecho -e "\033[32m [ INFO ] Install vsftpd ... \033[0m"yum install vsftpd -ysed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" /etc/vsftpd/vsftpd.confuseradd -d /var/wwwroot/${your_name}.com/ -p '$6$sUx1urDQ$KRzEMQ4VvIonSoAQDtN4KJKjU1qcn6VVtYwxHuhSkNk6vxaevjyV9bIUTh77kdxW6CehQNggUSqKO5K2fjPHh/' ${your_name}useradd -d /var/wwwroot/${your_stu_number}.com/ -p '$6$sUx1urDQ$KRzEMQ4VvIonSoAQDtN4KJKjU1qcn6VVtYwxHuhSkNk6vxaevjyV9bIUTh77kdxW6CehQNggUSqKO5K2fjPHh/' ${your_stu_number}chown -R ${your_name}:${your_name} /var/wwwroot/${your_name}.comchown -R ${your_stu_number}:${your_stu_number} /var/wwwroot/${your_stu_number}.comchmod -R 777 /var/wwwroot/${your_name}.comchmod -R 777 /var/wwwroot/${your_stu_number}.comservice vsftpd startcd ~echo -e "\033[32m [ INFO ] Install vsftpd Successfully \033[0m"echo -e "\033[32m [ INFO ] All the installation is completed !!! \033[0m"echo -e "\n\n"# use ab to test virtual host performanceecho -e ""echo -e "\033[32m [ INFO ] Use ab to Test Virtual Host Performance ... \033[0m"echo -e ""echo -e " [ \033[32mINFO\033[0m ] TEST START ..."echo -e "\n\n"# TEST STARTecho -e " [ \033[32mINFO\033[0m ] requests=10000 concurrency=100"echo -e " --------------------------------------- \n"/usr/local/apache2/bin/ab -n 10000 -c 100 http://www.${your_stu_number}.com/index.phpecho -e "\n\n"echo -e " [ \033[32mINFO\033[0m ] requests=10000 concurrency=150"echo -e " --------------------------------------- \n"/usr/local/apache2/bin/ab -n 10000 -c 150 http://www.${your_stu_number}.com/index.phpecho -e "\n\n"echo -e " [ \033[32mINFO\033[0m ] requests=10000 concurrency=200"echo -e " --------------------------------------- \n"/usr/local/apache2/bin/ab -n 10000 -c 200 http://www.${your_stu_number}.com/index.phpecho -e "\n\n"echo -e " [ \033[32mINFO\033[0m ] requests=15000 concurrency=100"echo -e " --------------------------------------- \n"/usr/local/apache2/bin/ab -n 15000 -c 100 http://www.${your_stu_number}.com/index.phpecho -e "\n\n"echo -e " [ \033[32mINFO\033[0m ] requests=15000 concurrency=200"echo -e " --------------------------------------- \n"/usr/local/apache2/bin/ab -n 15000 -c 200 http://www.${your_stu_number}.com/index.php# END# install sl STARTclearmkdir /root/epel/cd /root/epel/wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpmrpm -ivh epel-release*yum repolist -yyum install sl -yclearslcd ~# install sl END# Successfullyclearecho -e ""time2=`date +%s`duration=`expr ${time2} - ${time1}`nowDate=`date`echo -e " [\033[32m INFO \033[0m] The time is now: \033[31m${nowDate}\033[0m"echo -e ""echo -e " [\033[32m INFO \033[0m] The installation takes a total of \033[31m${duration}\033[0m seconds."echo -e ""echo -e " [\033[32m INFO \033[0m] Please SSH this IP address:\033[31m 192.168.${your_ip_3}.${your_ip_4} \033[0m"echo -e ""echo -e " [\033[32m INFO \033[0m] The Script Has Finished Running, Good Luck !!!"echo -e ""#END
转载于:https://blog.51cto.com/tong707/2061501