Антон Рябов bio photo

Антон Рябов

Не люблю бриться и у меня умный взгляд.

Email Twitter Telegram Github PGP RSS

Обзор

За свою карьеру я собрал большой багаж опыта работы с веб-сервером Nginx и некоторые моменты освещал в данном блоге. Для навигации по теме используйте страницу Nginx 101




В поисках CMS интернет-магазина (e-commerce) для нового проекта, нарвался на ImageCMS. Описание довольно привлекательное, однако именно интернет-магазин у них платный, и демо только на их серверах. Но другой их продукт — Corporate, полностью бесплатен, поэтому я решил затестить для начала его.

ImageCMS

Создатели данного продукта обещают:

  • Быстродействие
  • SEO-оптимизация
  • Безопасность
  • Юзабилити
  • Гибкость
  • Надежность

При этом, они рекомендуют использовать Denwer или OpenServer. Возникает резонный вопрос — неужели все вышеперечисленное мы получаем на Apache? Что же тогда будет под Nginx?

Вообще, особо много документации по установке вы не найдете. Не долго думая, я скачал последнюю версию 4.6 на сервер, и прописав обычный конфиг nginx+php-fpm, попробовал открыть главную. При этом, я увидел ошибку 404, а в адресной строке переадресацию на каталог install, которого в принципе нет в архиве с системой.

Стоит упомянуть что столкнувшись с данной ошибкой я полез в google, и по второй ссылке перешел на форум ImageCMS, в котором прочитал интересный тред:

Тема: Установка на NGINX без Апача

Ne@Flax: Подскажите конфиг для NGINX без использования Апача. В частности, секции реврайтов. Сейчас установка ссылается на папку install, которой есстно и нет.

supleader: У вас nginx+php-fpm? Вряд ли движок заведется…

htaccess-конвертер для nginx

На помощь приходит сервис из заголовка, который располагается например здесь. Открываем файл .htaccess в корне каталога с ImageCMS, находим строки:

RewriteCond $1 !^(index.php|user_guide|uploads/.*|favicon.ico|docs|favicon.png|captcha/.*|application/modules/.*/templates|application/modules/.*/assets/js|application/modules/.*/assets/css|application/modules/.*/assets/images|CHANGELOG.xml|templates|js|robots.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

и с помощью вышеуказанного ресурса конвертируем это в удобоперевариваемое Nginx-ом:

# nginx configuration
location / {
  rewrite ^(.*)$ /index.php/$1 break;
}

На самом деле не очень удобоперевариваемое, поэтому переделываем так:

location / {
  if (!-e $request_filename) {
    rewrite ^(.+)$ /index.php?q=$1 last;
  }
}

Конфиг для Nginx

В итоге получаем простой конфиг, следующего вида:

server {
  listen 80;
  server_name mydomain.com;
  access_log /var/log/nginx/access.log;
  root /var/www/imagecms;
  index index.php index.html index.htm;

  location / {
    if (!-e $request_filename) {
      rewrite ^(.+)$ /index.php?q=$1 last;
    }
  }

  location ~ .php$ {
    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /var/www/imagecms$fastcgi_script_name;
    include fastcgi_params;
  }
}

Установка ImageCMS

После

$ service nginx reload

открываем главную страницу и «о чудо», оно работает. Первым шагом установки является принятие лицензионного соглашения. Конечно не читая я нажимаю кнопку принять (или как-то так) и дальше следует проверка системы. Скрипт говорит, что все прекрасно, но вот версия PHP 4.3.3 меня не устраивает, хочу 4.3.4 минимум.

Что же, если хочешь — получай.

Update тестового сервера

Естественно, что играюсь с разными системами я на тестовом сервере, который был скопирован с моего боевого сервера (т.е. да, там до сих пор стоит PHP 4.3.3) и обновляться не страшно.

Добавляем репозиторий Remi:

$ rpm -ihv http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

Не забудьте включить его в /etc/yum.repos.d/remi.repo. Обновляемся:

$ yum update

И, не буду долго разглагольствовать. Что мне пришлось пофиксить:

PHP

/etc/php-fpm.d/www.conf

listen.owner = nginx
listen.group = nginx

раскомментировать эти две строчки и прописать значения - пользователя из-под которого работает

Nginx

Так же сбросились права на папку /var/lib/php/session

$ cd /var/lib/php
$ chown nginx:nginx session

MySQLd

/etc/my.cnf

Новому MySQL не понравилось это: default-character-set=utf8. Просто закомментировал эту строчку

После рестарта php-fpm и mysqld все заработало нормально.

ImageCMS — итог

После обновления я закончил установку и теперь приступлю к тестированию данной CMS.

Минусы:

  • Отсутствие нормальной документации по установке на CentOS+Nginx+php-fpm.

Плюсы:

  • Данная CMS напомнила мне про необходимость обновления core пакетов веб-сервера.
  • Так же, я научился правильно создавать пользователей в mysql, но это к тексту не относится.

Материалы по теме:

#Linux #Nginx #TechAndDev