Прошло достаточно много времени после публикации записи о настройке сервера 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