shell编程100例(第六周①)

22、一键部署 LNMP(源码安装版本)


 
 
  1. #!/bin/bash
  2. # 一键部署 LNMP(源码安装版本)
  3. menu()
  4. {
  5. clear
  6. echo " ##############‐‐‐‐Menu‐‐‐‐##############"
  7. echo "# 1. Install Nginx"
  8. echo "# 2. Install MySQL"
  9. echo "# 3. Install PHP"
  10. echo "# 4. Exit Program"
  11. echo " ########################################"
  12. }
  13. choice()
  14. {
  15. read -p "Please choice a menu[1‐9]:" select
  16. }
  17. install_nginx()
  18. {
  19. id nginx &>/dev/null
  20. if [ $? -ne 0 ]; then
  21. useradd -s /sbin/nologin nginx
  22. fi
  23. if [ -f nginx‐1.8.0.tar.gz ]; then
  24. tar -xf nginx‐1.8.0.tar.gz
  25. cd nginx‐1.8.0
  26. yum -y install gcc pcre‐devel openssl‐devel zlib‐devel make
  27. ./configure ‐‐prefix=/usr/ local/nginx ‐‐with‐http_ssl_module
  28. make
  29. make install
  30. ln -s /usr/ local/nginx/sbin/nginx /usr/sbin/
  31. cd ..
  32. else
  33. echo "没有 Nginx 源码包"
  34. fi
  35. }
  36. install_mysql()
  37. {
  38. yum -y install gcc gcc‐c++ cmake ncurses‐devel perl
  39. id mysql &>/dev/null
  40. if [ $? -ne 0 ]; then
  41. useradd -s /sbin/nologin mysql
  42. fi
  43. if [ -f mysql‐5.6.25.tar.gz ]; then
  44. tar -xf mysql‐5.6.25.tar.gz
  45. cd mysql‐5.6.25
  46. cmake .
  47. make
  48. make install
  49. /usr/ local/mysql/scripts/mysql_install_db ‐‐user=mysql ‐‐datadir=/usr/ local/mysql/data/
  50. ‐‐basedir=/usr/ local/mysql/
  51. chown -R root.mysql /usr/ local/mysql
  52. chown -R mysql /usr/ local/mysql/data
  53. /bin/cp -f /usr/ local/mysql/support‐files/mysql.server /etc/init.d/mysqld
  54. chmod +x /etc/init.d/mysqld
  55. /bin/cp -f /usr/ local/mysql/support‐files/my‐default.cnf /etc/my.cnf
  56. echo "/usr/local/mysql/lib/" >> /etc/ld.so.conf
  57. ldconfig
  58. echo 'PATH=\$PATH:/usr/local/mysql/bin/' >> /etc/profile
  59. export PATH
  60. else
  61. echo "没有 mysql 源码包"
  62. exit
  63. fi
  64. }
  65. install_php()
  66. {
  67. #安装 php 时没有指定启动哪些模块功能,如果的用户可以根据实际情况自行添加额外功能如‐‐with‐gd 等
  68. yum -y install gcc libxml2‐devel
  69. if [ -f mhash‐0.9.9.9.tar.gz ]; then
  70. tar -xf mhash‐0.9.9.9.tar.gz
  71. cd mhash‐0.9.9.9
  72. ./configure
  73. make
  74. make install
  75. cd ..
  76. if [ ! ‐f /usr/lib/libmhash.so ]; then
  77. ln -s /usr/ local/lib/libmhash.so /usr/lib/
  78. fi
  79. ldconfig
  80. else
  81. echo "没有 mhash 源码包文件"
  82. exit
  83. fi
  84. if [ -f libmcrypt‐2.5.8.tar.gz ]; then
  85. tar -xf libmcrypt‐2.5.8.tar.gz
  86. cd libmcrypt‐2.5.8
  87. ./configure
  88. make
  89. make install
  90. cd ..
  91. if [ ! -f /usr/lib/libmcrypt.so ]; then
  92. ln -s /usr/ local/lib/libmcrypt.so /usr/lib/
  93. fi
  94. ldconfig
  95. else
  96. echo "没有 libmcrypt 源码包文件"
  97. exit
  98. fi
  99. if [ -f php‐5.4.24.tar.gz ]; then
  100. tar -xf php‐5.4.24.tar.gz
  101. cd php‐5.4.24
  102. ./configure ‐‐prefix=/usr/ local/php5 ‐‐with‐mysql=/usr/ local/mysql ‐‐ enable‐fpm ‐‐
  103. enable‐mbstring ‐‐with‐mcrypt ‐‐with‐mhash ‐‐with‐config‐file‐path=/usr/ local/php5/etc ‐‐with‐
  104. mysqli=/usr/ local/mysql/bin/mysql_config
  105. make && make install
  106. /bin/cp -f php.ini‐production /usr/ local/php5/etc/php.ini
  107. /bin/cp -f /usr/ local/php5/etc/php‐fpm.conf.default /usr/ local/php5/etc/php‐fpm.conf
  108. cd ..
  109. else
  110. echo "没有 php 源码包文件"
  111. exit
  112. fi
  113. }
  114. while :
  115. do
  116. menu
  117. choice
  118. case $select in
  119. 1)
  120. install_nginx
  121. ;;
  122. 2)
  123. install_mysql
  124. ;;
  125. 3)
  126. install_php
  127. ;;
  128. 4)
  129. exit
  130. ;;
  131. *)
  132. echo Sorry!
  133. esac
  134. done

