1. Главная
  2. /
  3. FreeBSD
  4. /
  5. FreeBSD установка nginx, mysql, php-fpm, memcache, eaccelerator

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

Поделиться ссылкой на статью

2 комментария. Оставить новый

  • username
    23.10.2011 08:54

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

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

    Ответить

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

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

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Категории

Меню