Инструменты пользователя

Инструменты сайта


service:phpsysinfo

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
service:phpsysinfo [30.07.2024 10:56] – [Установка] viacheslavservice:phpsysinfo [30.07.2024 19:21] (текущий) – внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== phpsysinfo ======
 +https://github.com/phpsysinfo/phpsysinfo - веб-страница, показывающая информацию о системе.
  
 +Из контейнера получать информацию о хосте можно двумя способами:
 +  - Монтирование корневой ФС в контейнер на чтение и задание параметра ''ROOTFS='' в phpsysinfo.ini. В этом случае некоторые данные нужно получать на хосте через crontab, выгружая их в подкаталог data каталога phpsysinfo.
 +  - Настройкой SSH в phpsysinfo.ini. В этом случае нужно ставить в контейнер phpsysinfo-php пакеты openssh и sshpass.
 +===== Установка =====
 +2 контейнера - фронтенд nginx и php-fpm. Обновления накатываются гитом каждый раз при запуске контейнера phpsysinfo-php.
 +
 +<file yaml docker-compose.yml>
 +  phpsysinfo:
 +    build: ./phpsysinfo
 +    container_name: phpsysinfo
 +    restart: unless-stopped
 +    depends_on:
 +      - phpsysinfo-php
 +    volumes:
 +      - ./phpsysinfo-php/html:/var/www/html
 +    ports:
 +      - 80:80
 +#    labels:
 +#      - "traefik.enable=true"
 +#      - "traefik.http.routers.phpsysinfo.rule=Host(`bva.dyndns.info`) && (PathPrefix(`/mon/`) || Path(`/mon`))"
 +#      - "traefik.http.routers.phpsysinfo.tls.certresolver=le"
 +#      - "traefik.http.routers.phpsysinfo.entrypoints=websecure"
 +
 +  phpsysinfo-php:
 +    build: ./phpsysinfo-php
 +    container_name: phpsysinfo-php
 +    restart: unless-stopped
 +    volumes:
 +#      - /:/rootfs:ro # если используется ROOTFS в phpsysinfo.ini, а не SSH
 +      - ./phpsysinfo-php/html:/var/www/html
 +</file>
 +
 +==== phpsysinfo ====
 +
 +<file bash Dockerfile>
 +FROM nginx:alpine
 +WORKDIR /var/www/html
 +EXPOSE 80
 +COPY ./nginx/ /etc/nginx
 +</file>
 +
 +<file ini nginx/conf.d/default.conf>
 +server {
 +    # server_name bva.dyndns.info;
 +    listen 80;
 +    #listen 443 ssl;
 +    #ssl_certificate    /etc/ssl/cert.crt;
 +    #ssl_certificate_key /etc/ssl/cert.key;
 +    #ssl_protocols      TLSv1.2 TLSv1.3;
 +
 +    root /var/www/html;
 +    index index.php;
 +
 +    # Prevent access to phpsysinfo.ini
 +    location ~ \.ini$ {
 +        deny all;
 +        return 404;
 +    }
 +
 +    location ~ \.php$ {
 +        try_files $uri $uri/ /index.php;
 +        include fastcgi_params;
 +        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 +        fastcgi_param REDIRECT_STATUS 200;
 +        fastcgi_pass phpsysinfo-php:9000;
 +    }
 +}
 +</file>
 +
 +==== phpsysinfo-php ====
 +
 +<file bash Dockerfile>
 +FROM alpine:3.19
 +
 +WORKDIR /var/www/html
 +COPY --chmod=550 start.sh /tmp/start.sh
 +
 +RUN apk add \
 +sudo \
 +php83 \
 +php83-fpm \
 +php83-dom \
 +php83-xml \
 +php83-simplexml \
 +php83-mbstring \
 +php83-xsl \
 +pciutils \
 +openssh \
 +sshpass \
 +git && \
 +deluser www-data ; \
 +delgroup www-data ; \
 +addgroup -g 82 -S www-data && \
 +adduser -D -H -u 82 -s /bin/bash www-data -G www-data && \
 +sed -i '/user =/c user = www-data' /etc/php83/php-fpm.d/www.conf && \
 +sed -i '/group =/c group = www-data' /etc/php83/php-fpm.d/www.conf && \
 +sed -i '/listen = /c listen = 0.0.0.0:9000' /etc/php83/php-fpm.d/www.conf && \
 +ln -sf /usr/bin/php83 /usr/bin/php
 +
 +CMD /tmp/start.sh
 +</file>
 +
 +Файл запуска. Здесь установка идёт в подкаталог mon, соответственно, на URL ''/mon''.
 +<file bash start.sh>
 +cd /var/www/html
 +# fatal: detected dubious ownership in repository at '/var/www/html/mon' To add an exception for this directory, call:
 +git config --global --add safe.directory /var/www/html/mon
 +# Update/install phpsysinfo
 +git -C mon pull || git clone https://github.com/phpsysinfo/phpsysinfo.git mon
 +# Comment out SSH warning string (if you use SSH)
 +sed 's#^.*\($this.*SSH version of phpSysInfo.*\)#// \1#' mon/includes/os/class.SSH.inc.php
 +
 +chown -R www-data:www-data mon
 +php-fpm83 -F
 +</file>
 +
 +==== Работа через SSH ====
 +На мониторящемся хосте:
 +
 +<code bash>
 +# Создать пользователя phpsysinfo и задать ему пароль. Без домашнего каталога работать не будет.
 +sudo useradd -m -s /bin/bash phpsysinfo
 +sudo passwd phpsysinfo
 +
 +# Позволить пользователю phpsysinfo выполнять команды через sudo без запроса пароля (здесь: для мониторинга контейнеров и температуры)
 +sudo visudo -f /etc/sudoers.d/phpsysinfo
 +# Вставить туда
 +Cmnd_Alias PHPSYSINFO=/usr/bin/docker stats*, /usr/sbin/smartctl
 +phpsysinfo ALL = NOPASSWD: PHPSYSINFO
 +</code>
 +
 +В phpsysinfo.ini прописать нужные команды для sudo: ''%%SUDO_COMMANDS="smartctl,docker"%%''

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki