pgrepup: обновление postgresql 9.5 до 10

Заметки по которым делал:
https://habr.com/ru/company/true_engineering/blog/437318/
https://github.com/rtshome/pgrepup

Устанавливал на тестовых машинах с нуля, поэтому ставил в том числе и postgresql. Сразу скажу, что на бою пока не делал, однако тестовые машинки обновлялись на ура. Судя по ману с хабра, базу можно обновить и до 11 версии, тем не менее я тестировал только до 10.

ubuntu 16.04

Подключаем репозиторий postgresql
https://www.postgresql.org/download/linux/ubuntu/

postgresql 9.5

apt install postgresql-9.5 postgresql-9.5-pglogical postgresql-9.5-pgl-ddl-deploy

Читать далее «pgrepup: обновление postgresql 9.5 до 10»

oracle java8 jdk

Ввиду того, что теперь нет возможности скачать deb пакет будем его создавать.

Для начала ставим необходимые пакеты

sudo apt install java-package java-common libgtk-3-dev libcairo-gobject2

Качаем jdk архив jdk-8u211-linux-x64.tar.gz с сайта оракла https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html (нужна учетка, но её можно создать)

Создаем из архива deb пакет

make-jpkg jdk-8u211-linux-x64.tar.gz

Устанавливаем

sudo dpkg -i oracle-java8-jdk_8u211_amd64.deb

Смотрим версию

java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

Если ставили до этого javа

update-alternatives --list java
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
/usr/lib/jvm/java-8-oracle/jre/bin/java
/usr/lib/jvm/java-9-openjdk-amd64/bin/java
/usr/lib/jvm/oracle-java8-jdk-amd64/jre/bin/java

Выбрать нужную

sudo update-alternatives --set java /usr/lib/jvm/oracle-java8-jdk-amd64/jre/bin/java

Tiny Tiny RSS: ошибка после обновления

Startup failed
Tiny Tiny RSS was unable to start properly. This usually means a misconfiguration or an incomplete upgrade. Please fix errors indicated by the following messages:
PHP UConverter class is missing, it's provided by the Internationalization (intl) module.
You might want to check tt-rss wiki or the forums for more information. Please search the forums before creating new topic for your question.

Лечится установкой пакета php-intl

apt install php-intl
systemctl restart php-fpm.service

LVM восстановление рейда

Есть сервер на котором выполнили vgreduce —removemissing vgraid до замены диска на новый и репейра. В итоге картинка была такая

# lvs -a -o +devices
  LV                VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices
  lvraid            vgraid rwi-a-r---  9,98g                                    100,00           lvraid_rimage_0(0),lvraid_rimage_1(0),lvraid_rimage_2(0),lvraid_rimage_3(0)
  [lvraid_rimage_0] vgraid iwi-aor---  4,99g                                                     /dev/sdb(1)
  [lvraid_rimage_1] vgraid iwi-aor---  4,99g                                                     /dev/sdd(1)
  [lvraid_rimage_2] vgraid iwi-aor---  4,99g                                                     /dev/sde(1)
  [lvraid_rimage_3] vgraid vwi-a-r---  4,99g
  [lvraid_rmeta_0]  vgraid ewi-aor---  4,00m                                                     /dev/sdb(0)
  [lvraid_rmeta_1]  vgraid ewi-aor---  4,00m                                                     /dev/sdd(0)
  [lvraid_rmeta_2]  vgraid ewi-aor---  4,00m                                                     /dev/sde(0)
  [lvraid_rmeta_3]  vgraid ewi-a-r---  4,00m

Репейр не получалось сделать

# lvconvert --repair vgraid/lvraid /dev/sdf
Attempt to replace failed RAID images (requires full device resync)? [y/n]: y
  Unable to remove 1 images:  Only 0 devices given.
  Failed to remove the specified images from vgraid/lvraid
  Failed to replace faulty devices in vgraid/lvraid.

В итоге удалось починить таким способом. Не претендую на правильность и не мне говорить, что сперва следует протестировать. Читать далее «LVM восстановление рейда»

Tiny Tiny RSS с nginx, php-fpm и postgresql

Качаем tt-rss с официального сайта https://tt-rss.org/

