diff --git a/plugins/redis/index.html b/plugins/redis/index.html index f7eb39a90..67ebd4838 100755 --- a/plugins/redis/index.html +++ b/plugins/redis/index.html @@ -4,6 +4,7 @@

服务

自启动

+

配置修改[DEV]

配置修改

性能调整

负载状态

diff --git a/plugins/redis/index.py b/plugins/redis/index.py index be820bac9..88fa8d8d9 100755 --- a/plugins/redis/index.py +++ b/plugins/redis/index.py @@ -71,15 +71,60 @@ def getArgs(): tmp[t[0]] = t[1] return tmp +def checkArgs(data, ck=[]): + for i in range(len(ck)): + if not ck[i] in data: + return (False, mw.returnJson(False, '参数:(' + ck[i] + ')没有!')) + return (True, mw.returnJson(True, 'ok')) + +def configTpl(): + path = getPluginDir() + '/tpl' + pathFile = os.listdir(path) + tmp = [] + for one in pathFile: + file = path + '/' + one + tmp.append(file) + return mw.getJson(tmp) + + +def readConfigTpl(): + args = getArgs() + data = checkArgs(args, ['file']) + if not data[0]: + return data[1] -def status(): - data = mw.execShell( - "ps aux|grep redis |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'") + content = mw.readFile(args['file']) + content = contentReplace(content) + return mw.returnJson(True, 'ok', content) - if data[0] == '': +def getPidFile(): + file = getConf() + content = mw.readFile(file) + rep = 'pidfile\s*(.*)' + tmp = re.search(rep, content) + return tmp.groups()[0].strip() + +def status(): + pid_file = getPidFile() + if not os.path.exists(pid_file): return 'stop' + + # data = mw.execShell( + # "ps aux|grep redis |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'") + + # if data[0] == '': + # return 'stop' return 'start' +def contentReplace(content): + service_path = mw.getServerDir() + content = content.replace('{$ROOT_PATH}', mw.getRootDir()) + content = content.replace('{$SERVER_PATH}', service_path) + content = content.replace('{$SERVER_APP}', service_path + '/redis') + content = content.replace('{$REDIS_PASS}', mw.getRandomString(10)) + return content + + def initDreplace(): @@ -298,13 +343,15 @@ def getRedisConfInfo(): conf = getServerDir() + '/redis.conf' gets = [ - {'name': 'bind', 'type': 2, 'ps': '绑定IP(修改绑定IP可能会存在安全隐患)'}, - {'name': 'port', 'type': 2, 'ps': '绑定端口'}, - {'name': 'timeout', 'type': 2, 'ps': '空闲链接超时时间,0表示不断开'}, - {'name': 'maxclients', 'type': 2, 'ps': '最大输入时间'}, - {'name': 'databases', 'type': 2, 'ps': '数据库数量'}, - {'name': 'requirepass', 'type': 2, 'ps': 'redis密码,留空代表没有设置密码'}, - {'name': 'maxmemory', 'type': 2, 'ps': 'MB,最大使用内存,0表示不限制'} + {'name': 'bind', 'type': 2, 'ps': '绑定IP(修改绑定IP可能会存在安全隐患)','must_show':1}, + {'name': 'port', 'type': 2, 'ps': '绑定端口','must_show':1}, + {'name': 'timeout', 'type': 2, 'ps': '空闲链接超时时间,0表示不断开','must_show':1}, + {'name': 'maxclients', 'type': 2, 'ps': '最大输入时间','must_show':1}, + {'name': 'databases', 'type': 2, 'ps': '数据库数量','must_show':1}, + {'name': 'requirepass', 'type': 2, 'ps': 'redis密码,留空代表没有设置密码','must_show':1}, + {'name': 'maxmemory', 'type': 2, 'ps': 'MB,最大使用内存,0表示不限制','must_show':1}, + {'name': 'slaveof', 'type': 2, 'ps': '同步主库地址','must_show':0}, + {'name': 'masterauth', 'type': 2, 'ps': '同步主库密码', 'must_show':0} ] content = mw.readFile(conf) @@ -313,6 +360,9 @@ def getRedisConfInfo(): rep = "^(" + g['name'] + ')\s*([.0-9A-Za-z_& ~]+)' tmp = re.search(rep, content, re.M) if not tmp: + if g['must_show'] == 0: + continue + g['value'] = '' result.append(g) continue @@ -331,7 +381,7 @@ def getRedisConf(): def submitRedisConf(): gets = ['bind', 'port', 'timeout', 'maxclients', - 'databases', 'requirepass', 'maxmemory'] + 'databases', 'requirepass', 'maxmemory','slaveof','masterauth'] args = getArgs() conf = getServerDir() + '/redis.conf' content = mw.readFile(conf) @@ -383,5 +433,9 @@ if __name__ == "__main__": print(getRedisConf()) elif func == 'submit_redis_conf': print(submitRedisConf()) + elif func == 'config_tpl': + print(configTpl()) + elif func == 'read_config_tpl': + print(readConfigTpl()) else: print('error') diff --git a/plugins/redis/init.d/redis.tpl b/plugins/redis/init.d/redis.tpl index 02e0440c2..5af711269 100644 --- a/plugins/redis/init.d/redis.tpl +++ b/plugins/redis/init.d/redis.tpl @@ -25,6 +25,10 @@ EXEC={$SERVER_PATH}/redis/bin/redis-server CLIEXEC="{$SERVER_PATH}/redis/bin/redis-cli -p $REDISPORT$REDISPASS" PIDFILE={$SERVER_PATH}/redis/redis_6379.pid +echo $REDISPASS +echo $REDISPORT +echo $CLIEXEC + mkdir -p {$SERVER_PATH}/redis/data redis_start(){ @@ -38,18 +42,19 @@ redis_start(){ redis_stop(){ if [ ! -f $PIDFILE ] then - echo "$PIDFILE does not exist, process is not running" + echo "$PIDFILE does not exist, process is not running" else - PID=$(cat $PIDFILE) - echo "Stopping ..." - $CLIEXEC shutdown - while [ -x /proc/${PID} ] - do - echo "Waiting for Redis to shutdown ..." - sleep 1 - done - echo "Redis stopped" - rm -rf $PIDFILE + PID=$(cat $PIDFILE) + echo "Stopping ..." + $CLIEXEC shutdown save 2>/dev/null + while [ -x /proc/${PID} ] + do + echo "Waiting for Redis to shutdown ..." + sleep 1 + done + echo "Redis stopped" + kill -9 $PID + rm -rf $PIDFILE fi } diff --git a/plugins/redis/tpl/redis_slave.conf b/plugins/redis/tpl/redis_slave.conf new file mode 100644 index 000000000..3415444e9 --- /dev/null +++ b/plugins/redis/tpl/redis_slave.conf @@ -0,0 +1,90 @@ +daemonize yes +pidfile {$SERVER_PATH}/redis/redis_6379.pid + +loglevel notice +logfile {$SERVER_PATH}/redis/data/redis.log +databases 16 + +timeout 0 +tcp-keepalive 0 + +bind 127.0.0.1 +port 6379 +requirepass {$REDIS_PASS} + +################################ SNAPSHOTTING ################################# + +save 900 1 +save 300 10 +save 60 10000 +stop-writes-on-bgsave-error yes +rdbcompression yes +rdbchecksum yes +dbfilename dump.rdb +dir {$SERVER_PATH}/redis/data/ + +################################# REPLICATION ################################# + +slave-serve-stale-data yes +slave-read-only yes + +repl-disable-tcp-nodelay no +slave-priority 100 + +# 填写主库信息 +#slaveof 127.0.0.1 6379 +#masterauth master_pwd + +################################## SECURITY ################################### + + +################################### LIMITS #################################### +maxclients 10000 +#maxmemory-samples 3 +maxmemory 218mb +maxmemory-policy volatile-ttl + +############################## APPEND ONLY MODE ############################### + + +#appendonly no +# appendfsync always +#appendfsync everysec +# appendfsync no +#no-appendfsync-on-rewrite no + +auto-aof-rewrite-percentage 100 +auto-aof-rewrite-min-size 64mb + +################################ LUA SCRIPTING ############################### + +lua-time-limit 5000 + +################################## SLOW LOG ################################### + + +slowlog-log-slower-than 10000 +slowlog-max-len 128 + +############################### ADVANCED CONFIG ############################### + +hash-max-ziplist-entries 512 +hash-max-ziplist-value 64 + +list-max-ziplist-entries 512 +list-max-ziplist-value 64 + +set-max-intset-entries 512 + +zset-max-ziplist-entries 128 +zset-max-ziplist-value 64 + +activerehashing yes + +client-output-buffer-limit normal 0 0 0 +client-output-buffer-limit slave 256mb 64mb 60 +client-output-buffer-limit pubsub 32mb 8mb 60 + +hz 10 + +aof-rewrite-incremental-fsync yes \ No newline at end of file diff --git a/scripts/install/macos.sh b/scripts/install/macos.sh index d694d48d6..2d9f6aef2 100755 --- a/scripts/install/macos.sh +++ b/scripts/install/macos.sh @@ -22,6 +22,7 @@ if [ "$?" != "0" ];then brew install mysql fi +brew install coreutils brew install md5sum libevent pidof bison brew install libzip bzip2 gcc openssl re2c cmake