安装脚本逻辑
安装代理服务器的业务流程
- 判断是否有 root 权限,没有 root 权限就退出程序
- 先检查是否启用了 BBR,通过 checkBBR 函数,返回值(bool 类型):0: 启用 1: 未启用
- 如果返回值是 0 就执行安装 x2ray/v2ray 等操作,case 系统函数
- 如果返回值是 1 (未启用 BBR)
- 判断内核版本是否大于 4.9,返回值(bool 类型):0: 是 1: 不是
- 内核版本大于 4.9,就直接配置 BBR 到 sysctl.conf 并启用
- 内核版本小于 4.9
- 通过 elrepo 安装新内核
- 判断平台类型:Ubuntu 、Centos
- 如果是 Centos
- 判断 yum-config-manager 命令是否可用,如果不可用需要安装 yum-utils
- 如果是 Ubuntu
- add-apt-repository
- 如果是 Centos
- 判断平台类型:Ubuntu 、Centos
- 配置 BBR 并启用
- 通过 elrepo 安装新内核
- 判断内核版本是否大于 4.9,返回值(bool 类型):0: 是 1: 不是
- 选择安装 V2ray/X2ray,函数 selectV2rayOrX2ray(理论上要返回两个参数:程序 bin 路径、程序配置文件路径)
- 这里我们不要处理返回的函数值,因为我们明确知道程序安装的路径以及配置文件路径
- 输入 1 表示安装 V2ray,执行对应的 V2ray 安装脚本,返回值:V2ray(安装的程序名)
- 输入 2 表示安装 X2ray,执行对应的 X2ray 安装脚本,返回值:X2ray(安装的程序名)
- 配置 V2ray/X2ray,函数 configV2rayOrX2ray(done)
- 根据上面函数的结果,获取到函数名,用 case 函数判断
- V2ray
- 下载 V2ray 的配置文件模板
- 生成 UUID
- 替换配置文件中的 UUID
- 测试配置文件是否 OK
/usr/local/bin/v2ray -test -config /usr/local/etc/v2ray/config.json
- 如果是 OK 就启动 V2ray 并添加到开机启动项中
- 判断是否启动成功,用
$?
判断systemctl enable v2ray; systemctl start v2ray
- 注意:v2ray 需要本地时间和服务器时间相同
- X2ray
- 下载 X2ray 的配置文件模板
- 生成 UUID
- 替换配置文件中的 UUID
- 测试配置文件是否 OK
- 如果是 OK 就启动 X2ray 并添加到开机启动项中
- 判断是否启动成功,用
$?
判断
- V2ray
- 根据上面函数的结果,获取到函数名,用 case 函数判断
- 安装 Nginx(done)
- 先判断是 Ubuntu 还是 Centos,通过
"/bin/dnf" "/bin/yum "/usr/bin/yum" /usr/bin/apt-get"
- 是 Ubuntu 就通过 apt-get 安装 Nginx
- 是 Centos
- 判断是 7 还是 8
- major_version="
sed 's/^.\+ release \([.0-9]\+\).*/\1/' /etc/redhat-release | awk -F. '{print $1}'
" - 7:就通过 yum
- 8: 就通过 dnf
- major_version="
- 判断是 7 还是 8
- 先判断是 Ubuntu 还是 Centos,通过
- 配置 Nginx(done)
- 下载 Nginx 配置模板并命名为 vlessorvmess.conf
- 配置 SSL 证书
- 在 /etc/nginx/ 创建 ssl 目录
- 下载证书
- 解压证书文件
- 伪装成正常网站
- 通过 http/https 访问 api.echoxu.cn 将解析到此路径,通过 vmess/vless 协议访问会解析到
api.echoxu.cn/out
- 在
mkdir -p /usr/share/nginx/html/wwwdoc
cd /usr/share/nginx/html/ && cp index.html wwwdoc/
- 通过 http/https 访问 api.echoxu.cn 将解析到此路径,通过 vmess/vless 协议访问会解析到
- 验证配置文件是否 OK
- 如果 OK 就启动 Nginx 并将 Nginx 添加到开机启动中
- 优化(done)
- 修改 Nginx 最大连接数
- 修改系统最大文件描述符
- 防火墙设置(done)
- 开启 ssh、https、web 端口,即:22、443、80