Warning: require(): open_basedir restriction in effect. File(x) is not within the allowed path(s)

Столкнулся с ошибкой во время переноса скрипта на другой сервер. Для управления сайтами используется панель Vesta CP. Проблема заключается в том, что на сервере не правильно прописана опция open_basedir. Для нормальной работы скрипта нам нужно обеспечить доступ к каталогу /home/system/web/system.ru/yii/.

Warning: require(): open_basedir restriction in effect. File(/home/system/web/system.ru/yii/vendor/autoload.php) is not within the allowed path(s): (/home/system/web/system.ru/public_html:/home/system/1) in /home/system/web/system.ru/public_html/admin/index.php on line 10

Warning: require(/home/system/web/system.ru/yii/vendor/autoload.php): failed to open stream: Operation not permitted in /home/system/web/system.ru/public_html/admin/index.php on line 10

Fatal error: require(): Failed opening required '/home/system/web/system.ru/public_html/admin/../../yii/vendor/autoload.php' (include_path='.:/usr/share/pear:/usr/share/php') in /home/system/web/system.ru/public_html/admin/index.php on line 10

Для решения проблемы Warning: require(): open_basedir restriction in effect. File(x) is not within the allowed path(s) переходим в каталог с конфигами Apache. У меня Vesta CP и они расположены по следующему пути:

cd /home/system/conf/web

Далее добавляем или правим настройки в конфигах:

system.ru.httpd.conf
system.ru.httpd.ssl.conf

Следующую опцию:

<Directory /home/system/web/system.ru/public_html>
        AllowOverride All
        SSLRequireSSL
        Options +Includes -Indexes +ExecCGI
        php_admin_value open_basedir   /home/system/web/system.ru/public_html:/home/system
        php_admin_value upload_tmp_dir /home/system/tmp
        php_admin_value session.save_path /home/system/tmp
    </Directory>

Поиск и замена в Linux

Дата: 03.04.2019

Допустим у вас есть сервер, на котором нужно изменить ip-адрес. Проблема в том, что есть много конфигов, где может быть указан этот адрес. Но у вас нет времени и желания лазить по всем конфигам и прописывать новые настройки. Данную задачу можно автоматизировать и ускорить если выполнить поиск по содержимому всех файлов в Linux c последующей заменой необходимого фрагмента текста на свое значение.

Для поиска и замены в Linux по указанному слову выполните команду:

grep -rli 'исходный текст' * | xargs -i@ sed -i 's/исходный текст/текст на который нужно заменить/g' @

Если нужно просто выполнить поиск по содержимому файлов без выполнения замены:

grep -rl 'исходный текст' /

Linux выполнять команду каждую секунду

Дата: 26.03.2019

Небольшая заметка на тему, как непрерывно выполнять одну и туже команду в Linux. Лично мне понадобилось при переносе файлов каждую секунду проверять размер каталога. В данном случае мне нужно было постоянно выполнять команду du -sh. Для выполнения любой команды через заданный промежуток времени в Linux есть утилита watch.

Параметры ее использования достаточно просты. Для примера мне нужно выполнить команду каждую 1-у секунду:

watch -n1 command

MySQL Server Has Gone Away

Дата: 15.02.2019Метки:

Во время загрузки дампа в phpMyAdmin столкнулся с ошибкой MySQL Server Has Gone Away. Дамп был размером на 10MB, а его экспорт требовал времени. В итоге срабатывал тайм-аут соединения, в результате чего сервер закрывал соединение. Для решения проблемы необходимо в файле my.cnf увеличить значение параметра wait_timeout.

vi /etc/mysql/my.cnf

Затем установить тайм-аут ожидания в секундах:

wait_timeout = 600

Настроить soft RAID0 в Linux

Дата: 11.02.2019Метки:

Для настройки soft RAID0 в Linux потребуется два раздела одинакового размера. В моем случае уже были подготовлены разделы, в случае их отсутствия вам создать дав одинаковых раздела на двух дисках. Весь процесс создания заключается всего в одной команде:

# mdadm -C /dev/md4 -l raid0 -n 2 /dev/nvme[0-1]n1p4
mdadm: /dev/nvme0n1p4 appears to contain an ext2fs file system
       size=376531904K  mtime=Sun Feb 10 21:31:56 2019
mdadm: /dev/nvme1n1p4 appears to contain an ext2fs file system
       size=376531904K  mtime=Sun Feb 10 21:31:56 2019
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md4 started.

Просмотреть информацию о RAID массиве:

# mdadm -E /dev/nvme[0-1]n1p4
/dev/nvme0n1p4:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : d798bc02:2e3b3241:ef4ac56e:f742e569
           Name : server:4  (local to host server)
  Creation Time : Mon Feb 11 05:08:40 2019
     Raid Level : raid0
   Raid Devices : 2

 Avail Dev Size : 752801792 (358.96 GiB 385.43 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
   Unused Space : before=262056 sectors, after=0 sectors
          State : clean
    Device UUID : a0a31486:1d80a1ad:16728a55:5e91b47e

    Update Time : Mon Feb 11 05:08:40 2019
  Bad Block Log : 512 entries available at offset 72 sectors
       Checksum : 5e149378 - correct
         Events : 0

     Chunk Size : 512K

   Device Role : Active device 0
   Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
/dev/nvme1n1p4:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : d798bc02:2e3b3241:ef4ac56e:f742e569
           Name : server:4  (local to host server)
  Creation Time : Mon Feb 11 05:08:40 2019
     Raid Level : raid0
   Raid Devices : 2

 Avail Dev Size : 752801792 (358.96 GiB 385.43 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
   Unused Space : before=262056 sectors, after=0 sectors
          State : clean
    Device UUID : ec2e8427:f2f506e8:c7895f2e:737b9873

    Update Time : Mon Feb 11 05:08:40 2019
  Bad Block Log : 512 entries available at offset 72 sectors
       Checksum : 7a29660 - correct
         Events : 0

     Chunk Size : 512K

   Device Role : Active device 1
   Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
root@server:~# mdadm --detail /dev/nvme[0-1]n1p4
mdadm: /dev/nvme0n1p4 does not appear to be an md device
mdadm: /dev/nvme1n1p4 does not appear to be an md device
root@server:~# mdadm --detail /dev/md4
/dev/md4:
        Version : 1.2
  Creation Time : Mon Feb 11 05:08:40 2019
     Raid Level : raid0
     Array Size : 752801792 (717.93 GiB 770.87 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Mon Feb 11 05:08:40 2019
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

     Chunk Size : 512K

           Name : server:4  (local to host server)
           UUID : d798bc02:2e3b3241:ef4ac56e:f742e569
         Events : 0

    Number   Major   Minor   RaidDevice State
       0     259       10        0      active sync   /dev/nvme0n1p4
       1     259        4        1      active sync   /dev/nvme1n1p4

Создаем файловую систему:

# mkfs.ext4 /dev/md4
mke2fs 1.43.4 (31-Jan-2017)
Discarding device blocks: done
Creating filesystem with 188200448 4k blocks and 47054848 inodes
Filesystem UUID: 8d549021-4994-496d-90a0-ee53133036b1
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000

Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

Далее монтируем командой:

mount /dev/md4 /home

Удалить soft RAID в Linux

Дата: 11.02.2019Метки:

После установки системы в soft RAID1 понадобилось мне изменить RAID для одного из разделов. Для удаления программного RAID первым делом нам нужно отмонтировать файловую систему, которая расположена на нем. В моем случае это был каталог /home.

umount /home

Останавливаем массив:

mdadm -S /dev/md4

В вашем случае md можем иметь другую нумерацию.
Смотрим информацию о разделах диска:

# fdisk -l
Disk /dev/nvme1n1: 419.2 GiB, 450098159616 bytes, 879097968 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 3D66E75C-59E9-4551-A719-B417E617F076

Device             Start       End   Sectors   Size Type
/dev/nvme1n1p1      2048   1048575   1046528   511M EFI System
/dev/nvme1n1p2   1048576   2095103   1046528   511M Linux RAID
/dev/nvme1n1p3   2095104 124973055 122877952  58.6G Linux RAID
/dev/nvme1n1p4 124973056 878036991 753063936 359.1G Linux RAID
/dev/nvme1n1p5 878036992 879083519   1046528   511M Linux swap


Disk /dev/md3: 58.6 GiB, 62913445888 bytes, 122877824 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/md2: 511 MiB, 535756800 bytes, 1046400 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/nvme0n1: 419.2 GiB, 450098159616 bytes, 879097968 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: D921332C-5726-42B3-89E4-5771567C8A8A

Device             Start       End   Sectors   Size Type
/dev/nvme0n1p1      2048   1048575   1046528   511M EFI System
/dev/nvme0n1p2   1048576   2095103   1046528   511M Linux RAID
/dev/nvme0n1p3   2095104 124973055 122877952  58.6G Linux RAID
/dev/nvme0n1p4 124973056 878036991 753063936 359.1G Linux RAID
/dev/nvme0n1p5 878036992 879083519   1046528   511M Linux swap

В моем случае под программный RAID использовались разделы /dev/nvme1n1p4 и /dev/nvme0n1p4. Очищаем суперблоки RAID на разделах из которого собран массив:

mdadm --zero-superblock /dev/nvme1n1p4
mdadm --zero-superblock /dev/nvme0n1p4

Проверяем:

# mdadm --examine /dev/nvme1n1p4
mdadm: No md superblock detected on /dev/nvme1n1p4.
# mdadm --examine /dev/nvme0n1p4
mdadm: No md superblock detected on /dev/nvme0n1p4.

Удаление soft RAID в Linux выполнено успешно.

Настойка RDP для Ubuntu 18

Дата: 11.02.2019Метки: ,

Понадобилось мне настроить RDP доступ для Ubuntu 18. К серверу будут подключаться с Windows машин. Не смотря на то, что RDP является не самым лучшим решением для Linux систем, по ряду причин понадобилось настроить именно так. Для RDP подключения к Ubuntu 18 я буду использовать xrdp.

Если вы используете Ubuntu Server, то первым делом нужно установить графический интерфейс. Я буду использовать стандартный Gnome 3:

apt-get install ubuntu-desktop

Далее необходимо установить пакет xrdp:

apt-get install xrdp

Создадим пользователя для подключения к серверу:

adduser newuser
usermod -aG sudo newuser

Я добавил пользователя и попытался зайти на сервер, но тут у меня появились проблемы со входом. После RDP подключения, при входе на сервер я получил следующее уведомление: Authentication Required to Create Managed Color Device

Лечится данная проблема следующим образом:

cd /usr/share/polkit-1/actions
mv org.freedesktop.color.policy org.freedesktop.color.policy_old

Теперь, для более комфортной работы рекомендую отключить анимацию рабочего стола и изменить параметры xrdp:

cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.back
nano /etc/xrdp/xrdp.ini

Ищем параметр:

max_bpp=32

Параметр отвечает за цветопередачу. В зависимости от скорости работы, рекомендую установить этот параметр равным 16 или 24. Для применения настроек необходимо перезапустить систему.

Отдельный robots.txt для поддомена

Дата: 31.01.2019Метки:

Доступ к сайту осуществляется с двух разных доменов, а если быть конкретным то с поддомена основного домена. В моем случае стояла задача запретить индексирование для поддомена. Для этого необходимо в конфиг nginx добавить следующие строки:

location = /robots.txt { return 200 "User-agent: *\nDisallow: /\n"; }

rsync SSH синхронизация файлов в Linux

Дата: 20.01.2019Метки:

В данной заметке я кратко расскажу о использовании rsync в Linux. Для подключения я буду использовать режим rsync по ssh, приведу список наиболее часто используемых параметров и в конце покажу примеры для rsync синхронизации файлов.

Если необходимо перенести файлы с одного на другой сервер в Linux, для меня самый удобный способ это использование rsync по SSH. По сравнению с другими протоколами, rsync объединяет в себе два основных преимущества. Использование rsync может значительно ускорить синхронизацию за счет передачи только изменившихся файлов. Ещё один плюс rsync — сжатие данных на лету. Нужно отметить, что сжатие может как ускорить, так и существенно замедлить синхронизацию.

Для начала приведу список основных опций rsync в Linux:

-a,  сохранять права доступа и информация о владельцах, включает опции -rlptgoD;
-r,  копировать каталоги рекурсивно;
-l,  копировать символические ссылки, не обращаться к файлам;
-p,  сохранять прав доступа к файлам;
-t,  сохранять время модификации файлов;
-g, -o, сохранять владельца и группы файла;
-D,  охранять файлы устройств и специальных файлов;
-u,  режим обновления, не синхронизировать файлы имеющие более позднюю дату модификации, чем в источнике;
-v,  отображать имена копируемых файлов;
-q,  не отображать сообщения об ошибках;
-z,  сжимать данные;
-P,  отображать прогресс копирования;
-с,  проверка файлов по контрольной сумме;
--ignore-errors,  игнорировать ошибки;
--max-delete,  максимальное число удаляемых за один раз файлов и каталогов;
--files-from=FILE,  указать список файлов и директорий для копирования;
-e ssh,  использование при копировании SSH;
--bwlimit=KBPS,  ограничение скорости передач данных.

Теперь приведу наиболее наиболее часто используемые rsync примеры синхронизации файлов.

Используем rsync по SSH для синхронизации двух директорий или файлов:

rsync -zavP /source root@1.1.1.1:/backup

Можно синхронизировать сразу два каталога или файла:

rsync -zavP /source /source2 root@1.1.1.1:/backup

Копировать файлы с удаленного сервера на локальный:

rsync -zavP root@1.1.1.1:/backup /source

Использовать rsync по SSH с нестандартным портом:

rsync -zavP '-e ssh -p 12345' /source root@1.1.1.1:/backup

Выбор версии PHP 7 для PHP-FPM в ISPmanager 5

В панелях ISPmanager 5 есть возможность установки индивидуальных версий PHP для каждого сайта сайта. Но к сожалению, после установки альтернативных версий PHP 7 возможность изменения версии не совсем очевидна. Лично мне удалось установить альтернативную версию PHP 7 для PHP-FPM в ISPmanager 5 не сразу, а после некоторого времени поиска по настройкам панели.

После установки альтернативной версии в меню Возможности она будет установлена и для PHP-FPM по умолчанию. Но если вы попытаетесь изменить версию PHP в настройка сайта, вы заметите, что данная опция не активна, а по умолчанию будет использоваться PHP native.

Решение вопроса оказалось достаточно простым. Переходим в меню Пользователи, переходим в свойства пользователя и включаем нужную нам версию.