sspanel v3 + shadowsocks-py-mu 前后端安装教程

20170201213642

一、前言

本教程全面系统的讲述了SS-panel v3 前端,及shadowsocks-py-mu 后端的搭建。
个人习惯用nano做文本编辑。所以本教程使用nano工具进行文本编辑。
为方便您更容易理解,本教程采用一些示范数据进行举例。请在部署中注意替换相应字段。

环境需求:

  • Debian 7 *64
  • PHP 5.6 or newer
  • Web server with URL rewriting
  • MySQL

服务端:

  • shadowsocks-py-mu

示范数据:
域名:ihot.info
Root数据库密码:hyReu5bQ
Shadowsocks数据库:ssdb
Shadowsocks数据库用户名:ssdb
Shadowsocks数据库密码:Kuxt8gKr
mukey:S060WkJAwq9KrkyKh
Key:tgB1dRmpQO1IhrbX

 

二、基础环境及虚拟主机的建立


apt-get update
apt-get install nano curl

1.主站环境搭建
//安装LNMP Mysql 选择5.5.48 PHP 选择5.6.22


wget -c http://soft.vpser.net/lnmp/lnmp1.3-full.tar.gz && tar zxf lnmp1.3-full.tar.gz && cd lnmp1.3-full && ./install.sh lnmp

2.创建虚拟主机
//添加ihot.info为主域名的网站,同时建立shadowsocks所需的数据库名、数据库用户名、数据库密码。


lnmp vhost add

 

 

三、SS-panel面板的下载及安装

 

1.部署sspanel到主站及安装相关依赖环境

//进入新建的虚拟主机目录


cd /home/wwwroot/ihot.info

//git sspanel数据包到网站根目录


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

//提取sspanel文件夹下所有文件到网站根目录