git clone https://tt-rss.org/git/tt-rss.git /path/to/tt-rss/www

Читать далее «Tiny Tiny RSS с nginx, php-fpm и postgresql»

Снятие ограничений с PDF документа

Купил я на официальном сайте издательства книгу. Решил с ней поработать в официальном приложении Adobe Acrobat Reader на Android. Для меня поработать означает оставлять заметки и выделять цветом текст. Выделяю текст, который хочу отметить цветом и… Опа! Во всплывающем меню есть только пункт «Скопировать». Я решил открыть панель закладок к файлу и тут получаю сообщение, что «Документ с ограничениями. Этот инструмент недоступен из-за параметров безопасности документа.» Что!? Это моя копия книги! Как мне с ней работать!?

Читать далее «Снятие ограничений с PDF документа»

Postfix: Illegal address syntax

Редко, но бывает вижу в логах постфикса такие ошибки:

Nov  6 17:22:44 mx postfix/smtpd[22836]: warning: Illegal address syntax from unknown[192.168.XX.XX] in RCPT command: <'email_1@example.com'>
Nov  6 17:22:45 mx postfix/smtpd[22836]: warning: Illegal address syntax from unknown[192.168.XX.XX] in RCPT command: <'email_2@example.com'>
Nov  6 17:22:46 mx postfix/smtpd[22836]: warning: Illegal address syntax from unknown[192.168.XX.XX] in RCPT command: <'email_3@example.com'>
Nov  6 17:22:48 mx postfix/smtpd[22836]: too many errors after RCPT from unknown[192.168.XX.XX]

Проблема в одинарных кавычках ’email’ которых не должно быть и которые появляются, как правило, у пользователей Outlook. Лечится вот таким вот фильтром в постификсе:

В main.cf добавляем

smtpd_command_filter = pcre:/etc/postfix/command_filter.regex

в /etc/postfix/command_filter.regex

/^RCPT\s+TO:\s*<'([^[:space:]]+)'>(.*)/		RCPT TO:<$1>$2

Спасибо extremeshok.com

Dovecot deleted-to-trash plugin

По умолчанию Outlook, при подключении по IMAP, некорректно работает с Dovecot, а именно при удалении письма только перечеркивает его и не перемещает в Корзину. Этот плагин при удалении письма копирует его в Корзину. Именно копирует, потому что помеченное перечеркнутое Outlook-ом письмо останется там же где и было. Удалить же помеченные письма можно перейдя в Правка — Очистить — Очистить помеченные элементы. Так же можно настроить автоматические удаление помеченных элементов перейдя в Правка — Очистить — Параметры очистки и выставив галку рядом с «Удалять элементы при переключении папок в сети»

Вернемся к настройке плагина.

Установим необходимые пакеты

yum install autoconf automake gcc git dovecot-devel

Скачаем и установим плагин

git clone https://github.com/lexbrugman/dovecot_deleted_to_trash
cd dovecot_deleted_to_trash
make
cp lib_deleted_to_trash_plugin.so /usr/lib64/dovecot/lib95_deleted_to_trash_plugin.so

Правим /etc/dovecot/conf.d/20-imap.conf

protocol imap {
  mail_plugins = $mail_plugins imap_quota acl deleted_to_trash
}

И /etc/dovecot/conf.d/90-plugin.conf

plugin {
  deleted_to_trash_folder = Trash
}

Перезапустим Dovecot

systemctl restart dovecot.service

Спасибо extremeshok.com

K3b: cdrecord has no permission to open the device

Первый раз за пару лет понадобилось записать пару файлов на CD диск и получил ошибку «cdrecord has no permission to open the device (cdrecord не имеет прав на открытие устройства)» Как оказалось лечится довольно легко. В K3b заходим в Настройки K3b — Программы — Права доступа.

Там у меня была такая картинка:

Правим права на те, что предлагает программа.

sudo chmod 4711 /usr/bin/cdrdao
sudo chmod 4711 /usr/bin/wodim

Получается так:

После этого запись идет нормально.

Zabbix 3 на nginx и php-fpm на centos 7

Идея в том, чтоб настроить веб-интерфейс zabbix 3 на nginx и php-fpm на одном сервере, а zabbix-server на другом.

Настраиваем веб-сервер

Ставим nginx

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install nginx

systemctl start nginx
systemctl enable nginx

Конфиг nginx

vim /etc/nginx/conf.d/zabbix.conf
server {
listen 80;

root /usr/share/zabbix;
access_log /var/log/nginx/zabbix.access.log;
server_name 172.16.16.10;

location / {
index index.php index.html index.htm;
}

location ~ \.php$ {
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param PHP_VALUE "
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
date.timezone = Europe/Moscow
always_populate_raw_post_data = -1
";
fastcgi_buffers 8 256k;
fastcgi_buffer_size 128k;
fastcgi_intercept_errors on;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}

client_max_body_size 32m;

}

Обращаю внимание, что у меня nginx работает с php-fpm через сокет. Если у вас по tcp порту, то ставьте

fastcgi_pass 127.0.0.1:9000;

Открываем 80, 443 порты

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

Ставим php-fpm

rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install epel-release yum-utils
yum-config-manager --enable remi-php71

yum install php71
yum install php-fpm php-cli php-mysql php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap

systemctl start php-fpm
systemctl enable php-fpm

Настроим php-fpm

yum install net-tools

netstat -tulpn | grep php-fpm

Все в порядке, повис на порту 9000. Запустим его через unix сокет. Для этого открываем конфиг /etc/php-fpm.d/www.conf и комментируем строку:

vim /etc/php-fpm.d/www.conf

;listen = 127.0.0.1:9000

Вместо нее добавляем несколько других:

listen = /var/run/php-fpm/php-fpm.sock
listen.mode = 0660
listen.owner = nginx
listen.group = nginx

Заодно измените пользователя, от которого будет работать php-fpm. Вместо apache укажите nginx

user = nginx
group = nginx

Ставим zabbix

rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm
yum install zabbix-web-mysql

Настроим selinux
Дадим права на подключение к удаленной базе mysql

getsebool -a | grep httpd_can_network_connect_db
setsebool -P httpd_can_network_connect_db 1

Дадим возможность вебморде подключаться к серверной части

getsebool -a | grep zabbix
setsebool -P httpd_can_connect_zabbix 1

Настроим права

chown -R nginx. /etc/zabbix/web
chown -R nginx. /usr/share/zabbix

Дабы не получать ошибку

PHP message: PHP Fatal error:  Uncaught Exception: Cannot start session. in /usr/share/zabbix/include/classes/core/CSession.php:50

в /etc/php-fpm.d/www.conf ищем строку

php_value[session.save_path]    = /var/lib/php/session

И выставляем полные права на директорию /var/lib/php/session

chmod 770 /var/lib/php/session
chown :nginx /var/lib/php/session
systemctl restart php-fpm

Перезапускаем nginx

systemctl restart nginx.service

 

Настраиваем второй сервер

Ставим mariadb

yum install mariadb-server mariadb-devel
systemctl enable mariadb.service
systemctl start mariadb.service

Создадим базу и дадим права

create database zabbix;
grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'пароль';
grant all privileges on zabbix.* to 'zabbix'@'172.16.16.10' identified by 'пароль';
flush privileges;

где 172.16.16.10 — ip адрес веб-сервера

Ставим zabbix-сервер

rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm
yum install zabbix-server-mysql zabbix-agent

Указываем пароль базы

vim /etc/zabbix/zabbix_server.conf
DBPassword=пароль

Запускаем

systemctl start zabbix-server.service
systemctl enable zabbix-server.service
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service

Откроем порт mysql

firewall-cmd --add-service=mysql --permanent
firewall-cmd --reload

Открываем порты 10051, 10050, snmp

firewall-cmd --permanent --new-service=zabbix
firewall-cmd --service=zabbix --add-port=10051/tcp --permanent
firewall-cmd --service=zabbix --add-port=10050/tcp --permanent
firewall-cmd --add-service=zabbix --permanent
firewall-cmd --add-service=snmp --permanent
firewall-cmd --reload

По мотивам:
https://serveradmin.ru/ustanovka-i-nastroyka-nginx-php-fpm-php7-1-na-centos-7/
https://serveradmin.ru/ustanovka-zabbix-3-na-nginx-php-fpm/