ShadowsocksR 多用户版服务端安装教程(SS-Panel后端)
基本库安装
Centos系统执行这个:
- yum install python-setuptools&&easy_install pip
- yum install m2crypto git
Ubuntu/Debian系统执行这个(推荐这两个系统,对新手友好):
- apt-getupdate
- apt-getinstall python-pip
- apt-getinstall m2crypto git
安装cymysql
- pip install cymysql
获取源代码
- git clone-b manyuser https://github.com/breakwa11/shadowsocks.git
执行完毕后此目录会新建一个shadowsocks目录,其中根目录的是多用户版(即数据库版),子目录中的是单用户版。
根目录即 ./shadowsocks
子目录即 ./shadowsocks/shadowsocks
服务端配置
进入根目录:
- cd shadowsocks
shadowsocks目录内,打开文件vi Config.py
:
- MYSQL_HOST= 'localhost' //前端mysql域名/IP
- MYSQL_PORT= 3306 //mysql端口
- MYSQL_USER= 'ss' //mysql用户名
- MYSQL_PASS= 'ss' //mysql密码
- MYSQL_DB= 'shadowsocks' //数据库名
注意:这里的数据库信息除了MYSQL_HOST,其他的必须和SS-Panel完全一致,服务端启动的时候会读取数据库信息!至于MYSQL_HOST,如果你的服务端和前端(SS-Panel)在一个VPS上,那就写localhost,如果不在一起,请写前端(SS-Panel)所在VPS的ip或者域名!还有一条要注意的,如果服务端和前端(SS-Panel)不在一个VPS上,那么数据库链接就属于远程链接了,这时候需要开启数据库用户的远程链接功能!开启方法:在数据库——用户——编辑权限——登录信息中修改Host为任意主机“%”
文件config.json:
打开文件vi config.json
- "method":"aes-256-cfb", //修改成您要的加密方式的名称
如果需要修改协议插件和混淆插件,请根据单用户版服务端页面的选项对照说明修改下面两个参数。
- "protocol": "auth_sha1_compatible",
- "obfs": "tls1.0_session_auth_compatible",
默认是兼容模式,原版也可以用,SSR开启插件也可以用!
id //用户id数据库字段说明:
- email//用户邮箱
- pass //用户密码
- passwd//ss密码
- t//最后使用的时间
- u//已上传流量
- d//已下载流量
- transfer_enable//可用流量(总量)
- port//ss端口
- switch //保留字段
- enable//启用或禁用ss帐号(1启用,0禁用)
- type//保留字段
- last_get_gift_time//保留字段
- last_rest_pass_time//保留字段
ShadowsocksR多用户板服务端默认开启UDP的
服务端运行与停止
进入根目录:
- cd shadowsocks
运行:
- python server.py
这句运行代码主要用于调试,关闭ssh后ss后端自动关闭,所以正式使用请使用下面的脚本运行!如果需要停止请按Ctrl+C
键终止程序。
这时可查看有运行情况,检查有没有错误。如果服务端没有错误,而连接不上,需要检查iptables或firewall(centos7)的防火墙配置
通过脚本运行
脚本位于./shadowsocks目录。cd ./shadowsocks
增加脚本可执行权限(执行一次就好)
- chmod+x*.sh
后台运行(ssh窗口关闭后也继续运行)
- ./run.sh
后台运行时查看运行情况
- ./tail.sh
停止运行
- ./stop.sh
注:通过脚本运行默认日志会保存在根目录的ssserver.log,可手动查看。
更新源代码
如果代码有更新可用本命令更新代码
进入shadowsocks目录
- cd shadowsocks
执行
- git pull
成功后重启ss服务
网站建好了,但是没有人气怎么办?去我的Shadowsocks网站页面提交你的网站信息吧!
其它异常
无法连接Shadowsocks服务端,并且没提示错误或者提示IP被占用
如果Shadowsocks服务端没有提示错误,或者提示IP被占用,并且使用./stop.sh和./run.sh脚本重启后,依旧无法连接Shadowsocks,请重启当前VPS(这个问题我猜测可能是./stop脚本并不能完全关闭Shadowsocks所有连接,导致无法解决问题。正好Shadowsocks服务端默认随机启动,所以重启VPS可以解决这个问题。如果你知道原因或者其他更好的解决办法请在下面留言)。
Shadowsocks无法连接到数据库!MYSQL:2003
经过我多次实验,发现这个问题都是出现在Shadowsocks后端和数据库不在一个VPS上,这就说明了是数据库所在VPS的错误,先开放数据库的远程连接“%”,这个上面服务端配置里说的有方法。然后再打开你iptables防火墙配置文件(多半问题都是出现在这里,3306数据库端口没有对外开放)。
Debian7的方法(其他的系统请谷歌iptables防火墙规则文件位置)
首先打开防火墙规则文件。
- vi /etc/iptables.rules
删掉原来的3306规则(ACCEPT和DROP),然后加上这个规则。
- -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
然后重载iptables配置文件
- iptables-restore < /etc/iptables.rules
Centos6
首先打开防火墙规则文件。
- vi/etc/sysconfig/iptables
删掉原来的3306规则(ACCEPT和DROP),然后加上这个规则。
- -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
然后重启iptables
- /etc/init.d/iptables restart
服务端运行提示/日志正常,客户端填写也正确,但是依然无法连接!
这种情况一般都是防火墙搞的鬼(Debian/Ubuntu基本排除,多出现在Centos系统)。
- iptables-L
看一下有没有什么东西阻止了ss端口,或者说是没有允许/开放ss的端口。
如果你看不明白,你可以先关闭防火墙,试一试是不是防火墙的问题导致的无法连接。
- /etc/init.d/iptables stop
如果关闭后SS链接正常,那就是防火墙的问题,你可以随后慢慢排除防火墙规则。也可以直接 iptables -F 清空防火墙,但是我不建议这么做,一不小心就需要重装服务器了。
如果你的服务端python版本在2.6以下,那么必须更新python到2.6.x或2.7.x版本
如果运行一段时间后,你发现服务器无法连接,同时ssh连上去后,执行
- netstat-ltnap|grep-c CLOSE_WAIT
显示的数值很大(超过50是严重不正常),那么请修改服务器的最大连接数,如果是ubuntu/centos均可修改
/etc/security/limits.conf
添加两行:
- *soft nofile32768
- *hard nofile131072
然后重启机器生效(详细的看这个Linux上的shadowsocks服务端优化方法)
如果还是出现大量的too many open files错误,可以通过执行以下命令确定占用大量文件数的进程:
- lsof-n|awk'{print $2}'|sort|uniq-c|sort-nr|more
(转:逗比根据地http://www.dou-bi.com/ss-jc13/)