Skip to content

搭建SS管理端 SSRpanel(前端篇)

wandou911 edited this page Aug 28, 2019 · 12 revisions

centos下搭建SS管理端-SSRpanel(前端篇)

2019.05.16更新,作者闭源开发,源码已删除

本项目源码引用自github:https://github.com/ssrpanel/ssrpanel

因为最近VPN被封得厉害,很多小伙伴都无法FQ了,来找我要FQ工具。之前我用linode搭建过一个自用的SS,一直以来都比较稳定,所以也分享给大家用了。(文章:Linode主机centos7环境下利用SS搭建VPN服务 速度真的非常快)但是用的人越来越多之后,经常出现无法连接,网速很慢的情况,正好这几天难得有点空余时间,就去逛逛github和各个博客,找一找SS的管理端。

后来在荒岛博客发现了一个很不错的管理界面-SSRPanel。相比起其他的管理端,这个管理端还在不断更新,作者更新也蛮勤快的,感觉前景比较好,装了下,基本OK,界面美观,功能齐全。下面是界面预览:

pic1

pic2

pic3

好了接下来进入正题了。

环境和工具:centos7服务器一台,内存不小于1G;Xshell,root账号和密码,一字不漏地看文章并严格按步骤执行。

1.安装LNMP环境

本项目将会用到Nginx(web程序),php(web解析环境)和mysql(数据库)。其中PHP版本必须是7.1,mysql在5.5以上。其他无要求,系统最好是centos7,博主在centos7上测试正常。

首先用xshell连接到你的服务器,root账户登录

  • 登录:

ssh [email protected]

  • 安装wget:

yum -y install wget

  • 然后一键安装LNMP环境:

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

上面命令如果安装失败,用下面这个

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

按如图方式选择:mysql5.5 php7.1 并设置数据库的root密码。

pic4

让安装跑一会儿,具体时间根据你的服务器配置决定。

安装成功会出现如下图:

image.png

2.创建数据库

下载源码里的数据库:https://github.com/wandou911/SSRPanel/tree/master/sql

浏览器中输入:你的服务器地址/phpmyadmin 打开页面,登录账号是root,密码是安装LNMP时候设置的数据库密码。

登录后创建一个名为ssrpanel的数据库,并将刚才下载的数据库导入进去。

image.png

3.建立一个站点

将你的将域名解析到你的服务器,如没有域名可不解析。切回xshell,ctrl+c取消掉之前lnmp安装完成的提示。然后服务器上执行:

lnmp vhost add

image.png

如图我使用ss.xiaoweigod.com作为域名。如果没有域名那么直接填写IP地址就行了,将网站路径设置为/www/你的网站网址

其他全部选否即可。

4.安装配置前端源码

①安装php的fileinfo扩展:

cd /root/lnmp1.4/src
tar jxvf php-7.1.7.tar.bz2 && cd php-7.1.7/ext
cp -r fileinfo/ /usr/local/php/include/php/ext/
cd /usr/local/php/include/php/ext/fileinfo
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

#完成后它会生成一个指定包:
#Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/

②修改php.ini添加fileinfo扩展和禁用prco函数:

vi /usr/local/php/etc/php.ini

输入/extension 一直按n,查找到如图这一块地方,按i并加入如下内容:

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/fileinfo.so

image.png

按esc然后输入 /proc_ 来查找,按n下一个,按insert在“disable_fuctions”这一栏把proc_开头的函数直接删掉。按esc输入 :wq保存退出。

③重启php:

service php-fpm restart

进入你的网站路径

cd /www/ss.xiaoweigod.com

④克隆源码:

yum -y install git
git clone https://github.com/wandou911/SSRPanel.git tmp && mv tmp/.git . && rm -rf tmp && git reset --hard

⑤修改数据库连接密码:

vi config/database.php

将mysql一栏中的password修改为你的数据库密码。完成后:wq保存退出。

image.png

⑥在你的网站路径下配置运行环境:

php composer.phar install
cp .env.example .env
php artisan key:generate
cd .. && chown -R www:www ss.xiaoweigod.com

php artisan key:generate后出现提示框,输入yes,会提示你秘钥创建成功。

如果出错: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (SQL: select * from config)

