Example #1
0
function step3()
{
    $app = $_REQUEST['app'];
    if (strstr($app['domain'], '/')) {
        step2('只能填写域名,不能带有/');
    }
    if (!in_array($app['php_run_type'], array('tcp', 'socket'))) {
        step2('php运行方式只能是tcp或者socket');
    }
    $php_socket_path = trim($app['php_socket_path']);
    if (!$php_socket_path) {
        $php_socket_path = '/dev/shm/php-cgi.sock';
    }
    $app['port'] = 6233;
    $socket = new hgSocket();
    $con = $socket->connect($app['ip'], $app['port']);
    if (!intval($con)) {
        step2('服务器无法连接,请确认服务器ip是否正确或服务程序hogeMonitor.py是否监听在' . $app['ip'] . ':' . $app['port'] . '上');
    }
    $socket->close();
    $app['dir'] = str_replace('//', '/', $app['dir']);
    $app_dir = trim($app['dir'], '/');
    if (count(explode('/', $app_dir)) < 3) {
        step2('安装目录必须达到3级及以上');
    }
    $app['dir'] = '/' . $app_dir . '/';
    //print_r($_SERVER);
    //增加hosts
    ob_start();
    $hostscontent = get_serv_file($app, '/etc/hosts');
    $hosts = hg_get_hosts($hostscontent);
    if (!$hosts[$app['domain']]) {
        hg_flushMsg('开始修改服务器hosts');
        $hostscontent .= "\n" . $app['ip'] . '	' . $app['domain'];
        write_serv_file($app, '/etc/hosts', $hostscontent);
        hg_flushMsg('hosts配置完成');
    }
    //配置nginx
    if ($app['server_software'] == 'nginx') {
        hg_flushMsg('开始修改服务器nginx配置');
        $content = get_serv_file($app, '/usr/local/nginx/conf/nginx.conf');
        if ($app['php_run_type'] == 'socket') {
            $fastcgi_pass = '******' . $php_socket_path . ';';
        } else {
            $fastcgi_pass = '******';
        }
        $runtype = '
			root          $htdocs;' . $fastcgi_pass . '
			fastcgi_index  index.php;
			include        fastcgi_params;
		';
        if (!@preg_match('/server_name\\s+' . $app['domain'] . '/is', $content)) {
            $serv_content = 'server {
				set $htdocs ' . $app['dir'] . ';
				listen       80;
				server_name  ' . $app['domain'] . ';

				#charset koi8-r;

				#access_log  logs/host.access.log  main;

				location / {
					root   $htdocs;
					index  index.html index.htm index.php;
				}
				location ~ .*\\.php?$ {' . $runtype . '}
			}';
            $content = preg_replace("/(http[\\s\n]*\\{.*)\\}/is", '\\1' . $serv_content . '}', $content);
            write_serv_file($app, '/usr/local/nginx/conf/nginx.conf', $content);
            hg_run_cmd($app, 'restart', '/usr/local/nginx/sbin/nginx -s reload');
            hg_flushMsg('nginx配置完成');
        }
    }
    //下载程序
    global $Cfg;
    $curl = new curl($Cfg['upgradeServer']['host'] . ':' . $Cfg['upgradeServer']['port'], '', $Cfg['upgradeServer']['token']);
    $curl->setClient(CUSTOM_APPID, CUSTOM_APPKEY);
    $curl->setSubmitType('get');
    $curl->setReturnFormat('json');
    $curl->initPostData();
    $curl->addRequestData('install', 1);
    $curl->addRequestData('app', 'livworkbench');
    $program_url = $curl->request('check_version.php');
    if (!(strstr($program_url, 'http://') && strstr($program_url, '.zip')) || $program_url == 'NO_VERSION') {
        $message = '获取应用程序失败或程序版本不存在.';
    }
    hg_flushMsg('开始下载程序');
    hg_run_cmd($app, 'mkdirs', $app['dir']);
    hg_run_cmd($app, 'download', $program_url, $app['dir']);
    hg_run_cmd($app, 'mkdirs', $app['dir'] . 'cache');
    file_put_contents(CACHE_DIR . 'app.tmp', json_encode($app));
    hg_flushMsg('程序下载完毕');
    hg_redirect('?action=step4');
}
Example #2
0
    $id = $_REQUEST['id'];
    $server = $servers[$_REQUEST['id']];
    $configs = hg_run_cmd($server, 'df');
    $doaction = 'babbaa';
    include 'tpl/man.tpl.php';
}
//更改服务器hosts
if ($action == 'install') {
    if (!$servers) {
        exit('未部署服务器!');
    }
    include 'tpl/head.tpl.php';
    echo '<br />开始修改服务器 hosts 配置 <br />';
    foreach ($servers as $k => $v) {
        $hostscontent = get_serv_file($v, '/etc/hosts');
        $hosts = hg_get_hosts($hostscontent);
        $hosts = hg_mk_hosts($servers, 'ip', $hosts);
        if ($hosts) {
            $lhost = array();
            foreach ($hosts as $ip => $domain) {
                if (!is_array($domain)) {
                    continue;
                }
                $lhost[] = $ip . '	' . implode(' ', $domain);
            }
            $hoststr = "\n" . implode("\n", $lhost);
            write_serv_file($v, '/etc/hosts', $hostscontent . $hoststr);
            echo $v['ip'] . ' hosts已更新 <br />';
        }
    }
    echo '<br/ >服务器需配置 hosts<br /><textarea name="c" cols="80" rows="10">' . implode("\n", $lhost) . '</textarea>';
Example #3
0
 public function add_appserver()
 {
     $app = $this->input['appserver'];
     if (!$app['ip']) {
         $message = '请填写服务器ip';
         $this->redirect($message, 0, 0, '', "hg_add_appservererr_back('{$message}')");
     }
     $app['ip'] = trim($app['ip']);
     $sql = 'SELECT * FROM ' . DB_PREFIX . "server WHERE ip = '{$app['ip']}' AND type != 'db'";
     $q = $this->db->query_first($sql);
     if ($q) {
         $message = '此服务器ip已存在,无需重复添加';
         $this->redirect($message, 0, 0, '', "hg_add_appservererr_back('{$message}')");
     }
     $app['port'] = 6233;
     $socket = new hgSocket();
     $con = $socket->connect($app['ip'], $app['port']);
     if (!intval($con)) {
         $message = '服务器无法连接,请确认服务器ip是否正确或服务程序hogeMonitor.py是否监听在' . $app['ip'] . ':' . $app['port'] . '上';
         $socket->close();
         $this->redirect($message, 0, 0, '', "hg_add_appservererr_back('{$message}')");
     }
     $socket->close();
     $app_data = json_encode($app);
     $sql = 'INSERT INTO ' . DB_PREFIX . "server (name, brief, ip, outip, type, more_data,create_time) VALUES \r\n\t\t\t\t('{$app['name']}', '', '{$app['ip']}', '{$app['outip']}', 'api', '{$app_data}', " . TIMENOW . ")";
     $this->db->query($sql);
     $id = $this->db->insert_id();
     $sql = 'SELECT * FROM ' . DB_PREFIX . "server_domain sd LEFT JOIN " . DB_PREFIX . 'server s ON sd.server_id=s.id';
     $q = $this->db->query($sql);
     $hostscontent = get_serv_file($app, '/etc/hosts');
     $hosts = hg_get_hosts($hostscontent);
     while ($r = $this->db->fetch_array($q)) {
         $domain = $r['domain'];
         if ($domain && !$hosts[$domain]) {
             $hostscontent .= "\n" . $r['ip'] . '	' . $domain;
         }
     }
     write_serv_file($app, '/etc/hosts', $hostscontent);
     $this->redirect('应用服务器添加成功', 0, 0, '', "hg_add_appserver_back({$id}, '{$app['name']}_{$app['ip']}')");
 }