作者: Mr.Li

  • 微信商户平台超级管理员更换

    之前员工离职,需要将超级管理员更换,你可以这样操作:

    超级管理员是商户平台绑定的联系人,若需更换可申请修改联系人姓名即可。

    修改路径:
    1、商户平台可登录:进入【商户平台】,点击【账户中心】->【商户信息】->【超级管理员信息】后面选择“修改”。
    2、商户平台不可登录:请在电脑端打开此链接:pay.weixin.qq.com/index.php/public/modify_mobile ,根据页面提示提交资料完成“自助修改超级管理员”

  • 如何更改Linux默认数据盘分区挂载目录

    Linux系统的云服务器的默认分区已做数据盘自动挂载处理,默认数据盘挂载分区目录为/home

    比如您需要安装WDCP、BT宝塔面板等,推荐您更改挂载目录为/www

    比如Centos系统,操作方法:
     

    umount /home

    mkdir /www

    mount /dev/mapper/Xvdbgroup-xvdb1 /www

    sed -i '$d' /etc/fstab

    echo "/dev/mapper/Xvdbgroup-xvdb1 /www ext3 defaults 1 2" >> /etc/fstab

    df -hal

    此时您将看到,数据盘目录已经挂载为/www

    您比如想更改数据盘目录挂载为/data目录,您可以修改以上命令中的/www为/data即可。

  • node 让命令在后台执行保持服务启动

    启动命令加上nohup xxxxxx &让命令在后台执行保持服务启动,即nohup /mydata/beizhenfang-agent-mobile-node/bin/www.js &。

  • 总结:阿里云实例root不能SSH登录问题

    1.首先检查sshd服务监听端口。

    netstat -tunlp | grep 22 

    知识点:

    [root@localhost ~]# netstat -nlp
    
    netstat命令各个参数说明如下:
    
      -t : 指明显示TCP端口
    
      -u : 指明显示UDP端口
    
      -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)
    
      -p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。
    
      -n : 不进行DNS轮询(可以加速操作)
    
    即可显示当前服务器上所有端口及进程服务,于grep结合可查看某个具体端口及服务情况··
    
    [root@localhost ~]# netstat -nlp |grep LISTEN   //查看当前所有监听端口·
    
    [root@localhost ~]# netstat -nlp |grep 80   //查看所有80端口使用情况·
    
    [root@localhost ~]# netstat -an | grep 3306   //查看所有3306端口使用情况·

    2.ssh配置文件里面设置了禁止root账号远程登陆,如果确认要使用root远程登陆服务器,要修改ssh配置开启一下root远程登陆。

    检查ssh是否禁止了root登录 :cat  /etc/ssh/sshd_config|grep Root

    3./etc/sysconfig/network-scripts/目录下是否有主网卡eth0的配置文件,若无需新建该文件并增加配置信息后启动网卡成功,就可以远程连接了

    4.执行下service iptables stop 命令关闭下系统防火墙

    5.查看系统内部是否配置了防火墙拦截22端口,并且ssh配置文件设置拒绝root用户登录,若是则调整为允许

  • Nodejs Redis 全部操作方法

    安装  npm install redis –save

    demo

    var redis = require('redis');

    var client = redis.createClient('6379', '127.0.0.1');

    client.auth("password");
    client.set('hello','This is a value');
    client.expire('hello',10) //设置过期时间
    client.exists('key') //判断键是否存在
    client.del('key1')
    client.get('hello');

     

    //stirng
    命令 行为 返回值 使用示例(略去回调函数)
    set 设置存储在给定键中的值 OK set('key', 'value')
    get 获取存储在给定键中的值 value/null get('key')
    del 删除存储在给定键中的值(任意类型) 1/0 del('key')
    incrby 将键存储的值加上整数increment incrby('key', increment)
    decrby 将键存储的值减去整数increment decrby('key', increment)
    incrbyfloat 将键存储的值加上浮点数increment incrbyfloat('key', increment) 
    append 将值value追加到给定键当前存储值的末尾 append('key', 'new-value')
    getrange 获取指定键的index范围内的所有字符组成的子串 getrange('key', 'start-index', 'end-index')
    setrange 将指定键值从指定偏移量开始的子串设为指定值 setrange('key', 'offset', 'new-string')

    //list
    命令 行为 返回值 使用示例(略去回调函数)
    rpush 将给定值推入列表的右端 当前列表长度 rpush('key', 'value1' [,’value2′]) (支持数组赋值)
    lrange 获取列表在给定范围上的所有值 array lrange('key', 0, -1) (返回所有值)
    lindex 获取列表在给定位置上的单个元素 lindex('key', 1)
    lpop 从列表左端弹出一个值,并返回被弹出的值 lpop('key')
    rpop 从列表右端弹出一个值,并返回被弹出的值 rpop('key')
    ltrim 将列表按指定的index范围裁减 ltrim('key', 'start', 'end')

    //set
    命令 行为 返回值 使用示例(略去回调函数) sadd 将给定元素添加到集合 插入元素数量 sadd('key', 'value1'[, ‘value2’, …]) (不支持数组赋值)(元素不允许重复)
    smembers 返回集合中包含的所有元素 array(无序) smembers('key')
    sismenber 检查给定的元素是否存在于集合中 1/0 sismenber('key', 'value')
    srem 如果给定的元素在集合中,则移除此元素 1/0 srem('key', 'value')
    scad 返回集合包含的元素的数量 sacd('key') 
    spop 随机地移除集合中的一个元素,并返回此元素 spop('key')
    smove 集合元素的迁移 smove('source-key'dest-key', 'item')
    sdiff 返回那些存在于第一个集合,但不存在于其他集合的元素(差集) sdiff('key1', 'key2'[, ‘key3’, …]) 
    sdiffstore 将sdiff操作的结果存储到指定的键中 sdiffstore('dest-key', 'key1', 'key2' [,’key3…]) 
    sinter 返回那些同事存在于所有集合中的元素(交集) sinter('key1', 'key2'[, ‘key3’, …])
    sinterstore 将sinter操作的结果存储到指定的键中 sinterstore('dest-key', 'key1', 'key2' [,’key3…]) 
    sunion 返回那些至少存在于一个集合中的元素(并集) sunion('key1', 'key2'[, ‘key3’, …])
    sunionstore 将sunion操作的结果存储到指定的键中 sunionstore('dest-key', 'key1', 'key2' [,’key3…]) 

    //hash
    命令 行为 返回值 使用示例(略去回调函数)
    hset 在散列里面关联起给定的键值对 1(新增)/0(更新) hset('hash-key', 'sub-key', 'value') (不支持数组、字符串)
    hget 获取指定散列键的值 hget('hash-key', 'sub-key')
    hgetall 获取散列包含的键值对 json hgetall('hash-key')
    hdel 如果给定键存在于散列里面,则移除这个键 hdel('hash-key', 'sub-key')
    hmset 为散列里面的一个或多个键设置值 OK hmset('hash-key', obj)
    hmget 从散列里面获取一个或多个键的值 array hmget('hash-key', array)
    hlen 返回散列包含的键值对数量 hlen('hash-key')
    hexists 检查给定键是否在散列中 1/0 hexists('hash-key', 'sub-key')
    hkeys 获取散列包含的所有键 array hkeys('hash-key')
    hvals 获取散列包含的所有值 array hvals('hash-key')
    hincrby 将存储的键值以指定增量增加 返回增长后的值 hincrby('hash-key', 'sub-key', increment) (注:假如当前value不为为字符串,则会无输出,程序停止在此处)
    hincrbyfloat 将存储的键值以指定浮点数增加


    //zset 
    命令 行为 返回值 使用示例(略去回调函数)
    zadd 将一个带有给定分支的成员添加到有序集合中 zadd('zset-key', score, 'key') (score为int)
    zrange 根据元素在有序排列中的位置,从中取出元素
    zrangebyscore 获取有序集合在给定分值范围内的所有元素
    zrem 如果给定成员存在于有序集合,则移除
    zcard 获取一个有序集合中的成员数量 有序集的元素个数 zcard('key')


    keys命令组
    命令 行为 返回值 使用示例(略去回调函数)
    del 删除一个(或多个)keys 被删除的keys的数量 del('key1'[, ‘key2’, …])
    exists 查询一个key是否存在 1/0 exists('key')
    expire 设置一个key的过期的秒数 1/0 expire('key', seconds)
    pexpire 设置一个key的过期的毫秒数 1/0 pexpire('key', milliseconds) 
    expireat 设置一个UNIX时间戳的过期时间 1/0 expireat('key', timestamp)
    pexpireat 设置一个UNIX时间戳的过期时间(毫秒) 1/0 pexpireat('key', milliseconds-timestamp)
    persist 移除key的过期时间 1/0 persist('key')
    sort 对队列、集合、有序集合排序 排序完成的队列等 sort('key'[, pattern, limit offset count]) 
    flushdb 清空当前数据库

  • nginx反向代理之端口配置

    cd /etc/nginx/

    vim nginx.conf

     server {
            listen       80 default_server;
            listen       [::]:80 default_server;
            server_name  域名;
            listen 443 ssl;
            root         /usr/share/nginx/html;
            ssl_certificate cert/1_www.maomin.club_bundle.crt;
            ssl_certificate_key cert/2_www.maomin.club.key;
            ssl_session_timeout 5m;
            # Load configuration files for the default server block.
            include /etc/nginx/default.d/*.conf;

           location / {
                    root /root/www/;
                    index index.html index.htm;
            }
            location /chat/ {
            proxy_pass http://内网:3001/;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
            location /upload/ {
            proxy_pass http://内网:8083/;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
            error_page 404 /404.html;
                location = /40x.html {
            }

            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
     }
    ————————————————
    版权声明:本文为CSDN博主「Vam的金豆之路」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_39045645/article/details/90029156

  • Ngnix中location与proxy_pass配置规则总结

    1.location匹配变量与配置格式

    location配置用于匹配请求的URL,即ngnix中的$request_uri变量

    $request_uri

    location配置格式:

    location [ 空格 | = | ~ | ~* |^~|!~ | !~* ] /uri/ {}


    2.loacation匹配顺序
    location 匹配格式规则前缀有四种:

    = 开头,表示精确匹配
    ^~ 开头,注意这不是一个正则表达式–它的目的是优于正则表达式的匹配;如果该location是最佳匹配,则不再进行正则表达式检测。
    ~ 开头,表示区分大小写的正则匹配;
    ~* 开头,表示不区分大小写的正则匹配
    !~ && !~*:表示区分大小写不匹配的正则和不区分大小写的不匹配的正则
    location 如果不带前缀就是普通字符串匹配:
    /uri/ 普通字符串匹配
    / 绝对路径根目录匹配, 如果没有其它匹配,任何请求都会匹配到

    匹配的搜索顺序优先级为:

    (location =) > (location 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 部分起始路径) > (/)

    首先匹配=

    其次匹配^~

    再其次按照配置文件的顺序进行正则匹配

    最后是交给/进行通用匹配

    注意:

    当有匹配成功时,立刻停止匹配,按照当前匹配规则处理请求
    特别注意:

    优先搜索并不意味着优先命中!
    字符串匹配优先搜索,但是只是记录下最长的匹配 ( 如果 ^~ 是最长的匹配,则会直接命中,停止搜索正则 ),然后继续搜索正则匹配,如果有正则匹配,则命中正则匹配,如果没有正则匹配,则命中最长的字符串匹配。
    匹配模式及顺序举例:

    location = /uri    =开头表示精确匹配,只有完全匹配上才能生效。
    location ^~ /uri   ^~ 开头对URL路径进行前缀匹配,并且在正则之前。
    location ~ pattern  ~开头表示区分大小写的正则匹配。
    location ~* pattern  ~*开头表示不区分大小写的正则匹配。
    location /uri     不带任何修饰符,也表示前缀匹配,但是在正则匹配之后,如果没有正则命中,命中最长的规则。
    location /      通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default。
    3、location与proxy_pass代理规则
    3.1 location是否以“/”结尾

    在ngnix中location进行的是模糊匹配

    没有“/”结尾时,location/abc/def可以匹配/abc/defghi请求,也可以匹配/abc/def/ghi等
    而有“/”结尾时,location/abc/def/不能匹配/abc/defghi请求,只能匹配/abc/def/anything这样的请求
    3.2 proxy_pass是否以“/”结尾

    在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对路径,则nginx不会把location中匹配的路径部分加入代理uri;如果没有/,则会把匹配的路径部分加入代理uri。

    请求域名为:http://127.0.0.1
     
     
    location /apiA/ {
        # 结尾的/必须加上,否则跳转会失败
        proxy_pass http://127.0.0.2/;
    }
     
    这里的反向跳转等价于 http://127.0.0.1/apiA/作为一个整体 全部替换成http://127.0.0.2/
    请求http://127.0.0.1/apiA/test.html 会被代理到http://127.0.0.2/test.html
     
     
    location /apiB/ {
        # 结尾的/必须加上,否则跳转会失败
        proxy_pass http://127.0.0.2/apix/;
    }
      
    这里的反向跳转等价于 http://127.0.0.1/apiB/作为一个整体 全部替换成http://127.0.0.2/apix/
    请求http://127.0.0.1/apiB/test.html 会被代理到http://127.0.0.2/apix/test.html

    2.一些情况下,不能确定替换的URI

    location里是正则表达式,这种情况下,proxy_pass里最好不要有URI
    在proxy_pass前面用了rewrite,如下,这种情况下,proxy_pass是无效的:

    location /name/ {
        rewrite    /name/([^/]+) /users?name=$1 break;
        # 结尾的/必须加上,否则跳转会失败
        proxy_pass http://127.0.0.1/;

    ————————————————
    版权声明:本文为CSDN博主「比特币爱好者007」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_43343144/article/details/97770370

  • Nginx 重启、关闭命令

    关闭nginx服务
    kill `cat /usr/local/nginx/logs/nginx.pid`
    
    nginx -s reload  :修改配置后重新加载生效
    nginx -s reopen  :重新打开日志文件
    nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确
    
    关闭nginx:
    nginx -s stop  :快速停止nginx
             quit  :完整有序的停止nginx
    
    其他的停止nginx 方式:
    ps -ef | grep nginx
    
    kill -QUIT 主进程号     :从容停止Nginx
    kill -TERM 主进程号     :快速停止Nginx
    pkill -9 nginx          :强制停止Nginx
    
    启动nginx:
    nginx -c /path/to/nginx.conf
    
    平滑重启nginx:
    kill -HUP 主进程号
  • redis Could not connect to Redis at 127.0.0.1:6379: Connection refused 问题解决

    官方网站地址: http://redis.io
    下载地址: http://redis.io/download

    1.启动redis 客户端 redis-cli 报错

    表示服务端没有启动成功

    2.如何启动和关闭redis服务