pull/149/head
midoks 3 years ago
parent 91debbbee1
commit d79ef624d2
  1. 14
      plugins/postgresql/index.html
  2. 99
      plugins/postgresql/index.py
  3. 2
      plugins/postgresql/info.json
  4. 10
      plugins/postgresql/init.d/postgresql.tpl
  5. 74
      plugins/postgresql/js/postgresql.js
  6. 10
      plugins/postgresql/versions/14.4/install.sh

@ -6,14 +6,14 @@
<p class="bgw" onclick="pluginService('postgresql', $('.plugin_version').attr('version'));">服务</p>
<p onclick="pluginInitD('postgresql', $('.plugin_version').attr('version'));">自启动</p>
<p onclick="pluginConfig('postgresql', $('.plugin_version').attr('version'));">配置文件</p>
<!--<p onclick="myDbPos();">存储位置</p>
<p onclick="myPort();">端口</p>
<p onclick="runInfo();">当前状态</p>
<p onclick="myPerfOpt();">性能优化</p>
<p onclick="myLogs();">日志</p>
<p onclick="pluginLogs('postgresql',$('.plugin_version').attr('version'),'show_log');">慢日志</p>
<!--<p onclick="myDbPos();">存储位置</p> -->
<p onclick="pgPort();">端口</p>
<!-- <p onclick="runInfo();">当前状态</p>
<p onclick="myPerfOpt();">性能优化</p> -->
<p onclick="pluginLogs('postgresql',$('.plugin_version').attr('version'),'run_log');">日志</p>
<!--<p onclick="pluginLogs('postgresql',$('.plugin_version').attr('version'),'show_log');">慢日志</p>-->
<p onclick="dbList()">管理列表</p>
<p onclick="masterOrSlaveConf($('.plugin_version').attr('version'))">主从配置</p> -->
<!--<p onclick="masterOrSlaveConf($('.plugin_version').attr('version'))">主从配置</p> -->
</div>
<div class="bt-w-con pd15">
<div class="soft-man-con" style="height: 530px; overflow: auto;"></div>

