详细教你ubuntu系统搭建部署 sspanel v3 魔改版

  • A+
所属分类:随笔杂谈

---oncetwice---万事退思---

前一篇已经讲解了sspanel v3的搭建,但是,我没有实际操作过,但是这一篇的文章是经过我的实际搭建成功过的事情,

系统:ubuntu14.0.4

1.安装lnmp

先搭建LNMP:https://www.oncetwice.net/157.html

安装过程要求输入MySQL密码, 选择MySQL版本>=5.5, PHP版本>7.0(看着编号选择数字)

安装大概需要半小时, 如果中途 ssh 断线, 输入 screen -S lnmp

2.设置虚拟主机

lnmp vhost add

要求输入你的域名, 然后其余项都选 no     可以开启ssl

接着修改下 nginx

编辑 /usr/local/nginx/conf/vhost/你的域名.conf

然后添加下面这一段到 server(可以自己在配置文件里底部添加进去代码)

server
{

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

     location ~ [^/]\.php(/|$)
            {
                 # comment try_files $uri =404; to enable pathinfo
                 try_files $uri =404;
                 fastcgi_pass  unix:/tmp/php-cgi.sock;
                 fastcgi_index index.php;
                 include fastcgi.conf;
                 #include pathinfo.conf;
       fastcgi_param PHP_ADMIN_VALUE "open_basedir = /home/wwwroot: /temp/:/proc";
             }
 }

修改 root 那一行为

root    /home/wwwroot/你的域名/public;

3.下载 sspanel 代码

cd /home/wwwroot/你的域名
apt-get install git -y
git clone -b master https://github.com/esdeathlove/ss-panel-v3-mod.git tmp && mv tmp/.git . && rm -rf tmp && git reset --hard
chown -R root:root *
chmod -R 755 *
chown -R www:www storage
chattr -i .user.ini
mv .user.ini public
cd public
chattr +i .user.ini
service nginx restart

由于某些原因我不太喜欢V屁N所以就没安装,如果有需要就自己查一下如何安装安装 radius

LNMP1.4需要修改防跨目录的设置, 否则肯定报错

cd ~/lnmp1.4/tools/

./remove_open_basedir_restriction.sh

# 然后输入 /home/wwwroot/你的域名/public

4.配置数据库

浏览器打开 http://你的vps ip/phpmyadmin

用户 : root

密码 :安装 lnmp 时设置的

需要创建一个数据库和一个访问这个数据库的用户

点击 用户 -> 新建 -> 添加用户

  • 登录信息 :Username 选择 使用文本域 , 填写你的用户名 如 sspanelHost 选择任意主机 %密码 选择使用文本域 填写密码
  • 用户数据库 :勾选 创建与用户同名的数据库并授予所有权限
  • 全局权限 :全选

接着按执行 选择刚刚新建的数据库 sspanel 导入程序目录下的 glzjin_all.sql

详细教你ubuntu系统搭建部署 sspanel v3 魔改版

注意:计算机导入的时候如果出错,可以把glzjin_all.sql放到/home/wwwroot/default/phpmyadmin/upload里边在导入

 

5.配置 sspanel

cd /home/wwwroot/你的域名
php composer.phar install
cp config/.config.php.example config/.config.php
# 编辑以下文件 建议使用 FTP 下载到本地修改
vi config/.config.php

由于配置太多 这里只说重点,根据自己的修改

$System_Config['key'] = '';		//修改此key为随机字符串确保网站安全
$System_Config['appName'] = '';             //站点名称
$System_Config['baseUrl'] = 'https://自己的网站';     // 站点地址
$System_Config['timeZone'] = 'PRC';        // RPC 天朝时间  UTC 格林时间
$System_Config['pwdMethod'] = 'sha256';       // 密码加密   可选 md5,sha256
$System_Config['salt'] = '';               // 密码加密用,从旧版升级请留空
$System_Config['authDriver'] = 'cookie';   // 登录验证存储方式,推荐使用Redis   可选: cookie,redis

$System_Config['mailDriver'] = 'mailgun';   // 邮件 可选 mailgun or smtp 需要支持qq邮箱的选 smtp

$System_Config['checkinMin'] = '100';       // 签到最少流量 单位MB
$System_Config['checkinMax'] = '500';       // 签到最多流量
$System_Config['defaultTraffic'] = '100';      // 用户初始流量 单位GB
$System_Config['inviteNum'] = '0';			// 注册后获得的邀请码数量

# database 数据库配置
$System_Config['db_driver'] = 'mysql';
$System_Config['db_host'] = 'localhost';		// 数据库地址
$System_Config['db_database'] = '';				// 数据库名称 sspanel
$System_Config['db_username'] = '';				// 数据库用户 sspanel
$System_Config['db_password'] = '';				// sspanel用户的密码
$System_Config['db_charset'] = 'utf8';
$System_Config['db_collation'] = 'utf8_general_ci';
$System_Config['db_prefix'] = '';

# redis
$System_Config['redis_scheme'] = 'tcp';			// 登录验证存储方式选了 redis 的话需要配置
$System_Config['redis_host'] = '127.0.0.1';
$System_Config['redis_port'] = '6379';
$System_Config['redis_database'] = '0';
$System_Config['redis_password']="";

# smtp
$System_Config[‘smtp_host’] =        #‘你的邮件服务提供商smtp.163.com地址’;
$System_Config[‘smtp_username’] =    #‘你的电邮地址如:twice9@oncetwice.net’;
$System_Config[‘smtp_port’] = "25"    #‘smtp端口号(推荐使用ssl端口号)’;
$System_Config[‘smtp_name’] =      #‘你的邮件名称,邮件接收者可见名称,如:膜法服务-OT’;
$System_Config[‘smtp_sender’] =    #‘你的电邮地址,如:twice9@oncetwice.net’;
$System_Config[‘smtp_passsword’] =  #‘你的电邮密码’;
$System_Config[‘smtp_ssl’] = ‘true’; // 推荐启用邮件的ssl加密

#功能开关  需要用到的才开 建议先别动
$System_Config['enable_wecenter']='false';
$System_Config['enable_radius']='false';		// 配置了 radius 的话就开
$System_Config['enable_cloudxns']='false';
$System_Config['enable_duoshuo']='false';
$System_Config['enable_rss']='true';
$System_Config['enable_paymentwall']='false';

#Radius数据库设置
$System_Config['radius_db_host']='';		// 跟 上面 database 数据库配置差不多 换成radius即可
$System_Config['radius_db_database']='';
$System_Config['radius_db_user']='';
$System_Config['radius_db_password']='';

#Radius连接密钥
$System_Config['radius_secret']='';			// 这个重要 必须设

#端口池
$System_Config['min_port']='10000';			// SSR 分配端口号范围
$System_Config['max_port']='65535';

#两种方式相对于ss端口的偏移
$System_Config['pacp_offset']='-20000';		// PAC+ 和 PAC++ 用到
$System_Config['pacpp_offset']='-20000';

#测速周期/h
$System_Config['Speedtest_duration']='6';	// 对应后端 SSR 的 userapiconfig.py 里的 SPEEDTEST

#随机分组,注册时随机分配到的分组,多个分组请用英文半角逗号分隔。
$System_Config['ramdom_group']='0';			// 组别用于区分用户组 对应组只能访问对应组和0组的服务器 明白后再修改 

#充值返利百分比
$System_Config['code_payback']='20';		// 用户充值后 给邀请他注册的人返利多少%

#注册时的流量重置日以及需要重置的流量,0不重置
$System_Config['reg_auto_reset_day']='0';
$System_Config['reg_auto_reset_bandwidth']='100';	// 单位G

以上为 config 部分配置 完成后保存并上传到原目录下

切换到 ssh 窗口, 在你的网站目录下执行以下命令创建管理员

php xcat createAdmin

按照提示, 输入管理员邮箱密码等信息, 然后执行以下命令同步用户

php xcat syncusers

此时管理员创建完成

接下来需要对服务器进行计划任务的设置,执行 crontab -e 命令, 添加以下五段

30 22 * * * php /home/wwwroot/站点文件夹/xcat sendDiaryMail 
*/1 * * * * php /home/wwwroot/站点文件夹/xcat synclogin
*/1 * * * * php /home/wwwroot/站点文件夹/xcat syncvpn
0 0 * * * php /home/wwwroot/站点文件夹/xcat dailyjob
*/1 * * * * php /home/wwwroot/站点文件夹/xcat checkjob    
*/1 * * * * php /home/wwwroot/站点文件夹/xcat syncnas

重启Crontab
/etc/init.d/cron restart

7.注意事项

检查时间是否为天朝时间

如果VPS默认是非中国时区的话, 如下命令可以用来更改为中国时区

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

检查防火墙是否屏蔽数据库端口

