11/06/2016

HA Program : ติดตั้ง PHPVirtualBox (VM Web Control)

HA Program : ติดตั้ง PHPVirtualBox (VM Web Control)  Not work On ubutu 16.04
- ติดตั้งจาก Scrip ไม่ได้ ต้อง Download มาติดตั้งเอง Manual ดู Code ที่ไฟล์ sv.sh ดั้งนี้

  1. #! /bin/bash
  2.  
  3. if [ $(whoami) = "root" ]; then
  4.     cd /tmp
  5.     SELECT=1
  6.     LOOP=0
  7. else
  8.     whiptail --title "UOE-Server VM Solution (v.1.0)" --msgbox "Please try running this script again as root"  10 70
  9.     exit
  10. fi
  11.  
  12. while [ "$SELECT" = "1" ]
  13. do
  14.     if [ "$LOOP" = "0" ]; then
  15.         OPTION=$(whiptail --title "UOE-Server VM Solution (v.1.0)" --menu "Please Select Module for Ubuntu Server 14.04" 15 60 7 1.  "Install All Module for Server" 2. "Mini GUI Server" 3. "Webmin Control Panel" 4. "Monitorix (Host Monitering)" 5. "VirtualBox (VM Server)" 6. "PHPVirtualBox (VM Web Control)" 7. "VboxHA (High Availability)" 3>&2 2>&1 1>&3)
  16.         rm -rf *.deb
  17.         clear
  18.     else
  19.                 if [ "$OPTION" = "1." ]; then
  20.                     OPTION="2."
  21.                 elif [ "$OPTION" = "2." ]; then
  22.                     OPTION="3."
  23.                 elif [ "$OPTION" = "3." ]; then
  24.                     OPTION="4."
  25.                 elif [ "$OPTION" = "4." ]; then
  26.                     OPTION="5."
  27.                 elif [ "$OPTION" = "5." ]; then
  28.                     OPTION="6."
  29.                 elif [ "$OPTION" = "6." ]; then
  30.                     OPTION="7."
  31.                     LOOP=0
  32.                 fi
  33.     fi
  34.     case "$OPTION" in
  35.         "1.") echo "---------- Install All Module for Server ----------"
  36.                 LOOP=1
  37.         ;;
  38.         "2.") echo "---------- Mini GUI Server ----------"
  39.                 aptitude -y install openssh-server
  40.                 aptitude -y install lubuntu-core chromium-browser lxterminal leafpad lxrandr xarchiver pmount policykit-1 synaptic htop iotop nmon --without-recommends
  41.                 aptitude -y install pepperflashplugin-nonfree && update-pepperflashplugin-nonfree --install
  42.         ;;
  43.         "3.") echo "---------- Webmin Control Panel ----------"
  44.                 wget -c "http://downloads.sourceforge.net/project/webadmin/webmin/1.700/webmin_1.700_all.deb"
  45.                 dpkg -i webmin*.deb
  46.                 apt-get install -y -f
  47.         ;;
  48.         "4.") echo "---------- Monitorix (Host Monitering) ----------"
  49.                 wget -c "http://www.monitorix.org/monitorix_3.7.0-izzy1_all.deb"
  50.                 dpkg -i monitorix*.deb
  51.                 apt-get install -y -f
  52.         ;;
  53.         "5.") echo "---------- VirtualBox (VM Server) ----------"
  54.                 wget -c "http://download.virtualbox.org/virtualbox/4.3.16/virtualbox-4.3_4.3.16-95972~Ubuntu~raring_amd64.deb"
  55.                 aptitude -y install make gcc
  56.                 dpkg -i virtualbox*.deb
  57.                 apt-get install -y -f
  58.                 wget -c "http://download.virtualbox.org/virtualbox/4.3.16/Oracle_VM_VirtualBox_Extension_Pack-4.3.16.vbox-extpack"
  59.                 VBoxManage extpack install *.vbox-extpack
  60.  
  61.                 if [ `grep -c VBOXSTATUS /etc/rc.local` = 0 ]; then
  62.                     sed -i 's/exit 0//g' /etc/rc.local
  63.                     echo 'VBOXSTATUS=$(/etc/init.d/vboxdrv status)' >> /etc/rc.local
  64.                     echo 'if [ "$VBOXSTATUS" = "VirtualBox kernel module is not loaded." ]; then' >> /etc/rc.local
  65.                     echo '/etc/init.d/vboxdrv setup' >> /etc/rc.local
  66.                     echo 'reboot' >> /etc/rc.local
  67.                     echo 'fi' >> /etc/rc.local
  68.                     echo 'exit 0' >> /etc/rc.local
  69.                 fi
  70.         ;;
  71.         "6.") echo "---------- PHPVirtualBox (VM Web Control) ----------"
  72.                 aptitude -y install php5
  73.                 service apache2 restart
  74.                 wget "http://downloads.sourceforge.net/project/phpvirtualbox/phpvirtualbox-4.3-1.zip" -O phpvirtualbox.zip
  75.                 unzip phpvirtualbox.zip -d /var/www/html
  76.                 mv /var/www/html/phpvirtualbox-4.3-1 /var/www/html/vbox
  77.                
  78.                 UNAME=$(whiptail --title "PHPVirtualBox (step 1/3)" --inputbox "User Name" 8 70 `grep 1000:1000 /etc/passwd | awk -F : '{print $1}'` 3>&1 1>&2 2>&3)
  79.                 PASS1=$(whiptail --title "PHPVirtualBox (step 2/3)" --passwordbox "Password" 8 70 3>&1 1>&2 2>&3)
  80.                 PASS2=$(whiptail --title "PHPVirtualBox (step 3/3)" --passwordbox "Re-enter Password" 8 70 3>&1 1>&2 2>&3)
  81.  
  82.                 while [ "$PASS1" != "$PASS2" ]
  83.                 do
  84.                 MSGBOX=$(whiptail --title "PHPVirtualBox (error)" --msgbox "(ERROR) Password does not match!" 8 70 `grep 1000:1000 /etc/passwd | awk -F : '{print $1}'` 3>&1 1>&2 2>&3)
  85.                 PASS1=$(whiptail --title "PHPVirtualBox (step 2/3)" --passwordbox "Password" 8 70 3>&1 1>&2 2>&3)
  86.                 PASS2=$(whiptail --title "PHPVirtualBox (step 3/3)" --passwordbox "Re-enter Password" 8 70 3>&1 1>&2 2>&3)
  87.                 done
  88.  
  89.                 CONF1=$(grep -n \'vbox' "/var/www/html/vbox/config.php-example" | awk -F : '{print $1 - 1}')
  90.                 CONF2=$(grep -n 'vbox' "/var/www/html/vbox/config.php-example" | awk -F : '{print $1 + 2}')
  91.  
  92.                 head -n $CONF1 "/var/www/html/vbox/config.php-example" > "/var/www/html/vbox/config.php"
  93.                 echo "var \$username='$UNAME';" >> "/var/www/html/vbox/config.php"
  94.                 echo "var \$password='$PASS1';" >> "/var/www/html/vbox/config.php"
  95.                 tail -n +$CONF2 "/var/www/html/vbox/config.php-example" >> "/var/www/html/vbox/config.php"
  96.                
  97.                 echo "VBOXWEB_USER=$UNAME" > "/etc/default/virtualbox"
  98.                 /etc/init.d/vboxweb-service start
  99.         ;;
  100.         "7.") echo "---------- VboxHA (High Availability) ----------"
  101.                 aptitude -y install drbd8-utils pv
  102.                
  103.                 CONFIRM=0
  104.                 UNAME=$(grep 1000:1000 /etc/passwd | awk -F : '{print $1}')
  105.                
  106.                 while [ "$CONFIRM" = "0" ]
  107.                 do
  108.                 MYINDEX=$(whiptail --title "VboxHA (step 1/7)" --inputbox "Index for this server (1 or 2)" 8 70 3>&1 1>&2 2>&3)
  109.                 MYHOST=$(whiptail --title "VboxHA (step 2/7)" --inputbox "Hostname for this server" 8 70 `uname -n` 3>&1 1>&2 2>&3)
  110.                 MYIP=$(whiptail --title "VboxHA (step 3/7)" --inputbox "IP Address for this server" 8 70 `ifconfig | grep "inet addr" | head -n 1 | awk -F : '{print $2}' |  awk '{print $1}'` 3>&1 1>&2 2>&3)
  111.                 MYDISK=$(whiptail --title "VboxHA (step 4/7)" --inputbox "Partition for run guest-os on this server" 8 70 3>&1 1>&2 2>&3)
  112.                 BKHOST=$(whiptail --title "VboxHA (step 5/7))" --inputbox "Hostname for backup server" 8 70 3>&1 1>&2 2>&3)
  113.                 BKIP=$(whiptail --title "VboxHA (step 6/7)" --inputbox "IP Address for backup server" 8 70 3>&1 1>&2 2>&3)
  114.                 BKDISK=$(whiptail --title "VboxHA (step 7/7)" --inputbox "Partition for backup guest-os on this server" 8 70 3>&1 1>&2 2>&3)
  115.                     if (whiptail --title "VboxHA (High Availability)" --yesno "Confirm your settings." --yes-button "Yes" --no-button "Back" 8 70) then
  116.                         CONFIRM=1
  117.                     else
  118.                         CONFIRM=0
  119.                     fi
  120.                 done
  121.                
  122.                 if [ "$MYINDEX" = "1" ]; then
  123.                     echo "#Index $MYINDEX" > /etc/drbd.conf
  124.                     echo "global { usage-count no; }" >> /etc/drbd.conf
  125.                     echo "common { syncer { rate 100M; } }" >> /etc/drbd.conf
  126.                     echo "resource r1 { protocol C; startup { wfc-timeout 30; degr-wfc-timeout 120; }" >> /etc/drbd.conf
  127.                     echo "net { cram-hmac-alg sha1; shared-secret "vboxha"; }" >> /etc/drbd.conf
  128.                     echo "on $MYHOST { device /dev/drbd1; disk $MYDISK; address $MYIP:7781; meta-disk internal; }" >> /etc/drbd.conf
  129.                     echo "on $BKHOST { device /dev/drbd1; disk $MYDISK; address $BKIP:7781; meta-disk internal; } }" >> /etc/drbd.conf
  130.                     echo "resource r2 { protocol C; startup { wfc-timeout 30; degr-wfc-timeout 120; }" >> /etc/drbd.conf
  131.                     echo "net { cram-hmac-alg sha1; shared-secret "vboxha"; }" >> /etc/drbd.conf
  132.                     echo "on $MYHOST { device /dev/drbd2; disk $BKDISK; address $MYIP:7782; meta-disk internal; }" >> /etc/drbd.conf
  133.                     echo "on $BKHOST { device /dev/drbd2; disk $BKDISK; address $BKIP:7782; meta-disk internal; } }" >> /etc/drbd.conf
  134.                 elif [ "$MYINDEX" = "2" ]; then
  135.                     echo "#Index $MYINDEX" > /etc/drbd.conf
  136.                     echo "global { usage-count no; }" >> /etc/drbd.conf
  137.                     echo "common { syncer { rate 100M; } }" >> /etc/drbd.conf
  138.                     echo "resource r1 { protocol C; startup { wfc-timeout 30; degr-wfc-timeout 120; }" >> /etc/drbd.conf
  139.                     echo "net { cram-hmac-alg sha1; shared-secret "vboxha"; }" >> /etc/drbd.conf
  140.                     echo "on $MYHOST { device /dev/drbd1; disk $BKDISK; address $MYIP:7781; meta-disk internal; }" >> /etc/drbd.conf
  141.                     echo "on $BKHOST { device /dev/drbd1; disk $BKDISK; address $BKIP:7781; meta-disk internal; } }" >> /etc/drbd.conf
  142.                     echo "resource r2 { protocol C; startup { wfc-timeout 30; degr-wfc-timeout 120; }" >> /etc/drbd.conf
  143.                     echo "net { cram-hmac-alg sha1; shared-secret "vboxha"; }" >> /etc/drbd.conf
  144.                     echo "on $MYHOST { device /dev/drbd2; disk $MYDISK; address $MYIP:7782; meta-disk internal; }" >> /etc/drbd.conf
  145.                     echo "on $BKHOST { device /dev/drbd2; disk $MYDISK; address $BKIP:7782; meta-disk internal; } }" >> /etc/drbd.conf
  146.                 fi
  147.                
  148.                 if [ `grep -c $BKHOST /etc/hosts` = 0 ]; then
  149.                     head -n 2 /etc/hosts > /tmp/hosts
  150.                     echo "$BKIP $BKHOST" >> /tmp/hosts
  151.                     tail -n +3 /etc/hosts >> /tmp/hosts
  152.                     cat /tmp/hosts > /etc/hosts
  153.                 fi
  154.                
  155.                 update-rc.d -f vboxweb-service remove
  156.                 service drbd stop
  157.                 pv -tpreb /dev/zero | dd of=$MYDISK bs=1M count=128
  158.                 pv -tpreb /dev/zero | dd of=$BKDISK bs=1M count=128
  159.                 drbdadm create-md r1
  160.                 drbdadm create-md r2
  161.                 service drbd start
  162.                 drbdadm -- --overwrite-data-of-peer primary r$MYINDEX
  163.                 mkdir -p /home/$UNAME/virtualbox/1
  164.                 mkdir -p /home/$UNAME/virtualbox/2
  165.                 mkfs.ext4 /dev/drbd$MYINDEX
  166.                 mount /dev/drbd$MYINDEX /home/$UNAME/virtualbox/$MYINDEX && mkdir -p /home/$UNAME/virtualbox/$MYINDEX/guest
  167.                 chmod 777 /home/$UNAME/virtualbox/$MYINDEX/guest
  168.                
  169.                 wget http://goo.gl/BW2ZAq -O /usr/bin/vboxha.sh
  170.                 chmod 755 /usr/bin/vboxha.sh
  171.                
  172.                 if [ `grep -c vboxha.sh /etc/rc.local` = 0 ]; then
  173.                     sed -i 's/exit 0//g' /etc/rc.local
  174.                     echo '/usr/bin/vboxha.sh &' >> /etc/rc.local
  175.                     echo 'exit 0' >> /etc/rc.local
  176.                 fi
  177.                
  178.         ;;
  179.         *) echo "---------- Exit ----------"
  180.         SELECT=0
  181.         ;;
  182.     esac
  183.  
  184.     if [ "$SELECT" = "1" ] && [ "$LOOP" = "0" ]; then
  185.                 if (whiptail --title "UOE-Server VM Solution (v.1.0)" --yesno "Install Succeeded" --yes-button "Main menu." --no-button "Finish" 8 70) then
  186.                     SELECT=1
  187.                 else
  188.                     SELECT=0
  189.                 fi
  190.     fi
  191.  
  192. done
  193.     clear
  194. exit