说明数据库连接密码不对: vi .env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=ssrpanel
DB_USERNAME=root
DB_PASSWORD=数据库密码
DB_STRICT=false

修改数据库密码

⑦接下来修改nginx的网站配置文件,

vi /usr/local/nginx/conf/vhost/你的域名.conf

⑧在root后面你网站的路径加上 /public

备注:server_name 更正一下,不然访问网站不输入www会无法显示 server_name www.ss.xiaoweigod.com ss.xiaoweigod.com;

⑨然后在最后的”access_log off;”上面一栏加入如下内容实现伪静态:

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

如图:

image.png

⑩然后修改Nginx的配置文件:

vi /usr/local/nginx/conf/fastcgi.conf

fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; 这一栏直接删掉。然后 :wq保存退出。

最后,重启Nginx和php

service nginx restart
service php-fpm restart

如果重启nginx报错,请检查nginx的网站配置文件是否有问题,一般都是一些语法错误。

5.添加定时任务

如果没有添加定时任务,那么会产生流量不显示等问题。下面添加一下定时任务

crontab -e

加入如下内容(自行修改网站路径):

* * * * * php /www/ss.xiaoweigod.com/artisan schedule:run >> /dev/null 2>&1

查看定时任务是否生效,定时任务每分钟会执行一次:

tail -f /var/log/cron

有如图日志表示生效:

image.png

到这一步都没有报错的话你的前端就安装完成了。直接打开你的域名就显示了。

登录默认账号是admin,密码123456

至此,前端界面安装完毕。

6.SSRPanel常用设置

新版面板的mailgun发信设置

最新版本升级后,一些配置发生了变更,但并没有看到胖虎在更新日志或文档里体现,需要做对应的修改。 新版邮件配置放到了网站根目录下的 .env 中:


MAIL_DRIVER=mailgun  #这个地方原先是填smtp,laravel framework from 5.5 to 5.6后变更后填sendmail也行
# 下面这坨只在配置smtp或sendmail时有用
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
[email protected] #发信用户名
MAIL_PASSWORD=123456#邮箱密码
MAIL_ENCRYPTION=tls
[email protected]#发信邮箱
MAIL_FROM_NAME=Xiaokeli#邮件标题
MAILGUN_DOMAIN=xiaokeli.me  #mailgun配置的域名
MAILGUN_SECRET=key-123456   #mailgun账户的密钥,配私钥

新版本使用队列进行邮件异步发送,相应的还需要执行 queue

进入你的网站路径

cd /www/ss.xiaoweigod.com

执行queue

sh queue.sh

正常后看见日志如:

[root@vultr ss.xiaoweigod.com]# tail -f queue.log 
[2019-02-16 22:04:29][z6Ig11U3jJ8MnE8EuedYXbTY3Boxxxxx] Processing: App\Mail\resetPassword
[2019-02-16 22:04:30][z6Ig11U3jJ8MnE8EuedYXbTY3Boxxxxx] Processed:  App\Mail\resetPassword
添加节点

添加节点后发现用户中心看不到所加的节点,原因是没有为节点设置标签

标签影响用户查看/订阅节点信息(用户和节点通过标签进行关联)

添加https
安装 Let’s Encrypt

yum install letsencrypt

使用 Let’s Encrypt 获取证书

Let's Encrypt在验证的过程中会占用443端口,所以需要暂时关闭nginx以释放端口。

# 停止 nginx,释放端口
systemctl stop nginx

# 获取证书
letsencrypt certonly --standalone

# 同意条款之后,输入域名,两个以上的域名用空格隔开
ss.xiaoweigod.com www.ss.xiaoweigod.com 

使用证书

nginx的配置文件 /usr/local/nginx/conf/vhost/xxx.conf ,只要往里面添加一个433端口的server即可:

# 编辑配置文件
vi /usr/local/nginx/conf/vhost/你的域名.conf

# 添加443端口以及ssl证书路径
server {
    listen 80;
    listen                443   ssl;
    server_name www.ss.xiaoweigod.com ss.xiaoweigod.com;
    ssl_certificate       /etc/letsencrypt/live/ss.xiaoweigod.com/cert.pem;
    ssl_certificate_key   /etc/letsencrypt/live/ss.xiaoweigod.com/privkey.pem;
}

# 重启nginx
systemctl restart nginx

此时可以在浏览器中输入 https://域名 ,进行访问,如本站是 https://ss.xiaoweigod.com

证书更新

# 停止 Nginx, 释放端口
systemctl stop nginx

# 更新证书
letsencrypt certonly --standalone

# 启动 Nginx
systemctl start nginx

linux 有自带的定时任务管理器 cron,也可以用来设置定时更新证书,这样就不用一直惦记着了

支付宝支付成功不回调

之前配置了http强转为https 导致支付宝不回调

server {
      listen 80;
      server_name www.ss.xiaoweigod.com ss.xiaoweigod.com;
      return 301 https://$server_name$request_uri;
}

困扰了很久 后来就把这段配置文件删除了,支付可以正常回调,自动完成订单

设置守护进程

shadowsocksr如果用上面的方式运行,那么关掉命令行窗口之后进程就会被杀死,如果用nohup或者&之类的也有可能在后台运行的时候被杀死,所以最好还是设置成守护进程。

添加一个配置文件:

vi /etc/systemd/system/shadowsocksr.service

加入以下配置

[Unit]
Description=ShadowsocksR server
After=syslog.target
After=network.target

[Service]
LimitCORE=infinity
LimitNOFILE=512000
LimitNPROC=512000
Type=simple
WorkingDirectory=/var/www/shadowsocksr
ExecStart=/usr/bin/python /root/shadowsocksr/server.py
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
Restart=always

[Install]
WantedBy=multi-user.target
Alias=ssr

然后就可以通过守护进程的方式启动了:

# 启动ssr
systemctl start shadowsocksr

# 设置开机自启
systemctl enable shadowsocksr
自定义开机启动脚本

修改 /etc/rc.d/rc.local 这个文件

例如将 apache、mysql、samba、svn 等这些服务的开机自启动问题一起搞定:

[root@localhost ~]# vim /etc/rc.d/rc.local
#添加以下命令
/usr/sbin/apachectl start
/etc/rc.d/init.d/mysqld start
/etc/rc.d/init.d/smb start
/usr/local/subversion/bin/svnserve -d

配置LNMP 添加域名解析 访问PHPAdmin

DNS解析 添加A记录 主机:phpadmin 记录值:ip地址

以后就可以通过phpadmin.domain.com 访问phpadmin

nginx关闭默认站点/空主机头(禁止IP直接访问、防止域名恶意解析

默认情况下,只要将域名解析到vps的IP上,访问该域名就会访问到lnmp默认虚拟主机的默认页面。为了防止别人恶意将域名解析到自己的IP上,可以通过以下方法进行,修改/usr/local/nginx/conf/nginx.conf ,将里面的默认的虚拟主机server{}段修改为如下即可:

    server {
    listen 80 default_server;
    server_name _;
    return 500;
    }

当然也可以将return 500;替换为rewrite ^(.*) https://www.vpser.net permanent; 将流量导入到你指定的网站上。也可以改成return 444; 这样所有的访问都被直接丢弃。

最后记住,/usr/local/nginx/sbin/nginx -s reload

使用空主机头后,原默认虚拟主机下的文件,如PHPmyadmin将无法访问,需要你加个二级域名指向phpmyadmin目录就行了。

lnmp.domain.conf

server
    {
        listen 80;
        #listen [::]:80;
        server_name lnmp.ssrcloud.info;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/default;

        include other.conf;
        #error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        include enable-php.conf;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log off;
    }

对于开启了https的用户,未添加https站点的域名,也可以https访问,只是会访问默认的https网站并提示不安全、域名证书不匹配。 开启SSL后https的空主机头的设置

    server {
    listen 443 default_server;
    server_name _;
    ssl on;
    ssl_certificate 随便设置一个ssl证书;
    ssl_certificate_key 随便设置一个ssl证书的key;
    return 500;
    }

如需要实现FQ的功能,则需要搭建SS后端,在下一篇文章中将会有介绍:centos下搭建SS管理端-SSRpanel(后端篇)

参考链接2:使用MailGun发送邮件
Clone this wiki locally