diff --git a/02.php/temp.php b/02.php/temp.php new file mode 100644 index 0000000..783ed79 --- /dev/null +++ b/02.php/temp.php @@ -0,0 +1,120 @@ + 100) { + $percent = 100; + } + + /** + * ----------负载计算结束---------- + */ + $data['load'] = $percent; + + /** + * ----------cpu计算开始---------- + */ + /** + * cpu使用率 + * + * %Cpu(s): 0.0 us, 3.2 sy, 0.0 ni, 96.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st + * + * us user CPU time 用户空间占用CPU百分比 + * sy system CPU time 内核空间占用CPU百分比 + * ni nice CPU 用户进程空间内改变过优先级的进程占用CPU百分比 + * id idle 空闲CPU百分比 + * wa iowait 等待输入输出的CPU时间百分比 + * hi hardware 硬件中断 + * si software 软件中断 + * st steal 实时 + */ + $topResult = shell_exec('top -b -n 1 | grep Cpu'); + preg_match('/ni,(.*?)id/', $topResult, $matches); + $id = 100 - (float)trim($matches[1]); + + //cpu型号 + $cpuModelArray = []; + $cpuModelName = shell_exec("cat /proc/cpuinfo | grep 'model name' | uniq"); + $explodeArray = explode("\n", trim($cpuModelName)); + foreach ($explodeArray as $value) { + if (trim($value) != '') { + $tempArray = explode(':', $value); + array_push($cpuModelArray, trim($tempArray[1])); + } + } + + //物理cpu个数 + $cpuPhysical = shell_exec("cat /proc/cpuinfo | grep 'physical id' | sort -u | wc -l"); + $cpuPhysical = (int)trim($cpuPhysical); + + //每个物理cpu的物理核心数 + $cpuPhysicalCore = shell_exec("cat /proc/cpuinfo | grep 'cpu cores' | wc -l"); + $cpuPhysicalCore = (int)trim($cpuPhysicalCore); + + //总物理核心数 = 物理cpu个数 * 每个物理cpu的物理核心数(每个物理cpu的物理核心数都一样吗?) + $cpuCore = $cpuPhysical * $cpuPhysicalCore; + + //逻辑核心总数(线程总数) + $cpuProcessor = shell_exec("cat /proc/cpuinfo | grep 'processor' | wc -l"); + $cpuProcessor = (int)trim($cpuProcessor); + + /** + * ----------cpu计算结束---------- + */ + $data['cpu'] = round($id, 1); + + /** + * ----------内存计算开始---------- + */ + /** + * MemTotal 总内存 + * MemFree 空闲内存 + * MemAvailable 可用内存(MemFree + 可回收的内存),系统中有些内存虽然已被使用但是可以回收,比如cache、buffer、slab都有一部分可以回收 + */ + //物理内存总量 + $memTotal = shell_exec("cat /proc/meminfo | grep 'MemTotal' | awk '{print $2}'"); + $memTotal = (int)trim($memTotal); + + //操作系统可用内存总量(没有使用空闲内存) + $memFree = shell_exec("cat /proc/meminfo | grep 'MemAvailable' | awk '{print $2}'"); + $memFree = (int)trim($memFree); + + //操作系统已使用内存总量 + $memUsed = $memTotal - $memFree; + + //内存使用率 + $percent = round($memUsed / $memTotal * 100, 1); + + /** + * ----------内存计算结束---------- + */ + $data['mem'] = $percent; + + print_r($data); +} + +for (;;) { + detect(); + sleep(1); +} diff --git a/README.md b/README.md index 55fb595..8e99113 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,10 @@ - Gitee:https://gitee.com/witersen/SvnAdminV2.0/attach_files/1099697/download/v2.3.1.zip - 兼容性 - - 操作系统:CentOS7(推荐)、CentOS8、Rocky、Ubuntu(Windows及其它Linux发行版正在测试兼容中) + + - 本程序提供 docker 镜像,基于 centos7.9.2009 构建 + + - 操作系统(手动安装):CentOS7(推荐)、CentOS8、Rocky、Ubuntu(Windows及其它Linux发行版正在测试兼容中) - PHP版本:5.5 <= PHP < 8.0 - 数据库:SQLite、MySQL - Subversion:1.8+ @@ -171,11 +174,63 @@ php svnadmin.php console ## 二、docker安装 -- docker在下个版本v2.3.2支持 +- 拉取镜像 + + - ``` + #拉取镜像 + docker pull witersencom/svnadmin:2.3.2 + ``` + +- 仅查看软件效果(不挂载数据) + + - ``` + docker run --name svnadmintemp -d -p 80:80 -p 3690:3690 --privileged svnadmin:2.3.2 + ``` + +- 用于生产环境(挂载数据到容器中,容器销毁数据不会丢失) + + - 新用户 + + - ``` + #启动一个临时容器,并将配置文件复制出来 + docker run --name svnadmintemp -d --privileged=true svnadmin:2.3.2 /usr/sbin/init + + #复制的数据目录为 /home/svnadmin/ + cd /home/ + docker cp svnadmintemp:/home/svnadmin ./ + + #停止并删除临时容器 + dockeer stop svnadmintemp && docker rm svnadmintemp + + #启动正式容器 + docker run -d -p 80:80 -p 3690:3690 -v /home/svnadmin/:/home/svnadmin/ --privileged svnadmin:2.3.2 + ``` + + - 老用户 + + - ``` + #假设数据存储主目录在宿主机的位置为 /home/svnadmin/ 则直接按照下面方式启动即可 会自动将宿主机数据挂载到容器中 + docker run -d -p 80:80 -p 3690:3690 -v /home/svnadmin/:/home/svnadmin/ --privileged svnadmin:2.3.2 + ``` ## 三、手动升级 -手动配置升级,具体操作步骤如下: +PS: 如果之前在配置文件 $path/config/database.php 中手动切换了MySQL数据库,升级后还需要重配置 + +### 3.1、docker用户 + +``` +#数据保留在宿主机,停止并删除原来的容器,直接拉取新镜像启动即可 +#假设旧版本为 old 新版本为 new + +docker stop old && docker rm old + +docker run -d -p 80:80 -p 3690:3690 -v /home/svnadmin/:/home/svnadmin/ --privileged new +``` + +### 3.2、非docker用户 + +具体操作步骤如下: ``` #假设你的代码部署在 /var/www/html/ 目录下 @@ -208,8 +263,6 @@ php server/install.php ``` #执行脚本并选择使用第2个选项,选择不覆盖原来的 autzh 、passwd、svnadmin.db 等文件 php server/install.php - -#如果之前在配置文件 config/database.php 切换了MySQL数据库,升级后需要重新配置下,这个问题会在下个版本修复 ``` - 启动后台程序 ```