1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - новый и перспективный форумный движок от бывших создателей vBulletin.

[CentOS 6.5] Как поставить nginx+php-fpm+opcache

Тема в разделе "OFF-топик", создана пользователем adder, 8 мар 2014.

Загрузка
  1. adder

    adder Местный

    Регистрация:
    08.10.10
    Сообщения:
    1.163
    Симпатии:
    840
    Версия XF:
    1.3.4
    Приветствую.

    Наверняка у нас есть ещё умельцы кроме @Yoskaldyr и @infis по настройке сервера, которых я уже порядком напрягаю через личные сообщения :)

    Имеется сервер на операционной системе CentOS 6.5 x32. Требуется установить nginx + php 5.5 + php-fpm + opcache + mysql.

    nginx и mysql я ставлю и настраиваю без единой проблемы, а вот установить php 5.5 + php-fpm + opcache я никак не могу. Уже весь интернет перерыл.

    По совету @Yoskaldyr подключил REMI репозиторий.
    Включил его и выдал приоритет 10.
    Через него ставлю mysql. А nginx через репозиторий nginx'а.

    При попытке поставить php 5.5 (использую remi-php55) при помощи команды:
    Код:
    yum --enablerepo=remi-php55,remi install php
    я получаю следующее:
    Код:
    ================================================================================
    Package             Arch         Version                      Repository  Size
    ================================================================================
    Installing:
    php                 i686         5.4.26-1.el6.remi            remi       2.7 M
    Installing for dependencies:
    apr                 i686         1.3.9-5.el6_2                base       129 k
    apr-util            i686         1.3.9-3.el6_0.1              base        89 k
    apr-util-ldap       i686         1.3.9-3.el6_0.1              base        15 k
    httpd               i686         2.2.15-29.el6.centos         base       828 k
    httpd-tools         i686         2.2.15-29.el6.centos         base        73 k
    mailcap             noarch       2.1.31-2.el6                 base        27 k
    php-cli             i686         5.4.26-1.el6.remi            remi       2.7 M
    php-common          i686         5.4.26-1.el6.remi            remi       935 k
    Т.е. установится не php 5.5, а php 5.4, который мне нафиг не сдался.
    Если же я соглашаюсь и ставлю 5.4, а потом при помощи команды:
    Код:
    yum --enablerepo=remi,remi-php55 update php*
    стараюсь обновить существующий php 5.4 до версии 5.5, то я получаю, что обновлений нету.

    Где я конкретно туплю? Может кто поможет или даже покажет как всё-таки поставить php 5.5.
    Готов материально отблагодарить.

    Спасибо за любые ответы :)
     
  2. adder

    adder Местный

    Регистрация:
    08.10.10
    Сообщения:
    1.163
    Симпатии:
    840
    Версия XF:
    1.3.4
    Отбой. Проблему в своих действиях нашёл.
    Не надо было указывать приоритет remi репозиторию.

    Тему переношу в корзину, но не закрываю.
     
    Последнее редактирование: 9 мар 2014
    Mirovinger нравится это.
  3. adder

    adder Местный

    Регистрация:
    08.10.10
    Сообщения:
    1.163
    Симпатии:
    840
    Версия XF:
    1.3.4
    Я тут посидел и подумал: "А почему бы мне не собрать короткий мануальчик по подъёму VPS на Nginx + PHP 5.5 (php-fpm, opcache) + MySQL?". Собственно вот и он.

    Данный мануал рассчитан больше на новичков, чем на опытных пользователей. Хотя любой критике и найденным недочётам я буду уделять внимание ;)
    А также я сразу включил в конфиг правила для работы ЧПУ (XenForo).

    Я использовал хостинг от digitalocean.com (тариф за 5 долларов), но эта инструкция подойдёт и для любого другого VDS/VPS хостинга, я считаю.
    ОС - CentOS 6.5 x32.

    Для начала подключимся по SSH к Вашему VPS.
    Далее нам нужно подключить Remi (требует EPEL репозиторий) и Nginx репозитории.
    EPEL
    Код:
    rpm -ihv http://mirror.yandex.ru/epel/6/i386/epel-release-6-8.noarch.rpm
    Nginx
    Код:
    rpm -ihv http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
    Remi
    Код:
    rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
    rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
    Установка MySQL
    Код:
    yum install mysql mysql-server
    mysql1.jpg
    Добавляем MySQL в автозагрузку и запускаем:
    Код:
    chkconfig --levels 235 mysqld on
    service mysqld start
    mysql2.jpg
    Настраиваем MySQL:
    Код:
    /usr/bin/mysql_secure_installation
    Система попросит нас ввести текущий пароль пользователя root. Нажимаем «Enter», т.к. пароля ещё нету.
    mysql3.jpg
    Вводим новый пароль и отключаем анонимного пользователя (нажимаем «Y» и «Enter»)
    mysql4.jpg
    Отключаем удаленное подключение для пользователя root (нажимаем «Y» и «Enter»)
    mysql5.jpg
    Удаляем тестовую базу данных (нажимаем «Y» и «Enter»)
    Сбрасываем все привилегии для баз (нажимаем «Y» и «Enter»)
    mysql6.jpg

    Установка Nginx
    Код:
    yum install nginx
    Добавляем в автозагрузку и запускаем:
    Код:
    chkconfig --levels 235 nginx on
    service nginx start
    nginx1.jpg
    Для проверки веб-сервера и дальнейшей настройки временно отключим firewall, настроим его в самом конце статьи.
    Код:
    service iptables stop
    iptables1.jpg
    Вводим адрес (http://ip_сервера) в web-браузер и видим страницу Nginx с приветствием.

    Установка PHP 5.5 + PHP-FPM (PHP — FastCGI Process Manager) + Zend Opcache
    Код:
    yum --enablerepo=remi,remi-php55 install php
    Далее доустанавливаем нужные нам пакеты:
    Код:
    yum --enablerepo=remi,remi-php55 install php-opcache php-xml php-pecl-jsonc php-mbstring php-cli php-fpm php-mysqli php-gd gd gd-devel
    переходим в конфигурационный файл PHP:
    Код:
    vi /etc/php.ini
    находим строку «cgi.fix_pathinfo = 1», снимаем с нее комментарий и меняем на «cgi.fix_pathinfo = 0»
    было:
    стало:
    Подробнее о cgi.fix_pathinfo можно почитать тут: http://www.php.net/manual/ru/ini.core.php#ini.cgi.fix-pathinfo

    Настройка PHP-FPM
    До этого момента в настройках сервера мы использовали соединение TCP для нашего PHP-FPM пула (127.0.0.1:9000, 127.0.0.1:9001 и так далее). Теперь попробуем избежать расходы на TCP соединение и настроим на использование сокета Unix.
    Редактируем:
    Код:
    vi /etc/php-fpm.d/www.conf
    В самом начале ищем:
    и меняем на:
    phpfpmsock.jpg

    Далее ищем:
    и меняем на:
    Добавляем в автозагрузку и запускаем:
    Код:
    chkconfig --levels 235 php-fpm on
    /etc/init.d/php-fpm start
    Настройка Nginx
    Редактируем конфиг Nginx:
    Код:
    vi /etc/nginx/nginx.conf
    Ищем в нём строку:
    Код:
    include /etc/nginx/conf.d/*.conf;
    и меняем на:
    Код:
    server {
            listen       80;
            server_name  _;
    
            location / {
                root   /usr/share/nginx/html;
                try_files $uri $uri/ /index.php?$uri&$args;
                index  index.php;
            }
    
        location ^~ /library/ {
            internal;
        }
        location ^~ /internal_data/ {
            internal;
        }
    
            location ~ \.php$ {
                root           /usr/share/nginx/html;
                fastcgi_pass   unix:/tmp/php-fpm.sock;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }
            }
    В итоге должно получиться так:
    Код:
    user  nginx;
    worker_processes  1;
    
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       /etc/nginx/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  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
    
    server {
            listen       80;
            server_name  _;
    
            location / {
                root   /usr/share/nginx/html;
                try_files $uri $uri/ /index.php?$uri&$args;
                index  index.php;
            }
    
        location ^~ /library/ {
            internal;
        }
        location ^~ /internal_data/ {
            internal;
        }
    
            location ~ \.php$ {
                root           /usr/share/nginx/html;
                fastcgi_pass   unix:/tmp/php-fpm.sock;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }
            }
    }
    Сохраняем и перезагружаем Nginx:
    Код:
    service nginx restart
    Проверим работу php:
    Код:
    echo '<?php echo phpinfo(); ?>' > /usr/share/nginx/html/phpinfo.php
    Вводим адрес (http://ip_сервера/phpinfo.php) в web-браузер. Если увидите такое окно то все хорошо, Вы правильно настроили.
    phpinfo.PNG

    Настройка Iptables для Nginx
    Код:
    iptables -I INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
    iptables-save > /etc/sysconfig/iptables
    Всё, установка и настройка закончена.

    ps: не обязательно, но я в самом конце делаю reboot сервера.

    Более половины материала взял тут.
    Оставшуюся часть собирал по всему интернету. :)
    А также благодарю @Yoskaldyr за всяческую помощь и советы.
     
    Romchik®, Edward, Alex777 и 8 другим нравится это.
  4. adder

    adder Местный

    Регистрация:
    08.10.10
    Сообщения:
    1.163
    Симпатии:
    840
    Версия XF:
    1.3.4
    FAQ - Часто задаваемые вопросы
    В: При импортировании языка, стиля или аддона выскакивает ошибка: "413 Request Entity Too Large"
    О: По умолчанию Nginx дает загружать файлы размером не более 1мб, чтобы сделать возможной загрузку файлов большего размера, меняем параметр client_max_body_size.
    Открываем конфиг nginx:
    Код:
    vi /etc/nginx/nginx.conf
    в секцию http, добавляем или изменяем:
    Сохраняем и перезагружаем nginx.

    В: Не загружаются вложения, аватары и т.п.
    О: Прописываем в консоли по очереди (если форум установлен в корень):
    Код:
    chmod -R 0777 /usr/share/nginx/html/internal_data
    chmod -R 0777 /usr/share/nginx/html/data
    если в папку forum:
    Код:
    chmod -R 0777 /usr/share/nginx/html/forum/internal_data
    chmod -R 0777 /usr/share/nginx/html/forum/data
     
    Edward, patrig, Reborns и 4 другим нравится это.
  5. nikod

    nikod Новичок

    Регистрация:
    28.07.14
    Сообщения:
    2
    Симпатии:
    0
    Версия XF:
    1.3.2
    прошу помощи плиз.. ошибки:
    [root@~]# service nginx restart
    Stopping nginx: [FAILED]
    Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    nginx: [emerg] still could not bind()
    [FAILED]
    [root@~]#
    как победить?
     
  6. adder

    adder Местный

    Регистрация:
    08.10.10
    Сообщения:
    1.163
    Симпатии:
    840
    Версия XF:
    1.3.4
    nikod нравится это.
  7. nikod

    nikod Новичок

    Регистрация:
    28.07.14
    Сообщения:
    2
    Симпатии:
    0
    Версия XF:
    1.3.2
    Последнее редактирование: 15 авг 2014
  8. Edward

    Edward Местный

    Регистрация:
    19.11.12
    Сообщения:
    205
    Симпатии:
    42
    Версия XF:
    1.1.3
    Хороший мануал написал.
    Хорошо еще добавлять к "nginx + php 5.5 + php-fpm + opcache + mysql" и memcached, тогда получается лучший набор для xenforo. ;)
     
    Последнее редактирование: 8 апр 2015

Поделиться этой страницей