22、一键部署 LNMP(源码安装版本)
-
#!/bin/bash
-
-
# 一键部署 LNMP(源码安装版本)
-
menu()
-
{
-
clear
-
echo
" ##############‐‐‐‐Menu‐‐‐‐##############"
-
echo
"# 1. Install Nginx"
-
echo
"# 2. Install MySQL"
-
echo
"# 3. Install PHP"
-
echo
"# 4. Exit Program"
-
echo
" ########################################"
-
}
-
-
choice()
-
{
-
read -p
"Please choice a menu[1‐9]:" select
-
}
-
-
install_nginx()
-
{
-
id nginx &>/dev/null
-
if [ $? -ne 0 ];
then
-
useradd -s /sbin/nologin nginx
-
fi
-
if [ -f nginx‐1.8.0.tar.gz ];
then
-
tar -xf nginx‐1.8.0.tar.gz
-
cd nginx‐1.8.0
-
yum -y install gcc pcre‐devel openssl‐devel zlib‐devel make
-
./configure ‐‐prefix=/usr/
local/nginx ‐‐with‐http_ssl_module
-
make
-
make install
-
ln -s /usr/
local/nginx/sbin/nginx /usr/sbin/
-
cd ..
-
else
-
echo
"没有 Nginx 源码包"
-
fi
-
}
-
-
install_mysql()
-
{
-
yum -y install gcc gcc‐c++ cmake ncurses‐devel perl
-
id mysql &>/dev/null
-
if [ $? -ne 0 ];
then
-
useradd -s /sbin/nologin mysql
-
fi
-
if [ -f mysql‐5.6.25.tar.gz ];
then
-
tar -xf mysql‐5.6.25.tar.gz
-
cd mysql‐5.6.25
-
cmake .
-
make
-
make install
-
/usr/
local/mysql/scripts/mysql_install_db ‐‐user=mysql ‐‐datadir=/usr/
local/mysql/data/
-
‐‐basedir=/usr/
local/mysql/
-
chown -R root.mysql /usr/
local/mysql
-
chown -R mysql /usr/
local/mysql/data
-
/bin/cp -f /usr/
local/mysql/support‐files/mysql.server /etc/init.d/mysqld
-
chmod +x /etc/init.d/mysqld
-
/bin/cp -f /usr/
local/mysql/support‐files/my‐default.cnf /etc/my.cnf
-
echo
"/usr/local/mysql/lib/" >> /etc/ld.so.conf
-
ldconfig
-
echo
'PATH=\$PATH:/usr/local/mysql/bin/' >> /etc/profile
-
export PATH
-
else
-
echo
"没有 mysql 源码包"
-
exit
-
fi
-
}
-
-
install_php()
-
{
-
#安装 php 时没有指定启动哪些模块功能,如果的用户可以根据实际情况自行添加额外功能如‐‐with‐gd 等
-
yum -y install gcc libxml2‐devel
-
if [ -f mhash‐0.9.9.9.tar.gz ];
then
-
tar -xf mhash‐0.9.9.9.tar.gz
-
cd mhash‐0.9.9.9
-
./configure
-
make
-
make install
-
cd ..
-
if [ ! ‐f /usr/lib/libmhash.so ];
then
-
ln -s /usr/
local/lib/libmhash.so /usr/lib/
-
fi
-
ldconfig
-
else
-
echo
"没有 mhash 源码包文件"
-
exit
-
fi
-
if [ -f libmcrypt‐2.5.8.tar.gz ];
then
-
tar -xf libmcrypt‐2.5.8.tar.gz
-
cd libmcrypt‐2.5.8
-
./configure
-
make
-
make install
-
cd ..
-
if [ ! -f /usr/lib/libmcrypt.so ];
then
-
ln -s /usr/
local/lib/libmcrypt.so /usr/lib/
-
fi
-
ldconfig
-
else
-
echo
"没有 libmcrypt 源码包文件"
-
exit
-
fi
-
if [ -f php‐5.4.24.tar.gz ];
then
-
tar -xf php‐5.4.24.tar.gz
-
cd php‐5.4.24
-
./configure ‐‐prefix=/usr/
local/php5 ‐‐with‐mysql=/usr/
local/mysql ‐‐
enable‐fpm ‐‐
-
enable‐mbstring ‐‐with‐mcrypt ‐‐with‐mhash ‐‐with‐config‐file‐path=/usr/
local/php5/etc ‐‐with‐
-
mysqli=/usr/
local/mysql/bin/mysql_config
-
make && make install
-
/bin/cp -f php.ini‐production /usr/
local/php5/etc/php.ini
-
/bin/cp -f /usr/
local/php5/etc/php‐fpm.conf.default /usr/
local/php5/etc/php‐fpm.conf
-
cd ..
-
else
-
echo
"没有 php 源码包文件"
-
exit
-
fi
-
}
-
-
while :
-
do
-
menu
-
choice
-
case
$select
in
-
1)
-
install_nginx
-
;;
-
2)
-
install_mysql
-
;;
-
3)
-
install_php
-
;;
-
4)
-
exit
-
;;
-
*)
-
echo Sorry!
-
esac
-
done
23、编写脚本快速克隆 KVM 虚拟机
-
#!/bin/bash
-
-
# 编写脚本快速克隆 KVM 虚拟机
-
-
# 本脚本针对 RHEL7.2 或 Centos7.2
-
# 本脚本需要提前准备一个 qcow2 格式的虚拟机模板,
-
# 名称为/var/lib/libvirt/images /.rh7_template 的虚拟机模板
-
# 该脚本使用 qemu‐img 命令快速创建快照虚拟机
-
# 脚本使用 sed 修改模板虚拟机的配置文件,将虚拟机名称、UUID、磁盘文件名、MAC 地址
-
# exit code:
-
# 65 ‐> user input nothing
-
# 66 ‐> user input is not a number
-
# 67 ‐> user input out of range
-
# 68 ‐> vm disk image exists
-
-
IMG_DIR=/var/lib/libvirt/images
-
BASEVM=rh7_template
-
read -p
"Enter VM number: " VMNUM
-
if [
$VMNUM -le 9 ];
then
-
VMNUM=0
$VMNUM
-
fi
-
-
if [ -z
"${VMNUM}" ];
then
-
echo
"You must input a number."
-
exit 65
-
elif [[
${VMNUM} =~ [a‐z] ];
then
-
echo
"You must input a number."
-
exit 66
-
elif [
${VMNUM} -lt 1 -o
${VMNUM} -gt 99 ];
then
-
echo
"Input out of range"
-
exit 67
-
fi
-
-
NEWVM=rh7_node
${VMNUM}
-
-
if [ -e
$IMG_DIR/
${NEWVM}.img ];
then
-
echo
"File exists."
-
exit 68
-
fi
-
-
echo -en
"Creating Virtual Machine disk image......\t"
-
qemu‐img create -f qcow2 ‐b
$IMG_DIR/.
${BASEVM}.img
$IMG_DIR/
${NEWVM}.img &> /dev/null
-
-
echo -e
"\e[32;1m[OK]\e[0m"
-
-
#virsh dumpxml ${BASEVM} > /tmp/myvm.xml
-
cat /var/lib/libvirt/images/.rhel7.xml > /tmp/myvm.xml
-
sed -i
"/<name>${BASEVM}/s/${BASEVM}/${NEWVM}/" /tmp/myvm.xml
-
sed -i
"/uuid/s/<uuid>.*<\/uuid>/<uuid>$(uuidgen)<\/uuid>/" /tmp/myvm.xml
-
sed -i
"/${BASEVM}\.img/s/${BASEVM}/${NEWVM}/" /tmp/myvm.xml
-
-
# 修改 MAC 地址,本例使用的是常量,每位使用该脚本的用户需要根据实际情况修改这些值
-
# 最好这里可以使用便利,这样更适合于批量操作,可以克隆更多虚拟机
-
sed -i
"/mac /s/a1/0c/" /tmp/myvm.xml
-
-
echo -en
"Defining new virtual machine......\t\t"
-
virsh define /tmp/myvm.xml &> /dev/null
-
echo -e
"\e[32;1m[OK]\e[0m"