后端

显示标签为“后端”的博文。显示所有博文
显示标签为“后端”的博文。显示所有博文

2016年12月28日星期三

SSR魔改后端安装过程




[v_blue]这篇文章是教你怎么搭建与ss-panel魔改版相结合的ssr服务端的教程,可能会遇到各种问题,我也会在我设置的过程中遇到的问题提出来。肯定会有很多漏洞之类的,还请谅解。[/v_blue]

[v_tips]Debian有一键操作脚本:具体请看菊花大佬的gayhub 反正我是没看懂。[/v_tips]

[v_blue]菊花大佬的通用一键脚本:
如果你是webapi请下载配置文件然后根据文件内容修改并上传到你的网站,然后将命令中的file.digac.cc/SSR/Server/修改为你网站上存放配置文件的目录链接即可
如果你是数据库,请直接使用下面的命令,之后进入主目录修改文件

cd /root && wget -O 55R.sh https://blog.wxlost.com/one/code/onepve/server/55R.sh && chmod +x 55R.sh && bash 55R.sh file.digac.cc/SSR/Server/
[/v_blue]

SSR服务端要求Centos 6系统(推荐64位)

安装基本组件和SSR后端


yum -y install python-setuptools && easy_install pip
pip install cymysql speedtest-cli
yum install git

[v_notice]不想一行一行输入?输入下面这个:[/v_notice]
yum -y install python-setuptools && easy_install pip && pip install cymysql speedtest-cli 
yum -y install git unzip

CHACHA20加密方式支持:


如果要使用salsa20chacha20chacha20 IETF标准的算法,请安装libsodium
[v_blue]参考https://github.com/breakwa11/shadowsocks-rss/wiki/Server-Setup[/v_blue]
yum -y groupinstall "Development Tools"
wget https://github.com/jedisct1/libsodium/releases/download/1.0.13/libsodium-1.0.13.tar.gz
tar xf libsodium-1.0.13.tar.gz && cd libsodium-1.0.13
./configure && make -j2 && make install
echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf
ldconfig
rm -rf /root/libsodium-1.0.13.tar.gz
cd /root

[v_notice]
不想一行一行输入?输入下面这个:[/v_notice]
yum -y groupinstall "Development Tools" && wget https://github.com/jedisct1/libsodium/releases/download/1.0.13/libsodium-1.0.13.tar.gz && tar xf libsodium-1.0.13.tar.gz && cd libsodium-1.0.13 && ./configure && make -j2 && make install && echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf && ldconfig && rm -rf /root/libsodium-1.0.13.tar.gz && cd /root