23、编写脚本快速克隆 KVM 虚拟机


 
 
  1. #!/bin/bash
  2. # 编写脚本快速克隆 KVM 虚拟机
  3. # 本脚本针对 RHEL7.2 或 Centos7.2
  4. # 本脚本需要提前准备一个 qcow2 格式的虚拟机模板,
  5. # 名称为/var/lib/libvirt/images /.rh7_template 的虚拟机模板
  6. # 该脚本使用 qemu‐img 命令快速创建快照虚拟机
  7. # 脚本使用 sed 修改模板虚拟机的配置文件,将虚拟机名称、UUID、磁盘文件名、MAC 地址
  8. # exit code:
  9. # 65 ‐> user input nothing
  10. # 66 ‐> user input is not a number
  11. # 67 ‐> user input out of range
  12. # 68 ‐> vm disk image exists
  13. IMG_DIR=/var/lib/libvirt/images
  14. BASEVM=rh7_template
  15. read -p "Enter VM number: " VMNUM
  16. if [ $VMNUM -le 9 ]; then
  17. VMNUM=0 $VMNUM
  18. fi
  19. if [ -z "${VMNUM}" ]; then
  20. echo "You must input a number."
  21. exit 65
  22. elif [[ ${VMNUM} =~ [a‐z] ]; then
  23. echo "You must input a number."
  24. exit 66
  25. elif [ ${VMNUM} -lt 1 -o ${VMNUM} -gt 99 ]; then
  26. echo "Input out of range"
  27. exit 67
  28. fi
  29. NEWVM=rh7_node ${VMNUM}
  30. if [ -e $IMG_DIR/ ${NEWVM}.img ]; then
  31. echo "File exists."
  32. exit 68
  33. fi
  34. echo -en "Creating Virtual Machine disk image......\t"
  35. qemu‐img create -f qcow2 ‐b $IMG_DIR/. ${BASEVM}.img $IMG_DIR/ ${NEWVM}.img &> /dev/null
  36. echo -e "\e[32;1m[OK]\e[0m"
  37. #virsh dumpxml ${BASEVM} > /tmp/myvm.xml
  38. cat /var/lib/libvirt/images/.rhel7.xml > /tmp/myvm.xml
  39. sed -i "/<name>${BASEVM}/s/${BASEVM}/${NEWVM}/" /tmp/myvm.xml
  40. sed -i "/uuid/s/<uuid>.*<\/uuid>/<uuid>$(uuidgen)<\/uuid>/" /tmp/myvm.xml
  41. sed -i "/${BASEVM}\.img/s/${BASEVM}/${NEWVM}/" /tmp/myvm.xml
  42. # 修改 MAC 地址,本例使用的是常量,每位使用该脚本的用户需要根据实际情况修改这些值
  43. # 最好这里可以使用便利,这样更适合于批量操作,可以克隆更多虚拟机
  44. sed -i "/mac /s/a1/0c/" /tmp/myvm.xml
  45. echo -en "Defining new virtual machine......\t\t"
  46. virsh define /tmp/myvm.xml &> /dev/null
  47. echo -e "\e[32;1m[OK]\e[0m"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值