您的位置: 首页 » 翻越奥义 » ss多服务器多用户搭建简要备忘

ss多服务器多用户搭建简要备忘

作者:liyangyijie / 时间:April 16, 2015 /分类:翻越奥义 / 标签:shadowsocks manyuser, ss-panel, ss many user /阅览次数:21,584

采取Shadowsocks Manyuser + SS-Panel方案,环境debian。

不包含防火墙安全以及优化的相关配置。
一,中心服务器搭建(lnmp+ss+ss-Panel)
1,lnmp
由于是debian环境,简单的包安装即可。(PHP版本>=5.3 MYSQL>=5.0)。
有的vps系统默认版本自带了不需要的sendmail、apache等等,可以进行清理。

invoke-rc.d sendmail stop > /dev/null 2>1& 
apt-get -q -y remove --purge sendmail* apache2* portmap samba* nscd bind9*
apt-get -q -y autoremove
apt-get -q -y autoclean
apt-get -q -y clean

如果新系统的话,再进行更新系统。

apt-get update && apt-get upgrade -y

安装lnmp环境。

DEBIAN_FRONTEND=noninteractive apt-get install -y -q nginx-full php5-cli php5-fpm php5-gd php5-mysqlnd php5-curl mysql-server mysql-client

a,配置nginx
注释掉/etc/nginx/sites-enabled/default中的配置,也可以直接删掉。
在/etc/nginx/conf.d/文件夹下,创建后缀为.conf的任意文件,写入下面内容。

server {
​    listen 80;
​    #ss.com 替换成自己的域名或ip
​    server_name ss.com; 
​    #下面是网站存放的绝对路径,自定义。
​    root /var/www;
​    index index.html index.htm index.php;
​    client_max_body_size 32m;
​    access_log  off;
​    error_log  off;
​    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
​        expires max;
​        log_not_found off;
​        access_log off;
}
​    location / {
​        index index.html index.php;
​        try_files $uri $uri/ =404;
​        if (-f $request_filename/index.html){
​            rewrite (.*) $1/index.html break;
​        }
​        if (-f $request_filename/index.php){
​            rewrite (.*) $1/index.php;
​        }
​        if (!-f $request_filename){
​            rewrite (.*) /index.php;
​        }
​    }
​    location = /favicon.ico {
​        log_not_found off;
​        access_log off;
​    }
​    location = /robots.txt {
​        allow all;
​        log_not_found off;
​        access_log off;
​    }
​    location ~ ^(.+?\.php)(/.*)?$ {
​    fastcgi_split_path_info ^(.+\.php)(/.+)$;
​    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
​    fastcgi_param PATH_INFO $fastcgi_path_info;
​    include fastcgi_params;
#    fastcgi_param HTTPS on;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
  }
​    location ~ /\.ht {
​        deny  all;
​    }
}

创建文件夹,启动或者重启nginx。

mkdir -p /var/www
/etc/init.d/nginx stop
/etc/init.d/nginx start 

b,配置mysql
由于刚才的安装默认root用户密码为空,要先进行设置。(务必确认mysql已经启动)

mysqladmin -u root password "12345678"

这里的12345678换成自定义的mysql的root用户密码。
创建名字为shadowsocks的数据库以及用户,并给与相应的权限。

mysqladmin create "shadowsocks"
echo "GRANT ALL PRIVILEGES ON \`shadowsocks\`.* TO \`shadowsocks\`@\`%\` IDENTIFIED BY '999';" | mysql

上面的999是数据库shadowsocks用户的密码,自定义。请不要与root用户密码相同。
为了方便,直接下载合成的数据库。

wget https://raw.githubusercontent.com/fanyueciyuan/eazy-for-ss/master/Our-Private-Panel/shadowsocks.sql

根据自己需要事先修改shadowsocks.sql。
由于登录网站的密码储存是md5加密的,所以修改登录网站密码需要先进行加密。
把25d55ad283aa400af464c76d713c07ad 这些字符串修改成密码加密后的字符串;
Our_Private_Panel_Domain 这些字符串修改成自己的ip或者域名;
Our_Private_Panel 这些字符串修改成登录网站用户名;
My_Passwd 这些字符串修改成ss连接密码,这里是明文的。
还可以参考下面的命令进行修改,

username="登录网站用户名"
password="登录网站明文密码"
My_Domain="自己的ip或者域名"
ss_mypassword="ss连接密码"
Panel_Admin_Passwd=`echo -n "$password"|md5sum|cut -d ' ' -f1`
sed -i "s/25d55ad283aa400af464c76d713c07ad/$Panel_Admin_Passwd/" shadowsocks.sql
sed -i "s/Our_Private_Panel_Domain/$My_Domain/" shadowsocks.sql
sed -i "s/Our_Private_Panel/$username/" shadowsocks.sql
sed -i "s/My_Passwd/$ss_mypassword/" shadowsocks.sql

然后导入数据库,

mysql shadowsocks < ./shadowsocks.sql

由于数据库是作为中心数据库,所以mysql得监听外网。编辑 /etc/mysql/my.cnf文件中的bind-address = 127.0.0.10.0.0.0,重启一下mysql。

/etc/init.d/mysql stop
/etc/init.d/mysql start

2,ss manyuser
安装依赖,获取ss manyuser。

apt-get install -y -q build-essential autoconf libtool libssl-dev git python-pip python-m2crypto supervisor
pip install cymysql
git clone -b manyuser https://github.com/mengskysama/shadowsocks.git

进入shadowsocks进行配置

cd shadowsocks/shadowsocks

编辑Config.py 中的下面行列

MYSQL_HOST = '127.0.0.1'
MYSQL_PORT = 3306
MYSQL_USER = 'shadowsocks'
MYSQL_PASS = '999'
MYSQL_DB = 'shadowsocks'

其中999是自定义的shadowsocks数据库密码。
至于配置里面的MANAGE_PASS相关行列,不需要配置,我们这里是如下模式

ss-panel <==> mysql中心数据库 <==> 多ss-manyuser

由于当前版本的ss加密方式是从config.json文件里面读取的,需要进行单独设置。命令如下

sed -i 's/\(.*meth.*:\).*/\1"aes-128-cfb"/' config.json

为了方便,把需要文件都放到/etc/shadowsocks-manyuser文件夹下,删掉其他不必要东西。

mkdir -p /etc/shadowsocks-manyuser
mv * /etc/shadowsocks-manyuser
cd ../../
rm -r shadowsocks

为了进程守护,创建/etc/supervisor/conf.d/shadowsocks-manyuser.conf文件,并写入下面的东西。

[program:shadowsocks-manyuser]
command=python /etc/shadowsocks-manyuser/server.py -c /etc/shadowsocks-manyuser/config.json
autostart=true
autorestart=true

然后,

echo 'ulimit -n 51200' >>  /etc/default/supervisor

接着重启supervisor并且重新载入

/etc/init.d/supervisor stop
/etc/init.d/supervisor start
supervisorctl reload

3,ss-panel
这里先进入网站根目录,这里是/var/www,并获取ss-panel。

cd /var/www
git clone https://github.com/orvice/ss-panel.git

进入ss-pane文件夹,删掉ss-panel文件夹下的 sql文件夹和.git* 相关文件,把所有文件移动到网页根目录下。

cd ss-panel
rm -r sql && rm -rf .git*
mv * /var/www/
cd ..
rm -r ss-panel

修改lib/config-sample.php(里面填写你的shadowsocks数据库信息,以及域名信息)并改为config.php
这里是

define('DB_USER','shadowsocks');
define('DB_PWD','999');
define('DB_DBNAME','shadowsocks');
...
$site_url  = "http://域名或ip/";

然后把相关文件所有者变更为网页用户。

chown -R www-data.www-data /var/www

由于这里还需要每月定时流量清零,修改tools/reset_transfer.php里面的日期,根据需要修改成自己需要流量清零的日期,默认是每月1号。
然后加入计划任务

echo "1 1 1-31 * * root cd /var/www/tools && /usr/bin/php -f cron.php" >> /etc/crontab

需要注意的是,直接通过网页访问cron.php,也会造成流量清零。也就是说在每月的流量清零日不停访问cron.php,会不停的流量清零。最好设置下权限,让普通用户无法访问。
二,其他ss服务器搭建(ss-manyuser)
根据 一,2,ss manyuser 进行配置,把MYSQL_HOST = '127.0.0.1'中的127.0.0.1修改成数据库所在vps的ip即可。
三,网页管理
面板管理访问http://域名或者ip/admin/
用户访问http://域名或者ip/
这里初始用户和管理员的用户名以及密码是一样的,如果是导入了前面的数据的话。
四,参考
http://www.bxl.me/zh-cn/8625.html
http://www.bxl.me/zh-cn/8625.html
http://www.bxl.me/8613.html
http://ilazycat.com/posts/tag/ss-panel
http://blog.liujason.com/archives/2669

上一篇 : youtube-dl you-get 安装备要 下一篇 : GoA VPS 部署试玩

已有 9 条评论

  1. 路过赞一赞

  2. 博主,请教一下manyuser我想修改加密方式为chacha20可是运行的时候提示不支持此种加密怎么办呢?

  3. Akkariin Akkariin

    PS:启动B VPS的服务端曾出现过mysql 110和1130错误,我修改A VPS的my.cnf注释了bind = 127.0.0.1,也修改了从远程访问的权限,解决了这两个错误

    1. ss加密方式是从config.json文件里面读取的,而非数据库。需要进行单独设置。

  4. Akkariin Akkariin

    你好,我在A VPS上安装了ss-panel/manyuser、apache和mysql,也能正常使用。现在我在B VPS上安装了ss-manyuser,在Config.py填写了A VPS的IP、帐号密码、数据库名称。服务端看似启动成功,出现了db start server at port [%s] pass [%s]等信息,但是客户端连接B VPS后不能上网。

添加新评论