(如果提示cannot import name OrderedDict,可能需要给服务器打补丁:第三方插件ordereddict easy_install ordereddict

下载程序源代码



wget https://file.digac.cc/SSR/Server/shadowsocks.zip
unzip shadowsocks.zip

进入 shadowsocksr 这个目录,安装依赖

yum -y install python-devel
yum -y install libffi-devel
yum -y install openssl-devel


Debian 请勿执行下面这个命令,直接 pip install cymysql

pip install -r requirements.txt

[v_notice]如果出现错误:
ERROR: Cannot uninstall 'requests'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

则输入
sudo pip install --ignore-installed requests
[/v_notice]

配置程序


先得到你的配置文件

cd shadowsocks
cp apiconfig.py userapiconfig.py
cp config.json user-config.json


编辑参数


然后主要编辑userapiconfig.py,只需要修改以下2个大类
#节点ID-和你网站添加的节点分配的ID一致!
NODE_ID = 1

#这里必须填,要么选择数据库要么选择httpapi(大多数使用的是数据库,httpapi不知怎么弄,2333)
API_INTERFACE = 'glzjinmod' #glzjinmod (数据库方式连接),modwebapi (http api)

# Mysql 数据库连接信息
MYSQL_HOST = '127.0.0.1'
MYSQL_PORT = 3306
MYSQL_USER = 'ss'
MYSQL_PASS = 'ss'
MYSQL_DB = 'shadowsocks'
MYSQL_UPDATE_TIME = 60

#这个虽然可填可不填,但是还是建议把127.0.0.1改成你这台服务器的IP地址
# Manager (ignore this)
MANAGE_PASS = 'ss233333333'
#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

开始运行


[v_notice]到这里基本算是搞完了,接下来还有自启动和优化[/v_notice]

测试服务端是否有错误



cd /root/shadowsocks
python server.py

如果报错,那就再仔细看看到底是哪里的问题。

出现(1042, u”Can’t get hostname for your address”)错误


my.cnf里,[mysqld]项目下
添加

skip-name-resolve

#忽略主机名的方式访问
如果添加了之后且重启之后同样提示1042, u”Can’t get hostname for your address”那么就直接修改hosts,把hosts中全部删除,然后输入

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6



我们优化下


编辑 /etc/security/limits.conf
最后添加

* soft nofile 51200
* hard nofile 51200


然后在运行之前执行

ulimit -n 51200


然后编辑 /etc/sysctl.conf

fs.file-max = 51200
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.netdev_max_backlog = 250000
net.core.somaxconn = 4096
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_mtu_probing = 1


sysctl -p 来使其生效。

此处以 centos 6 x64 下配置 supervisord 为例。


rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm --quiet
yum install supervisor python-pip -y
pip install supervisor==3.1
chkconfig supervisord on
wget https://github.com/glzjin/ssshell-jar/raw/master/supervisord.conf -O /etc/supervisord.conf
wget https://github.com/glzjin/ssshell-jar/raw/master/supervisord -O /etc/init.d/supervisord


编辑 /etc/supervisord.conf 最后一段改成如下的,以 /root/shadowsocks/ 为例

[program:mu]
command=python /root/shadowsocks/server.py
directory=/root/shadowsocks
autorestart=true
startsecs=10
startretries=36
redirect_stderr=true
user=root ; setuid to this UNIX account to run the program
log_stdout=true ; if true, log program stdout (default true)
log_stderr=true ; if true, log program stderr (def false)
logfile=/var/log/mu.log ; child log path, use NONE for none; default AUTO
;logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
;logfile_backups=10 ; # of logfile backups (default 10)


编辑 /etc/init.d/supervisord 在这两行之间添加 ulimit -n 51200

echo -n $"Starting supervisord: "
ulimit -n 51200
daemon supervisord -c /etc/supervisord.conf


然后

service supervisord start #开始运行守护程序


其他指令


测速
speedtest-cli

关闭防火墙
chkconfig iptables off
service iptables stop

关于升级



cd shadowsocks
git pull

开机自启动-2



echo 'bash /root/shadowsocks/logrun.sh' >> /etc/rc.local
nohup python /root/ServerStatus/clients/client-psutil.py
chmod +x /etc/rc.d/rc.local

Nat小鸡需要端口转发,使用逗比的脚本



wget -N --no-check-certificate https://softs.wtf/Bash/iptables-pf.sh && chmod +x iptables-pf.sh && bash iptables-pf.sh #主要下载
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/iptables-pf.sh && chmod +x iptables-pf.sh && bash iptables-pf.sh #备用下载
./iptables-pf.sh


补充:


userapiconfig.py,解释下里面各项配置的意思


# Config


#节点ID

NODE_ID = 1

#自动化测速,为0不测试,此处以小时为单位,要和 ss-panel 设置的小时数一致

SPEEDTEST = 6

#云安全,自动上报与下载封禁IP,1为开启,0为关闭

CLOUDSAFE = 1

#自动封禁SS密码和加密方式错误的 IP,1为开启,0为关闭

ANTISSATTACK = 0

#是否接受上级下发的命令,如果你要用这个命令,请参考我之前写的东西,公钥放在目录下的 ssshell.asc

AUTOEXEC = 1

多端口单用户设置,看重大更新说明。

MU_SUFFIX = 'zhaoj.in'

多端口单用户设置,看重大更新说明。

MU_REGEX = '%5m%id.%suffix'

#不明觉厉

SERVER_PUB_ADDR = '127.0.0.1' # mujson_mgr need this to generate ssr link

#访问面板方式

API_INTERFACE = 'glzjinmod' #glzjinmod (数据库方式连接),modwebapi (http api)

#mudb,不要管

MUDB_FILE = 'mudb.json'

# HTTP API 的相关信息,看重大更新说明。

WEBAPI_URL = 'https://zhaoj.in'

WEBAPI_TOKEN = 'glzjin'

# Mysql 数据库连接信息

MYSQL_HOST = '127.0.0.1'

MYSQL_PORT = 3306

MYSQL_USER = 'ss'

MYSQL_PASS = 'ss'

MYSQL_DB = 'shadowsocks'

# 是否启用SSL连接,0为关,1为开

MYSQL_SSL_ENABLE = 0

# 客户端证书目录,请看 https://github.com/glzjin/shadowsocks/wiki/Mysql-SSL%E9%85%8D%E7%BD%AE

MYSQL_SSL_CERT = '/root/shadowsocks/client-cert.pem'

MYSQL_SSL_KEY = '/root/shadowsocks/client-key.pem'

MYSQL_SSL_CA = '/root/shadowsocks/ca.pem'

# API,不用管

API_HOST = '127.0.0.1'

API_PORT = 80

API_PATH = '/mu/v2/'

API_TOKEN = 'abcdef'

API_UPDATE_TIME = 60

# Manager 不用管

MANAGE_PASS = 'ss233333333'

#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

#安全设置,限制在线 IP 数所需,下面这个参数随机设置,并且所有节点需要保持一致。

IP_MD5_SALT = 'randomforsafety'

链接



链接:安装SSR魔改前端

2016年6月27日星期一

ShadowsocksR 多用户版服务端安装教程(SS-Panel后端)


注:多用户版需配合ss-panel等前端使用,查看SS-Panel教程。
这篇文章主要说明ShadowsocksR后端的安装教程,这属于后端教程,前端教程请看这里,新手扩展篇请看这里(教程都是配套的,建议放在一起看!)

如果你看不太懂,那么你需要看这个:SS-Panel 前后端详细演示安装 视频教程

SS-Panel教程特别声明!!!!!!!!!!!!!!!!!!!

此教程为多用户版,适合站长。如果你是个人使用,请查看单用户版教程:单用户版教程

以下命令均以root用户执行,或sudo方式执行。

以下部分内容可能需要VIM操作,不懂的可以看一下这个VIM小白教程




说明一下新手步骤,安装依赖 → 下载源码 → 修改数据库配置 → 设置脚本权限并运行脚本!

没了,就这么简单,不要想的那么复杂。

首先下载Putty,然后输入IP和端口(默认22)后点击Open连接VPS。

然后登陆VPS,第一次登陆会提示你一个信息框,点是(Yes)就行了。

账号都是root(小写),密码一般在控制台有生成或更改的地方。输入密码的时候不会显示出来,但是实际是在输入的。

然后就可以输入下面的代码,一步一步来!一行一行来!

bwg-vpnjc1


基本库安装


Centos系统执行这个:
yum install python-setuptools
easy_install pip
yum install git

Ubuntu/Debian系统执行这个(推荐这两个系统,对新手友好):
apt-get update
apt-get install python-pip
apt-get install git


如果要使用 salsa20 和 chacha20 算法,请安装 libsodium(这个模块在不断更新可能本文章里的不是最新版,在这里看最新版本,并替换下面代码的版本号) :
apt-get install build-essential
wget https://github.com/jedisct1/libsodium/releases/download/1.0.10/libsodium-1.0.10.tar.gz
tar xf libsodium-1.0.10.tar.gz && cd libsodium-1.0.10
./configure && make -j2 && make install
ldconfig

如果曾经安装过旧版本,亦可重复用以上步骤更新到最新版,仅1.0.4或以上版本支持chacha20-ietf

安装cymysql


pip install cymysql

获取源代码


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

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

根目录即 /shadowsocks 文件夹

子目录即 /shadowsocks/shadowsocks 文件夹

服务端配置


进入根目录:
cd shadowsocks
cp mysql.json usermysql.json

shadowsocks目录内,打开文件vi usermysql.json
"host": "127.0.0.1", //前端mysql域名/IP
"port": 3306, //mysql端口
"user": "ss", //mysql用户名
"password": "pass", //mysql密码
"db": "shadowsocks", //数据库名

注意:这里的数据库信息除了 host ,其他的必须和SS-Panel完全一致,服务端启动的时候会读取数据库信息!至于 host ,如果你的服务端和前端(SS-Panel)在一个VPS上,那就写localhost或者127.0.0.1,如果不在一起,请写前端(SS-Panel)所在VPS的ip或者域名!
还有一条要注意的,如果服务端和前端(SS-Panel)不在一个VPS上,那么数据库链接就属于远程链接了,这时候需要开启数据库用户的远程链接功能!
开启方法:在数据库——用户——编辑权限——登录信息中修改Host为任意主机“%”

ss-jc14-01

配置文件config.json:


文件config.json复制一份到user-config.json,然后编辑:
cp config.json user-config.json

vi user-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

后台运行 且 记录日志(ssh窗口关闭后也继续运行)
./logrun.sh

查看 SS日志(用 logrun.sh 脚本启动才会打开日志)
./tail.sh

停止运行
./stop.sh

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

如果日志文件太大,需要清理,可以用下面这个命令 清空 日志文件。
cat /dev/null > ssserver.log

更新源代码


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

进入shadowsocks目录
cd shadowsocks

执行
git pull

成功后重启ss服务

网站建好了,但是没有人气怎么办?去我的Shadowsocks网站页面提交你的网站信息吧!

开机启动


一些人可能需要开机启动,我就一起写上吧。

首先设置开机启动文件的权限,并打开该文件。

Centos系统:
chmod +x /etc/rc.d/rc.local
vi /etc/rc.d/rc.local

Ubuntu/Debian系统:
chmod +x /etc/rc.local
vi /etc/rc.local


然后在 exit 0 这一句代码(只有ubuntu/debian有这个 exit 0)的前面加上 下面这句代码(如果你的Shadowsocks文件夹不在root目录下,请自行修改路径)
sudo bash /root/shadowsocks/run.sh

然后按 ESC键 退出vi编辑模式,然后输入 :wq 保存并退出该文件,就完成了。

其它异常


无法连接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 --dprot 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

ss-jc14-03




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

这种情况一般都是防火墙搞的鬼(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 nofile 32768 
hard nofile 131072

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

如果还是出现大量的too many open files错误,可以通过执行以下命令确定占用大量文件数的进程:
lsof -n >|awk '{print $2}'|sort|uniq -c |sort -nr|more

转载自ShadowsocksR官方Github文档:https://github.com/breakwa11/shadowsocks-rss/wiki/Server-Setup(manyuser)