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
官网教程写的很详尽,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
为一个随即的字符串,session
和cache
我使用的是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 mu
,shadowsocks-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,完成