SSR+SSpanel 搭建记录

为方便大家安装 SSR 后端和 SSpanel 管理页面,在此记录一份完整搭建流程。

安装 SSR+SSpanel 前,请先确定好安装环境(本人使用 CentOS7x64,Vultr 日本 5$服务器)
本流程很长,而且是手动搭建,不喜的可以找网上的自动搭建脚本。
本流程有包含 LNMP 搭建方法,可以单独拆分出来,进而为 WordPress,Discuz 等框架做前期环境准备。


目录

1、开始安装
1.1、安装 Nginx 并开启防火墙 http 端口
1.2、安装 Mysql 并设置 root 密码
1.3、安装 libsodium
1.4、安装 PHP
1.5、安装 SSR
1.6、安装 SSpanel
1.7、配置 SSR+SSpanel+Mysql+Nginx
2、常用维护
3、出错排错
4、服务器改造


1、开始安装

你需要以下基础环境:EPEL 源,Nginx,Mysql,PHP,SSR-Mysql,libsodium
你需要以下扩展插件:cymysql、git、libmcrypt、gd、bzip2、openssl、libjpeg、libpng 等等
你需要配置服务器文件最大打开数,由默认的 1024 修改为 50000 以上数值( 临时命令 ulimit -SHn 65535
你需要注意:命令从上到下有先后顺序,有的命令是相对路径如果你掉线重连那么你需要重新进入对应的目录
你需要知道:Linux 服务器,使用命令与参数进行执行指定的操作,例如 ps -ef 中,ps 是命令,-ef 是参数,命令输入并 Enter 后提示成功,或者无提示,则为一次成功执行,否则通常都是失败。


1.1、安装 Nginx 并开启防火墙 http 端口

yum install -y nginx
代码解释:使用 Yum 安装 Nginx
systemctl enable nginx.service
代码解释:将 Nginx 服务设置为开机启动
systemctl restart nginx.service
代码解释:重启 Nginx 服务
firewall-cmd --add-service=http --permanent
代码解释:永久开启 Firewall 防火墙的 http 协议端口(默认 80 端口)
systemctl restart firewalld.service
代码解释:重启 Firewall 防火墙

如果安装 Nginx 时,提示找不到 Nginx 的包,则需要安装 EPEL 源(手动安装方法需要到官网确认 EPEL 最新版本号)

自动安装方法:yum install epel-release

手动安装方法
rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-7.noarch.rpm
代码解释:使用 RPM 下载并解压 EPEL 源
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
代码解释:导入 EPEL 源
yum repolist
代码解释:重新加载所有 Yum 源


1.2、安装 Mysql 并设置 root 密码

(此处 Root 密码为 HelloWorld,请各位自行注意修改)

yum install mariadb-server mariadb -y
代码解释:安装 Mariadb 服务端与客户端(原软件为 Mysql)
systemctl enable mariadb.service
代码解释:将 Mariadb 服务设置为开机启动
systemctl restart mariadb.service
代码解释:重启 Mariadb 服务
mysqladmin -u root password "HelloWorld"
代码解释:初始化 Mariadb 的 Root 用户密码为 HelloWorld


1.3、安装 libsodium

(请到 Github 查看最新版本号并替换以下区域中 1.0.12 字段)

yum -y install libsodium
如果你不会编译,可以直接用 yum 安装 libsodium

yum -y groupinstall "Development Tools"
代码解释:安装 CentOS 开发工具组
wget https://github.com/jedisct1/libsodium/releases/download/1.0.12/libsodium-1.0.12.tar.gz
代码解释:下载 libsodium-1.0.12.tar.gz 文件
tar xf libsodium-1.0.12.tar.gz && cd libsodium-1.0.12
代码解释:解压缩 libsodium-1.0.12.tar.gz 文件并进入解压后的文件夹
./configure && make -j2 && make install
代码解释:初始化编译环境,预编译,编译安装
echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf
代码解释:将编译后的 Libsodium 路径添加到动态链接库中
ldconfig
代码解释:使用动态链接库加载 Libsodium


1.4、安装 PHP

(编译费时,请安静等待。此处引用 typecodes 的 PHP 安装方法

1.4.1、安装 PHP 所需系统模块

yum install -y gcc gcc-c++ autoconf libmcrypt libmcrypt-devel libjpeg libjpeg-devel libpng libpng-devel libxml2 libxml2-devel curl curl-devel openssl openssl-devel freetype freetype-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel readline-devel libxslt-devel expat-devel xmlrpc-c xmlrpc-c-devel

1.4.2、下载并解压 PHP

(此处链接为中国 PHP 下载链接,并且 PHP 版本为 7.0.17)

wget http://cn2.php.net/distributions/php-7.0.17.tar.gz
代码解释:下载 php-7.0.17.tar.gz 文件
tar xf php-7.0.17.tar.gz && cd php-7.0.17
代码解释:解压缩 php-7.0.17.tar.gz 文件并进入解压后的文件夹
./buildconf --force
代码解释:初始化编译命令

1.4.3、设置编译参数(此参数适应绝大多数环境)

./configure --prefix=/usr/local/php7 --exec-prefix=/usr/local/php7 --bindir=/usr/local/php7/bin --sbindir=/usr/local/php7/sbin --includedir=/usr/local/php7/include --libdir=/usr/local/php7/lib/php --mandir=/usr/local/php7/php/man --with-config-file-path=/usr/local/php7/etc --with-mysql-sock=/var/lib/mysql/mysql.sock --with-mcrypt --with-mhash --with-openssl --with-mysql=shared,mysqlnd --with-mysqli=shared,mysqlnd --with-pdo-mysql=shared,mysqlnd --with-iconv --with-zlib --enable-zip --with-bz2 --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-xml --enable-bcmath --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-mbstring --enable-ftp --with-readline --with-gd --enable-gd-native-ttf --enable-gd-jis-conv --with-libxml-dir --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache --enable-fpm --enable-fastcgi --with-fpm-user=nginx --with-fpm-group=nginx --without-gdbm --disable-fileinfo

PS:–disable-fileinfo 参数是 1GB 以下内存的服务器额外添加的,否则会编译失败

1.4.4、编译并安装 PHP

make clean && make && make install

1.4.5、复制默认的 PHP 配置文件

cp php.ini-production /usr/local/php7/etc/php.ini
代码解释:复制 php 配置文件
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
代码解释:复制 php-fpm 服务文件到系统中并重命名为 php-fpm
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
代码解释:复制 php-fpm 配置文件
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
代码解释:复制 php-fpm 配置文件加载的额外参数

vi /usr/local/php7/etc/php.ini
代码解释:修改 PHP 参数配置文件,其中 ; 是注释一行的意思,# 仅代表此文章注释
(建议使用 SFTP 下载到本地,使用”支持 Linux 换行”的编辑器比如 Notepad++)

######设置 PHP 的扩展库路径 注意不同版本日期可能存在变化
extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20141001/"

######设置 PHP 的 opcache 和 mysql 动态库
zend_extension=opcache.so
extension=mysqli.so
extension=pdo_mysql.so

######开启 opcache
[opcache]
; Determines if Zend OPCache is enabled
opcache.enable=1

vi /usr/local/php7/etc/php-fpm.d/www.conf
代码解释:编辑 php-fpm 的站点配置,添加额外设置(添加代码到配置文件最后即可,此步骤不做影响不大)

######设置 php 的 session 目录(所属用户和用户组都是 nginx)
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session

PS:如果想优化配置,可以查看 TypeCodes 的 PHP 配置文件优化方法 进行简单优化配置

1.4.6、添加 PHP 环境变量

echo -e '\nexport PATH=/usr/local/php7/bin:/usr/local/php7/sbin:$PATH\n' >> /etc/profile && source /etc/profile

1.4.7、设置 PHP 所用目录与配置 PHP 开机启动

mkdir -p /var/lib/php/session
代码解释:创建 /var/lib/php/session 目录
chown -R nginx:nginx /var/lib/php
代码解释:赋予 nginx 的 /var/lib/php 文件夹与子文件夹所有者权限
chmod +x /etc/init.d/php-fpm
代码解释:赋予 php-fpm 运行权限
chkconfig --add php-fpm
代码解释:添加 php-fpm 到服务
chkconfig php-fpm on
代码解释:设置 php-fpm 开机启动

1.4.8、测试 PHP 配置文件是否正确,并启动 php-fpm

php-fpm -t
service php-fpm start

PS:此处测试配置文件必须保证只看到 success 而无 Failed,启动命令输入可以在 ps -ef 命令中找到 php-fpm 存在,否则就是 PHP 有问题。


1.5、安装 SSR

(注意:SSR 官方有 WIKI 指导用户安装,在此感谢 SSR 作者 breakwa11)

yum install python-setuptools && easy_install pip
代码解释:安装 python 工具包,并使用 easy 安装 pip 程序
yum install git
代码解释:安装 Git 工具
pip install cymysql
代码解释:使用 pip 安装 cymysql
mkdir /website && cd /website && git clone -b manyuser https://github.com/shadowsocksr/shadowsocksr.git
代码解释:创建/website 目录,进入/website 目录,下载 SSR 文件
cd shadowsocksr && bash initcfg.sh
代码解释:进入 SSR 目录,初始化 SSR 配置文件

 


1.6、安装 SSpanel

(注意,SSpanel 官方有 WIKI 指导用户安装,在此感谢 SSpanel 作者 orvice)

cd /website && git clone https://github.com/orvice/ss-panel.git
代码解释:进入/website 文件夹,下载 SSpanel
cd ss-panel && cp .env.example .env
代码解释:进入 SSpanel 文件夹,复制站点配置文件
chmod -R 777 storage
代码解释:赋予 storage 文件夹任何人都可读写执行的权限
curl -sS https://getcomposer.org/installer | php
代码解释:使用 curl 命令获得组件安装程序
php composer.phar install
代码解释:使用 composer 安装所需要的组件
备注:此处通常会出现各种 PHP 环境缺失问题,但本流程由于 PHP 安装时所需模块都已加载,所以不会出现错误
yum install -y redis
代码解释:安装 redis 验证工具
systemctl enable redis.service
代码解释:配置 redis 开机启动
systemctl restart redis.service
代码解释:将 redis 重启


1.7、配置 SSR+SSpanel+Mysql+Nginx

1.7.1、编辑 SSpanel 站点信息

vi /website/ss-panel/.env
/* 请替换其中的 45.32.66.100 为你服务器的公网 IP 地址 */

// !!! 修改此 key 为随机字符串确保网站安全 !!!
key = 'D`PwilAC&Q5''[email protected]*6F7'
env = 'prod' // 正式环境请保持 env 为 prod 确保安全
debug = 'false' // 正式环境请确保为 false
appName = 'SSpanel+SS' //站点名称
baseUrl = 'http://45.32.66.100' // 站点地址
timeZone = 'PRC' // RPC 天朝时间 UTC 格林时间
pwdMethod = 'sha256' // 密码加密 可选 md5,sha256
salt = '' // 密码加密用,从旧版升级请留空
theme = 'default' // 主题
// v3.4 后使用 session 代替 authDriver
// session,cache 可选 file/redis
session = 'redis'
cache = 'redis'
tokenDriver = 'db'

1.7.2、创建 Mysql 数据库与用户

(数据库名 sspanel ,用户名 ssr18 ,用户密码 WelcomeSSR666

mysql -u root -p
/* 请输入 Root 密码,本搭建流程默认为 HelloWorld */
代码解释:进入 Mysql 的管理模式
create database sspanel;
代码解释:创建数据库 sspanel
create user 'ssr18'@'localhost' identified by 'WelcomeSSR666';
代码解释:创建用户 ssr18,仅本地有效,登录密码为 WelcomeSSR666
GRANT ALL ON sspanel.* TO 'ssr18'@'localhost';
代码解释:赋予 [email protected] 关于 sspanel 数据库的所有权限
flush privileges;
代码解释:保存 Mysql 的权限表并刷新
exit
代码解释:退出 Mysql 的管理模式

1.7.3、导入数据库并设置 SSR 与 SSpanel 的数据库信息

mysql -uroot -p sspanel < /website/ss-panel/db.sql
代码解释:将 db.sql 的信息导入到 sspanel 数据库中
/* 导入数据库时请输入 Root 密码,本搭建流程默认为 HelloWorld */
vi /website/ss-panel/.env
代码解释:编辑 SSpanel 的配置文件
/* 请在对应区域输入信息,数据库主机 localhost ,端口 3306 ,数据库名 sspanel ,用户名 ssr18 ,用户密码 WelcomeSSR666 */

# database 数据库配置
db_driver = 'mysql'
db_host = 'localhost'
db_port = '3306'
db_database = 'sspanel'
db_username = 'ssr18'
db_password = 'WelcomeSSR666'
db_charset = 'utf8'
db_collation = 'utf8_general_ci'
db_prefix = ''

vi /website/shadowsocks/usermysql.json
代码解释:编辑 SSR 的数据库链接配置文件
/* 请在对应区域输入信息,数据库主机  127.0.0.1 ,端口 3306 ,数据库名 sspanel ,用户名 ssr18 ,用户密码 WelcomeSSR666 */

 "host": "127.0.0.1",
 "port": 3306,
 "user": "ssr18",
 "password": "WelcomeSSR666",
 "db": "sspanel",
 "node_id": 1,
 "transfer_mul": 1.0,
 "ssl_enable": 0,
 "ssl_ca": "",
 "ssl_cert": "",
 "ssl_key": ""

1.7.4、创建 SSPanel 初始账户

cd /website/ss-panel && php xcat createAdmin
/* 请手动输入你的管理员账户与密码,此密码与 SSR 登录密码无关 */
/* 除非你看到了创建管理员账户成功,否则都是创建失败,比如出现一大堆信息 */

1.7.5、添加 Nginx 站点配置文件

vi /etc/nginx/conf.d/sspanel.conf
/* 请替换其中的 45.32.66.100 为你服务器的公网 IP 地址 */

server {
  listen 80;
  listen [::]:80;
  server_name 45.32.66.100;
  root /website/ss-panel/public;
  location / {
      try_files $uri $uri/ /index.php$is_args$args;
      index index.php;
  }
  location ~ \.php$ {
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
  }
}

chown -R nginx:nginx /website/ss-panel/
代码解释:赋予 Nginx 关于/website/ss-panel/文件夹与子文件夹的所有权限
systemctl restart nginx.service
代码解释:重启 Nginx 服务
/* 此时如果无误操作,则可以直接登录 SSpanel 前端来管理。地址为服务器公网地址 */

1.7.6、编辑 SSR 配置文件并试运行

(如果不明白可以查看 WIKI

cd /website/shadowsocks/
代码解释:进入 SSR 根目录
vi userapiconfig.py
代码解释:编辑 SSR 的 API 接口配置文件

# Config
API_INTERFACE = 'sspanelv3'

vi user-config.json
代码解释:编辑 SSR 的节点配置文件
/* 请对应修改,从上到下依次为加密、协议、混淆,后缀_compatible 代表支持原版 SS */

"method": "chacha20",
"protocol": "auth_sha1_compatible",
"obfs": "tls1.2_ticket_auth_compatible",

chmod +x *.sh && git pull && ./logrun.sh && ./tail.sh
代码解释:赋予 SSR 所有 sh 脚本可执行权限,更新 SSR 服务端,使用日志模式启动 SSR,实时查看 SSR 日志
/* 查看 log 日志,如果如下图所示则启动成功(SSR 端口为 8888 ,密码为 shadowsocksr18)*/

2016-08-10 20:00:00 INFO util.py:85 loading libsodium from libsodium.so.18
2016-08-10 20:00:00 INFO asyncdns.py:324 dns server: [('108.61.10.10', 53)]
2016-08-10 20:00:00 INFO db_transfer.py:131 db start server at port [8888] pass [shadowsocksr18] protocol [auth_sha1_compatible] obfs [tls1.2_ticket_auth_compatible]
2016-08-10 20:00:00 INFO server_pool.py:128 starting server at [::]:8888
2016-08-10 20:00:00 INFO server_pool.py:154 starting server at 0.0.0.0:8888

firewall-cmd --add-service=dns --permanent
代码解释:永久开启 Firewall 防火墙的 DNS 服务端口(默认是 TCP-53 与 UDP-53)
firewall-cmd --add-port=8888/tcp --permanent
代码解释:永久开启 Firewall 防火墙的 TCP-8888 端口
firewall-cmd --add-port=137-138/tcp --permanent
代码解释:永久开启 Firewall 防火墙的 TCP-137 与 TCP-138 端口
firewall-cmd --reload
代码解释:重新加载 Firewall 防火墙配置文件
/* 开启防火墙对应端口(对照 SSR 列表开启,本例开启 8888 和 137,138 端口)*/
/* 此时即可使用 SSR 客户端访问服务器,IP 地址:服务器公网地址,端口,密码,加密,协议,混淆都如上。 */

1.7.7、添加计划任务,每月 1 日重置流量

echo " 0 0 1 * * root cd /website/ss-panel && /usr/local/php7/bin/php xcat resetTraffic" >> /etc/crontab

1.7.8、修改系统所在时区

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

1.7.9、添加 SSR 开机启动(使用 rc.local)

echo "sh /website/shadowsocks/run.sh" >> /etc/rc.local
chmod +x /etc/rc.local
代码解释:赋予 rc.local 可执行权限,默认 CentOS-7 不使用 rc.local


2、常用维护

2.1、备份站点数据(注意此备份无时间标记,请自行分类)

mysqldump -uroot -p sspanel > sspanel.sql
代码解释:将 sspanel 数据库信息保存到 sspanel.sql 文件中
tar zcvpf shadowsocks.tgz /website/shadowsocks
代码解释:将 SSR 根目录文件集体打包到 shadowsocks.tgz
tar zcvpf sspanel.tgz /website/ss-panel
代码解释:将 SSpanel 根目录文件集体打包到 sspanel.tgz


3、出错排错

3.1、SSR 后端无法启动

可能端口被占用,可能启动多个实例,可能 user-config 配置文件错误,可能 usermysql 配置文件错误,可能数据库用户登录失败,可能数据库结构错误(极少)

3.2、SSR 客户端无法链接,但服务端正常启动

可能密码错误,可能流量已超量,可能刚刚修改未同步(60s),可能防火墙未开启端口,可能端口被 GFW 关照,可能加密协议混淆配置错误,可能协议参数混淆参数配置错误

3.3、SSpanel 前端无法打开,有返回信息

请及时编辑 .env 文件开启 Log 日志模式,寻找 Log 显示的错误并针对性解决。可能 redis 未开启,可能用户没有足够的权限访问文件夹,可能.env 文件格式错误,可能 sspanel 配置文件数据库错误,可能数据库用户登录失败,可能数据库结构错误(极少)

例 1:unable to write file 错误 –>–>–> 对应用户没有足够的权限访问文件夹
例 2:Connection refused [tcp://127.0.0.1:6379] 错误 –>–>–> 对应 Redis 未开启或未安装

3.4、SSpanel 使用命令无法创建管理员

请注意 SSpanel 的站点配置文件的数据库相关信息是否正确,用户名密码有无错误,数据库是否已经导入,并针对性查找 Mysql 是否有错误,或者关联的 PHP 是否有问题
例如:某些主机的 mysql 不支持 localhost,需要修改 SSR 和 SSPanel 配置文件中的主机,由 localhot 改为 127.0.0.1
例如:PHP 没修改配置文件,未加载 Mysql 的动态链接库

3.5、SSpanel 前端可以打开,但是就是无法登录账户

提示 500 错误,可能是密码错误,可能账户被管理员禁用,可能.env 的随机字符串被修改,大多数情况和 3.4 问题一个原因。

3.6、SSpanel 前端无法打开,无返回信息

请注意 Nginx 的站点配置文件的信息是否正确,并针对性查找 Nginx 是否有错误,或者关联的 PHP 是否有问题
例如:站点根目录路径错误,没找到主页

3.7、服务器运行后异常的慢

请检查 ulimit 的文件打开数是否还原为 1024,可使用临时命令 ulimit -SHn 65535 将其改为 65535。如果想永久修改,可以 Google “centos ulimit”

3.8、服务器运行流程

SSR 需要的组件与数据:Mysql、Python、cymysql、libsodium、Mysql 指定表中用户的端口与密码

SSpanel 需要的组件与数据:PHP、Nginx、Mysql、Redis

PHP 安装需要的组件:Nginx、Mysql、各类编译参数所需软件

Nginx 需要的组件与数据:站点配置文件(根据站点文件内容,可能需要 PHP)

SSR(mudbjson 版)需要的组件与数据:Python、cymysql、libsodium、mdubjson 中的用户信息

3.9、简单的 VPS 问题排错指南

LinkTo:https://blog.starryvoid.com/archives/170.html


4、服务器改造

4.1、将网站支持 SSL 强化安全

你可以将 SSpanel 改进为 https 访问的网站,这样可以减少被 GFW 关照的风险。(需要提前准备好 SSL 证书文件,放置于 /website/userssl/ 文件夹下,你也可以修改路径存放到其他文件夹下)
方法是修改 Nginx 的站点配置文件,在 listen 80; 下面添加对应的 SSL 参数(本例支持 IPV6,会有额外的 [::]:80)
vi /etc/nginx/conf.d/sspanel.conf

listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /website/userssl/server.crt;
ssl_certificate_key /website/userssl/server.key;

systemctl restart nginx.service


4.2、禁止 http 的访问请求

由于 http 仍然可以访问,所以我们需要将 http 的请求手动转移到 https,由于 SSpanel 本身使用了重定向,那么在不使用其他重定向的情况下,最简单的方法就是用 html 网页的<meta> 参数

可以新建一个站点配置,并且指定的站点目录下放置一个 html 文件,本例文件站点名称为 SSR18,使用 images/favicon.ico 作为图标,打开网页 0 秒后刷新到 https 站点.
(如果不太明白可以 Google “Nginx 创建站点配置文件”与”Html 网页制作”)

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <link href="images/favicon.ico" rel="icon" type="image/x-icon"/>
 <link href="images/favicon.ico" rel="shortcut icon"type="image/x-icon"/>
 <title>SSR18</title>
<meta http-equiv="refresh" content="0;url=https://45.32.66.100">
</head>
</html>

4.3、升级你的 SSR 服务端

SSR 服务端在经过一段时间后可能会产生新版本,这时你可以直接升级到新版本。

cd /website/shadowsocks && git pull

同时,升级后你可以对服务端进行测试,SSR 默认的脚本程序如下

./run.sh
后台运行(无日志)(ssh 窗口关闭后也继续运行)
./logrun.sh
后台运行(保存日志)(默认日志会保存在根目录的 ssserver.log,可手动查看)
./tail.sh
动态查看 ssserver.log 的文件内信息
./stop.sh
停止运行


4.4、手动编辑数据库

Shadowsock 数据库表中字段的对应关系如下,你可以手工添加账户与修改(绕过 SSpanel)

字段名 字段解释
id 编号
user_name 站点用户名
email 站点登录邮箱
pass 站点登录密码
passwd SS 密码
t 最近登录时间
u 上传
d 下载
transfer_enable 总流量限制
port 端口号
portocol 自定义 SSR 协议
obfs 自定义 SSR 混淆
switch 开关
enable 是否启用账户
type 未知字段
last_get_gift_time 最后得到礼物时间
last_check_in_time 最后签到时间
last_rest_pass_time 最后重置密码时间
reg_data 注册时间
invite_num 可生成邀请码数量
is_admin 是否为管理员
ref_by 邀请人
expire_time 账户到期时间
method 自定义加密方式
is_email_verify 是否通过邮件认证
reg_ip 注册时的公网 IP

4.5、使用 Mudbjson 独立运行 SSR 后端

关于 SSR 使用 Mudbjson 独立运行,SSR 作者提供了 WIKI 可以翻阅
优点在于减少运行时需要占用的内存,缺点没有 Mysql 无法使用前端管理

此方法你只需要安装 libsodium,不需要安装与配置 nginx,mysql,php,同时此方法不支持 sspanel。

安装 SSR 部分与之前有小区别,修改 userapiconfig.py 中的 API 信息为 mudbjson 即可

配置 SSR 部分使用 python mujson_mgr.py 并在后面添加额外参数以创建,修改,删除用户信息

例 1:python mujson_mgr.py -a -u ssruser -p 137 -k shadowsocks6 -t 10 -f 1-52,54-79,81-442,444-65535
创建新用户,用户名 ssruser ,端口号 137 ,密码为 shadowsocks6 ,加密默认 aes-256-cfb ,协议/混淆都为默认 auth_sha1_v2_compatible 与 tls1.2_ticket_auth_compatible ,协议参数与混淆参数也都为默认无,流量设置为 10GB ,可访问端口为 53,80,443 三个端口。

例 2:python mujson_mgr.py -l -u ssruser
查看用户 ssruser 的当前信息

例 3:python mujson_mgr.py -e -u ssruser -k ssr666good -m chacha20
修改用户 ssruser 的密码为 ssr666good,加密方式为 chacha20

运行 SSR 部分与之前无区别,注意运行后仍然需要防火墙打开端口.


4.6、创建多节点共用相同数据库

节点服务器由于无 Mysql 服务端,无 Nginx,无 PHP,所以可以在 128M 的小 VPS 上稳定运行
优点就是占用资源少,缺点是和主服务器连接如果不稳定,那么就会报错并无法使用。

创建 SSR 子节点时,主服务器需要创建 Mysql 新账户并赋予 SSR 数据库访问权限。
(数据库名 sspanel ,新建用户名 ssr233 ,新用户密码 WelcomeSSR233,新用户许可登录区域为 % ,代表任意地点 )

mysql -u root -p
create user 'ssr233'@'%' identified by 'WelcomeSSR233';
GRANT ALL ON sspanel.* TO 'ssr233'@'localhost';
flush privileges;
exit

节点服务器安装与配置部分与主服务器相同,安装数据库信息填写时稍微改动,节点服务器加密协议混淆可以与主服务器不同。

vi /website/shadowsocks/usermysql.json
/* 请额外修改几个参数,数据库主机 
host 指向主服务器  ,数据库端口 port 指向主服务器端口 ,节点 ID node_id 指向 SSPanel 的节点编号,流量比例 transfer_mul 指本节点流量比例  userpassword 两个参数使用新用户,db 数据库不变  */

 "host": "45.32.66.100",
 "port": 3306,
 "user": "ssr233",
 "password": "WelcomeSSR233",
 "db": "sspanel",
 "node_id": 1,
 "transfer_mul": 1.0,

4.7、安装 net-tools 网络工具

如果你无法使用 ifconfig 等网络命令,可以使用如下命令安装
yum install net-tools


4.8、由 CentOS7.3 降级为 7.2

如果想降级到 7.2 版本,可以使用命令手动降级

第一步安装 7.2 内核
rpm -ivh http://vault.centos.org/7.2.1511/os/x86_64/Packages/kernel-tools-libs-3.10.0-327.el7.x86_64.rpm --force
rpm -ivh http://vault.centos.org/7.2.1511/os/x86_64/Packages/kernel-tools-3.10.0-327.el7.x86_64.rpm --force
rpm -ivh http://vault.centos.org/7.2.1511/os/x86_64/Packages/kernel-3.10.0-327.el7.x86_64.rpm --force
rpm -qa|grep -i kernel-3.10.0-

第二部加载 7.2 版本
wget ftp://ftp.icm.edu.pl/vol/rzm5/linux-slc/centos/7.1.1503/updates/x86_64/Packages/centos-release-7-2.1511.el7.centos.2.10.x86_64.rpm
rpm -ivh centos-release-7-2.1511.el7.centos.2.10.x86_64.rpm --force
rpm -qa|grep -i centos-release-7-

第三部卸载 7.3 版本与内核
rpm -ev centos-release-7-3.1611.el7.centos.x86_64
rpm -ea kernel-3.10.0-514.el7.x86_64
rpm -ea kernel-3.10.0-514.10.2.el7.x86_64

查看安装情况
uname -r
cat /etc/redhat-release

一切 OK,重启即可
reboot

 4.9、其他相关

LNMP 环境的搭建与些许讲解 [链接 ]

使用 Supervisor 进程守护工具保障程序运行 [ 链接 ]

CentOS 挂载安装光盘作为 yum 源 [链接 ]

使用 Let’s Encrypt 生成 SSL 证书 [ 链接 ]

Linux 两条常用小命令 [链接 ]

增强 nginx 的 SSL 安全性 [ 链接 ]

SSH 修改端口号与使用证书登录 [链接 ]

用 sh 脚本备份服务器 [ 链接 ]

重置 Mysql 密码 [ 链接 ]

搭建 KMS 服务器 [ 链接 ]

使用脚本快速组建 SS 服务器 [ 链接 ]

使用 FinalSpeed 加速服务器(OpenVZ 常用)[ 链接 ]


点赞
  1. ahcute说道:
    Sogou Explorer Sogou Explorer Windows 7 x64 Edition Windows 7 x64 Edition

    先 mark 一下。。。
    不会代码,大学专业为平面设计类。。。

    前几天一直看各种教程,,,最多达到 sspanel 前端可访问全部 500 :smile:

    现已同服务商同款主机同款套餐,一切照抄包括密码 :razz:

    希望能搭成 :neutral:

    如有问题便再次来访寻求支援,望不吝赐教 :idea:

    搭到一半,发现问题,步骤 1.3 最后一步,出现

    ./buildconf
    You should not run buildconf in a release package.
    use buildconf --force to override this check.

    按照提示加了 --force 得以继续运行

    以后非常白的小白可以参照一下。。。

  2. ahcute说道:
    Sogou Explorer Sogou Explorer Windows 7 x64 Edition Windows 7 x64 Edition

    步骤 1.4.5
    修改文件不知道在哪里修改。。。
    匹配到一大堆。。。
    是添加那一段代码进去吗?
    添加在哪里。。。

    1. StarryVoid说道:
      Google Chrome 53.0.2785.101 Google Chrome 53.0.2785.101 Windows 10 x64 Edition Windows 10 x64 Edition

      我的疏忽,已补充,感谢提醒

  3. ghostsf说道:
    UC Browser 5.7.15319.202 UC Browser 5.7.15319.202 Windows 7 x64 Edition Windows 7 x64 Edition

    文章写得很不错 很细致 我最近也搭了一个

  4. StarryVoid说道:
    Google Chrome 53.0.2785.101 Google Chrome 53.0.2785.101 Windows 10 x64 Edition Windows 10 x64 Edition

    修改文件是上面使用 vi 编辑器打开的,php.ini 和 www.conf
    文章排版上没有理解么?

  5. niconico说道:
    Google Chrome 55.0.2883.28 Google Chrome 55.0.2883.28 Windows 10 x64 Edition Windows 10 x64 Edition

    sspanelv3 mod + SSR manyuser 安装好以后,前端后端都能正常工作,但是貌似是由于修改 /shadowsocks/userapiconfig.py 是使用了指定的加密、协议、混淆方式,在前端面板用户更改自定义加密、协议、混淆后就无法正常连接 SSR;若用户仅重置端口并添加防火墙例外后则可正常连接 SSR。请问如何才能实现用户在前端面板自定义加密、协议、混淆方式后正常连接 SSR。系统为 CentOS 6.5,

    1. StarryVoid说道:
      Google Chrome 53.0.2785.101 Google Chrome 53.0.2785.101 Windows 10 x64 Edition Windows 10 x64 Edition

      正常操作后,默认即可用户自定义加密方式
      协议与混淆暂时 sspanelv3 不支持(实际已经在数据库增加了相应值)
      修改后需要经过一个数据库更新时间,默认 1 分钟。

  6. 我的名字叫回忆说道:
    Google Chrome 54.0.2840.85 Google Chrome 54.0.2840.85 Android 6.0 Android 6.0

    不错啊,写得很详细,学习学习

  7. 小小小明说道:
    Google Chrome 52.0.2743.116 Google Chrome 52.0.2743.116 Windows 7 x64 Edition Windows 7 x64 Edition

    博主你好!我想问一下,修改 Nginx 站点配置文件之后,就无法加载出 phpmyadmin 管理网页了,这是怎么回事?_谢谢!

    1. StarryVoid说道:
      Google Chrome 57.0.2987.133 Google Chrome 57.0.2987.133 Windows 10 x64 Edition Windows 10 x64 Edition

      你先查一下 phpmyadmin 在 nginx 或者 apache 的站点配置文件是否加载,以及端口,位置等映射是否正确。
      phpmyadmin 是通过 nginx 映射出去端口,所以如果 nginx 没过去是不能加载的。

      1. 小小小明说道:
        Google Chrome 52.0.2743.116 Google Chrome 52.0.2743.116 Windows 7 x64 Edition Windows 7 x64 Edition

        谢谢解答!