Зависла команда yum

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

На CentOS 7 зависла команда yum. Убил все процессы, но если даже просто вызвать yum никакого вывода вообще не появлялось. Для решения проблемы нужно выполнить команд ниже. Затем проверить, что нет работающих процессов yum и rpm и повторить попытку.

rm /var/lib/rpm/__db*
rm /var/lib/rpm/.rpm.lock
rm /var/lib/rpm/.dbenv.lock

dd клонирование диска по SSH

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

Необходимо было сделать клон с одного диска на другой используя команду dd. На серверах абсолютно идентичные диски. Данные передаем в сжатом виде.

dd if=/dev/sda | gzip | ssh root@target 'gzip -d | dd of=/dev/sda'

В моем случае диски были по 2TB и процесс занимал несколько часов. В связи с чем имеет смысл запустить команду screen и уже потом вводить команду выше. Это нужно для того чтобы можно было закрыть окно SS-подключения.

Для отслеживания прогресса откроете еще один SSH-сеанс и введите команды из этой записи.

Установка Java 8 в Debian 8. Работающий способ.

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

Заметка про установку Java 8 в Debian 8. В сети полно мануалов, но помути в данный момент ни один не рабочий. Большинство из них это добавление репозитория Ubuntu — не рабочий вариант. Если вас устроить установка Java 7, то вы это можете сделать командой:

apt-get install default-jre

Ну а если нужно установить Java 8 в Debian 8, используйте следующуие команды:

wget http://javadl.sun.com/webapps/download/AutoDL?BundleId=106240 -O jre-linux.tar.gz
tar xvfz jre-linux.tar.gz
mkdir /usr/lib/jvm
mv jre1.8.0_45 /usr/lib/jvm/jre1.8.0_45
update-alternatives --install /usr/bin/java java /usr/lib/jvm/jre1.8.0_45/bin/java 1 
java -version
update-alternatives --config java

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. Для применения настроек необходимо перезапустить систему.