史上最详细最全面的ss-panel部署教程(V3版本)

作者:AlexTan

E-mail:[email protected]


今天弄了一下午的ss-panel,看见网上好多教程,基本上都不太全。折腾了好久,终于弄好了,于是打算写一个博客分享一下!

本教程面向新手,不过还是希望读者有一定的linux操作经验,有搭建服务器的经验那就更好了!废话不多说,我们开始:

一、基本环境搭建:

系统版本:ubuntu16.04

安装 LNMP

LNMP 是常用的 web 环境 Linux, Nginx, MySQL, PHP 的统称。如果你已经配置完成了环境可以直接跳过这一步。网络上有一些自动安装的脚本,不过在这里我主要介绍一下手动安装各个部件。

NGINX

安装 Nginx 没啥难度,直接用包管理就好。如果你需要更多的模块得自己编译,当然这就不是我们的讨论范围了。

sudo apt-get update  
sudo apt-get install nginx  

Finished.

MySQL

同理,直接用包管理就好。

sudo apt-get install mysql-server  

安装过程中会让你设置数据库管理员密码,照做就好。

PHP

Ubuntu 自带的 PHP 版本太老了,所以得安装最新的 PHP 7。稍微麻烦一点。

添加 PPA:

sudo add-apt-repository ppa:ondrej/php  

如果有乱码,试试下面的这个:

sudo apt-get install language-pack-en-base  
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php  

完了就开始装吧。

sudo apt-get update  
sudo apt-get install php7.0 php7.0-fpm php7.0-mysql php7.0-gd php7.0-curl php7.0-mbstring php7.0-dom 

部署 SS-Panel 前端

下载 ss-panel。目录随意,我的放在 /var/www

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

进入目录,使用 composer 安装需要的依赖。

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

没啥问题的话等一会就会装好了。如果有问题,老规矩看输出,缺啥装啥。

完了就安装 redis

sudo apt-get install redis-server  

添加 MySQL 数据库:

mysql -u root -p

mysql>​create database shadowsocks;  
> use shadowsocks;
> source /var/www/ss-panel/db-160409.sql;
> flush privileges;
> exit;

配置 NGINX

创建配置文件:

sudo vim /etc/nginx/sites-enabled/ss-panel  

加入以下代码:

