function lxins_main() { global $argv; $opt = parse_opt($argv); $installtype = $opt['install-type']; $highmem = false; if (isset($opt['has-highmem'])) { $highmem = true; } if (!isset($opt['virtualization-type'])) { print "Need virtualization type --virtualization-type=xen/openvz/NONE\n"; exit; } else { $virtualization = $opt['virtualization-type']; } $skipostemplate = false; if (isset($opt['skip-ostemplate'])) { $skipostemplate = true; } if (array_search($virtualization, array("xen", "openvz", "NONE")) === false) { print "Only xen/openvz/NONE are curently supported\n"; exit; } $dbroot = isset($opt['db-rootuser']) ? $opt['db-rootuser'] : "******"; $dbpass = isset($opt['db-rootpassword']) ? $opt['db-rootpassword'] : ""; if (!$dbpass) { //$dbpass = slave_get_db_pass("hypervm"); } $osversion = find_os_version(); if (file_exists("/usr/local/lxlabs/hypervm")) { print "HyperVM is installed do you wish to continue?(No/Yes):\n"; flush(); $stdin = fopen('php://stdin', 'r'); $argq = fread($stdin, 5); $arg = trim($argq); if (!($arg == 'y' || $arg == 'yes' || $arg == 'Yes' || $arg == 'Y' || $arg == 'YES')) { print "Exiting.....\n"; exit; } } if ($virtualization === 'xen') { if (!char_search_beg($osversion, "fedora-9") && !char_search_beg($osversion, "centos-5") && !char_search_beg($osversion, "rhel-5")) { print "Xen is only supported on Fedora 9 or CentOS 5\n"; exit; } } if ($virtualization === 'openvz') { if (!char_search_beg($osversion, "centos") && !char_search_beg($osversion, "rhel")) { print "OpenVZ is only supported on CentOS 4/5, RHEL 4/5 distributions\n"; exit; } } /* $file = "http://download.lxlabs.com/download/update/$osversion/headers/header.info"; $cont = @file_get_contents($file); if (!$cont) { print("This OS is not suported at this moment.... Please contact our Support personnel\n"); exit; } */ //install_rhn_sources($osversion); install_yum_repo($osversion); exec("groupadd lxlabs"); exec("useradd lxlabs -g lxlabs -s '/sbin/nologin'"); $list = array("which", "lxlighttpd", "zip", "unzip", "lxphp", "lxzend", "curl"); if ($installtype !== 'slave') { $mysql = array("mysql", "mysql-server", "mysqlclient*"); $list = array_merge($list, $mysql); } while (true) { run_package_installer($list); if (file_exists("/usr/local/lxlabs/ext/php/php")) { break; } else { print "Yum Gave Error... Trying Again...\n"; } } if ($installtype !== 'slave') { check_default_mysql($dbroot, $dbpass); } $xenfailed = false; exec("killall wget"); system("mkdir -p /usr/local/lxlabs/hypervm"); chdir("/usr/local/lxlabs/hypervm"); system("mkdir -p /usr/local/lxlabs/hypervm/log"); @unlink("hypervm-current.zip"); if (file_exists('.git')) { echo 'Development GIT version found. Skipping download sources.'; } else { system("wget http://download.lxcenter.org/download/hypervm/production/hypervm/hypervm-current.zip"); } system("unzip -oq hypervm-current.zip", $return); if ($return) { print "Unzipping the core Failed.. Most likely it is corrupted. Please contact the support personnel\n"; exit; } unlink("hypervm-current.zip"); system("chown -R lxlabs:lxlabs /usr/local/lxlabs/"); $dir_name = dirname(__FILE__); fix_network_forwarding(); system("mkdir -p /usr/local/lxlabs/hypervm/etc/"); @unlink("/usr/local/lxlabs/hypervm/etc/install_xen"); @unlink("/usr/local/lxlabs/hypervm/etc/install_openvz"); touch("/usr/local/lxlabs/hypervm/etc/install_{$virtualization}"); chdir("/usr/local/lxlabs/hypervm/httpdocs/"); system("/bin/cp /usr/local/lxlabs/hypervm/httpdocs/htmllib/filecore/php.ini /usr/local/lxlabs/ext/php/etc/php.ini"); system("/usr/local/lxlabs/ext/php/php ../bin/install/create.php --install-type={$installtype} --db-rootuser={$dbroot} --db-rootpassword={$dbpass}"); //@ unlink("/usr/local/lxlabs/lxadmin/bin/install/create.php"); system("chmod 755 /etc/init.d/hypervm"); system("/sbin/chkconfig hypervm on"); system("/sbin/chkconfig iptables off"); $skiparg = null; if ($skipostemplate) { $skiparg = "--skipostemplate=true"; } if ($virtualization === "NONE") { print "No Virtualization has been chosen. It is assumed that it is an existing installation\n"; } else { print "Virtualization is {$virtualization}. Installing {$virtualization} Components\n"; } // // call script to install base OS templates and OpenVZ repo // passthru("/usr/local/lxlabs/ext/php/php ../bin/install/virt-install.php --install-type={$installtype} --virtualization-type={$virtualization} {$skiparg}"); print "Congratuations. HyperVM has been installed succesfully on your server as {$installtype} \n"; if ($installtype === 'master') { print "You can connect to the server at https://<ip-address>:8887 or http://<ip-address>:8888\n"; print "Please note that first is secure ssl connection, while the second is normal one.\n"; print "The login and password are 'admin' 'admin'. After Logging in, you will have to change your password to something more secure.\n"; print "Thanks for choosing HyperVM to manage your Server, and allowing us to be of service.\n"; } else { print "You should open the port 8889 on this server, since this is used for the communication between master and slave.\n"; print "To access this slave, go admin->slaves->add slave, give the ip/machine name of this server. The password is 'admin'. The slave will appear in the list of slaves, and you can access it just like you access localhost.\n"; } if ($virtualization === 'openvz') { print "\n***There is one more step you have to do to make this complete. Open /etc/grub.conf, and change the 'default=1' line to 'default=0', and reboot this machine. You will be rebooted into the OpenVZ kernel and will able to manage VPSes from the HyperVM interface.\n"; } else { if ($virtualization === 'xen') { print "\n**** You will have to reboot for the XEN kernel to take effect. Once rebooted, you will able to manage XEN virtual machines using the HyperVM interface.\n"; } } print "\n\nExtra note:\n"; print "To install extra XEN and/or OpenVZ OS templates please run:\n\n"; print "sh /script/install-extra-ostemplates\n"; print "\nThese template are left out the install process to speed up the HyperVM installation. By default only CentOS 5 and HostInBox(Kloxo) OS templates are installed."; }
function lxins_main() { global $argv, $downloadserver; $opt = parse_opt($argv); $dir_name = dirname(__FILE__); $installtype = $opt['install-type']; $dbroot = isset($opt['db-rootuser']) ? $opt['db-rootuser'] : "******"; $dbpass = isset($opt['db-rootpassword']) ? $opt['db-rootpassword'] : ""; $osversion = find_os_version(); $arch = `arch`; $arch = trim($arch); if (!char_search_beg($osversion, "centos") && !char_search_beg($osversion, "rhel")) { print "Kloxo is only supported on CentOS 5 and RHEL 5\n"; exit; } if (file_exists("/usr/local/lxlabs/kloxo")) { // Ask Reinstall if (get_yes_no("Kloxo seems already installed do you wish to continue?") == 'n') { print "Installation Aborted.\n"; exit; } } else { // Ask License if (get_yes_no("Kloxo is using AGPL-V3.0 License, do you agree with the terms?") == 'n') { print "You did not agree to the AGPL-V3.0 license terms.\n"; print "Installation aborted.\n\n"; exit; } else { print "Installing Kloxo = YES\n\n"; } } // Ask for InstallApp print "InstallApp: PHP Applications like PHPBB, WordPress, Joomla etc\n"; print "When you choose Yes, be aware of downloading about 350Mb of data!\n"; if (get_yes_no("Do you want to install the InstallAPP sotfware?") == 'n') { print "Installing InstallApp = NO\n"; print "You can install it later with /script/installapp-update\n\n"; $installappinst = false; } else { print "Installing InstallApp = YES\n\n"; $installappinst = true; } print "Adding System users and groups (nouser, nogroup and lxlabs, lxlabs)\n"; system("groupadd nogroup"); system("useradd nouser -g nogroup -s '/sbin/nologin'"); system("groupadd lxlabs"); system("useradd lxlabs -g lxlabs -s '/sbin/nologin'"); print "Installing LxCenter yum repository for updates\n"; install_yum_repo($osversion); $packages = array("sendmail", "sendmail-cf", "sendmail-doc", "sendmail-devel", "exim", "vsftpd", "postfix", "vpopmail", "qmail", "lxphp", "lxzend", "pure-ftpd", "imap"); $list = implode(" ", $packages); print "Removing packages {$list}...\n"; foreach ($packages as $package) { exec("rpm -e --nodeps {$package} > /dev/null 2>&1"); } $packages = array("php-mbstring", "php-mysql", "which", "gcc-c++", "php-imap", "php-pear", "php-devel", "lxlighttpd", "httpd", "mod_ssl", "zip", "unzip", "lxphp", "lxzend", "mysql", "mysql-server", "curl", "autoconf", "automake", "libtool", "bogofilter", "gcc", "cpp", "openssl", "pure-ftpd", "yum-protectbase"); $list = implode(" ", $packages); while (true) { print "Installing packages {$list}...\n"; system("PATH=\$PATH:/usr/sbin yum -y install {$list}", $return_value); if (file_exists("/usr/local/lxlabs/ext/php/php")) { break; } else { print "Yum Gave Error... Trying Again...\n"; } } print "Prepare installation directory\n"; system("mkdir -p /usr/local/lxlabs/kloxo"); chdir("/usr/local/lxlabs/kloxo"); system("mkdir -p /usr/local/lxlabs/kloxo/log"); @unlink("kloxo-current.zip"); print "Downloading latest Kloxo release\n"; system("wget " . $downloadserver . "download/kloxo/production/kloxo/kloxo-current.zip"); print "\n\nInstalling Kloxo.....\n\n"; system("unzip -oq kloxo-current.zip", $return); if ($return) { print "Unzipping the core Failed.. Most likely it is corrupted. Report it at http://forum.lxcenter.org/\n"; exit; } unlink("kloxo-current.zip"); system("chown -R lxlabs:lxlabs /usr/local/lxlabs/"); chdir("/usr/local/lxlabs/kloxo/httpdocs/"); system("service mysqld start"); if ($installtype !== 'slave') { check_default_mysql($dbroot, $dbpass); } $mypass = password_gen(); print "Prepare defaults and configurations...\n"; system("/usr/local/lxlabs/ext/php/php {$dir_name}/installall.php"); our_file_put_contents("/etc/sysconfig/spamassassin", "SPAMDOPTIONS=\" -v -d -p 783 -u lxpopuser\""); print "Creating Vpopmail database...\n"; system("sh {$dir_name}/vpop.sh {$dbroot} \"{$dbpass}\" lxpopuser {$mypass}"); system("chmod -R 755 /var/log/httpd/"); system("chmod -R 755 /var/log/httpd/fpcgisock >/dev/null 2>&1"); system("mkdir -p /var/log/kloxo/"); system("mkdir -p /var/log/news"); system("ln -sf /var/qmail/bin/sendmail /usr/sbin/sendmail"); system("ln -sf /var/qmail/bin/sendmail /usr/lib/sendmail"); system("echo `hostname` > /var/qmail/control/me"); system("service qmail restart >/dev/null 2>&1 &"); system("service courier-imap restart >/dev/null 2>&1 &"); $dbfile = "/home/kloxo/httpd/webmail/horde/scripts/sql/create.mysql.sql"; if (file_exists($dbfile)) { if ($dbpass == "") { system("mysql -u {$dbroot} <{$dbfile}"); } else { system("mysql -u {$dbroot} -p{$dbpass} <{$dbfile}"); } } system("mkdir -p /home/kloxo/httpd"); chdir("/home/kloxo/httpd"); @unlink("skeleton-disable.zip"); system("chown -R lxlabs:lxlabs /home/kloxo/httpd"); system("/etc/init.d/kloxo restart >/dev/null 2>&1 &"); chdir("/usr/local/lxlabs/kloxo/httpdocs/"); system("/usr/local/lxlabs/ext/php/php /usr/local/lxlabs/kloxo/bin/install/create.php --install-type={$installtype} --db-rootuser={$dbroot} --db-rootpassword={$dbpass}"); system("/usr/local/lxlabs/ext/php/php /usr/local/lxlabs/kloxo/bin/misc/secure-webmail-mysql.phps"); system("/bin/rm /usr/local/lxlabs/kloxo/bin/misc/secure-webmail-mysql.phps"); system("/script/centos5-postpostupgrade"); if ($installappinst) { system("/script/installapp-update"); // First run (gets installappdata) system("/script/installapp-update"); // Second run (gets applications) } print "Congratulations. Kloxo has been installed succesfully on your server as {$installtype} \n"; if ($installtype === 'master') { print "You can connect to the server at https://<ip-address>:7777 or http://<ip-address>:7778\n"; print "Please note that first is secure ssl connection, while the second is normal one.\n"; print "The login and password are 'admin' 'admin'. After Logging in, you will have to change your password to something more secure\n"; print "We hope you will find managing your hosting with Kloxo refreshingly pleasurable, and also we wish you all the success on your hosting venture\n"; print "Thanks for choosing Kloxo to manage your hosting, and allowing us to be of service\n"; } else { print "You should open the port 7779 on this server, since this is used for the communication between master and slave\n"; print "To access this slave, to go admin->servers->add server, give the ip/machine name of this server. The password is 'admin'. The slave will appear in the list of slaves, and you can access it just like you access localhost\n\n"; } }
function lxins_main() { global $argv, $downloadserver; $opt = parse_opt($argv); $dir_name = dirname(__FILE__); $installtype = $opt['install-type']; $installversion = isset($opt['version']) ? $opt['version'] : null; $dbroot = "root"; $dbpass = ""; $osversion = find_os_version(); $arch = `arch`; $arch = trim($arch); //--- Create temporary flags for install system("mkdir -p /var/cache/kloxo/"); system("echo 1 > /var/cache/kloxo/kloxo-install-firsttime.flg"); if (!char_search_beg($osversion, "centos") && !char_search_beg($osversion, "rhel")) { print "Kloxo is only supported on CentOS 5 and RHEL 5\n"; exit; } if (file_exists("/usr/local/lxlabs/kloxo")) { //--- Ask Reinstall if (get_yes_no("Kloxo seems already installed do you wish to continue?") == 'n') { print "Installation Aborted.\n"; exit; } } else { //--- Ask License if (get_yes_no("Kloxo is using AGPL-V3.0 License, do you agree with the terms?") == 'n') { print "You did not agree to the AGPL-V3.0 license terms.\n"; print "Installation aborted.\n\n"; exit; } else { print "Installing Kloxo = YES\n\n"; } } //--- Ask for InstallApp print "InstallApp: PHP Applications like PHPBB, WordPress, Joomla etc\n"; print "When you choose Yes, be aware of downloading about 350Mb of data!\n"; if (get_yes_no("Do you want to install the InstallAPP sotfware?") == 'n') { print "Installing InstallApp = NO\n"; print "You can install it later with /script/installapp-update\n\n"; $installappinst = false; //--- Temporary flag so InstallApp won't be installed system("echo 1 > /var/cache/kloxo/kloxo-install-disableinstallapp.flg"); } else { print "Installing InstallApp = YES\n\n"; $installappinst = true; } print "Adding System users and groups (nouser, nogroup and lxlabs, lxlabs)\n"; system("groupadd nogroup"); system("useradd nouser -g nogroup -s '/sbin/nologin'"); system("groupadd lxlabs"); system("useradd lxlabs -g lxlabs -s '/sbin/nologin'"); print "Installing LxCenter yum repository for updates\n"; install_yum_repo($osversion); $packages = array("sendmail", "sendmail-cf", "sendmail-doc", "sendmail-devel", "exim", "vsftpd", "postfix", "vpopmail", "qmail", "lxphp", "lxzend", "pure-ftpd", "imap"); $list = implode(" ", $packages); print "Removing packages {$list}...\n"; foreach ($packages as $package) { exec("rpm -e --nodeps {$package} > /dev/null 2>&1"); } $packages = array("php-mbstring", "php-mysql", "which", "gcc-c++", "php-imap", "php-pear", "php-devel", "lxlighttpd", "httpd", "mod_ssl", "zip", "unzip", "lxphp", "lxzend", "mysql", "mysql-server", "curl", "autoconf", "automake", "libtool", "bogofilter", "gcc", "cpp", "openssl", "pure-ftpd", "yum-protectbase"); $list = implode(" ", $packages); while (true) { print "Installing packages {$list}...\n"; system("PATH=\$PATH:/usr/sbin yum -y install {$list}", $return_value); if (file_exists("/usr/local/lxlabs/ext/php/php")) { break; } else { print "YUM Gave Error... Trying Again...\n"; if (get_yes_no("Try again?") == 'n') { print "- EXIT: Fix the problem and install Kloxo again.\n"; exit; } } } print "Prepare installation directory\n"; system("mkdir -p /usr/local/lxlabs/kloxo"); if ($installversion) { if (substr($installversion, 0, 4) == '6.0.') { print "\n*** Need additional files installing {$installversion} (less then 6.1.0)***\n"; print " Run 'sh /script/kloxo-installer.sh' (without argument)\n\n"; exit; } chdir("/usr/local/lxlabs/kloxo"); system("mkdir -p /usr/local/lxlabs/kloxo/log"); @unlink("/usr/local/lxlabs/kloxo/kloxo-current.zip"); print "Downloading Kloxo {$installversion} release\n"; system("wget {$downloadserver}download/kloxo/production/kloxo/kloxo-{$installversion}.zip"); system("mv -f ./kloxo-{$installversion}.zip ./kloxo-current.zip"); } else { if (file_exists("../kloxo-current.zip")) { //--- Install from local file if exists @unlink("/usr/local/lxlabs/kloxo/kloxo-current.zip"); print "Local copying Kloxo release\n"; system("mkdir -p /var/cache/kloxo"); system("cp -rf ../kloxo-current.zip /usr/local/lxlabs/kloxo"); //--- The first step - Remove packages system("rm -f /var/cache/kloxo/kloxo-thirdparty*.zip"); system("rm -f /var/cache/kloxo/lxawstats*.tar.gz"); system("rm -f /var/cache/kloxo/lxwebmail*.tar.gz"); system("rm -f /var/cache/kloxo/kloxophpsixfour*.tar.gz"); system("rm -f /var/cache/kloxo/kloxophp*.tar.gz"); system("rm -f /var/cache/kloxo/*-version"); //--- The second step - copy from packer script if exist system("cp -rf ../kloxo-thirdparty*.zip /var/cache/kloxo"); system("cp -rf ../lxawstats*.tar.gz /var/cache/kloxo"); system("cp -rf ../lxwebmail*.tar.gz /var/cache/kloxo"); system("cp -rf ../kloxo-thirdparty-version /var/cache/kloxo"); system("cp -rf ../lxawstats-version /var/cache/kloxo"); system("cp -rf ../lxwebmail-version /var/cache/kloxo"); if (file_exists("/usr/lib64")) { if (!is_link("/usr/lib/kloxophp")) { system("rm -rf /usr/lib/kloxophp"); } system("cp -rf ../kloxophpsixfour*.tar.gz /var/cache/kloxo"); system("cp -rf ../kloxophpsixfour-version /var/cache/kloxo"); system("mkdir -p /usr/lib64/kloxophp"); system("ln -s /usr/lib64/kloxophp /usr/lib/kloxophp"); system("mkdir -p /usr/lib64/php"); system("ln -s /usr/lib64/php /usr/lib/php"); system("mkdir -p /usr/lib64/httpd"); system("ln -s /usr/lib64/httpd /usr/lib/httpd"); system("mkdir -p /usr/lib64/lighttpd"); system("ln -s /usr/lib64/lighttpd /usr/lib/lighttpd"); } else { //--- Needs version checks in the future system("rename ../kloxophpsixfour ../_kloxophpsixfour ../kloxophpsixfour*"); system("cp -rf ../kloxophp*.tar.gz /var/cache/kloxo"); system("rename ../_kloxophpsixfour ../kloxophpsixfour ../_kloxophpsixfour*"); system("cp -rf ../kloxophp-version /var/cache/kloxo"); } chdir("/usr/local/lxlabs/kloxo"); system("mkdir -p /usr/local/lxlabs/kloxo/log"); } else { chdir("/usr/local/lxlabs/kloxo"); system("mkdir -p /usr/local/lxlabs/kloxo/log"); @unlink("/usr/local/lxlabs/kloxo/kloxo-current.zip"); print "Downloading latest Kloxo release\n"; system("wget {$downloadserver}download/kloxo/production/kloxo/kloxo-current.zip"); } } print "\n\nInstalling Kloxo.....\n\n"; system("unzip -oq kloxo-current.zip", $return); if ($return) { print "Unzipping the core Failed.. Most likely it is corrupted. Report it at http://forum.lxcenter.org/\n"; exit; } unlink("kloxo-current.zip"); system("chown -R lxlabs:lxlabs /usr/local/lxlabs/"); chdir("/usr/local/lxlabs/kloxo/httpdocs/"); system("service mysqld start"); if ($installtype !== 'slave') { check_default_mysql($dbroot, $dbpass); } $mypass = password_gen(); print "Prepare defaults and configurations...\n"; install_main(); file_put_contents("/etc/sysconfig/spamassassin", "SPAMDOPTIONS=\" -v -d -p 783 -u lxpopuser\""); print "\nCreating Vpopmail database...\n"; system("sh {$dir_name}/kloxo-linux/vpop.sh {$dbroot} \"{$dbpass}\" lxpopuser {$mypass}"); system("chmod -R 755 /var/log/httpd/"); system("chmod -R 755 /var/log/httpd/fpcgisock >/dev/null 2>&1"); system("mkdir -p /var/log/kloxo/"); system("mkdir -p /var/log/news"); system("ln -sf /var/qmail/bin/sendmail /usr/sbin/sendmail"); system("ln -sf /var/qmail/bin/sendmail /usr/lib/sendmail"); system("echo `hostname` > /var/qmail/control/me"); system("service qmail restart >/dev/null 2>&1 &"); system("service courier-imap restart >/dev/null 2>&1 &"); print "Prepare /home/kloxo/httpd...\n"; system("mkdir -p /home/kloxo/httpd"); chdir("/home/kloxo/httpd"); @unlink("skeleton-disable.zip"); system("chown -R lxlabs:lxlabs /home/kloxo/httpd"); system("/etc/init.d/kloxo restart >/dev/null 2>&1 &"); chdir("/usr/local/lxlabs/kloxo/httpdocs/"); system("/usr/local/lxlabs/ext/php/php /usr/local/lxlabs/kloxo/bin/install/create.php --install-type={$installtype} --db-rootuser={$dbroot} --db-rootpassword={$dbpass}"); if ($installappinst) { print "Install InstallApp...\n"; system("/script/installapp-update"); // First run (gets installappdata) system("/script/installapp-update"); // Second run (gets applications) } //--- Remove all temporary flags because the end of install print "\nRemove Kloxo install flags...\n"; system("rm -rf /var/cache/kloxo/*-version"); system("rm -rf /var/cache/kloxo/kloxo-install-*.flg"); //--- Prevent mysql socket problem (especially on 64bit system) if (!file_exists("/var/lib/mysql/mysql.sock")) { print "Create mysql.sock...\n"; system("/etc/init.d/mysqld stop"); system("mksock /var/lib/mysql/mysql.sock"); system("/etc/init.d/mysqld start"); } //--- Prevent for Mysql not start after reboot for fresh kloxo slave install print "Setting Mysql for always running after reboot and restart now...\n"; system("chkconfig mysqld on"); system("service mysqld restart"); //--- Fix for old thirdparty version if (!file_exists("/usr/local/lxlabs/kloxo/httpdocs/thirdparty")) { system("cp -rf /var/cache/kloxo/kloxo-thirdparty*.zip /usr/local/lxlabs/kloxo"); system("cd /usr/local/lxlabs/kloxo; unzip -oq kloxo-thirdparty*.zip"); system("chown -R lxlabs:lxlabs /usr/local/lxlabs/kloxo/httpdocs/thirdparty"); system("chown -R lxlabs:lxlabs /usr/local/lxlabs/kloxo/httpdocs/htmllib"); system("rm -f /usr/local/lxlabs/kloxo/kloxo-thirdparty*.zip"); } //--- Set ownership for Kloxo httpdocs dir system("chown -R lxlabs:lxlabs /usr/local/lxlabs/kloxo/httpdocs"); print "\nCongratulations. Kloxo has been installed succesfully on your server as {$installtype}\n\n"; if ($installtype === 'master') { print "You can connect to the server at:\n"; print "\thttps://<ip-address>:7777 - secure ssl connection, or\n"; print "\thttp://<ip-address>:7778 - normal one.\n\n"; print "The login and password are 'admin' 'admin'. After Logging in, you will have to\n"; print "change your password to something more secure\n\n"; print "We hope you will find managing your hosting with Kloxo\n"; print "refreshingly pleasurable, and also we wish you all the success\n"; print "on your hosting venture\n\n"; print "Thanks for choosing Kloxo to manage your hosting, and allowing us to be of\n"; print "service\n"; } else { print "You should open the port 7779 on this server, since this is used for\n"; print "the communication between master and slave\n\n"; print "To access this slave, to go admin->servers->add server,\n"; print "give the ip/machine name of this server. The password is 'admin'.\n\n"; print "The slave will appear in the list of slaves, and you can access it\n"; print "just like you access localhost\n\n"; } print "\n"; print "---------------------------------------------\n"; }
function lxins_main() { global $argv; $opt = parse_opt($argv); $installtype = $opt['install-type']; $highmem = false; if (isset($opt['has-highmem'])) { $highmem = true; } if (!isset($opt['virtualization-type'])) { print "Need virtualization type --virtualization-type=xen/openvz/NONE\n"; exit; } else { $virtualization = $opt['virtualization-type']; } $skipostemplate = false; if (isset($opt['skip-ostemplate'])) { $skipostemplate = true; } if (array_search($virtualization, array("xen", "openvz", "NONE")) === false) { print "Only xen/openvz/NONE are curently supported\n"; exit; } $dbroot = isset($opt['db-rootuser']) ? $opt['db-rootuser'] : "******"; $dbpass = isset($opt['db-rootpassword']) ? $opt['db-rootpassword'] : ""; $osversion = find_os_version(); if (file_exists("/usr/local/lxlabs/hypervm")) { print "HyperVM is installed do you wish to continue?(No/Yes):\n"; flush(); $stdin = fopen('php://stdin', 'r'); $argq = fread($stdin, 5); $arg = trim($argq); if (!($arg == 'y' || $arg == 'yes' || $arg == 'Yes' || $arg == 'Y' || $arg == 'YES')) { print "Exiting.....\n"; exit; } } if ($virtualization === 'xen') { if (!char_search_beg($osversion, "centos-6") && !char_search_beg($osversion, "centos-5") && !char_search_beg($osversion, "rhel-5") && !char_search_beg($osversion, "rhel-6")) { print "Xen is only supported on CentOS 5 and CentOS 6 distributions with HyperVM as management system\n"; exit; } } if ($virtualization === 'openvz') { if (!char_search_beg($osversion, "centos-6") && !char_search_beg($osversion, "centos-5") && !char_search_beg($osversion, "rhel-5") && !char_search_beg($osversion, "rhel-6")) { print "OpenVZ is only supported on CentOS 5 and CentOS 6 distributions with HyperVM as management system\n"; exit; } } //install_rhn_sources($osversion); install_yum_repo($osversion); exec("groupadd lxlabs"); exec("useradd lxlabs -g lxlabs -s '/sbin/nologin'"); // New since HyperVM 2.1.0 hypervm-core-php yum-plugin-replace $list = array("which", "lxlighttpd", "zip", "unzip", "hypervm-core-php", "curl", "yum-plugin-replace"); /* Because our builder is on CentOS-6 the binaries like closeallinput are linked against libssl.so.10 * To keep backward compatibility with RHEL-5 / CentOS-5 systems HyperVM-NG provides openssl10 package */ if (char_search_beg($osversion, "centos-5") && char_search_beg($osversion, "rhel-5")) { $libssl = array("openssl10"); $list = array_merge($list, $libssl); } if ($installtype !== 'slave') { $mysql = array("mysql", "mysql-server"); $list = array_merge($list, $mysql); } // When installing development version, don't loop yum (.git found) if (!file_exists('/usr/local/lxlabs/.git')) { while (true) { run_package_installer($list); if (file_exists("/usr/local/lxlabs/ext/php/php")) { break; } else { // This can be a endless loop, needs another check! print "Yum Gave Error... Trying Again...\n"; } } } else { run_package_installer($list); } if ($installtype !== 'slave') { check_default_mysql($dbroot, $dbpass); } $xenfailed = false; // why is that? // exec("killall wget"); system("mkdir -p /usr/local/lxlabs/hypervm"); chdir("/usr/local/lxlabs/hypervm"); system("mkdir -p /usr/local/lxlabs/hypervm/log"); // Prevents deleting the development package if (!file_exists('/usr/local/lxlabs/.git')) { @unlink("hypervm-current.zip"); } if (file_exists('/usr/local/lxlabs/.git')) { echo 'Development GIT version found. Skipping download from HyperVM-NG.'; } else { system("wget http://download.hypervm-ng.org/download/hypervm-ng/production/hypervm-current.zip"); } system("unzip -oq hypervm-current.zip", $return); if ($return) { print "\nUnzipping the core Failed.. Most likely it is corrupted. Please contact the support personnel\n"; exit; } unlink("hypervm-current.zip"); system("chown -R lxlabs:lxlabs /usr/local/lxlabs/"); $dir_name = dirname(__FILE__); fix_network_forwarding(); system("mkdir -p /usr/local/lxlabs/hypervm/etc/"); @unlink("/usr/local/lxlabs/hypervm/etc/install_xen"); @unlink("/usr/local/lxlabs/hypervm/etc/install_openvz"); touch("/usr/local/lxlabs/hypervm/etc/install_{$virtualization}"); chdir("/usr/local/lxlabs/hypervm/httpdocs/"); system("/bin/cp /usr/local/lxlabs/hypervm/httpdocs/htmllib/filecore/php.ini /usr/local/lxlabs/ext/php/etc/php.ini"); system("/usr/local/lxlabs/ext/php/php ../bin/install/create.php --install-type={$installtype} --db-rootuser={$dbroot} --db-rootpassword={$dbpass}"); system("chmod 755 /etc/init.d/hypervm"); system("/sbin/chkconfig hypervm on"); system("/sbin/chkconfig iptables off"); $skiparg = null; if ($skipostemplate) { $skiparg = "--skipostemplate=true"; } if ($virtualization === "NONE") { print "No Virtualization has been chosen. It is assumed that it is an existing installation\n"; } else { print "Virtualization is {$virtualization}. Installing {$virtualization} Components\n"; } // // call script to install base OS templates and OpenVZ repo // passthru("/usr/local/lxlabs/ext/php/php ../bin/install/virt-install.php --install-type={$installtype} --virtualization-type={$virtualization} {$skiparg}"); echo smart_wordwrap("\n\n\nCongratulations!.\nHyperVM has been installed successfully on your server as {$installtype} \n"); if ($installtype === 'master') { echo smart_wordwrap("\nYou can browse to the administration interface at:\n"); echo smart_wordwrap("Secure - https://<ip-address>:8887\n"); echo smart_wordwrap("Normal - http://<ip-address>:8888\n\n"); echo smart_wordwrap("The login and password are 'admin' 'admin'. After Logging in, you will have to change your password to something more secure.\n"); echo smart_wordwrap("Thanks for choosing HyperVM to manage your Server, and allowing us to be of service.\n"); } else { echo smart_wordwrap("You should open the port 8889 on this server, since this is used for the communication between master and slave.\n"); echo smart_wordwrap("To access this slave, go admin->slaves->add slave, give the ip/machine name of this server. The password is 'admin'. The slave will appear in the list of slaves, and you can access it just like you access localhost.\n"); } if ($virtualization === 'openvz') { echo smart_wordwrap("\n***There is one more step you have to do to make this complete. Open /etc/grub.conf, and change the 'default=1' line to 'default=0', and reboot this machine. You will be rebooted into the OpenVZ kernel and will able to manage VPSes from the HyperVM interface.\n"); } else { if ($virtualization === 'xen') { echo smart_wordwrap("\n**** You will have to reboot for the XEN kernel to take effect. Once rebooted, you will able to manage XEN virtual machines using the HyperVM interface.\n"); } } echo smart_wordwrap("\n\nExtra note:\n"); echo smart_wordwrap("To install extra XEN and/or OpenVZ OS templates please run:\n\n"); echo smart_wordwrap("sh /script/install-extra-ostemplates\n"); echo smart_wordwrap("\nThese templates are left out the install process to speed up the HyperVM installation. By default only CentOS 5 and HostInBox(Kloxo) OS templates are installed.\n\n"); echo smart_wordwrap("\n#!# Reboot your system to boot into the right kernel #!#\n\n"); if (file_exists('/usr/local/lxlabs/.git')) { echo smart_wordwrap("Remember, you installed a Development version. Do not use it on production servers!\n\n"); } }