mv ss-panel/* ./

//安装依赖库


curl -sS https://getcomposer.org/installer | php
php composer.phar install

//安装redis


apt-get install redis-server

//设置目录权限


chmod -R 777 storage

 

2.导入数据库及修改配置文件

//导入数据库


mysql -u root -p
hyReu5bQ
> use ssdb;
> source /home/wwwroot/ihot.info/db.sql;
> flush privileges;
> exit;

//拷贝数据文件为.env 此文件在网站根目录中


cp .env.example .env

//编辑配置文件 .env,红色标记为必须修改的字段,其余请根据个人喜好修改


nano .env

//  ss-panel v3 配置
//
// !!! 修改此key为随机字符串确保网站安全 !!!
key = ‘tgB1dRmpQO1IhrbX
env = ‘prod’  // 正式环境请保持env为prod确保安全
debug =  ‘false’  //  正式环境请确保为false
appName = ‘ss-panel3’             //站点名称
baseUrl = ‘http://ihot.info‘            // 站点地址
timeZone = ‘PRC’        // RPC 天朝时间  UTC 格林时间
pwdMethod = ‘md5’       // 密码加密   可选 md5,sha256
salt = ”               // 密码加密用,从旧版升级请留空
theme    = ‘default’   // 主题
// v3.4 后使用 session代替authDriver
// session,cache  可选 file/redis
session = ‘file’
cache   = ‘file’
tokenDriver = ‘db’
// mu key 用于校验ss-go mu的请求
muKey = ‘S060WkJAwq9KrkyKh
// 邮件
mailDriver = ‘mailgun’   // mailgun   #smtp不在支持,仅供测试

// 注册限制,每天每个ip能注册的次数
ipDayLimit = ’10’

// 邮箱验证设置
emailVerifyEnabled = ‘false’ // 是否开启注册时邮箱验证 (true:开启 false:关闭)
emailVerifyCodeLength = ‘8’  // 邮箱验证代码长度
emailVerifyTTL = ’30’        // 验证代码有效时间 单位分钟

// 用户签到设置
checkinTime = ’23’      // 签到间隔时间 单位小时
checkinMin = ’50’       // 签到最少流量 单位MB
checkinMax = ‘200’       // 签到最多流量

//
defaultTraffic = ’10’      // 用户初始流量 单位GB
// 注册后获得的邀请码数量
inviteNum = ‘1’

// 记录流量日志到dynamodb ,beta,请勿开启
log_traffic_dynamodb = ‘false’

# database 数据库配置
db_driver = ‘mysql’
db_host = ‘localhost’
db_port = ‘3306’
db_database = ‘ssdb
db_username = ‘ssdb
db_password = ‘Kuxt8gKr
db_charset = ‘utf8’
db_collation = ‘utf8_general_ci’
db_prefix = ”

# redis
redis_scheme = ‘tcp’
redis_host = ‘127.0.0.1’
redis_port = ‘6379’
redis_database = ‘0’
redis_pass = ”

# mailgun
mailgun_key = ”
mailgun_domain = ”
mailgun_sender = ”

# smtp
smtp_host = ”
smtp_username = ”
smtp_port = ”
smtp_name = ”
smtp_sender = ”
smtp_passsword = ”
smtp_ssl = ‘true’

# aws
ws_access_key_id = ”
aws_secret_access_key = ”
aws_region = ‘ap-northeast-1’
aws_ses_region = ‘us-east-1’
aws_ses_sender = ”


 

3.设置伪静态

//设置伪静态 进入nginx的伪静态目录,并配置伪静态文件。


cd /usr/local/nginx/conf/vhost/
nano ihot.info.conf

//调整文件中的内容,如下图。


root /home/www/ihot.info/public;

location / {
try_files $uri $uri/ /index.php$is_args$args;
}

20170201220236

//重启nginx


lnmp nginx restart

 

4.设置开放主站数据库开放访问

//开放数据库远程访问,不要忘记输入;符号哟!


mysql -u root -p
hyReu5bQ
> GRANT ALL PRIVILEGES ON *.* TO 'ssdb'@'%' IDENTIFIED BY 'Kuxt8gKr' WITH GRANT OPTION;
> flush privileges;
> exit

其中几个字符串请自行替换为相应的:root数据库密码、Shadowsocks数据库用户名、Shadowsocks数据库密码

//在系统防火墙中开放网站的3306端口


iptables -I INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

 

//保存防火墙规则


iptables-save

————————————————————————————————


关于iptables的小贴士
iptables -L -n 可以查看出当前的防火墙规则
iptables -L -n --line-number 可以查看到每个规则chain 的序列号
iptables -D INPUT 2 根据序列号删除某条防火墙规则
iptables -L -n --line-number 再次查看是否删除成功

————————————————————————————————

5.sspanel命令建立管理账户

//进入网站的根目录


cd /home/wwwroot/ihot.info

//创建管理员帐号


php xcat createAdmin

至此,我们网站就建立成功了。以下两条sspanel命令可以便于我们管理sspanel面板

//SSpanel重置流量


php xcat resetTraffic

//发送流量使用情况邮件


php xcat sendDiaryMail

 

四、服务端安装

1.下载服务端源码配置运行

//安装依赖


apt-get update
apt-get install python-pip git python-m2crypto nano
pip install cymysql

//安装 shadowsocks-py-mu 服务端


git clone -b manyuser https://github.com/fsgmhoward/shadowsocks-py-mu.git

//进入服务端相应目录


cd shadowsocks-py-mu/shadowsocks

//拷贝配置文件


cp config_example.py config.py

//编辑配置文件


nano config.py

//节选内容,红色为必改
# !!! Please rename config_example.py as config.py BEFORE editing it !!!

import logging
# !!! Only edit this line when you update your configuration file !!!
# After you update, the values of CONFIG_VERSION in config.py and
# config_example.py should be the same in order to start the server
CONFIG_VERSION = ‘20160623-2’

# Manyuser Interface Settings
# —————————
# If API is enabled, database will be no longer used
# The known app that supports API is SS-Panel V3
# Be careful and check whether your app supports this API BEFORE you enable this feature
API_ENABLED = True

# Database Config
MYSQL_HOST = ‘主站IP
MYSQL_PORT = 3306
MYSQL_USER = ‘ssdb
MYSQL_PASS = ‘Kuxt8gKr
MYSQL_DB = ‘ssdb
# USUALLY this variable do not need to be changed
MYSQL_USER_TABLE = ‘user’
# This is also the timeout of connecting to the API
MYSQL_TIMEOUT = 30

# Shadowsocks MultiUser API Settings
API_URL = ‘http://ihot.info/mu’
# API Key (you can find this in the .env file if you are using SS-Panel V3)
API_PASS = ‘S060WkJAwq9KrkyKh
NODE_ID = ‘1

# Time interval between 2 pulls from the database or API
CHECKTIME = 30
# Time interval between 2 pushes to the database or API
SYNCTIME = 120
# Choose True if you want to use custom method and False if you don’t
CUSTOM_METHOD = True


 

注:NODE_ID = ‘1’ 字段需与主站后台添加的节点ID相同!

//试运行服务端,如果可以返回抓取的用户数据,则表示测试成功


python servers.py

 

2.安装进程守护程序保证重启生效

//安装依赖


apt-get install python-pip python-m2crypto supervisor

//新建配置文件并写入如下内容


nano /etc/supervisor/conf.d/shadowsocks.conf

//内容
[program:shadowsocks]
command=python /root/shadowsocks-py-mu/shadowsocks/servers.py -c /root/shadowsocks-py-mu/shadowsocks/config.json
autorestart=true
user=root


 

//启动


service supervisor start
supervisorctl reload

//修改以下文件


nano /etc/profile
nano /etc/default/supervisor

结尾添加3行
ulimit -n 51200
ulimit -Sn 4096
ulimit -Hn 8192

//debug 查看日志


supervisorctl tail -f shadowsocks stderr

//启动 & 重启 & 停止


supervisorctl start/restart/stop shadowsocks

教程到这里,服务端安装成功。可以愉快的多多添加节点咯!

五、常见错误

1.在服务端试运行过程中出现报错

ERROR Except thrown while pushing user data:No JSON object could be decoded

则说明,由于您主站采用了CDN,导致服务端无法正常通过API接口与主站互通。去掉CDN即可解决!

2.拷贝配置文件.env的时候会遇到文件不存在的错误提示

下载安装包手动通过SFTP上传即可解决

 

本文所用安装包版本备份:

SS-panel  http://ftp.al/i/1526/ss-panel-3.4.5.zip

Shadowsocks-py-mu  http://ftp.al/i/1526/shadowsocks-py-mu-3.1.1.zip

8 条评论

昵称
  1. 顷刻

    你好,请教一下,前端在A上,后端在B,B同时支持ipv4和IPv6,把两个地址分别添加得到两个节点id,但是config只能填一个吧,虽然ipv6也可以连接,但前端显示掉线,不计流量,怎么解决这个问题呢?

    1. Lop

      不好意思,没玩儿过ipv6

  2. MiAoMiao

    大佬 在根目录输入cp. env.example.env
    显示cp: cannot stat ‘.env.example’: No such file or directory 怎么回事儿

    1. Lop

      这句提示 .env 文件不存在。很简单。单独把包下载到本地,然后通过SFTP将文件传上去就可以解决了。

  3. MiAoMiao

    大佬,这一步怎么做//拷贝数据文件为.env 此文件在网站根目录中

    cp .env.example .env
    。。没明白 是直接输入这个码吗

  4. 隔壁套路哥

    沙发!多谢大佬远程安装,慢慢学。

    1. Lop

      甭客气!谢谢你让我纠正了几处错误!

      1. 隔壁套路哥

        大佬有木有兴趣再出个魔改版的