CentOS安装OpenVZ并配置OpenVZ Web Panel

by admin

主机百科 / 2017-11-13 01:17

注意:本教程的方法建立在基于KVM构架的VPS或独立服务器上。
前提准备:VPS或服务器安装CentOS 6及以上系统。update系统,并安装vim编辑器。

1、关闭selinux并配置iptables(重要)

vim /etc/sysconfig/selinux   

添加内容:

SELINUX=disabled   

保存。
开放iptables的3000端口:

/sbin/iptables -I INPUT -p tcp --dport 3000 -j ACCEPT   /etc/rc.d/init.d/iptables save   /etc/init.d/iptables restart   

2、安装OpenVZ

配置YUM源

cd /etc/yum.repos.d   wget http://download.openvz.org/openvz.repo   rpm --import  http://download.openvz.org/RPM-GPG-Key-OpenVZ   yum update -y   

安装OpenVZ内核和vzctl、vzquota等工具

yum install  vzkernel   yum install vzctl vzquota   

配置OS内核参数,进入/etc/sysctl.conf文件,修改下面两个参数

为了让VE访问外部网络,需要对IP进行转发

net.ipv4.ip_forward = 1   

主要是控制对kernel系统信息的debug功能

kernel.sysrq = 1   

使上面的配置文件生效

modprobe bridge   lsmod|grep bridge   

现在reboot,重启后检查VZ服务是否运行

chkconfig --list vz   

返回如下信息则代表正在运行

vz                0:off 1:off 2:on 3:on 4:on 5:on 6:off   

启动之前可以先检查一下OpenVZ服务时候已经启动了

service vz status    service vz start    

3、安装OpenVZ Web Panel

wget -O - https://raw.githubusercontent.com/sibprogrammer/owp/master/installer/ai.sh | sh   

安装结束后,使用如下信息登录控制面板

<your-ip>:3000   

4、添加hw-daemon.rb内容

vim /opt/ovz-web-panel/utils/hw-daemon/hw-daemon.rb   

添加如下内容:

