Настройка компонентов web-сервера
Здесь рассмотрены базовые настройки сервисов для нормального функционирования.
Точные настройки производятся исходя из железа, на котором запускаются сервисы.
Lighttpd
Настраиваем Lighttpd на работу с php5-fpm
- /etc/lighttpd/conf-available/15-fastcgi-php.conf
# -*- depends: fastcgi -*- # /usr/share/doc/lighttpd/fastcgi.txt.gz # http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_fastcgi-fastcgi index-file.names += ( "index.php" ) ## Start an FastCGI server for php (needs the php5-cgi package) fastcgi.server += ( ".php" => (( "socket" => "/var/run/php5-fpm.sock", "broken-scriptfilename" => "enable" )) )
Затем включаем необходимые модули
root@web-server:~# lighttpd-enable-mod fastcgi fastcgi-php
На этом минимально необходимые настройки закончены.
Проведем небольшую оптимизацию. Ниже представлены части файла lighttpd.conf
server.max-keep-alive-requests = 4 server.max-keep-alive-idle = 4 server.max-read-idle = 30 server.max-write-idle = 180
Компрессия:
compress.allowed-encodings = ("gzip", "deflate") compress.cache-dir = "/var/cache/lighttpd/compress/" compress.filetype = ( "application/javascript", "text/javascript", "text/css", "text/html", "text/plain" )
Кеширование на стороне клиента:
$HTTP["url"] =~ "\.(jpg|gif|png|css|js)$" { expire.url = ( "" => "access plus 3 days" ) }
PHP5-FPM
- /etc/php5/fpm/php.ini
cgi.fix_pathinfo=1
- /etc/php5/fpm/pool.d/www.conf
pm = static pm.max_children = 16
MySQL
Добавления в секцию [mysqld]. Настройки расчитаны на относительно небольшое потребление памяти
default_time_zone='+03:00' # Опция explicit_defaults_for_timestamp доступна только в mysql>=5.6 explicit_defaults_for_timestamp = 1 key_buffer_size = 16M max_allowed_packet = 16M tmp_table_size = 8M thread_stack = 192K thread_cache_size = 8 join_buffer_size = 128K read_rnd_buffer_size = 256K read_buffer_size = 128K max_connections = 100
Настройки для InnoDB, для машины с 2-4Гб памяти.
default_storage_engine = innodb innodb_buffer_pool_size=1G innodb_log_file_size=384M innodb_log_buffer_size=12M innodb_flush_log_at_trx_commit=2 innodb_file_per_table innodb_flush_method=O_DIRECT
Другое
Оптимизированные настройки sysctl
- /etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 1 net.ipv4.tcp_tw_recycle = 1 net.core.rmem_max = 16777216 net.core.rmem_default = 16777216 net.core.netdev_max_backlog = 262144 net.core.somaxconn = 32768 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