понедельник, 13 декабря 2021 г.

Debian10. Собственный unit systemd. Запуск скрипта при загрузке системы

В Debian10 нет удобного файла /etc/rc.local, в который можно поместить скрипт, выполняемый при загрузке системы.
Лучший способ запустить скрипт при запуске - это сделать собственный юнит системы systemd.

Создаем файл
# touch /etc/systemd/system/detail-make.service
Прописываем в него минимально необходимую информацию:
#  nano /etc/systemd/system/detail-make.service 

Пример файла:

[Unit]
Description=detail_make_cikl
After=networking.target postgresql.target
[Service]
Type=simple
ExecStart=nohup /home/write_in_file_cikl.sh >/dev/null &
[Install]
WantedBy=multi-user.target


Делаем файл юнита исполняемым:
# chmod +x /etc/systemd/system/detail-make.service

#chmod 777 /home/write_in_file_cikl.sh

Рестартуем демон system:
# systemctl daemon-reload
Запускаем сервис:
# systemctl start detail-make.service
Включаем автозагрузку:
# systemctl enable detail-make.service
Статус сервиса можно посмотерть так:
# systemctl status detail-make

Debian10 Ошибка при установке программ. apt install. apt update.

Иногда в Debian10 при выполнении простой команды установки получаем ошибку

# apt install mc
<......>
Получено 2 834 kB за 1с (3 187 kB/s)
E: Не удалось получить http://deb.debian.org/debian/pool/main/g/glib2.0/libglib2.0-0_2.58.3-2+deb10u2_amd64.deb  404  Not Found [IP: 199.232.138.132 80]
E: Не удалось получить http://deb.debian.org/debian/pool/main/g/glib2.0/libglib2.0-data_2.58.3-2+deb10u2_all.deb  404  Not Found [IP: 199.232.138.132 80]
E: Не удалось получить некоторые архивы; возможно, нужно запустить apt-get update или попытаться повторить запуск с ключом --fix-missing?

С некоторой долей вероятности это происходит из-за того, что данные базы apt обновились
и теперь указывают на неверные ссылки в репозитарии.
Для исправления ситуации выполняем команду:
# apt update

И тогда все опять начинает корректно работать



среда, 17 ноября 2021 г.

Установка расширения ssh2 для php7 в CentOS8

В CentOS8 по умолчанию устанавливается версия php – 7.2.
Данная версия языка php не содержит готового пакета расширения ssh2 в репозитариях CentOS8. Более того расширение не поддерживается официально для php7. В связи с этим нет возможности использовать директивы ssh2_connect, ssh2_exec, ssh2_scp_send в программах на php7.

Это ограничение можно обойти, установив расширение вручную.
1) Подготовим систему для сборки расширения ssh2
# yum install gcc php-devel libssh2 libssh2-devel

2) Скачиваем и собираем расширение
# cd /usr/src
# git clone https://github.com/php/pecl-networking-ssh2.git
# cd pecl-networking-ssh2
# phpize
# ./configure
# make

Сборка завершается сообщением:
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/src/pecl-networking-ssh2/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the 'LD_RUN_PATH' environment variable
     during linking
   - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to '/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

3) Устанавливаем собранный пакет
# make install
Результат:
Installing shared extensions:     /usr/lib64/php/modules/

4) Информацию о новом модуле нужно задать в директории /etc/php.d
Создаем файл и заносим в него информацию о расширении:
# touch /etc/php.d/40-ssh2.ini
# nano /etc/php.d/40-ssh2.ini

Вписываем туда:
extension=ssh2

5) Проверить результат можно командой:
# php -i |grep ssh2
Для применения настроек в apache, web-сервер нужно перезагрузить