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 с каждым днем все более и более мне нравится!)

Оцените статью
( Пока оценок нет )

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

  1. Andriy

    Рекомендую после # portsnap fetch update сделать # cd /usr/ports/devel/libtool потом # make && make install && make clean
    Это поможет устанавлевать из портов все без каких либо ошибок, несколько недель столкнулса с этим 😉

    Ответить
  2. username

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

    Ответить