Прошло достаточно много времени после публикации записи о настройке сервера Debian для 1С-Битрикс. Я много экспериментировал с оптимизацией, пробовал ускорить время старта сессий через tmpfs, занимался переводом Plesk Billing, т.к. почему-то компания Parallels посчитала, что нет смысла переводить все на русский язык… И многое другое. Часть конфигов и инструкций я привел в этом посте.

RAM DISK

# mkdir /mnt/ramdisk/
# chmod 777 /mnt/ramdisk
# nano /etc/fstab

Дописываем строчку с новым устройством:

tmpfs /mnt/ramdisk tmpfs defaults,size=711m,noexec,nosuid 0 0

Монтируем:

# mount -a

В php.ini:

session.save_path = "/mnt/ramdisk"

MYSQL

Это нужно сделать до установки Plesk Billing.

character-set-server    = utf8
collation-server        = utf8_general_ci

tmp_table_size = 32M
max_heap_table_size = 32M
table_open_cache = 2048

default-storage-engine  = innodb
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
transaction-isolation   = READ-COMMITTED
innodb_lock_wait_timeout = 50
innodb_buffer_pool_size = 4G

Перевод Plesk Billing

UPDATE locales SET locale_month_abbreviated_1 = 'янв.' WHERE locale_id = '279';
UPDATE locales SET locale_month_abbreviated_2 = 'фев.' WHERE locale_id = '279';
UPDATE locales SET locale_month_abbreviated_3 = 'мар.' WHERE locale_id = '279';
UPDATE locales SET locale_month_abbreviated_4 = 'апр.' WHERE locale_id = '279';
UPDATE locales SET locale_month_abbreviated_5 = 'май.' WHERE locale_id = '279';
UPDATE locales SET locale_month_abbreviated_6 = 'иню.' WHERE locale_id = '279';
UPDATE locales SET locale_month_abbreviated_7 = 'июл.' WHERE locale_id = '279';
UPDATE locales SET locale_month_abbreviated_8 = 'авг.' WHERE locale_id = '279';
UPDATE locales SET locale_month_abbreviated_9 = 'сен.' WHERE locale_id = '279';
UPDATE locales SET locale_month_abbreviated_10 = 'окт.' WHERE locale_id = '279';
UPDATE locales SET locale_month_abbreviated_11 = 'ноя.' WHERE locale_id = '279';
UPDATE locales SET locale_month_abbreviated_12 = 'дек.' WHERE locale_id = '279';

UPDATE locales SET locale_month_narrow_1 = 'Я' WHERE locale_id = '279';
UPDATE locales SET locale_month_narrow_2 = 'Ф' WHERE locale_id = '279';
UPDATE locales SET locale_month_narrow_3 = 'М' WHERE locale_id = '279';
UPDATE locales SET locale_month_narrow_4 = 'А' WHERE locale_id = '279';
UPDATE locales SET locale_month_narrow_5 = 'М' WHERE locale_id = '279';
UPDATE locales SET locale_month_narrow_6 = 'И' WHERE locale_id = '279';
UPDATE locales SET locale_month_narrow_7 = 'И' WHERE locale_id = '279';
UPDATE locales SET locale_month_narrow_8 = 'А' WHERE locale_id = '279';
UPDATE locales SET locale_month_narrow_9 = 'С' WHERE locale_id = '279';
UPDATE locales SET locale_month_narrow_10 = 'О' WHERE locale_id = '279';
UPDATE locales SET locale_month_narrow_11 = 'Н' WHERE locale_id = '279';
UPDATE locales SET locale_month_narrow_12 = 'Д' WHERE locale_id = '279';

UPDATE locales SET locale_month_wide_1 = 'январь' WHERE locale_id = '279';
UPDATE locales SET locale_month_wide_2 = 'февраль' WHERE locale_id = '279';
UPDATE locales SET locale_month_wide_3 = 'март' WHERE locale_id = '279';
UPDATE locales SET locale_month_wide_4 = 'апрель' WHERE locale_id = '279';
UPDATE locales SET locale_month_wide_5 = 'май' WHERE locale_id = '279';
UPDATE locales SET locale_month_wide_6 = 'июнь' WHERE locale_id = '279';
UPDATE locales SET locale_month_wide_7 = 'июль' WHERE locale_id = '279';
UPDATE locales SET locale_month_wide_8 = 'август' WHERE locale_id = '279';
UPDATE locales SET locale_month_wide_9 = 'сентябрь' WHERE locale_id = '279';
UPDATE locales SET locale_month_wide_10 = 'октябрь' WHERE locale_id = '279';
UPDATE locales SET locale_month_wide_11 = 'ноябрь' WHERE locale_id = '279';
UPDATE locales SET locale_month_wide_12 = 'декабрь' WHERE locale_id = '279';

