web服务器配置生成


需求分析

  • 对web服务器进配置行版本控制管理
  • 对新添加的网站自动进行环境配置
  • 对ssl证书进行统一管理
  • 对日志进行统一管理
  • 对多平台mac,centos,ubuntu,windows进行管理

软件设计

目录结构

目录结构
    ├─servers // mac
    ├─sites-enabled // ubuntu
    ├─conf.d // centos
    ├─laragon // windows
    ├─global // 全局配置,多项目只使用一次
    ├─ssl // 证书
    └─logs // 日志

功能模块

// 数据初始化
$this->init();

// 是否清空配置文件
$this->cleanConfig();

// 查找项目目录下有哪些项目存在
$this->getProjects();

// 判断项目是否符合自动生成配置文件的条件
$this->filterProjects();

foreach ($this->projects as $project) {
    $name = basename($project);
    // 备份当前项目的配置文件
    $this->backConfig($name);
    // 使用自定义配置文件还是通用配置文件并生成配置文件
    $this->buildConfig($name);
}

// 输出hosts本地配置
$this->echoHosts();

// 重启web服务器
$this->reload();

编码

// 所支持的平台
protected $platform = [
    'centos' => 'conf.d',
    'ubuntu' => 'sites-enabled',
    'mac' => 'servers',
    'laragon' => 'laragon'
];
Storage::disk('nginx')->deleteDir($item);
File::directories($this->pathDir);
unset($this->projects[$key]);
Storage::disk('nginx')->rename($confName, $confName.'.'.time().'.bak');
view()->exists($viewName)
$content = view($viewName)->with(compact('port', 'host', 'root', 'logs', 'ssl'));
Storage::disk('nginx')->put($confName, $content);
exec('sudo nginx -s reload'.' 2>&1');