server {  
    listen 80;

    server_name example.com;

    root /var/www/ss-panel/public/;
    index index.php index.html index.htm;

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

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

当然这是典型配置,记得把 example.com 换成你自己的网址。强烈推荐上 HTTPS 保护用户及管理员信息在传输过程中的安全。

复制并修改 SS-Panel 配置文件

进入到 ss-panel 文件夹,复制配置文件:

cp .env.example .env  

修改其中的信息,记得把 yourpassword 改成你自己的密码:

# database 数据库配置
db_driver = 'mysql'  
db_host = 'localhost'  
db_port = '3306'  
db_database = 'shadowsocks'  
db_username = 'root'  
db_password = 'yourpassword'  
db_charset = 'utf8'  
db_collation = 'utf8_general_ci'  
db_prefix = ''  

你还需要修改 .env 中的 muKey 字段,修改为任意字符串(最好只包含 ASCII 字符),下面配置后端的时候我们需要使用到这个muKey

muKey = 'test'  

接下来,确保 storage 目录可写入(否则 Smarty 会报错):

sudo chmod -R 777 /var/www/ss-panel/storage/

其他的配置项目前用不到,以后有需要可以自行修改。

添加一个管理员账户:

php xcat createAdmin  

开启 nginx 服务器:

sudo service nginx start  

好了,现在访问网站应该就可以看到 SS-Panel 界面了。前端界面到此部署完毕。

接下来部署后端 shadowsocks-manyuser

在本篇教程中我们使用 fsgmhoward/shadowsocks-py-mu 这个版本的后端。

先将代码 clone 到本地:

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

源码 clone 后,你的目录结构应该是这样的:

directory structure ss mu

其中的 shadowsocks 子目录才是我们需要的,外面的是 setup.py 的相关文件。

配置 shadowsocks-manyuser

进入 shadowsocks 目录,将 config_example.py 复制一份到 config.py

$ cp config_example.py config.py

修改其中第 15 行和第 29~31 行的内容:

# 启用 MultiUser API
API_ENABLED = True

# 就是在你的站点地址后面加个 /mu
API_URL = 'http://ss.prinzeugen.net/mu'  
# 还记得上面在 .env 中填写的 muKey 吗?把它填在这里
API_PASS = 'test'  

由于我们选择使用 Mu API 来与前端通信,所以我们不需要修改 config.py 中任何关于数据库的配置。

好了,现在可以试着运行一下 $ python servers.py 了(注意,是 servers.py 而不是server.py)。如果没错的话,应该可以看到这样的输出:

running successfully

其中 P[XXX] 表示用户端口,M[XXX] 表示加密方式,E[XXX] 表示用户的邮箱地址。这些都会随着 ss-panel 前端中用户配置的改变而实时变化。


注意:在这之前你得以管理员进入你的前端页面,添加一个节点。加密方法,建议用 aes-256-cfb

0x03 常见错误 FAQ

连接上 shadowsocks 试试看能不能翻墙了?八成不能

虽然你成功的把 servers.py 跑起来了,但还可能有各种神奇的错误阻止你翻出伟大的墙。

首先国际惯例查看连接:

$ netstat -anp | grep 你的端口

正常的话,应该是这样的:

Active Internet connections (servers and established)  
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name  
tcp        0      0 0.0.0.0:62111            0.0.0.0:*               LISTEN      32083/python  
tcp        0      0 162.233.122.111:62111    115.233.233.140:47177   TIME_WAIT   -  
tcp        0      0 162.233.122.111:62111    115.233.233.140:47161   TIME_WAIT   -  
tcp        0      0 162.233.122.111:62111    115.233.233.140:47160   TIME_WAIT   -  
tcp        0      0 162.233.122.111:62111    115.233.233.140:47157   TIME_WAIT   -  

如果没有来自你的 IP 的 TCP 连接的话,那八成就是防火墙的锅了,执行 iptables 放行你的端口:

$ iptables -I INPUT -p tcp -m tcp --dport 你的端口 -j ACCEPT
$ iptables-save

ss-panel 新注册的用户所分配的端口均为其 id-1 的用户的端口号 + 1。比如说你把 admin 用户(uid 为1)的端口改为 12450(ss-panel 中不能改,去数据库改),那么后面注册的新用户的端口就会是 12451, 12452 这样递增的。

所以如果你要开放注册,就要这样配置你的 iptables:

# 注意是半角冒号,意为允许 12450 及以上的端口
# 也可以指定 12450:15550 这样的范围
$ iptables -I INPUT -p tcp -m tcp --dport 12450: -j ACCEPT

现在再连接 shadowsocks 就应该可以看到 TCP 连接信息了。并且你可以在 ss-mu 后端的输出信息中看到详细的连接日志:

connection log


最后




如果servers.py能成功运行,不报错,但是连上shadowsocks服务器端提示密码有问题的话,很可能就是加密方式有问题(博主遇到过这个问题),我查看了一下config.py文件里写的默认加密方式是:aes-256-cfb,这也是为什么上面建议用这种方式加密的原因!



配置开机自动运行servers.py

编辑/etc/rc.local文件:



在末尾添加你的运行命令:


python /path/servers.py  

path为你servers.py文件的路径。


好了,配置完毕,重启以下试试!稍等片刻~~~奇迹就将来临!

除另有声明外,本博客文章均采用 知识共享(Creative Commons) 署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议 进行许可。

猜你喜欢

转载自blog.csdn.net/alextan_/article/details/61498044