Устанавливаем 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.

решение:

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

Share

You may also like...

1 Response

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

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

Ваш адрес email не будет опубликован.