安装 ss go mu 版本和 ss-panel v3

2016-03-16 00:09:09

我对编程、SS开发不熟悉,本文只是我安装经历的小分享。有问题的建议去ss-panel github 提交。

一、更新系统并安装第三方组件

apt-get update
apt-get upgrade -y
apt-get install redis-server screen git curl

二、安装 SS GO MU 服务端

2.1 安装并配置 GO 环境

wget -c https://storage.googleapis.com/golang/go1.6.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.6.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
export GOPATH=~/.go

2.2 安装 SS GO MU

go get github.com/orvice/shadowsocks-go
cd ~/.go/src/github.com/orvice/shadowsocks-go/mu
go get
go build

这样会在 ~/.go/bin/ 下面生成编译好的 ss go mu 程序。拷贝范例配置文件进去,尝试运行并观察 debug 信息:

cp example.conf ~/.go/bin/config.conf
cd ~/.go/bin/
./mu -debug

这里应该会报错,因为还没跟前端连接起来。不用理会

三、安装SS-PANEL前端

3.1 安装 LNMP 1.2

LNMP 意思是 Linux 平台上的 Nginx + MySQL + PHP。安装时选择 MySQL 5.5、PHP 5.6.9,其他随意。

screen -S lnmp
wget -c http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz && tar zxf lnmp1.2-full.tar.gz && cd lnmp1.2-full && ./install.sh lnmp


3.2 新建虚拟主机

假设你的域名是 ssserver.com,执行:

lnmp vhost add ssserver.com

LNMP 1.2 的脚本有 bug,在添加虚拟主机的过程中不要选择自动创建 MySQL 用户和数据库。安装 LNMP 之后已经帮我们安装了 PHPMyAdmin,可以使用 http://your_ip/phpmyadmin 登录进去,新建一个用户和数据库,假设用户为 ssserver,数据库名也是 ssserver,密码是 password。将 db-160305.sql (数字是日期,会随着新版发布而变动)导入到 新建的 MySQL 数据库。

3.3 安装 ss-panel v3

cd /home/wwwroot/ssserver.com
git init
git remote add origin https://github.com/orvice/ss-panel.git
git pull origin master
curl -sS https://getcomposer.org/installer | php
php composer.phar  install
chmod -R 777 storage
cp .env.example .env
vi .env 

编辑 .env 文件中的配置,比如 MySQL 数据库等,该文件中注释比较清晰,请酌情修改,亦可参考:https://github.com/orvice/ss-panel/wiki/v3-Config

添加管理员账号:

php xcat createAdmin

3.4 NGINX 额外配置

编辑 LNMP 1.2 帮我们自动生成的 conf 文件:

vi /usr/local/nginx/conf/vhost/ssserver.com.conf

修改 root 目录位置:

root /home/wwwroot/ssserver.com/public/;

在 root 目录设置下面新增一行:

location / {
    try_files $uri $uri/ /index.php$is_args$args;
}

增加 php 相关配置,在 location ~ [^/]\.php(/|$) 段中增加:

fastcgi_param  PHP_VALUE  "open_basedir=$document_root:/tmp/:/proc/:/home/wwwroot/";

完成后的配置文件看起来与下面类似:

server {
        listen 80;
        #listen [::]:80;
        server_name ssserver.com;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/ssserver.com/public;

        location / {
            try_files $uri $uri/ /index.php$is_args$args;
        }

        location ~ [^/]\.php(/|$) {
            # comment try_files $uri =404; to enable pathinfo
            try_files $uri =404;
            fastcgi_pass  unix:/tmp/php-cgi.sock;
            fastcgi_index index.php;
            include fastcgi.conf;
            #include pathinfo.conf;
            fastcgi_param  PHP_VALUE  "open_basedir=$document_root:/tmp/:/proc/:/home/wwwroot/";
        }

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        access_log  /home/wwwlogs/ssserver.com.log  access;
}