#!/usr/bin/env ruby      require 'webrick'   require 'xmlrpc/server.rb'      # workaround for clients with incorrect DNS records   Socket.do_not_reverse_lookup = true      ENV['PATH'] += ':/usr/sbin'      DAEMON_VERSION = '1.3'   CURRENT_DIR = File.expand_path(File.dirname(__FILE__)) + '/'   CONFIG_FILE = CURRENT_DIR + 'hw-daemon.ini'   PID_FILE = CURRENT_DIR + 'hw-daemon.pid'   LOG_FILE = CURRENT_DIR + 'hw-daemon.log'   SSL_CERT_FILE = CURRENT_DIR + "/certs/server.crt"   SSL_PKEY_FILE = CURRENT_DIR + "/certs/server.key"      $SERVER_ADDRESS = "0.0.0.0"   $SERVER_PORT = 7767   $AUTH_KEY = ""   $DEBUG = false   $LOG = WEBrick::Log.new(LOG_FILE)      $SSL_ENABLE = false   $SSL_CERT = ''   $SSL_PKEY = ''      $THREADS = {}      class HwDaemonApiHandler < XMLRPC::WEBrickServlet            def version        DAEMON_VERSION     end          def exec(command, args = '')       output = `#{command} #{args} 2>&1`       exit_code = $?       $LOG.debug("Exec command: #{command} #{args}; code: #{exit_code}; output:n#{output}")       { 'exit_code' => exit_code >> 8, 'output' => output }     end          def job(command, args = '')       job_id = generate_id              t = Thread.new do         result = self.exec(command, args)         $THREADS[job_id]['result'] = result       end                  $THREADS[job_id] = { 'thread' => t }              { 'job_id' => job_id }     end          def job_status(job_id)       found = $THREADS.has_key?(job_id)       result = ''              if found         alive = $THREADS[job_id]['thread'].alive?         result = $THREADS[job_id]['result'] unless alive       end              { 'found' => found, 'alive' => alive, 'result' => result }     end          def write_file(filename, content)       File.open(filename, 'w') { |file| file.write(content) }       $LOG.debug("Writing file: #{filename}")     end          def service(request, response)       WEBrick::HTTPAuth.basic_auth(request, response, '') do |user, password|         user == 'admin' && password == $AUTH_KEY       end               super     end          def handle(method, *params)       $LOG.debug("Execute method: #{method}")           super     end          private          def generate_id       symbols = [('0'..'9'),('a'..'f')].map{ |i| i.to_a }.flatten       (1..32).map{ symbols[rand(symbols.length)] }.join     end        end      class HwDaemonUtil          def initialize       check_environment              if (0 == ARGV.size)         do_help       end          load_config       $LOG.level = WEBrick::Log::DEBUG if $DEBUG          if $SSL_ENABLE         require 'webrick/https'         $SSL_CERT = OpenSSL::X509::Certificate.new(File.open(SSL_CERT_FILE).read) if File.readable?(SSL_CERT_FILE)         $SSL_PKEY = OpenSSL::PKey::RSA.new(File.open(SSL_PKEY_FILE).read) if File.readable?(SSL_PKEY_FILE)       end              command = ARGV[0]          case command         when 'start'           do_start         when 'stop'           do_stop         when 'restart'           do_restart         when 'status'           do_status         else           do_help       end     end          def check_environment       if RUBY_VERSION !~ /1.8..+/         puts "Ruby #{RUBY_VERSION} is not supported."         exit(1)       end              if !File.exists?('/proc/vz/version')         puts "Daemon should be run on the server with OpenVZ."         exit(1)       end     end          def do_start       puts "Starting the daemon..."              servlet = HwDaemonApiHandler.new       servlet.add_handler("hwDaemon", servlet)          servlet.set_default_handler do |name, *args|         raise XMLRPC::FaultException.new(-99, "Method #{name} missing or wrong number of parameters!")       end              server = WEBrick::HTTPServer.new(         :Port => $SERVER_PORT,         :BindAddress => $SERVER_ADDRESS,         :Logger => $LOG,         :SSLEnable => $SSL_ENABLE,         :SSLVerifyClient => ($SSL_ENABLE ? OpenSSL::SSL::VERIFY_NONE : nil),         :SSLCertificate => $SSL_CERT,         :SSLPrivateKey => $SSL_PKEY,         :SSLCertName => [ [ "CN", WEBrick::Utils::getservername ] ]       )              server.mount('/xmlrpc', servlet)              ['INT', 'TERM'].each { |signal| trap(signal) { server.shutdown } }          WEBrick::Daemon.start do         write_pid_file         server.start         delete_pid_file       end     end          def do_stop       if (File.exists?(PID_FILE))         pid = File.read(PID_FILE)         $LOG.debug("Killing process with PID #{pid.to_i}")         Process.kill('TERM', pid.to_i)       end              puts "Daemon was stopped."     end          def do_restart       do_stop       do_start     end          def do_status       if (File.exists?(PID_FILE))         puts "Daemon is running."       else         puts "Daemon is stopped."         exit(1)       end     end          def do_help       puts "Usage: ruby hw-daemon.rb (start|stop|restart|status|help)"       exit(1)     end          def load_config           file = File.new(CONFIG_FILE, 'r')              while (line = file.gets)         key, value = line.split('=', 2).each { |v| v.strip! }                  case key           when 'address'             $SERVER_ADDRESS = value           when 'port'             $SERVER_PORT = value           when 'key'             $AUTH_KEY = value           when 'ssl'             $SSL_ENABLE = true if value == 'on'           when 'debug'             $DEBUG = true if value == 'on'                   end       end              file.close     end          def write_pid_file       open(PID_FILE, "w") { |file| file.write(Process.pid) }      end          def delete_pid_file       if File.exists?(PID_FILE)         File.unlink PID_FILE       end     end        end      HwDaemonUtil.new   

via:http://www.facebooksx.com/centosopenvzopenvzwebpanel.html
挺好的实用教程,怕博主放弃,置于此。

Shared via Inoreader