UPDATE locales SET locale_day_abbreviated_sun = 'вс' WHERE locale_id = '279';
UPDATE locales SET locale_day_abbreviated_mon = 'пн' WHERE locale_id = '279';
UPDATE locales SET locale_day_abbreviated_tue = 'вт' WHERE locale_id = '279';
UPDATE locales SET locale_day_abbreviated_wed = 'ср' WHERE locale_id = '279';
UPDATE locales SET locale_day_abbreviated_thu = 'чт' WHERE locale_id = '279';
UPDATE locales SET locale_day_abbreviated_fri = 'пт' WHERE locale_id = '279';
UPDATE locales SET locale_day_abbreviated_sat = 'сб' WHERE locale_id = '279';

UPDATE locales SET locale_day_wide_sun = 'воскресенье' WHERE locale_id = '279';
UPDATE locales SET locale_day_wide_mon = 'понедельник' WHERE locale_id = '279';
UPDATE locales SET locale_day_wide_tue = 'вторник' WHERE locale_id = '279';
UPDATE locales SET locale_day_wide_wed = 'среда' WHERE locale_id = '279';
UPDATE locales SET locale_day_wide_thu = 'четверг' WHERE locale_id = '279';
UPDATE locales SET locale_day_wide_fri = 'пятница' WHERE locale_id = '279';
UPDATE locales SET locale_day_wide_sat = 'суббота' WHERE locale_id = '279';

UPDATE languages SET language_name = 'español' WHERE language_iso2 = 'es';
UPDATE languages SET language_name = 'français' WHERE language_iso2 = 'fr';
UPDATE languages SET language_name = 'português do Brasil' WHERE language_iso2 = 'pt_BR';
UPDATE languages SET language_name = 'Русский' WHERE language_iso2 = 'ru';

Apache

Правим следующие строчки в /etc/apache2/apache2.conf:

KeepAlive Off
KeepAliveTimeout 0

<IfModule mpm_prefork_module>
    StartServers          6
    MinSpareServers       6
    MaxSpareServers       6
    MaxClients            6
    MaxRequestsPerChild 100
</IfModule>

Удаляем эти модули в apache:
a2dismod autoindex cgi deflate negotiation reqtimeout setenvif

PHP

В /etc/php5/apache2/php.ini:

date.timezone = "Europe/Moscow"

Ставим PHP APC

# apt-get install php5-dev libpcre3-dev
# pecl install apc

Настраиваем в /etc/php5/apache2/conf.d/apc.ini:

extension               = apc.so
apc.enabled             = 1
apc.shm_size            = 256M
apc.max_file_size       = 4M
apc.mmap_file_mask      = /tmp/apc.XXXXXX
apc.shm_segments        = 1
apc.num_files_hint      = 4096
apc.ttl                 = 10
apc.user_ttl            = 0
apc.filters             = "-/bitrix/cache/,-/bitrix/managed_cache/,-/bitrix/stack_cache/,-/bitrix/local_cache/,-/upload/"

Можно поставить Zend Optimizer, но с APC вместе не работает:

# pecl install ZendOpcache-7.0.2

Настраиваем в /etc/php5/apache2/conf.d/opcache.ini:

zend_extension                  =/usr/lib/php5/20100525/opcache.so
opcache.memory_consumption      =128
opcache.interned_strings_buffer =8
opcache.max_accelerated_files   =4000
opcache.revalidate_freq         =60
opcache.fast_shutdown           =1
opcache.enable_cli              =1

Тюнинг для Bitrix

В файл /etc/sysctl.d/bitrix.conf вносим следующее:

net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_tw_recycle = 1

net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2

net.ipv4.tcp_max_tw_buckets = 1440000

net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.all.forwarding=0
net.ipv4.conf.all.mc_forwarding=0

net.ipv4.tcp_tw_reuse=1

На будущее — несколько версий PHP

PHP 5.3.28:

# ./configure --prefix=/usr/local/php53 --with-config-file-path=/usr/local/php53/etc --with-libdir=lib64 --disable-debug --disable-rpath --enable-mbstring --with-mcrypt --with-mysql=/usr/include/mysql --with-gd --with-zlib --with-freetype-dir=/usr/include/freetype2/freetype
# make
# make install
# cp php.ini-production /usr/local/php53/etc/php.ini
# /usr/local/psa/bin/php_handler --add -displayname 5.3.28 -path /usr/local/php53/bin/php-cgi -phpini /usr/local/php53/etc/php.ini -type fastcgi

PHP 5.4 стоит по умолчанию

PHP 5.5.8:

# ./configure --prefix=/usr/local/php55 --with-config-file-path=/usr/local/php55/etc --with-libdir=lib64 --disable-debug --disable-rpath --without-gdbm --without-sqlite3 --without-pdo-sqlite --without-mssql --enable-mbstring --with-mcrypt --with-mysql --with-gd --with-zlib --with-freetype-dir=/usr/include/freetype2/freetype
# make
# make install
# cp php.ini-production /usr/local/php55/etc/php.ini
# /usr/local/psa/bin/php_handler --add -displayname 5.5.8 -path /usr/local/php55/bin/php-cgi -phpini /usr/local/php55/etc/php.ini -type fastcgi