基本库安装

Centos系统执行这个:

  1. yum install python-setuptools&&easy_install pip
  2. yum install m2crypto git

Ubuntu/Debian系统执行这个(推荐这两个系统,对新手友好):

  1. apt-getupdate
  2. apt-getinstall python-pip
  3. apt-getinstall m2crypto git

安装cymysql

  1. pip install cymysql

获取源代码

  1. git clone-b manyuser https://github.com/breakwa11/shadowsocks.git

执行完毕后此目录会新建一个shadowsocks目录,其中根目录的是多用户版(即数据库版),子目录中的是单用户版。

根目录即 ./shadowsocks

子目录即 ./shadowsocks/shadowsocks

服务端配置

进入根目录:

  1. cd shadowsocks

shadowsocks目录内,打开文件vi Config.py

  1. MYSQL_HOST= 'localhost' //前端mysql域名/IP
  2. MYSQL_PORT= 3306 //mysql端口
  3. MYSQL_USER= 'ss' //mysql用户名
  4. MYSQL_PASS= 'ss' //mysql密码
  5. 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

  1. "method":"aes-256-cfb", //修改成您要的加密方式的名称

如果需要修改协议插件和混淆插件,请根据单用户版服务端页面的选项对照说明修改下面两个参数。

  1. "protocol": "auth_sha1_compatible",
  2. "obfs": "tls1.0_session_auth_compatible",

默认是兼容模式,原版也可以用,SSR开启插件也可以用!

id //用户id数据库字段说明:

  1. email//用户邮箱
  2. pass //用户密码
  3. passwd//ss密码
  4. t//最后使用的时间
  5. u//已上传流量
  6. d//已下载流量
  7. transfer_enable//可用流量(总量)
  8. port//ss端口
  9. switch //保留字段
  10. enable//启用或禁用ss帐号(1启用,0禁用)
  11. type//保留字段
  12. last_get_gift_time//保留字段
  13. last_rest_pass_time//保留字段

ShadowsocksR多用户板服务端默认开启UDP的

服务端运行与停止

进入根目录:

  1. cd shadowsocks

运行:

  1. python server.py

这句运行代码主要用于调试,关闭ssh后ss后端自动关闭,所以正式使用请使用下面的脚本运行!如果需要停止请按Ctrl+C键终止程序。

这时可查看有运行情况,检查有没有错误。如果服务端没有错误,而连接不上,需要检查iptables或firewall(centos7)的防火墙配置

通过脚本运行

脚本位于./shadowsocks目录。cd ./shadowsocks

增加脚本可执行权限(执行一次就好)

  1. chmod+x*.sh

后台运行(ssh窗口关闭后也继续运行)

  1. ./run.sh

后台运行时查看运行情况

  1. ./tail.sh

停止运行

  1. ./stop.sh

注:通过脚本运行默认日志会保存在根目录的ssserver.log,可手动查看。

更新源代码

如果代码有更新可用本命令更新代码

进入shadowsocks目录

  1. cd shadowsocks

执行

  1. 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防火墙规则文件位置)

首先打开防火墙规则文件。

  1. vi /etc/iptables.rules

删掉原来的3306规则(ACCEPT和DROP),然后加上这个规则。

  1. -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

然后重载iptables配置文件

  1. iptables-restore < /etc/iptables.rules

Centos6

首先打开防火墙规则文件。

  1. vi/etc/sysconfig/iptables

删掉原来的3306规则(ACCEPT和DROP),然后加上这个规则。

  1. -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

然后重启iptables

  1. /etc/init.d/iptables restart


服务端运行提示/日志正常,客户端填写也正确,但是依然无法连接!

这种情况一般都是防火墙搞的鬼(Debian/Ubuntu基本排除,多出现在Centos系统)。

  1. iptables-L

看一下有没有什么东西阻止了ss端口,或者说是没有允许/开放ss的端口。

如果你看不明白,你可以先关闭防火墙,试一试是不是防火墙的问题导致的无法连接。

  1. /etc/init.d/iptables stop

如果关闭后SS链接正常,那就是防火墙的问题,你可以随后慢慢排除防火墙规则。也可以直接 iptables -F 清空防火墙,但是我不建议这么做,一不小心就需要重装服务器了。


如果你的服务端python版本在2.6以下,那么必须更新python到2.6.x或2.7.x版本


如果运行一段时间后,你发现服务器无法连接,同时ssh连上去后,执行

  1. netstat-ltnap|grep-c CLOSE_WAIT

显示的数值很大(超过50是严重不正常),那么请修改服务器的最大连接数,如果是ubuntu/centos均可修改

/etc/security/limits.conf

添加两行:

  1. *soft nofile32768
  2. *hard nofile131072

然后重启机器生效(详细的看这个Linux上的shadowsocks服务端优化方法

如果还是出现大量的too many open files错误,可以通过执行以下命令确定占用大量文件数的进程:

  1. lsof-n|awk'{print $2}'|sort|uniq-c|sort-nr|more

 

(转:逗比根据地http://www.dou-bi.com/ss-jc13/)