@ -148,16 +148,16 @@ def initDreplace(version=''):
conf_dir,
log_dir
]
for conf in conf_list:
if not os.path.exists(conf):
os.mkdir(conf)
for c in conf_list:
if not os.path.exists(c):
os.mkdir(c)
my_conf = conf_dir + '/my.cnf'
if not os.path.exists(my_conf):
tpl = getPluginDir() + '/conf/my.cnf'
content = mw.readFile(tpl)
content = contentReplace(content)
mw.writeFile(my_conf, content)
# my_conf = conf_dir + '/my.cnf'
# if not os.path.exists(my_conf):
# tpl = getPluginDir() + '/conf/my.cnf'
# content = mw.readFile(tpl)
# content = contentReplace(content)
# mw.writeFile(my_conf, content)
# systemd
system_dir = mw.systemdCfgDir()
@ -166,7 +166,7 @@ def initDreplace(version=''):
tpl = getPluginDir() + '/init.d/postgresql.service.tpl'
service_path = mw.getServerDir()
content = mw.readFile(tpl)
content = content.replace('{$SERVER_PATH}', service_path)
content = contentReplace(content)
mw.writeFile(service, content)
mw.execShell('systemctl daemon-reload')
@ -248,11 +248,8 @@ def pGetDbUser():
def initPgData():
datadir = getDataDir()
if not os.path.exists(datadir + '/postgresql'):
serverdir = getServerDir()
myconf = serverdir + "/etc/my.cnf"
user = pGetDbUser()
serverdir = getServerDir()
if not os.path.exists(serverdir + '/postgresql'):
cmd = 'cd ' + serverdir + ' && ./bin/initdb -D ' + serverdir + "/data"
mw.execShell(cmd)
return False
@ -264,20 +261,13 @@ def initPgPwd():
serverdir = getServerDir()
pwd = mw.getRandomString(16)
cmd_pass = serverdir + '/bin/mysql -uroot -e'
cmd_pass = cmd_pass + "\"UPDATE mysql.user SET password=PASSWORD('" + \
pwd + "') WHERE user='root';"
cmd_pass = cmd_pass + "flush privileges;\""
cmd_pass = "echo \"create user root with superuser password '" + pwd + "'\" | "
cmd_pass = cmd_pass + serverdir + '/bin/psql -d postgres'
data = mw.execShell(cmd_pass)
# print(cmd_pass)
# print(data)
# 删除测试数据库
drop_test_db = serverdir + '/bin/mysql -uroot -p' + \
pwd + ' -e "drop database test";'
mw.execShell(drop_test_db)
print(cmd_pass)
print(data)
pSqliteDb('config').where('id=?', (1,)).save('mysql_root', (pwd,))
pSqliteDb('config').where('id=?', (1,)).save('pg_root', (pwd,))
return True
@ -285,6 +275,7 @@ def myOp(version, method):
# import commands
init_file = initDreplace()
cmd = init_file + ' ' + method
# print(cmd)
try:
isInited = initPgData()
if not isInited:
@ -315,7 +306,8 @@ def myOp(version, method):
mw.execShell('systemctl ' + method + ' postgresql')
return 'ok'
except Exception as e:
return str(e)
# raise
return method + ":" + str(e)
def appCMD(version, action):
@ -342,7 +334,7 @@ def initdStatus():
if mw.isAppleSystem():
return "Apple Computer does not support"
shell_cmd = 'systemctl status mysql | grep loaded | grep "enabled;"'
shell_cmd = 'systemctl status postgresql | grep loaded | grep "enabled;"'
data = mw.execShell(shell_cmd)
if data[0] == '':
return 'fail'
@ -353,7 +345,7 @@ def initdInstall():
if mw.isAppleSystem():
return "Apple Computer does not support"
mw.execShell('systemctl enable mysql')
mw.execShell('systemctl enable postgresql')
return 'ok'
@ -361,7 +353,7 @@ def initdUinstall():
if mw.isAppleSystem():
return "Apple Computer does not support"
mw.execShell('systemctl disable mysql')
mw.execShell('systemctl disable postgresql')
return 'ok'
@ -416,7 +408,7 @@ def setMyDbPos():
return mw.returnJson(False, '文件迁移失败!')
def getMyPort():
def getPgPort():
file = getConf()
content = mw.readFile(file)
rep = 'port\s*=\s*(.*)'
@ -424,7 +416,7 @@ def getMyPort():
return tmp.groups()[0].strip()
def setMyPort():
def setPgPort():
args = getArgs()
data = checkArgs(args, ['port'])
if not data[0]:
@ -472,6 +464,10 @@ def runInfo():
return mw.getJson(result)
def runLog():
return getServerDir() + "/logs/server.log"
def myDbStatus():
result = {}
db = pMysqlDb()
@ -517,30 +513,6 @@ def setDbStatus():
return mw.returnJson(True, '设置成功!')
def isSqlError(mysqlMsg):
# 检测数据库执行错误
mysqlMsg = str(mysqlMsg)
if "MySQLdb" in mysqlMsg:
return mw.returnJson(False, 'MySQLdb组件缺失! <br>进入SSH命令行输入: pip install mysql-python | pip install mysqlclient==2.0.3')
if "2002," in mysqlMsg:
return mw.returnJson(False, '数据库连接失败,请检查数据库服务是否启动!')
if "2003," in mysqlMsg:
return mw.returnJson(False, "Can't connect to MySQL server on '127.0.0.1' (61)")
if "using password:" in mysqlMsg:
return mw.returnJson(False, '数据库管理密码错误!')
if "1045" in mysqlMsg:
return mw.returnJson(False, '连接错误!')
if "SQL syntax" in mysqlMsg:
return mw.returnJson(False, 'SQL语法错误!')
if "Connection refused" in mysqlMsg:
return mw.returnJson(False, '数据库连接失败,请检查数据库服务是否启动!')
if "1133" in mysqlMsg:
return mw.returnJson(False, '数据库用户不存在!')
if "1007" in mysqlMsg:
return mw.returnJson(False, '数据库已经存在!')
return None
def __createUser(dbname, username, password, address):
pdb = pMysqlDb()
@ -579,9 +551,8 @@ def setDbBackup():
if not data[0]:
return data[1]
scDir = mw.getRunDir() + '/scripts/backup.py'
cmd = 'python ' + scDir + ' database ' + args['name'] + ' 3'
scDir = getPluginDir() + '/scripts/backup.py'
cmd = 'python3 ' + scDir + ' database ' + args['name'] + ' 3'
os.system(cmd)
return mw.returnJson(True, 'ok')
@ -741,5 +712,13 @@ if __name__ == "__main__":
print(getConf())
elif func == 'run_info':
print(runInfo())
elif func == 'run_log':
print(runLog())
elif func == 'pg_port':
print(getPgPort())
elif func == 'set_pg_port':
print(setPgPort())
elif func == 'get_db_list':
print(getDbList())
else:
print('error')

