FreeBSD установка nginx, mysql, php-fpm, memcache, eaccelerator

Недавно пришлось поднимать веб сервер, и не долго думая решил попробовать, как писал ранее поднять все это дело под nginx. В топку предисловие, погнали.
Сначала обновим дерево портов:

# portsnap fetch update

Устанавливаем nginx, можно поставить свежую версию (nginx-devel), а можно последнюю стабильную, что я и сделаю:

# cd /usr/ports/www/nginx 

Зачастую необходимо отметить следующие пункты:

 [X] HTTP_MODULE
[X] HTTP_PERL_MODULE
[X] HTTP_REWRITE_MODULE 

а если нужна поддержка SSL, то и

 [X] HTTP_SSL_MODULE 

устанавливаем его:

# make install clean
# rehash

Добавим его теперь в автозагрузку:

# echo 'nginx_enable="YES"' >> /etc/rc.conf

Файл настроек: /usr/local/etc/nginx/nginx.conf
Корневая папка сервера: /usr/local/www/nginx/
Настроим его позже, сейчас поставим мускул.

# cd /usr/ports/databases/mysql51-server/
# make install clean

Устанавливаем БД:

# /usr/local/bin/mysql_install_db

Выставляем права на папку с БД:

# chown -R mysql /var/db/mysql/

Запускаем мускул:

# /usr/local/etc/rc.d/mysql-server onestart

Устанавливаем пароль на рута:

# /usr/local/bin/mysqladmin -u root password 'пароль'

Ставим его в автозагрузку:

# echo 'mysql_enable="YES"' >> /etc/rc.conf

Устанавливаем php:

# cd /usr/ports/lang/php52
# make install clean

Ставим необходимые нам расширения:

# cd /usr/ports/lang/php52-extensions/
# make install clean

Установка PHP-FPM:

# cd /tmp
# fetch http://ru2.php.net/get/php-5.2.14.tar.gz/from/ru.php.net/mirror
# tar -xzf php-5.2.14.tar.gz
# fetch http://php-fpm.org/downloads/php-5.2.14-fpm-0.5.14.diff.gz
# gzip -cd php-5.2.14-fpm-0.5.14.diff.gz | patch -d php-5.2.14 -p1
# cd php-5.2.14
# ./configure --enable-fastcgi --enable-fpm
# make all install
# cp /tmp/php-5.2.10/sapi/cgi/fpm/php-fpm /usr/local/etc/rc.d/
# chmod +x /usr/local/etc/rc.d/php-fpm

Проверим версию php после установки:

php -v
PHP 5.2.14 (cli) (built: Feb  1 2011 22:53:19)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

Если «built» сегодняшний, то всё ок.
Как всегда, добавляем его в автозагрузку:

# echo 'php_fpm_enable="YES"' >> /etc/rc.conf

Добавляем поддержку php в nginx, для этого открываем файл /usr/local/etc/nginx/nginx.conf, чистим его, и добавлем следующие строки:

user www;
worker_processes 2;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
# log options
log_format main      '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
server_tokens off;
fastcgi_intercept_errors    on;
server {
listen 80;
server_name localhost;
charset utf-8;
location / {
root /usr/local/www/nginx;
index index.php index.html index.htm;
}
location ~* \.(jpg|jpeg|gif|png|ico|css|zip|js|swf)$ {
root /usr/local/www/nginx;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/www/nginx$fastcgi_script_name;
include fastcgi_params;
}
}
}

Далее редактируем конфигурацию php-fpm. По-дефолту он лежит тут '/usr/local/etc/php-fpm.conf'. Находим в файле строки:

<!–- <value name=”user”>nobody</value> -–>
<!–- <value name=”group”>nobody</value> -–>

И меняем их на:

<value name=”user”>www</value>
<value name=”group”>www</value>

Тем самым указав пользователя и группу, под которыми будет крутиться php.
MEMCACHE
Ставим расширение memcache:

# cd /usr/ports/databases/pecl-memcache
# make install clean

После чего заходим в файл '/usr/local/etc/php/extensions.ini', где добавляем строчку:

extension=memcache.so

EACCELERATOR
Устанавливаем:

# cd /usr/ports/www/eaccelerator
# make install clean

Аналогично memcache заходим в файл '/usr/local/etc/php/extensions.ini' и добавляем строчку:

extension=eaccelerator.so

Создаем папку, где eAccelerator будет хранить свой кэш, задаем владельца www и устанавливаем права:

# mkdir /tmp/eaccelerator
# chown www /tmp/eaccelerator
# chmod 0700 /tmp/eaccelerator

Настраиваем eAccelerator:

ee /usr/local/etc/php.ini
[eAccelerator]

 ; Подключаем модуль
 extension="eaccelerator.so"

 ; Размер кеша, в МБ
 eaccelerator.shm_size="16"

 ; Путь до каталога файлов кеша
 eaccelerator.cache_dir="/tmp/eaccelerator"

 ; Переключатель модуля (1 - вкл и 0 - выкл)
 eaccelerator.enable="1"

 ; Переключатель оптимизатора  (1 - вкл и 0 - выкл)
 eaccelerator.optimizer="1"

 ; Добавляет отладочную информацию в лог (1 - вкл и 0 - выкл)
 eaccelerator.debug="0"

 ; Путь до файла лога
 eaccelerator.log_file = "/var/log/eaccelerator_log"

 ; Проверять время модификации файлов кеша для перекомпиляции оных (1 - вкл и 0 - выкл)
 eaccelerator.check_mtime="1"

 ; Фильтр расширений файлов которых надо кешировать. Например, "*.php *.phtml".
 eaccelerator.filter=""

 ; Размер выделяемой памяти, в байтах. Допустимо вводить в формате 10240, 10K, 1M и т.д. При 0 - безлимит
 eaccelerator.shm_max="0"

 ; Время жизни кеша, сек
 eaccelerator.shm_ttl="120"

 ; Период удаления старых данных из памяти, сек (при 0 не удаляет)
 eaccelerator.shm_prune_period="0"

 ; Использовать для кеша только память. При 0 используется диск и память
 eaccelerator.shm_only="0"

 ; Переключатель компресии (1 - вкл и 0 - выкл)
 eaccelerator.compress="1"
 ; Степень сжатия
 eaccelerator.compress_level="9"
 
Запускаем php и nginx:
 
# /usr/local/etc/rc.d/php-fpm start
 # /usr/local/etc/rc.d/nginx start

Проверим что мы из этого всего получили, создадим файлик /usr/local/www/nginx/test.php со следующим содержимым:

<!--?php phpinfo(); ?-->

 
и пробуем открыть в браузере по адресу:
 

http://IP-Servera/test.php

 
Если все прошло успешно то вы увидите описание вашего пхп, модулей и прочего 🙂
 
P.S. nginx с каждым днем все более и более мне нравится!)

Поделись с друзьями:

Опубликовано 01.02.2011 в 21:33 · Автор komivlad · Ссылка
Рубрики: FreeBSD, WebServer · Теги: , , , , , ,

2 комментария

Подписаться на комментарии по RSS

  1. Написал(-а) komivlad
    23.10.2011 в 08:54
    Ответить · Ссылка

    учту, но проблем никогда не возникало

  2. Написал(-а) Andriy
    22.10.2011 в 06:40
    Ответить · Ссылка

    Рекомендую после # portsnap fetch update сделать # cd /usr/ports/devel/libtool потом # make && make install && make clean

    Это поможет устанавлевать из портов все без каких либо ошибок, несколько недель столкнулса с этим 😉

Подписаться на комментарии по RSS

Написать комментарий