Установка и настройка Nginx + PHP-FPM, Mysql-Server, Phpmyadmin для Debian 6

Настройка веб-сервера для интернет-магазина на движке opencart.

Добавляем дополнительные репозитории в /etc/apt/sources.list:

deb http://packages.dotdeb.org squeeze all
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


Ставим ключи:

wget http://www.dotdeb.org/dotdeb.gpg -O- |apt-key add -
gpg --keyserver hkp://keys.gnupg.net --recv-keys ABF5BD827BD9BF62
gpg -a --export 7BD9BF62 | apt-key add -

Обновляем порты:

# apt-get update && apt-get upgrade

Ставим необходимые пакеты:

# apt-get install nginx php5-cli php5-sqlite php5-suhosin php5-common sqlite php5-cgi php5-fpm mysql-server mysql-client php5-mysql php5-gd php5-apc memcached php5-memcached phpmyadmin

Настройки Nginx /etc/nginx/nginx.conf:

user www-data;
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 :

server {
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:

# ln -s /usr/share/phpmyadmin/ /home/user/data/www/site.ru/

Настраиваем php-fpm. Редактируем файл /etc/php5/fpm/php-fpm.conf :

[global]
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 :

[www]
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:

#Сервер с 2Гб оперативной памяти и одним процессором 1500Мгц
[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/


Установка и настройка Nginx + PHP-FPM, Mysql-Server, Phpmyadmin для Debian 6: 3 комментария

  1. Единственное что не работает, чтобы зайти на 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;
      }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *