Запуск openDCIM на PHP 8.2 + Nginx

Подготовка файлов

По умолчанию используется базовая авторизация, но nginx не хочет записывать в fastcgi параметр REMOTE_USER. Вместо этого используется переменная PHP_AUTH_USER. Поэтому, нужно либо заморочиться с конфигом nginx для установки этого параметра, либо поправить файлы, командой

find /path/to/opendcim -type f -print0 | xargs -0 sed -i ‘s/REMOTE_USER/PHP_AUTH_USER/g’

На момент установки была версия 23.03, в файлах хватало косяков, поэтому замену я делал без зазрения совести 🙂 К примеру, в файле create.sql в таблице People неправильно названо поле для страны — должно быть countryCode, а по факту Country, этот момент тоже нужно было поправить. Ещё в файле classes/DataCenter.class.php на 155 строке переменная вызывалась со скобками, как функция — $this->ContainerID(); т.е. нужно было убрать ()

Конфиг nginx

Некоторые вещи, как оказалось, запрашиваются по апи, а оно сделано на Slim, поэтому для локации /api/v1 нужна отдельная обработка php. Сертификаты были сгенерированы предварительно, с помощью openssl. Если использовать домен, то можно и через Let’s Encrypt.

server {
server_name 10.11.12.13;
listen 443 ssl;

    root        /home/admin/www/opendcim;
 
    error_log /var/log/nginx/dcim-error.log;
    ssl_certificate /etc/ssl/certs/dcim-public.crt;
    ssl_certificate_key /etc/ssl/private/dcim-private.key;

    auth_basic "Admin Area";
    auth_basic_user_file /etc/nginx/.dcimpass;

    index index.php;
    location ^~ /api/v1 {
        root /home/admin/www/opendcim/api/v1;
        try_files $uri $uri/ /api/v1/index.php?$query_string;

        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass    unix:/run/php-fpm/dcim.sock;
            fastcgi_index   index.php;
            include         fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root/index.php;
        }
    }
    location / {
        try_files $uri =404;
    }

    location ~ \.php$ {
        fastcgi_intercept_errors on;
        #fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_index  index.php;
        include        fastcgi_params;
        #fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        fastcgi_pass   unix:/run/php-fpm/dcim.sock;
    }
}

Все действия выполнялись на ОС AlmaLinux 9


Опубликовано

в

от

Метки:

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *