Установка и настройка Nginx + PHP-FPM, Mysql-Server, Phpmyadmin для Debian 6
Настройка веб-сервера для интернет-магазина на движке opencart.
Добавляем дополнительные репозитории в /etc/apt/sources.list:
deb-src http://packages.dotdeb.org squeeze all
deb http://nginx.org/packages/debian/ squeeze nginx
deb-src http://nginx.org/packages/debian/ squeeze nginx
Ставим ключи:
gpg —keyserver hkp://keys.gnupg.net —recv-keys ABF5BD827BD9BF62
gpg -a —export 7BD9BF62 | apt-key add —
Обновляем порты:
Ставим необходимые пакеты:
Настройки Nginx /etc/nginx/nginx.conf:
worker_processes 1;
timer_resolution 100ms;
worker_priority -5;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
worker_rlimit_nofile 8192;
events {
worker_connections 1024;
}
http {
#ограничения на одновременное подключение
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;
index index.php;
sendfile on;
send_timeout 60;
proxy_read_timeout 200;
proxy_buffers 8 16k;
proxy_buffer_size 16k;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 70;
reset_timedout_connection on;
server_tokens off;
client_body_buffer_size 1K;
client_header_buffer_size 1k;
client_max_body_size 50M;
large_client_header_buffers 2 1k;
client_body_timeout 60;
client_header_timeout 60;
gzip on;
gzip_buffers 64 8k;
gzip_comp_level 3;
gzip_proxied any;
gzip_min_length 1000;
gzip_types text/plain text/css text/xml application/x-javascript application/xml application/xhtml+xml;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main ‘$remote_addr — $remote_user [$time_local] «$request» ‘
‘$status $body_bytes_sent «$http_referer» ‘
‘»$http_user_agent» «$http_x_forwarded_for»‘;
include /etc/nginx/sites-enabled/site.com;
}
Теперь редактируем /etc/nginx/sites-enabled/site.com :
listen 10.0.0.11:80;
server_name www.site.com;
access_log /var/log/nginx/site.access.log;
error_log /var/log/nginx/site.error.log;
charset utf8;
index index.php;
root /home/user/data/www/site.com/;
limit_conn perip 20;
limit_conn perserver 150;
location / {
server_tokens off;
client_max_body_size 10m;
client_body_buffer_size 128k;
try_files $uri @opencart;
}
location @opencart { rewrite ^/(.+)$ /index.php?_route_=$1 last; }
location ~ /\.ht { deny all; }
location ~* (\.(tpl|ini))$ { deny all; }
if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?_route_=$1 last; }
location /admin {
index index.php;
}
location ~* .(js|css|ico|xml|swf|flv|eot|ttf|woff|pdf|xls|htc)$ {
add_header Pragma «public»;
add_header Cache-Control «public, must-revalidate, proxy-revalidate»;
access_log off;
log_not_found off;
expires 90d;
}
location ~* .(jpg|jpeg|gif|css|png)$ {
access_log off;
expires 10d;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/user/data/www/site.com$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 128k;
fastcgi_read_timeout 300;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param DOCUMENT_ROOT /home/user/data/www/site.com;
}
location /phpmyadmin/ {
root /usr/share/;
index index.php;
}
location ~ /\.ht {
deny all;
}
}
Создаем символьную ссылку на PHPmyadmin:
Настраиваем php-fpm. Редактируем файл /etc/php5/fpm/php-fpm.conf :
emergency_restart_threshold = 10
emergency_restart_interval = 1m
process_control_timeout = 10s
events.mechanism = epoll
pid = /var/run/php5-fpm.pid
error_log = /var/log/php5-fpm-error.log
include = /etc/php5/fpm/pool.d/*.conf
Теперь редактируем /etc/php5/fpm/pool.d/www.conf :
user = www-data
group = www-data
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 3
Настраиваем mysql-server. Редактируем /etc/mysql/my.cnf:
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
skip-external-locking
key_buffer_size = 300M
max_allowed_packet = 32M
myisam-recover = BACKUP
myisam_sort_buffer_size = 500M
max_connections = 100
max_sort_length = 1024
max_heap_table_size = 32M
table_open_cache = 256
thread_concurrency = 8
thread_cache_size = 12
tmp_table_size = 64M
query_cache_limit = 1M
query_cache_size = 64M
read_buffer_size = 256K
read_rnd_buffer_size = 512K
thread_stack = 256K
sort_buffer_size = 10M
log_error = /var/log/mysql/error.log
general_log_file = /var/log/mysql/mysql.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
expire_logs_days = 10
max_binlog_size = 100M
[mysqldump]
quick
quote-names
max_allowed_packet = 32M
[mysql]
no-auto-rehash
[isamchk]
key_buffer = 16M
key_buffer_size = 32M
sort_buffer_size = 32M
read_buffer = 512K
write_buffer = 512K
[mysqlhotcopy]
interactive-timeout
!includedir /etc/mysql/conf.d/
Конфиг под Opencart рабочий. Очень помогло! Спасибо!
Единственное что не работает, чтобы зайти на mysite.ru/install нужно набрать mysite.ru/install/index.php . Напишите что нужно добавить/откорректировать в конфиге, чтобы в подкаталоге автоматом переходил на index.php?
Попробуйте добавить в этот конфиг /etc/nginx/sites-enabled/site.com в первый location такую строку
index index.php index.html index.htm;
Должно получиться так:
location / {
index index.php index.html index.htm; # варианты индексных файлов если имя файла в запросе не задано
server_tokens off;
client_max_body_size 10m;
client_body_buffer_size 128k;
try_files $uri @opencart;
}