@ -3,7 +3,7 @@
"tip":"soft",
"name":"postgresql",
"type":"运行环境",
"ps":"功能强大的开源数据库",
"ps":"[DEV]功能强大的开源数据库",
"coexist": false,
"install_pre_inspection":true,
"uninstall_pre_inspection":true,

@ -39,13 +39,19 @@ pg_stop()
pg_status()
{
echo "123123"
isStart=$(ps aux |grep 'postgres'|grep -v grep|awk '{print $2}')
if [ "$isStart" != '' ];then
echo -e "\033[32mPostgreSQL (pid $isStart) already running\033[0m"
else
echo -e "\033[31mPostgreSQL not running\033[0m"
fi
}
pg_reload()
{
echo "123"
pg_stop
pg_start
}

@ -128,8 +128,8 @@ function myDbPos(){
});
}
function myPort(){
myPost('my_port','',function(data){
function pgPort(){
myPost('pg_port','',function(data){
var con = '<div class="line ">\
<div class="info-r ml0">\
<input name="port" class="bt-input-text mr5 port" type="text" style="width:100px" value="'+data.data+'">\
@ -139,7 +139,7 @@ function myPort(){
$('#btn_change_port').click(function(){
var port = $("input[name='port']").val();
myPost('set_my_port','port='+port,function(data){
myPost('set_pg_port','port='+port,function(data){
var rdata = $.parseJSON(data.data);
if (rdata.status){
layer.msg('修改成功!',{icon:1,time:2000,shade: [0.3, '#000']});
@ -978,8 +978,7 @@ function dbList(page, search){
}
list += '<a href="javascript:;" class="btlink" onclick="openPhpmyadmin(\''+rdata.data[i]['name']+'\',\''+rdata.data[i]['username']+'\',\''+rdata.data[i]['password']+'\')" title="数据库管理">管理</a> | ' +
'<a href="javascript:;" class="btlink" onclick="repTools(\''+rdata.data[i]['name']+'\')" title="MySQL优化修复工具">工具</a> | ' +
list += '<a href="javascript:;" class="btlink" onclick="repTools(\''+rdata.data[i]['name']+'\')" title="MySQL优化修复工具">工具</a> | ' +
'<a href="javascript:;" class="btlink" onclick="setDbAccess(\''+rdata.data[i]['username']+'\')" title="设置数据库权限">权限</a> | ' +
rw +
'<a href="javascript:;" class="btlink" onclick="setDbPass('+rdata.data[i]['id']+',\''+ rdata.data[i]['username'] +'\',\'' + rdata.data[i]['password'] + '\')">改密</a> | ' +
@ -992,7 +991,6 @@ function dbList(page, search){
var con = '<div class="safe bgw">\
<button onclick="addDatabase()" title="添加数据库" class="btn btn-success btn-sm" type="button" style="margin-right: 5px;">添加数据库</button>\
<button onclick="setRootPwd(0,\''+rdata.info['root_pwd']+'\')" title="设置MySQL管理员密码" class="btn btn-default btn-sm" type="button" style="margin-right: 5px;">root密码</button>\
<button onclick="openPhpmyadmin(\'\',\'root\',\''+rdata.info['root_pwd']+'\')" title="打开phpMyadmin" class="btn btn-default btn-sm" type="button" style="margin-right: 5px;">phpMyAdmin</button>\
<button onclick="setDbAccess(\'root\')" title="ROOT权限" class="btn btn-default btn-sm" type="button" style="margin-right: 5px;">ROOT权限</button>\
<span style="float:right"> \
<button batch="true" style="float: right;display: none;margin-left:10px;" onclick="delDbBatch();" title="删除选中项" class="btn btn-default btn-sm">删除选中</button>\
@ -1036,70 +1034,6 @@ function dbList(page, search){
});
}
function myLogs(){
myPost('bin_log', {status:1}, function(data){
var rdata = $.parseJSON(data.data);
var line_status = ""
if (rdata.status){
line_status = '<button class="btn btn-success btn-xs btn-bin va0">关闭</button>\
<button class="btn btn-success btn-xs clean-btn-bin va0">清理BINLOG日志</button>';
} else {
line_status = '<button class="btn btn-success btn-xs btn-bin va0">开启</button>';
}
var limitCon = '<p class="conf_p">\
<span class="f14 c6 mr20">二进制日志 </span><span class="f14 c6 mr20">' + toSize(rdata.msg) + '</span>\
'+line_status+'\
<p class="f14 c6 mtb10" style="border-top:#ddd 1px solid; padding:10px 0">错误日志<button class="btn btn-default btn-clear btn-xs" style="float:right;" >清理日志</button></p>\
<textarea readonly style="margin: 0px;width: 100%;height: 440px;background-color: #333;color:#fff; padding:0 5px" id="error_log"></textarea>\
</p>';
$(".soft-man-con").html(limitCon);
//设置二进制日志
$(".btn-bin").click(function () {
myPost('bin_log', 'close=change', function(data){
var rdata = $.parseJSON(data.data);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
setTimeout(function(){myLogs();}, 2000);
});
});
$(".clean-btn-bin").click(function () {
myPost('clean_bin_log', '', function(data){
var rdata = $.parseJSON(data.data);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
setTimeout(function(){myLogs();}, 2000);
});
});
//清空日志
$(".btn-clear").click(function () {
myPost('error_log', 'close=1', function(data){
var rdata = $.parseJSON(data.data);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 });
setTimeout(function(){myLogs();}, 2000);
});
})
myPost('error_log', 'p=1', function(data){
var rdata = $.parseJSON(data.data);
var error_body = '';
if (rdata.status){
error_body = rdata.data;
} else {
error_body = rdata.msg;
}
$("#error_log").html(error_body);
var ob = document.getElementById('error_log');
ob.scrollTop = ob.scrollHeight;
});
});
}
function repCheckeds(tables) {
var dbs = []
if (tables) {

@ -20,12 +20,12 @@ Install_App()
mkdir -p ${postgreDir}
echo '正在安装脚本文件...' > $install_tmp
if id postgres &> /dev/null ;then
echo "postgres UID is `id -u postgres`"
echo "postgres Shell is `grep "^postgres:" /etc/passwd |cut -d':' -f7 `"
if id postgresql &> /dev/null ;then
echo "postgresql UID is `id -u postgresql`"
echo "postgresql Shell is `grep "^postgresql:" /etc/passwd |cut -d':' -f7 `"
else
groupadd postgres
useradd -g postgres postgres
groupadd postgresql
useradd -g postgresql postgresql
fi
if [ "$sysName" != "Darwin" ];then

Loading…
Cancel
Save