1. download ไฟล์จาก https://sourceforge.net/projects/phpvirtualbox/files/ เลือกติดตั้งให้ตรงกับ Virtual Box ที่เราลง เช่นลง 4.3 ก็โหลด 4.3 หรือ 5 ก็โหลด 5
2. ติดตั้ง php5
  1. apt-get install php5

restart apache
  1. service apache2 restart

3. copy file phpvirtualbox.zip ที่โหลดมาได้จาก ข้อ 1. ไปไว้ที่ /var/www/html
4. แตกไฟล์ unzip ด้วยการติดตั้งโปรแกรม unzip ก่อน
  1. sudo apt-get install unp

5. แตกไฟล์ด้วยคำสั่ง
  1. unp phpvirtualbox-4.3-3.zip

6. เปลี่ยนชื่อ Folder เป็น vbox
7. เปลี่ยนชื่อไฟล์ config.php-example ให้เป็น config.php
8. แก้ไฟล์ config.php ดังนี้

/* Username / Password for system user that runs VirtualBox */
var $username = 'sa'; // user ที่ติดตั้ง guest
var $password = '123'; // password ที่ติดตั้ง guest

// Host / ip to use for console connections
#var $consoleHost = '192.168.1.22'; // IP Host

8. ทดลอง login ผ่าน http://192.168.2.22/vbox/
user name : password default คือ admin : admin
 

No comments:

Post a Comment