Недавно пришлось поднимать веб сервер, и не долго думая решил попробовать, как писал ранее поднять все это дело под 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 комментария. Оставить новый
учту, но проблем никогда не возникало
Рекомендую после # portsnap fetch update сделать # cd /usr/ports/devel/libtool потом # make && make install && make clean
Это поможет устанавлевать из портов все без каких либо ошибок, несколько недель столкнулса с этим 😉