搭建基于ss-panel和manyuser的番茄管理

Published: 2016-11-05

Tags: Linux

ss-panel

ss-panel是一个基于PHP的前端程序,提供操作数据库的功能,用来管理用户及检索信息,后台程序(manyuser)有几个不同的版本,本文使用的是shadowsocks-rm,后台程序会启动proxy服务,同时会调用ss-panel提供的API来对数据库进行更新操作,如统计流量,在线用户等等,单台服务器时两个程序安装在一起,更建议多台服务器,代理安装后台程序,ss-panel所在服务器提供web管理服务

本文内容仅用于技术交流,所搭建服务不提供注册或分享使用

LNMP环境

  • Centos 7.2
  • PHP > 5.6

使用军哥LNMP一键安装

 wget -c ftp://soft.vpser.net/lnmp/lnmp1.3-full.tar.gz && tar zxf lnmp1.3-full.tar.gz && cd lnmp1.3-full && ./install.sh lnmp

https://lnmp.org/install.html

官网教程写的很详尽,PHP版本需要选择大于或等于5.6的版本(ss-panel v3 needed)

ss-panel

1,下载ss-panel源码

cd /home/wwwroot/default

git clone --depth=1 https://github.com/orvice/ss-panel.git

# 安装完成lnmp后,直接使用默认目录 /home/wwwroot/default
# 删除默认文件
rm index.html

# 将ss-panel内的文件提取到外面
cp -R ss-panel/. ./

2,配置Nginx

配置文件为 /usr/local/nginx/conf/nginx.conf

在默认的server块下添加如下代码

root  /home/wwwroot/default/public;

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

重新载入配置文件

lnmp nginx restart

3,创建并初始化MySQL数据库

mysql -u root -p

mysql>​create database shadowsocks;
> use shadowsocks;
> source /home/wwwroot/default/db.sql;
> flush privileges;
> exit;

4,修改配置文件

cp .env.example .env
//  ss-panel v3 配置
//
// !!! 修改此key为随机字符串确保网站安全 !!!
key = 'gaaimsdp31asd03sdaa1oly7812asd361fjdk'
env = 'prod'  // 正式环境请保持env为prod确保安全
debug =  'false'  //  正式环境请确保为false
appName = 'ss-panel3'             //站点名称
baseUrl = 'https://www.google.com'            // 站点地址
timeZone = 'PRC'        // RPC 天朝时间  UTC 格林时间
pwdMethod = 'md5'       // 密码加密   可选 md5,sha256
salt = ''               // 密码加密用,从旧版升级请留空
theme    = 'default'   // 主题
// v3.4 后使用 session代替authDriver
// session,cache  可选 file/redis
session = 'redis'
cache   = 'redis'
tokenDriver = 'db'
// mu key 用于校验ss-go mu的请求
muKey = 'ishell'


# database 数据库配置
db_driver = 'mysql'
db_host = 'localhost'
db_port = '3306'
db_database = 'shadowsocks'
db_username = 'root'
db_password = '123456'
db_charset = 'utf8'
db_collation = 'utf8_general_ci'
db_prefix = ''

修改key为一个随即的字符串,sessioncache我使用的是redis缓存数据库,muKey API通信的时候会用到,随便设置一个字符串

安装并启动redis如下,epel建议centos系统下都进行安装使用,会省去很多安装软件的麻烦

yum install epel-release -y
yum install redis -y
systemctl start redis.service

5,使用composer安装php库

curl -sS https://getcomposer.org/installer | php
php composer.phar install

6,为storage目录增加权限(在ss-panel目录下执行)

chmod -R 777 storage

7,生成管理员用户(在ss-panel目录下执行)

按提示操作即可

php xcat createAdmin

现在打开IP就可以访问站点了,只不过有些功能还不能使用,继续设置后端

shadowsocks-manyuser

因为需要多人登陆,并且统计每个人的使用流量,需要使用manyuser分支

后端有shadowsocks-go mushadowsocks-rm等,此处使用shadowsocks-rm进行设置