# 允许本机访问
iptables -A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 3306 -j ACCEPT
# 允许节点访问
iptables -A INPUT -s 节点IP -p tcp -m tcp --dport 3306 -j ACCEPT
# 允许所有IP访问
iptables -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

查看防火墙规则

查看已添加的iptables规则
iptables -L -n --line-numbers
删除已添加的iptables规则
iptables -D INPUT line-numbers

规则保存

# Ubuntu
iptables-save > /etc/iptables.rules
# CentOS
service iptables save

==================================================

安装后端

centos安装代码:

cd /root
yum install python-setuptools && easy_install pip
yum install git
yum -y groupinstall "Development Tools"
wget https://github.com/jedisct1/libsodium/releases/download/1.0.10/libsodium-1.0.10.tar.gz
tar xf libsodium-1.0.10.tar.gz && cd libsodium-1.0.10
./configure && make -j2 && make install
echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf
ldconfig
cd shadowsocks
git clone -b manyuser https://github.com/glzjin/shadowsocks.git "/root/shadowsocks"
yum -y install python-devel
yum -y install libffi-devel
yum -y install openssl-devel
pip install -r requirements.txt

剩下的就是到下边2:“安装ssr”中的chmod +x *.sh开始

pip:出错的解决方法,(先跳过这一段,不一定要使用)

去官网下载

①https://pypi.python.org/pypi/pip

②下载之后的包上传到服务器上

③然后解压 tar -zxvf  pip-9.0.1.tar.gz

④解压之后会有个文件夹 cd /root/pip-9.0.1

⑤进入到文件夹,执行命令python setup.py install

安装完之后执行 pip -V 如果能看到版本号,代表安装成功

如果报错-bash: pip: command not found

那么可以看一下是不是没有把python加入到环境变量中,如果没有添加一下,修改/etc/profile文件

export PATH="$PATH:/usr/local/python27/bin"

或者修改自己的某个脚本

然后重新打开一个会话,执行pip -V  就可以看到了

ok,安装成功了

1.安装 libsodium(ubun,debian)

apt-get install build-essential wget -y
wget https://github.com/jedisct1/libsodium/releases/download/1.0.13/libsodium-1.0.13.tar.gz
tar xf libsodium-1.0.13.tar.gz && cd libsodium-1.0.13
./configure && make -j2 && make install
ldconfig

2.安装SSR

apt-get install python-pip git -y
pip install --upgrade pip
pip install cymysql
cd ..
git clone -b manyuser https://github.com/glzjin/shadowsocks.git
#git clone -b manyuser https://github.com/glzjin/shadowsocks.git "/root/shadowsocks"
cd shadowsocks
chmod +x *.sh
# 配置程序
cp apiconfig.py userapiconfig.py
cp config.json user-config.json
vi userapiconfig.py

然后主要编辑 userapiconfig.py, 来解释下里面各项配置的意思

# Config
#节点ID 对应前端节点列表的ID
NODE_ID = 3

#自动化测速,为0不测试,此处以小时为单位,要和 ss-panel 设置的小时数一致
SPEEDTEST = 6

#云安全,自动上报与下载封禁IP,1为开启,0为关闭
CLOUDSAFE = 1

#自动封禁SS密码和加密方式错误的 IP,1为开启,0为关闭
ANTISSATTACK = 0

#是否接受上级下发的命令,如果你要用这个命令,请参考我之前写的东西,公钥放在目录下的 ssshell.asc
AUTOEXEC = 1

#是否以多线程模式运行,关闭这个限速就会无效。请优先测试 1 ,开启试试,能运行没。
MULTI_THREAD = 0

#多端口单用户设置,看重大更新说明。
MU_SUFFIX = 'zhaoj.in'
#多端口单用户设置,看重大更新说明。
MU_REGEX = '%5m%id.%suffix'

#不明觉厉
SERVER_PUB_ADDR = '127.0.0.1' # mujson_mgr need this to generate ssr link
#此处不要修改
API_INTERFACE = 'glzjinmod' #mudbjson, sspanelv2, sspanelv3, sspanelv3ssr, muapiv2(not support)
#mudb,不要管
MUDB_FILE = 'mudb.json'

# Mysql 数据库连接信息
MYSQL_HOST = '127.0.0.1'            #前端ip
MYSQL_PORT = 3306                   #前端端口
MYSQL_USER = 'ss'                   #数据库用户名
MYSQL_PASS = 'ss'                   #数据库用户名密码
MYSQL_DB = 'shadowsocks'            #数据库用户
MYSQL_UPDATE_TIME = 60

