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 · Теги: eaccelerator, FreeBSD, memcache, mysql, nginx, php-fpm, web2 комментария
Подписаться на комментарии по RSS
Подписаться на комментарии по RSS
Написать комментарий
23.10.2011 в 08:54
· Ссылка
учту, но проблем никогда не возникало
22.10.2011 в 06:40
· Ссылка
Рекомендую после # portsnap fetch update сделать # cd /usr/ports/devel/libtool потом # make && make install && make clean
Это поможет устанавлевать из портов все без каких либо ошибок, несколько недель столкнулса с этим 😉