Установка nginx+phpfpm+eaccelerator+memcache на FreeBSD

Имеем чистую FreeBSD 10.2

Сначала обновим порты

1
 portsnap fetch update

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

1
 cd /usr/ports/www/nginx
1
 make install clean

Добавляем в автозагрузку:

1
 echo 'nginx_enable=«YES»' >> /etc/rc.conf

WWW-директория: /usr/local/www/nginx/
Файл конфигурации: /usr/local/etc/nginx/nginx.conf
Логи ошибок: /var/log/nginx-error.log
Логи доступа: /var/log/nginx-access.log

Ставим PHP-FPM (начиная с php 5.3 тянет за собой php-fpm автоматически)

1
2
cd /usr/ports/lang/php56
make install clean

Ставим расширения

1
2
3
<blockquote>cd /usr/ports/lang/php56-extensions
 
make all install clean

Добавляем PHP-FPM в автозагрузку

1
echo 'php_fpm_enable=«YES»' >> /etc/rc.conf

Интегрируем PHP в NGINX

Я сразу удаляю конфиг по умолчанию, и создаю свой:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
user www;
worker_processes 1;
 
pid /var/run/nginx.pid;
error_log /var/log/nginx-error.log;
 
events {
worker_connections 1024;
use kqueue;
}
 
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"';
 
# nginx options
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
server_tokens off;
 
# fastcgi
fastcgi_intercept_errors on;
 
# virtual server
server {
listen 80;
server_name localhost;
 
access_log /var/log/nginx-access.log;
 
 
# server root directory
location / {
root /usr/local/www/nginx;
index index.php index.html index.htm;
}
 
# php
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’.
Находим в файле строки:

1
2
3
4
5
<blockquote>; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = www
group = www

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

Ставим memcache

1
2
cd /usr/ports/databases/pecl-memcache
make install clean

eacceleretor

1
2
cd /usr/ports/www/eaccelerator
make install clean

Заходим в /usr/local/etc/php/extensions.ini, и добавляем строки подключаемых нами модулей:

1
2
extension=memcache.so
extension=eaccelerator.so

Создаем папку для кэша eAccelerator, задаем права и владельца директории.

1
2
3
mkdir /tmp/eaccelerator
chown www /tmp/eaccelerator
chmod 0700 /tmp/eaccelerator

Стартуем:

1
2
/usr/local/etc/rc.d/php-fpm start
/usr/local/etc/rc.d/nginx start

Проверяем php, создаем php info:

1
nano usr/local/www/nginx/info.php

Код для вставки:

1
2
3
<?php
phpinfo();
?>

Переходим http://имя_сервера/info.php
И видимо страницу с инфой о php, модулях и etc.
Далее ставим MariaDB (кто-то может MySQL)
О преимуществах и недостатках говорить не будем, просто ставим:

1
pkg install databases/mariadb55-server

Автозагрузка

1
echo 'mysql_enable=«YES»' >> /etc/rc.conf // Да-да, именно mysql_enable

Копируем файл конфигураций для средней системы:

1
cp /usr/local/share/mysql/my-medium.cnf /usr/local/etc/my.cnf

Стартуем:

1
service mysql-server start

Установим пароль для root-a

1
mysqladmin -u root password PASSWORD

Логинимся:

1
mysql -u root -p

Создаем БД:

1
CREATE DATABASE blog;

Профит.

p.s. Это все будет работать быстрее если использовать unix-сокет, если эта связка на одном сервере.
В nginx надо сделать так:

1
fastcgi_pass unix:/tmp/php-fpm.sock;

В php-fpm:

1
listen = /tmp/php-fpm.sock

И раскомментировать строки:

1
2
3
listen.owner = www
listen.group = www
listen.mode = 0660

Иначе вывалится 502 Bad Gateway

p.s. для MariaDB рекомендую создать отдельного пользователя, работа под root’ом не безопасна.

0 Comments

Leave a Reply