# 是否启用SSL连接,0为关,1为开
MYSQL_SSL_ENABLE = 0

# 客户端证书目录,请看 https://github.com/glzjin/shadowsocks/wiki/Mysql-SSL%E9%85%8D%E7%BD%AE
MYSQL_SSL_CERT = '/root/shadowsocks/client-cert.pem'
MYSQL_SSL_KEY = '/root/shadowsocks/client-key.pem'
MYSQL_SSL_CA = '/root/shadowsocks/ca.pem'

# API,不用管
API_HOST = '127.0.0.1'
API_PORT = 80
API_PATH = '/mu/v2/'
API_TOKEN = 'abcdef'
API_UPDATE_TIME = 60

# Manager 不用管
MANAGE_PASS = 'ss233333333'

#if you want manage in other server you should set this value to global ip
MANAGE_BIND_IP = '127.0.0.1'

#make sure this port is idle
MANAGE_PORT = 23333

3.运行SSR

运行的话, 有几种方式

  • python server.py 用于调错的
  • ./run.sh 无日志后台运行
  • ./logrun.sh 有日志后台运行
  • supervisord

这里说下 使用Supervisor守护进程启动ssr

# 安装
apt-get install supervisor -y

# 写入配置
vi /etc/supervisor/conf.d/ssr.conf

# 写入以下内容
[program:ssr]
command=python /root/shadowsocks/server.py 
autorestart=true
autostart=true
user=root

# 重启Supervisor服务。
/etc/init.d/supervisor restart

# 重启 ssr
supervisorctl restart ssr

# 查看Supervisor服务运行状态。
supervisorctl status

# 如果遇到问题,可以检查日志:
supervisorctl tail -f ssr stderr

# 如果使用supervisor进程守护,需要修改文件vi /etc/default/supervisor,添加一行:
ulimit -n 1024000

这个方法我自己在本机前后端安装成功,(ubuntu)添加在其它节点失败,我也不知道为什么。。。centos的安装方法却可以成功

强化安全

1.将网站支持 SSL 强化安全

需要提前准备好 SSL 证书文件, 没有的话可以使用Let’s Encrypt 搞个免费SSL证书, 接着配置 nginx

编辑 /usr/local/nginx/conf/vhost/域名.conf

server
{
	listen 80;
	#listen [::]:80; #有ipv6的开
	server_name 域名;
	rewrite ^(.*) https://$server_name$1 permanent;
}

server
{
	listen 443 ssl;
	#listen [::]:443 ssl; #有ipv6的开
	ssl_certificate /etc/letsencrypt/live/你的域名/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/你的域名/privkey.pem;
	ssl_trusted_certificate /etc/letsencrypt/live/你的域名/chain.pem;
}

2.禁止 http 的访问请求

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

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="refresh" content="0;url=https://域名">
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
</html>

3.转移 phpMyAdmin 目录

  • 转移目录LNMP安装完毕以后默认的会在IP地址网站根目录生成一个 phpMyAdmin 的目录, 但是正是因为这个原因, 暴露了该目录, 我一般都会直接把这个文件夹转移到新的网站目录下, 比如转移到其他二级域名下的某个目录, 只需要在LNMP中新建一个二级域名而已, 然后把 phpMyAdmin 这个目录再转移到这个二级域名的网站目录下
  • 限制IP在 phpMyAdmin 的目录下新增 .htaccess 写入以下
  • allow from 59.168.1.0/24
    allow from 59.168.2.50
    deny from all
    
    • 除了 59.168.1.1 至 59.168.1.254 的区间IP 与 59.168.2.50 可以进入后台其于IP都封锁, 就算对方知道路径, IP不允许也是无法进入

官方说明地址:https://github.com/iMeiji/ss-panel-v3-mod/wiki/%E5%AE%89%E8%A3%85%E8%AF%B4%E6%98%8E-lnmp1.4

更换主题:

cd /www/wwwroot/域名/public
git clone https://github.com/mmmwhy/ss_panel_theme.git tmp && mv tmp/.git . && rm -rf tmp && git reset --hard
自己修改主题的内容哦

 

 

 

 

 

  • 我的Telegram
  • 我的TL@oncetwice12
  • weinxin
  • 我的Telegram
  • 我的TL@oncetwice12
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: