Обзор
За свою карьеру я собрал большой багаж опыта работы с веб-сервером 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