在进行之前,假定刚才的web服务器为A服务器IP为123.123.123.123,并且使用的是本机的数据库,现在需要添加一个代理服务器B,IP是66.66.66.66,这个代理程序将提供代理功能,并且会有轮询任务来将用户使用流量更新到web服务器使用的数据库中

1,设置A上的MySQL权限,以使得B服务器有权限操作数据库

GRANT ALL PRIVILEGES ON `shadowsocks`.* TO 'test'@'66.66.66.66' IDENTIFIED BY 'qq123456' WITH GRANT OPTION;

在B服务上就可以使用名为test,密码为qq123456的用户来操作名为shadowsocks数据库了

还需要修改iptables设置,如下

iptables -I INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
iptables-save

这样会放行3306端口,不然B服务器是无法连接A服务器的MySQL的。

或者简单粗暴使用iptables -F 临时关闭防火墙

做完上面的准备,就可以去B服务器上安装后端了

2,下载shadowsocks-rm

git clone -b manyuser https://github.com/mengskysama/shadowsocks-rm.git

3,安装cymysql依赖

pip install cymysql

4,配置config.py

shadowsocks-rm/shadowsocks 文件夹下是后端程序

修改配置如下

import logging

#Config
MYSQL_HOST = '123.123.123.123'
MYSQL_PORT = 3306
MYSQL_USER = 'test'
MYSQL_PASS = 'qq123456'
MYSQL_DB = 'shadowsocks'

MANAGE_PASS = 'passwd'
#if you want manage in other server you should set this value to global ip
MANAGE_BIND_IP = '127.0.0.1'
#make sure this port is idle
MANAGE_PORT = 23333

PANEL_VERSION = 'V3' # V2 or V3. V2 not support API
API_URL = 'http://123.123.123.123/mu'
API_PASS = 'ishell'
NODE_ID = '1'
CHECKTIME = 15
SYNCTIME = 60

#BIND IP
#if you want bind ipv4 and ipv6 '[::]'
#if you want bind all of ipv4 if '0.0.0.0'
#if you want bind all of if only '4.4.4.4'
SS_BIND_IP = '0.0.0.0'
SS_METHOD = 'rc4-md5'

#LOG CONFIG
LOG_ENABLE = True
LOG_LEVEL = logging.DEBUG
LOG_FILE = '/var/log/shadowsocks.log'

上边主要设置好MySQL和API的信息,注意替换成自己的。LOG_ENABLE开启以便排错,SYNCTIME设置60是一分钟同步一下数据,之前的10分钟,我没看到ss-panel中的流量更新还以为后端没有设置好,再次添加其它服务器记得修改NODE_ID(需要先去ss-panel添加服务器,然后查看服务器的编号),另外SS_METHOD设置好后,ss-panel中添加服务器的时候不能设置为其它的。貌似shadowsocks-go mu版本的后端是可以修改的。

5,启动程序

# 仔细看,是servers而不是server
python servers.py

如果没有报错,就可以在ss-panel中的连接信息处看到端口,密码,自定义加密方式,然后再用这个B的服务器IP。本地填写如上设置后,访问网站转转,如果没有报错,过一分钟,就可以在面板中看到已使用流量了

6,如果上边没有问题,距离完成仅仅一步之遥了,需要设置让服务端在后台运行

# 安装supervisor
pip install supervisor

# echo_supervisord_conf > /etc/supervisord.conf

# 运行supervisord
supervisord

将如下文本添加到supervisord配置文件/etc/supervisord.conf,注意替换路径

[program:ss-manyuser]
command = python /root/ss/shadowsocks-rm/shadowsocks/servers.py
user = root
autostart = true
autorestart = true

查看servers.py的运行情况ps -ef | grep servers.py

root     25470 25422  1 14:57 ?        00:00:00 python /root/ss/shadowsocks-rm/shadowsocks/servers.py

通过如下命令管理ss-manyuser

supervisorctl {start|stop|restart} ss-manyuser

OK,完成

参考