四、连接 ss go mu 服务端和前端 ss-panel

4.1 在 ss-panel 配置文件中添加 muKey

vi /home/wwwroot/ssserver.com/.env

将 muKey 字段随意设置成一串比较难猜到的字符,比如:njdcbddu2b

4.2 修改 ss go mu 配置文件

vi ~/.go/bin/config.conf

将 webapi 中的 url 改成你的地址,key 改成刚刚在 .env 文件中设置的值。

这样整个配置就完成了。运行 ~/.go/bin/mu 即可。

五、其他说明

5.1 修改用户注册后的默认加密方式

修改用户注册后默认加密方式为 aes-128-cfb,在数据库中执行

ALTER TABLE `user` CHANGE `method` `method` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'aes-128-cfb';

5.2 使用 supervisor 保持 ss go mu 服务端运行

安装 supervisor :

apt-get install supervisor

新建 supervisor 配置文件
vi /etc/supervisor/conf.d/ssserver.conf

[program:ssserver]
command = /root/.go/bin/mu
directory = /root/.go/bin/
user = root
autostart = true
autorestart = true
stdout_logfile = /var/log/supervisor/ssserver.log
stderr_logfile = /var/log/supervisor/ssserver_err.log

重载 supervisor

supervisorctl reload

100 条评论

  1. ss go mu启动./mu
    ERRO[0000] error listening port 1000: listen tcp :1000: bind: address already in use
    出现端口被占用 那是什么问题?

      • 看不到被占用了
        因为./mu启动 会出现大量用户端口 每次都是出现不同端口占用 完全看不出
        有一个共通点都提示python
        netstat -anp|grep
        tcp6 0 0 :::1000:::* LISTEN 995/python
        udp6 0 0 :::1000:::* 995/python
        1000是用户端口被用 每次./mu启动 端口又变了其他用户端口被占用
        所以才完全搞不懂
        但killall python也没效

    • 你是不是还有其他版本的ss服务端?
      ss go mu 是 go 语言写的,不应该出现 python 解释器啊

        • 那你端口肯定会被占用掉啊,你把其他版本的ss服务端停掉试试。

          • 照你的意思 我还有一个问题想问
            如果我将mu服务端和sspanel安装在同一个VPS上
            但mu config配置webapi node只能输入1个节点id 那我多个ss节点 怎么用?
            所以我才安装在不同的SS服务端上

            • 我的意思是你出问题的这台 vps 上,除了 ss go mu,是不是还有其他的 ss mu 服务端比如 ss manyusers。因为我看到你端口是被 python 占用了,ss go mu 是不会用到 python 解释器的。
              ss 的服务端 ss go mu 跟 sspanel 在不在一个 vps 上是无所谓的事情,可以在一个 vps 上,也可以不在一个 vps 上。

              • 我明白了 那用了mu服务端就不能用 其他SS服务端
                那我想请问亩怎样设置数据版?
                把mysql和 webapi填上都没用
                ss连不上

                • 我明白了 那用了mu服务端就不能用 其他SS服务端
                  那我想请问mu怎样设置数据版?
                  把mysql和 webapi填上都没用
                  ss连不上

                  • 只用 webapi 就可以了。
                    在ss-panel的 .env 里面要配置 muKey,在ss go mu的配置文件里面做出相对应的配置。

                    • webapi填上了 也不行的 ssl连不上
                      muKey是设置了
                      另外你說的在ss go mu的配置文件里面做出相对应的配置 <——是指什么?

                    • 已成功启动mu 就是连不上
                      在ss ping mu提示:
                      time=”2016-03-18T10:51:19Z” level=error msg=”error getting request1111.1111.1111.1111:58974 222.2222.2222.2222:1025 addr type 132 not supported”
                      什么意思

  2. 执行第二步 这个后go get github.com/orvice/shadowsocks-go
    提示了下面内容 是什么鬼
    package github.com/orvice/shadowsocks-go
    imports github.com/orvice/shadowsocks-go
    imports github.com/orvice/shadowsocks-go: no buildable Go source files in /root/.go/src/github.com/orvice/shadowsocks-go

  3. 运行 go get github.com/orvice/shadowsocks-go 后提示错误

    can’t load package: package github.com/orvice/shadowsocks-go: no buildable Go source files in /root/.go/src/github.com/orvice/shadowsocks-go

    请问该如何处理

    • 这不是错误,只是一个异常情况。进入mu的目录,再go get和go build。参见我上一条回复。

      • 不好意思,又来咨询
        运行 最后的 ~/.go/bin/mu
        就提示 -bash: /root/.go/bin/mu: No such file or directory

        这是咋回事呢

          • 就一个设置文件,事实上从go get开始一直都是错误,错误如下:

            # gopkg.in/redis.v3/internal/pool
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:26:19: error: reference to undefined identifier ‘sync.Pool’
            var timers = sync.Pool{
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:26:23: error: expected ‘;’ or newline after top level declaration
            var timers = sync.Pool{
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:29:2: error: expected declaration
            },
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:76:10: error: reference to undefined identifier ‘atomic.Value’
            lastErr atomic.Value
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:374:24: error: reference to undefined identifier ‘atomic.Value’
            var idleCheckFrequency atomic.Value
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:99:2: error: return with value in function with no return type
            return p
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:207:20: error: argument 1 must be a slice
            p.conns = append(p.conns, newcn)
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:221:24: error: argument 1 must be a slice
            p.freeConns = append(p.freeConns, cn)
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:240:28: error: argument 1 must be a slice
            p.conns = append(p.conns[:i], p.conns[i+1:]…)
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:238:2: error: range clause must have array, slice, string, map, or channel type
            for i, c := range p.conns {
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:285:2: error: range clause must have array, slice, string, map, or channel type
            for _, cn := range p.conns {
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:322:2: error: range clause must have array, slice, string, map, or channel type
            for idx, cn = range p.freeConns {
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:332:35: error: argument 1 must be a slice
            p.freeConns = append(p.freeConns[:0], p.freeConns[idx:]…)
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool_sticky.go:20:2: error: return with value in function with no return type
            return &StickyConnPool{
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:238:6: error: invalid type for range clause
            for i, c := range p.conns {
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:238:6: error: invalid type for range clause
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:285:6: error: invalid type for range clause
            for _, cn := range p.conns {
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:79:5: error: incompatible type in initialization (type has no methods)
            var _ Pooler = (*ConnPool)(nil)
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:134:10: error: expected channel
            case <-p.queue:
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:177:10: error: expected channel
            case 1 {
            ^
            ../../../jinzhu/gorm/utils.go:142:63: error: reference to undefined name ‘marks’
            results = append(results, fmt.Sprintf(“(%v)”, strings.Join(marks, “,”)))
            ^
            ../../../jinzhu/gorm/utils.go:144:43: error: reference to undefined name ‘marks’
            results = append(results, strings.Join(marks, “”))
            ^
            root@miuler:~/.go/src/github.com/orvice/shadowsocks-go/mu# go build
            # gopkg.in/redis.v3/internal/pool
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:26:19: error: reference to undefined identifier ‘sync.Pool’
            var timers = sync.Pool{
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:26:23: error: expected ‘;’ or newline after top level declaration
            var timers = sync.Pool{
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:29:2: error: expected declaration
            },
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:76:10: error: reference to undefined identifier ‘atomic.Value’
            lastErr atomic.Value
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:374:24: error: reference to undefined identifier ‘atomic.Value’
            var idleCheckFrequency atomic.Value
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:99:2: error: return with value in function with no return type
            return p
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:207:20: error: argument 1 must be a slice
            p.conns = append(p.conns, newcn)
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:221:24: error: argument 1 must be a slice
            p.freeConns = append(p.freeConns, cn)
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:240:28: error: argument 1 must be a slice
            p.conns = append(p.conns[:i], p.conns[i+1:]…)
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:238:2: error: range clause must have array, slice, string, map, or channel type
            for i, c := range p.conns {
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:285:2: error: range clause must have array, slice, string, map, or channel type
            for _, cn := range p.conns {
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:322:2: error: range clause must have array, slice, string, map, or channel type
            for idx, cn = range p.freeConns {
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:332:35: error: argument 1 must be a slice
            p.freeConns = append(p.freeConns[:0], p.freeConns[idx:]…)
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool_sticky.go:20:2: error: return with value in function with no return type
            return &StickyConnPool{
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:238:6: error: invalid type for range clause
            for i, c := range p.conns {
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:238:6: error: invalid type for range clause
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:285:6: error: invalid type for range clause
            for _, cn := range p.conns {
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:79:5: error: incompatible type in initialization (type has no methods)
            var _ Pooler = (*ConnPool)(nil)
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:134:10: error: expected channel
            case <-p.queue:
            ^
            ../../../../gopkg.in/redis.v3/internal/pool/pool.go:177:10: error: expected channel
            case 1 {
            ^
            ../../../jinzhu/gorm/utils.go:142:63: error: reference to undefined name ‘marks’
            results = append(results, fmt.Sprintf(“(%v)”, strings.Join(marks, “,”)))
            ^
            ../../../jinzhu/gorm/utils.go:144:43: error: reference to undefined name ‘marks’
            results = append(results, strings.Join(marks, “”))

  4. 你好 我是ubuntu系统64bit
    想问我更换内核后iptables都失效了
    iptables v1.4.21: can’t initialize iptables table `filter’: Table does not exist (do you need to insmod?)
    Perhaps iptables or your kernel needs to be upgraded.
    有没有什么解决方法?

    • modprobe: ERROR: ../libkmod/libkmod.c:556 kmod_search_moddep() could not open moddep file ‘/lib/modules/3.13.0-48-generic/modules.dep.bin’
      iptables v1.4.21: can’t initialize iptables table `filter’: Table does not exist (do you need to insmod?)
      Perhaps iptables or your kernel needs to be upgraded.

  5. 请问我这个为啥会报错。。

    ./mu -debug
    DEBU[0000] debug on
    INFO[0000] PONG
    ERRO[0000] Get User Errorinvalid character ‘<' looking for beginning of value

    • 和我一样, 使用webapi就这样了。 用mysql的话能使用,但是不能统计使用流量, 已使用流量永远都是0

    • [redis]
      host localhost:6379
      # if no passwd set,comment this line
      pass “”
      db 1

      change=>
      [redis]
      host localhost:6379
      # if no passwd set,comment this line
      #pass “”
      db 1

  6. 运行
    go get github.com/orvice/shadowsocks-go
    提示
    -bash: /usr/local/go/bin/go: No such file or directory
    怎么回事 Ubuntu12
    博主是什么系统安装成功的?

      • 第一步执行了,执行第二部的
        go get github.com/orvice/shadowsocks-go
        还是一样
        -bash: /usr/local/go/bin/go: No such file or directory

        • 解决了,是因为我的系统是32位后面用 32位的go部署环境就好了。

          INFO[0964] 0
          INFO[0964] check finish…
          INFO[0964] 0
          INFO[0964] sync finish…start logging online count
          ERRO[0964] Update Online Count Failed

          运行后,这个错误是要怎么解决呢?是因为没人在线所以才报错吗?

  7. redis 已经装好了。
    ./mu
    ERRO[0000] boot redis fail: ERR Client sent AUTH, but no password is set

    help me @!@@@!!!!

  8. 没有域名,用ip访问能看到界面,mu也跑起来了,但是admin里看不到节点,是什么原因呢?

  9. 你好。
    我在网上找了一套V2修改版的系统,可以支持支付宝续费,但是不会配置。请问可以帮忙看看嘛?
    谢谢!

  10. 请问后端需要安装 redis吗?还是填写前端的IP连接前端的redis?
    如果我没填写前端redis,则报错ERRO[0000] boot redis fail: dial tcp 127.0.0.1:6379: getsockopt: connection refused
    如果填写前端的redis地址,则报错ERRO[0000] boot redis fail: dial tcp 159.203.211.23:6379: getsockopt: connection refused
    配置是:
    [base]
    N 1
    ip 0.0.0.0
    client webapi
    checktime 60
    synctime 60

    [webapi]
    url http://www.ceshi.test/mu
    key jkgsfaxasqq
    node_id 1

    [mysql]
    host 127.0.0.1:3306
    user user
    pass pass
    db db
    table table

    [redis]
    host localhost:6379
    # if no passwd set,comment this line
    #pass “”
    db 1

  11. 遇到这种问题,好像是“已用流量更新”问题,请大神帮我看看

    ERRO[0600] update size fail for port:61025invalid character ‘<' looking for beginning of value
    INFO[0600] sync finish…start logging online count

    • 已经解决了,是我在sspanel的“管理面板”,没有设置“节点信息”……

  12. 大哥,V2 版本的升级到 V3 ,user 表直接导入不行,有没有别的办法了 ?

  13. 想请问下那个5.1 修改默认的加密方式究竟是怎么实现的,对这个网络完全搞不懂。

    • ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ALTER TABLE `user` CHANGE `method` `method` VARCHAR(64) CHARACTER SET utf8 COLLA’ at line 2

      使用的版本就是你文中所说的Server version: 5.5.42

  14. 专程来感谢博主的,目前运行良好!ss-panel的说明文档实在有限,好在博主的详细教程说明……

  15. 博主,我都设置好了,但是一启动就显示下面这个:
    ERRO[0000] boot redis fail: dial tcp 210.XXX.XXX.227:6379: getsockopt: connection refused
    评论区似乎有人有一样的问题,但是我装了radis之后还是没有得到解决
    请指教!谢谢!

  16. 博主,这个是什么情况?

    time=”2016-06-13T09:39:02-04:00″ level=info msg=0
    time=”2016-06-13T09:39:02-04:00″ level=info msg=”sync finish…start logging online count”
    time=”2016-06-13T09:39:02-04:00″ level=info msg=0
    time=”2016-06-13T09:39:02-04:00″ level=info msg=”check finish…”
    time=”2016-06-13T09:39:02-04:00″ level=error msg=”Update Online Count Failed”
    time=”2016-06-13T09:39:02-04:00″ level=error msg=”Update Online Count Failed”

  17. 你好,我想请问一下,我前后端的页面都配置ok了,加密 方式也正确,现在就是翻不了墙,是为什么呢?

  18. 如果前端添加节点的时候填写的是域名,而不是服务器ip的话 流量比例会生效吗?ss-panel是怎么判断用户当前连接到哪个节点的?

  19. 运行SS的时候提示
    ERRO[3660] sql: Scan error on column index 5: converting driver.Value type []uint8 (“5368709120”) to a int: value out of range
    感觉像是流量的内容溢出了?请问怎么办?

  20. go get github.com/orvice/shadowsocks-go 楼主,这步实在是走不下去啊。直接来错:can’t load package: package github.com/orvice/shadowsocks-go: no buildable Go source files in /root/.go/src/github.com/orvice/shadowsocks-go

  21. package shadowsocks/shadowsocks-go/mu/config: unrecognized import path “shadowsocks/shadowsocks-go/mu/config” (import path does not begin with hostname)
    package shadowsocks/shadowsocks-go/mu/log: unrecognized import path “shadowsocks/shadowsocks-go/mu/log” (import path does not begin with hostname)
    package shadowsocks/shadowsocks-go/mu/mysql: unrecognized import path “shadowsocks/shadowsocks-go/mu/mysql” (import path does not begin with hostname)
    package shadowsocks/shadowsocks-go/mu/user: unrecognized import path “shadowsocks/shadowsocks-go/mu/user” (import path does not begin with hostname)
    package shadowsocks/shadowsocks-go/mu/webapi: unrecognized import path “shadowsocks/shadowsocks-go/mu/webapi” (import path does not begin with hostname)
    package shadowsocks/shadowsocks-go/shadowsocks: unrecognized import path “shadowsocks/shadowsocks-go/shadowsocks” (import path does not begin with hostname)

  22. 你好,我运行了编译好的mu,log一切正常,读取到了用户密码和端口号,但是我用netstat查看,对应的端口50000等都没有被监听。在我的vps上还有manyuser python版的,不过我没有运行,manyuser可以正确的监听端口。这会是什么问题?

    • 吐血,更诡异的事情来了,刚刚竟然绑定上了,我停掉再启动,又绑定不上了= =WTF

  23. 麻烦楼主帮看下,为什么还是翻不了墙
    redis最新了/同一VPS上前后端/节点也添加/加密方式在/root/.go/src/github.com/orvice/shadowsocks-go/改成RC4-MD5了

    [base]
    N 1
    ip 0.0.0.0
    client webapi
    checktime 60
    synctime 60

    [webapi]
    url http://xxxxxx/mu
    key qwertqwrqw1
    node_id 1

    [mysql]
    host 127.0.0.1:3306
    user user
    pass pass
    db db
    table table

    [redis]
    host localhost:6379
    # if no passwd set,comment this line
    #pass “”
    #db 1

    time=”2016-09-03T17:18:53+08:00″ level=info msg=”check finish…”
    time=”2016-09-03T17:18:53+08:00″ level=info msg=1
    time=”2016-09-03T17:18:53+08:00″ level=info msg=”sync finish…start logging online count”
    time=”2016-09-03T17:19:53+08:00″ level=info msg=1
    time=”2016-09-03T17:19:53+08:00″ level=info msg=”check finish…”
    time=”2016-09-03T17:19:53+08:00″ level=info msg=1
    time=”2016-09-03T17:19:53+08:00″ level=info msg=”sync finish…start logging online count”
    time=”2016-09-03T17:20:53+08:00″ level=info msg=1
    time=”2016-09-03T17:20:53+08:00″ level=info msg=”check finish…”
    time=”2016-09-03T17:20:53+08:00″ level=info msg=1
    time=”2016-09-03T17:20:53+08:00″ level=info msg=”sync finish…start logging online count”

  24. 您好, 请问上面的教程是什么系统?
    有centos的吗?
    纯小白, 只能copy+paste

  25. Debian 8里最新的redis-server已经默认加上密码了,所以会报错:
    boot redis fail: NOAUTH Authentication required.

    需要修改如下配置
    # if no passwd set,comment this line
    pass 1234aeftt
    注意pass后面的没有引号,我的用了引号就出错,这个密码应该和/etc/redis/redis.conf里的requirepass后的密码一致, 或者直接去注释掉/etc/redis/redis.conf里的requirepass这一行

    #不是为了感谢博主我才不留言 (手动傲娇)

    • 今天又去安装了三台,发现竟然redis里默认没有要求密码…… 看来我之前的留言有问题啊

  26. 请问一下config.conf配置里的几个东西是什么意思
    我装了一台前端,和两台后端,但是不管前端后端似乎都没法统计在线人数和流量
    但是流量记录里是有数据的,很疑惑

    [base]
    N 1 //N是指本节点编号吗?
    client webapi //用了webapi是不是mysql和redis不用配了?

    [webapi]
    node_id 1 //这个又是哪个id?

    [mysql]
    user user
    pass pass
    db db
    table table //这个table是user吗?

    [redis]
    db 1 //这个又是哪个id?

发表评论

电子邮件地址不会被公开。 必填项已用*标注