-
Notifications
You must be signed in to change notification settings - Fork 134
搭建SS管理端 SSRpanel(前端篇)
2019.05.16更新,作者闭源开发,源码已删除
本项目源码引用自github:https://github.com/ssrpanel/ssrpanel
因为最近VPN被封得厉害,很多小伙伴都无法FQ了,来找我要FQ工具。之前我用linode搭建过一个自用的SS,一直以来都比较稳定,所以也分享给大家用了。(文章:Linode主机centos7环境下利用SS搭建VPN服务 速度真的非常快)但是用的人越来越多之后,经常出现无法连接,网速很慢的情况,正好这几天难得有点空余时间,就去逛逛github和各个博客,找一找SS的管理端。
后来在荒岛博客发现了一个很不错的管理界面-SSRPanel。相比起其他的管理端,这个管理端还在不断更新,作者更新也蛮勤快的,感觉前景比较好,装了下,基本OK,界面美观,功能齐全。下面是界面预览:
好了接下来进入正题了。
环境和工具:centos7服务器一台,内存不小于1G;Xshell,root账号和密码,一字不漏地看文章并严格按步骤执行。
本项目将会用到Nginx(web程序),php(web解析环境)和mysql(数据库)。其中PHP版本必须是7.1,mysql在5.5以上。其他无要求,系统最好是centos7,博主在centos7上测试正常。
首先用xshell连接到你的服务器,root账户登录
- 登录:
ssh root@12.34.56.78
- 安装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密码。
让安装跑一会儿,具体时间根据你的服务器配置决定。
安装成功会出现如下图:
下载源码里的数据库:https://github.com/wandou911/SSRPanel/tree/master/sql
浏览器中输入:你的服务器地址/phpmyadmin 打开页面,登录账号是root,密码是安装LNMP时候设置的数据库密码。
登录后创建一个名为ssrpanel的数据库,并将刚才下载的数据库导入进去。
将你的将域名解析到你的服务器,如没有域名可不解析。切回xshell,ctrl+c取消掉之前lnmp安装完成的提示。然后服务器上执行:
lnmp vhost add
如图我使用ss.xiaoweigod.com作为域名。如果没有域名那么直接填写IP地址就行了,将网站路径设置为/www/你的网站网址
其他全部选否即可。
①安装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
按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保存退出。
⑥在你的网站路径下配置运行环境:
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;
}
如图:
⑩然后修改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的网站配置文件是否有问题,一般都是一些语法错误。
如果没有添加定时任务,那么会产生流量不显示等问题。下面添加一下定时任务
crontab -e
加入如下内容(自行修改网站路径):
* * * * * php /www/ss.xiaoweigod.com/artisan schedule:run >> /dev/null 2>&1
查看定时任务是否生效,定时任务每分钟会执行一次:
tail -f /var/log/cron
有如图日志表示生效:
到这一步都没有报错的话你的前端就安装完成了。直接打开你的域名就显示了。
登录默认账号是admin,密码123456
至此,前端界面安装完毕。
最新版本升级后,一些配置发生了变更,但并没有看到胖虎在更新日志或文档里体现,需要做对应的修改。 新版邮件配置放到了网站根目录下的 .env 中:
MAIL_DRIVER=mailgun #这个地方原先是填smtp,laravel framework from 5.5 to 5.6后变更后填sendmail也行
# 下面这坨只在配置smtp或sendmail时有用
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=postmaster@mg.xiaokeli.me #发信用户名
MAIL_PASSWORD=123456#邮箱密码
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=sunland@126.com#发信邮箱
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
添加节点后发现用户中心看不到所加的节点,原因是没有为节点设置标签
标签影响用户查看/订阅节点信息(用户和节点通过标签进行关联)
yum install letsencrypt
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
DNS解析 添加A记录 主机:phpadmin 记录值:ip地址
以后就可以通过phpadmin.domain.com 访问phpadmin
默认情况下,只要将域名解析到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(后端篇)