Gentoo: Запуск двух версий PHP для использования в Nginx

Linux / Gentoo

Иногда нужно запустить 2 абсолютно разные версии PHP на одном сервере для поддержки старых скриптов.
Есть 2 варианта:
1. PHP-FPM
2. spawn-fcgi

Подробности внутри

MySQL: Как переименовать базу данных

Database / MySQL

С версии MySQL 5.1.23 операция "RENAME DATABASE" была удалена, поэтому быстро переименовать базу данных теперь нельзя.
Есть несколько вариантов решения:
1. Использовать дамп без "CREATE DATABASE"
2. Переименовать таблицы в БД
Подробнее внутри.

PostgreSQL: ERROR: value is out of range for type integer

Linux / PostgreSQL

При импорте схемы базы из MySQL в PostgreSQL через mysql_fdw может возникнуть ситуация неправильного соответствия типов. 
Так, при импорте полей с типом INT(10) (он же unsigned int), postgres ставит тип INTEGER, из-за этого при выборке из этой таблицы может возникнуть ошибка
ERROR:  value "3413106758" is out of range for type integer
 
Чтобы избавиться от нее, нужно поменять тип поля в postgres:
 
ALTER TABLE %TABLE_NAME% ALTER COLUMN %COLUMN_NAME TYPE BIGINT;
 

ferm: Unrecognized keyword: src-cc

Linux / Gentoo

Решение проблемы с ошибкой ferm "Unrecognized keyword: src-cc"
В файле /usr/sbin/ferm
Найти строки:

	add_match_def 'fuzzy', qw(lower-limit=s upper-limit=s);
	add_match_def 'hbh', qw(hbh-len! hbh-opts=c);
	
Вставить между ними:
add_match_def 'geoip', qw(!src-cc=s !dst-cc=s);

Gentoo: limits

Linux / Gentoo

Установить лимиты open files в Gentoo
 
Отредактировать файл /etc/security/limits.conf: 

	*               hard    nofile          65535
	*               soft    nofile          65535
	

Gentoo: Кто требует определенный пакет

Linux / Gentoo

Если нужно узнать, кто "хочет" определенный пакет в Gentoo, надо выполнить команду 
equery depends пакет
 
Например:
 

	equery depends cairo
	 * These packages depend on cairo:
	dev-java/oracle-jre-bin-1.8.0.102 (javafx ? x11-libs/cairo)
	dev-libs/gobject-introspection-1.46.0 (cairo ? x11-libs/cairo[glib])
	gnome-base/librsvg-2.40.15 (>=x11-libs/cairo-1.12.14-r4[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?])
	media-libs/harfbuzz-1.2.7 (cairo ? x11-libs/cairo)
	net-analyzer/ettercap-0.8.2 (gtk ? x11-libs/cairo)
	x11-libs/pango-1.38.1 (>=x11-libs/cairo-1.12.14-r4[X?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?]) 
	
	

Centos: ulimit open_files_limit не меняется

Linux

Если в Centos 7 не меняется ulimit -n после внесения изменений в limits.conf для какого-либо из сервисов, то в юните systemd надо добавить строку в секцию [Service]:
LimitNOFILE=16384
 
Например:

	cat /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service 
	[Unit]
	Description=RabbitMQ broker
	After=syslog.target network.target
	[Service]
	LimitNOFILE=16384
	Type=notify
	User=rabbitmq
	Group=rabbitmq
	WorkingDirectory=/var/lib/rabbitmq
	ExecStart=/usr/lib/rabbitmq/bin/rabbitmq-server
	ExecStop=/usr/lib/rabbitmq/bin/rabbitmqctl stop
	[Install]
	WantedBy=multi-user.target 
	
 
После этого выполнить

systemctl daemon-reload 

Gentoo: Как обновить timezone

Linux

Сначала отсинхронизируем репозиторий, потом установим новую версию timezone-data. 

# emerge --sync
# emerge timezone-data
Будьте внимательны, если вы давно не обновляли систему, то portage может обновиться до EAPI 5 и надо будет повозиться с новыми профилями компиляции.


Копирование данных с помощью архивации через SSH

Linux

tar cvf - /InputDir | ssh user@server.tld 'cd /StoreDir ; tar xf -'

или

tar zcvf - /InputDir | ssh user@server.tld 'cat > /StoreDir/backup.tar.gz'

/usr/bin/ssh-copy-id: ERROR: No identities found

Linux

Если возникла ошибка /usr/bin/ssh-copy-id: ERROR: No identities found, делаем следующее:


eval `ssh-agent`
ssh-add
ssh-copy-id user@example.com

или 

ssh-copy-id -i /home/user_name/.ssh/id_rsa.pub user@example.com