Устанавливаем nginx+php-fpm на FreeBSD

Продолжаю знакомство с FreeBSD, ранее мы устанавливали систему на vps от Hetzner. Теперь попробуй развернуть на уже готовой системе веб сервер. Связку будет делать из nginx и php-fpm. Установку mysql и прочих плюшек рассмотрю немного позже.

Обновляем дерево портов

portsnap fetch update

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

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

Ставим галочки напротив следующих опций:

IPV6
HTTP
HTTP_CACHE
HTTP_REWRITE
HTTP_STATUS
WWW

ждем пока система не сообщит нам, что все собрано и установлено

Добавим nginx в автозагрузку строкой 'nginx_enable=«YES»' в файле '/etc/rc.conf'

echo 'nginx_enable="YES"' >> /etc/rc.conf

Должно получиться

После того, как установка будет выполнена, наберите команду rehash для того, чтобы заставить FreeBSD перечитать файлы, находящиеся в маршрутах поиска, чтобы система обнаружила их появление.

rehash

Делаем копию дефаултного конфига

cp /usr/local/etc/nginx/nginx.conf /usr/local/etc/nginx/nginx_conf_default

Если требуется, редактируем конфиг nginx

vi /usr/local/etc/nginx/nginx.conf

Выкладываю свой конфиг, который уже имеет виртуальный сервер sait.ru

#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
    use                 kqueue;
    }
http {
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   /usr/local/www/nginx;
            index  index.html index.htm;
        }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/local/www/nginx-dist;
        }
    }
#######################################
server {
    listen       80;
    server_name  sait.ru;
    location / {
        root   /usr/local/www/sait.ru/;
        index  index.php index.html index.htm;
        access_log /var/log/sait_ru-access.log;
    }
    location ~ \.php$ {
        fastcgi_pass   unix:/tmp/sait.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/local/www/sait.ru$fastcgi_script_name;
        include        fastcgi_params;
    }
}
#######################################
}

Запускаем nginx

/usr/local/etc/rc.d/nginx start

Где найти nginx?

Конфиг: /usr/local/etc/nginx/nginx.conf
Порты http (80) и https (443)
Логи ошибок: /var/log/nginx-error.log
Логи доступа: /var/log/nginx-access.log
Коневая папка: /usr/local/www/nginx

Проверяем работу nginx, открываем браузер и набираем ip адрес вашего сервера

После того как проверили устанавливаем libtool,

cd /usr/ports/devel/libtool
make install clean; rehash


Устанавливаем PHP (php5-5.4.6 — версия в портах на момент установки, так как с версии 5.3.3 в состав php-fpm включён, то отдельно ставить его думаю нет смысла)

cd /usr/ports/lang/php5
make install clean; rehash

Отмечаем следующие опции

CLI
CGI
FPM
IPV6
LINKTHR

Оставляем пустым и наживаем «ОК»

Оставляем как есть и продолжаем

Оставляем как есть и продолжаем

В конце установки должны увидеть

Наcтраиваем php-fpm

vi /usr/local/etc/php-fpm.conf

В конфиге оставил всё как было, единственное добавил в конце параметры для «sait.ru».

[site]
user = www
group = www
listen = /tmp/site.sock
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

Добавим php-fpm в автозагрузку строкой 'php_fpm_enable="YES"' в файле '/etc/rc.conf'

echo 'php_fpm_enable="YES"' >> /etc/rc.conf

Копируем файл настроек PHP

cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Редактируем конфиг PHP

vi /usr/local/etc/php.ini

Необходимо найти строчку cgi.fix_pathinfo=1, снять с неё комментарий и заменить её значение с 1 на 0

Создаем папку для нашего сайта

mkdir /usr/local/www/site.ru/

Создаем тестовую страницу PHPINFO

echo '<?php phpinfo(); ?>' >> /usr/local/www/site.ru/phpinfo.php

Перезапускаем nginx и php-fpm

/usr/local/etc/rc.d/nginx restart
/usr/local/etc/rc.d/php-fpm restart

Проверяем работу PHP. Вводим

http://site.ru/phpinfo.php

Вместо site.ru адрес вашего сайта. Если все правильно, должны увидеть такую картинку

PHP в FreeBSD обладает ограниченной функциональностью, поэтому все дополнения ставим при помощи порта php5-extensions

cd /usr/ports/lang/php5-extensions
make install clean; rehash

 

Возможные ошибки

1. Ошибка при сборке php из портов.

решение:

cd /usr/ports/devel/pcre
make reinstall clean; rehash

после опять пробуем собрать php

cd /usr/ports/lang/php5
make install clean; rehash

2. No input file specified.

решение:

конфиг или разрешения на папку веб

Остались или есть ещё вопросы? Задавайте!
(не забудьте указать ссылку на этот пост)




Один комментарий

  1. Большое спасибо за статью, все очень подробно описано. Сейчас буду настраивать свой vps.

    Thumb up 0 Thumb down 0

Оставить комментарий

Установка, настройка, мониторинг и администрирование linux, unix, windows систем