что зачем:
1) я использую FreeBSD за скорость, pf, порты, защищенность и тд. Эту же связку можно установить на любой другой ОС.(я ставил на версии 8.0 STABLE на работающем сервере)
uname -a
FreeBSD mail.***.com 8.0-STABLE FreeBSD 8.0-STABLE #0: Sun Jan 3 09:04:54 YEKT 2010 fr@mail.***.com:/usr/obj/usr/src/sys/FR i386
2) роль самого web сервера будет выполнять nginx версия 0.8.54
3) php будем ставить из портов версия 5.3.5
Установка:
Итак первым делом обновляем дерево портов.
я привык делать это так:
# portsnap fetch update
Потом ставим nginx
# cd /usr/ports/www/nginx
# make install
лезет синее окошко в котором я выбрал следующее :
Options for nginx 0.8.54
[ ] DEBUG Enable nginx debugging
[ ] DEBUGLOG Enable debug log (--with-debug)
[ ] FILE_AIO Enable file aio
[ ] IPV6 Enable IPv6
[X] GOOGLE_PERFTOOLS Enable google perftools module
[X] HTTP_MODULE Enable HTTP module
[X] HTTP_ADDITION_MODULE Enable http_addition module
[X] HTTP_CACHE_MODULE Enable http_cache module
[ ] HTTP_DAV_MODULE Enable http_webdav module
[X] HTTP_FLV_MODULE Enable http_flv module
[ ] HTTP_GEOIP_MODULE Enable http_geoip module
[ ] HTTP_GZIP_STATIC_MODULE Enable http_gzip_static module
[ ] HTTP_IMAGE_FILTER_MODULE Enable http_image_filter module
[X] HTTP_PERL_MODULE Enable http_perl module
[ ] HTTP_RANDOM_INDEX_MODULE Enable http_random_index module
[X] HTTP_REALIP_MODULE Enable http_realip module
[X] HTTP_REWRITE_MODULE Enable http_rewrite module
[ ] HTTP_SECURE_LINK_MODULE Enable http_secure_link module
[X] HTTP_SSL_MODULE Enable http_ssl module
[X] HTTP_STATUS_MODULE Enable http_stub_status module
[X] HTTP_SUB_MODULE Enable http_sub module
[ ] HTTP_XSLT_MODULE Enable http_xslt module
[ ] MAIL_MODULE Enable IMAP4/POP3/SMTP proxy modul
[ ] MAIL_IMAP_MODULE Enable IMAP4 proxy module
[ ] MAIL_POP3_MODULE Enable POP3 proxy module
[ ] MAIL_SMTP_MODULE Enable SMTP proxy module
[ ] MAIL_SSL_MODULE Enable mail_ssl module
[X] WWW Enable html sample files
[ ] CACHE_PURGE_MODULE 3rd party cache_purge module
После сборки nginx ставим php
# cd /usr/ports/lang/php5
# make install
в окошке с опциями я выбрал :
Options for php5 5.3.5
[X] CLI Build CLI version
[X] CGI Build CGI version
[X] FPM Build FPM version (experimental)
[X] APACHE Build Apache module
[ ] AP2FILTER Use Apache 2.x filter interface (experimental)
[ ] DEBUG Enable debug
[X] SUHOSIN Enable Suhosin protection system
[X] MULTIBYTE Enable zend multibyte support
[ ] IPV6 Enable ipv6 support
[ ] MAILHEAD Enable mail header patch
[ ] LINKTHR Link thread lib (for threaded extensions)
Настройка:
как всё установлено переходим к настройке
для начала добавим в rc.conf
nginx_enable=”YES”
php_fpm_enable=”YES”
вот мой конфиг php-fpm.conf (толко незакомментированые строки)
#cat /usr/local/etc/php-fpm.conf | grep -v ^\;
[global]
pid = run/php-fpm.pid
error_log = /var/log/php-fpm.log
daemonize = yes
[www]
listen = /tmp/php-fpm.sock
user = www
group = www
pm = dynamic
pm.max_children = 50
pm.start_servers = 15
pm.min_spare_servers = 5
pm.max_spare_servers = 25
pm.max_requests = 1500
request_slowlog_timeout = 5s
slowlog = /var/log/php-fpm-slow.log
конфиг nginx:
#cat /usr/local/etc/nginx/nginx.conf | grep -v ^\#
user www;
worker_processes 2; # тут рекомендуется выставлять количество воркеров по количеству ядер но тем у кого много памяти я бы рекомендовал поставить 100 , реально уменьшает отклик
#приоритет воркеров я специально поставил повыше чтоб статика отдавалась без задержек из за скриптов
worker_priority -5;
worker_rlimit_nofile = 51200 # увеличиваем количество используемых файлов
error_log logs/error.log;
events {
use kqueue; worker_connections 2048;}
http {
include 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"';
access_log logs/access.log main;
sendfile on;
tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 70 30;
send_timeout 30s;
reset_timedout_connection on;
resolver 127.0.0.1;
resolver_timeout 10s;
#gzip on;
server {
listen you.ip.add.ress:80 default accept_filter=httpready;
server_name www.my-site.ru my-site.ru;
charset utf-8;
#access_log logs/host.access.log main;
location / {
root /usr/local/www/nginx;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}
location ~ \.php$ {
fastcgi_pass unix:/tmp/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/www/nginx$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
location /ngnix_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
запускаем демонов:
#/usr/local/etc/rc.d/php-fpm start
#/usr/local/etc/rc.d/nginx start
to be continued...
Комментариев нет:
Отправить комментарий