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'); }
$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>';
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']}')"); }