web服务器配置生成
大约 1 分钟
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');