Да, я по инструкции и делал. Апач точно снес. Нет его, все в настройках поменял в панели isp. Картинка как у вас - нет больше апача.
Хостинг ihor сказали, что в общем-то не нужно заморачиваться со связкой nginx+php-fpm, а работать nginx+apache
Либо настраивать каким-то магическим способом не понятно где (конфигурационный файл nginx, который приведен в инструкции?) правила ЧПУ. Они могут типо это и сами сделать, но за 1000 руб.
[quote name='densvi' timestamp='1430656959' post='213250']
Хостинг ihor сказали, что в общем-то не нужно заморачиваться со связкой nginx+php-fpm, а работать nginx+apache
Либо настраивать каким-то магическим способом не понятно где (конфигурационный файл nginx, который приведен в инструкции?) правила ЧПУ. Они могут типо это и сами сделать, но за 1000 руб.
[/quote]
А причем тут nginx+apache если речь о php.
Мой совет, снесите систему, то есть просто заново поставьте операционку и сделайте все сразу, а потом попробуйте поставить.
Вы php.ini, nginx.conf настраивали?
Та же история. Там же на ihor. Лучше покопаться и найти решение, чем на апач ставить и на тормозах ехать.
Без модуля seo, нормально работает (на nginx). А вот когда включаешь - нет.
[quote name='Jambolo_J' timestamp='1438245281' post='224882']
Без модуля seo, нормально работает (на nginx). А вот когда включаешь - нет.
[/quote]
Привожу пример конфигурационного файла для NGINX.
[CODE]server {
listen 80;
server_name _;
root /var/www/empty;
location = /nginx-status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
location / {
return 301 $scheme://example.com$request_uri;
}
}
################################################################################
CS-Cart (example.com)
################################################################################
upstream backend {
server unix:/tmp/fpm.sock max_fails=0;
}
server {
listen 80;
server_name example.com www.example.com;
charset utf-8;
set $root “/var/www/html”;
access_log /var/log/nginx/example.com.access.log combined;
error_log /var/log/nginx/example.com.error.log;
gzip on;
gzip_disable “msie6”;
gzip_comp_level 6;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_proxied any;
gzip_types text/plain application/xml
application/javascript
text/css
text/js
text/xml
application/x-javascript
text/javascript
application/json
application/xml+rss
application/x-font-ttf
application/x-font-otf
application/x-font-woff
application/font-woff
image/x-icon ico
font/opentype;
client_max_body_size 100m;
client_body_buffer_size 128k;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
client_header_buffer_size 1k;
large_client_header_buffers 4 16k;
error_page 598 = @backend;
location @statics {
rewrite ^/(\w+)/(.)$ /$2 break;
access_log off;
rewrite_log off;
expires 14d;
add_header Cache-Control public;
add_header Access-Control-Allow-Origin ;
root $root;
}
location @backend {
root $root;
proxy_read_timeout 61;
fastcgi_read_timeout 61;
try_files $uri $uri/ =404;
fastcgi_pass backend;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ .(jpeg|ico|jpg|gif|png|css|js|pdf|txt|tar|wof|woff|csv|zip) {
access_log off;
try_files $uri @statics;
expires 14d;
add_header Access-Control-Allow-Origin ;
add_header Cache-Control public;
root $root;
}
location / {
if (-f $root/maintenance) {
return 503;
}
root $root;
index index.php index.html index.htm;
rewrite ^/api/(.)$ /api.php?_d=$1&ajax_custom=1&$args last;
try_files $uri $uri/ @fallback;
}
location @fallback {
rewrite ^(.)$ /index.php?$args last;
}
location ~ /(index|admin|api).php {
return 598;
}
location = /install/index.php {
return 598;
}
location = /var/upgrade/upgrade_4.2.4_ultimate-4.3.1_ultimate.tgz/restore.php {
return 598;
}
location ^~ /app/ {
return 404;
location = /app/addons/rus_exim_1c/exim_1c.php {
return 598;
}
}
location ^~ /app/payments/ {
return 404;
location ~ .php$ {
return 598;
}
}
location ^~ /var/database/ {
return 404;
}
location ~* .([pP][hH][pP]|[tT][pP][lL].?)$ {
return 404;
}
location ~ /.(ht|git) {
return 404;
}
}
server {
listen 443 spdy;
server_name example.com www.example.com;
charset utf-8;
set $root “/var/www/html”;
access_log /var/log/nginx/example.com.access.log combined;
error_log /var/log/nginx/example.com.error.log;
ssl on;
ssl_certificate /etc/pki/tls/certs/example.com.pem;
ssl_certificate_key /etc/pki/tls/private/example.com.key;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:16m;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.4.4 8.8.8.8 valid=300s;
resolver_timeout 15s;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5:!kEDH;
ssl_prefer_server_ciphers on;
gzip on;
gzip_disable “msie6”;
gzip_comp_level 6;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_proxied any;
gzip_types text/plain application/xml
application/javascript
text/css
text/js
text/xml
application/x-javascript
text/javascript
application/json
application/xml+rss
application/x-font-ttf
application/x-font-otf
application/x-font-woff
application/font-woff
image/x-icon ico
font/opentype;
client_max_body_size 100m;
client_body_buffer_size 128k;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
client_header_buffer_size 1k;
large_client_header_buffers 4 16k;
error_page 598 = @backend;
location @statics {
rewrite ^/(\w+)/(.)$ /$2 break;
access_log off;
rewrite_log off;
expires 14d;
add_header Cache-Control public;
add_header Access-Control-Allow-Origin ;
root $root;
}
location @backend {
root $root;
proxy_read_timeout 61;
fastcgi_read_timeout 61;
try_files $uri $uri/ =404;
fastcgi_pass backend;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS on;
fastcgi_param X_FORWARDED_SERVER secure;
include fastcgi_params;
}
location ~ .(jpeg|ico|jpg|gif|png|css|js|pdf|txt|tar|wof|woff|csv|zip) {
access_log off;
try_files $uri @statics;
expires 14d;
add_header Access-Control-Allow-Origin ;
add_header Cache-Control public;
root $root;
}
location / {
if (-f $root/maintenance) {
return 503;
}
root $root;
index index.php index.html index.htm;
rewrite ^/api/(.)$ /api.php?_d=$1&ajax_custom=1&$args last;
try_files $uri $uri/ @fallback;
}
location @fallback {
rewrite ^(.)$ /index.php?$args last;
}
location ~ /(index|admin|api).php {
return 598;
}
location = /install/index.php {
return 598;
}
location = /var/upgrade/upgrade_4.2.4_ultimate-4.3.1_ultimate.tgz/restore.php {
return 598;
}
location ^~ /app/ {
return 404;
location = /app/addons/rus_exim_1c/exim_1c.php {
return 598;
}
}
location ^~ /app/payments/ {
return 404;
location ~ .php$ {
return 598;
}
}
location ^~ /var/database/ {
return 404;
}
location ~* .([pP][hH][pP]|[tT][pP][lL].?)$ {
return 404;
}
location ~ /.(ht|git) {
return 404;
}
}[/CODE]
Привет. Столкнулся с таким же предупреждением при инсталляции cs-cart.
Модуль URL rewrite неактивен. Витрины в подкаталогах будут недоступны.
Ставлю на vestacp. Права на файлы все выставлены как в документации.
Подскажите как это побороть?
Привет. Столкнулся с таким же предупреждением при инсталляции cs-cart.
Модуль URL rewrite неактивен. Витрины в подкаталогах будут недоступны.
Ставлю на vestacp. Права на файлы все выставлены как в документации.
Подскажите как это побороть?
Вопрос решился.
Предупреждение похоже появлялось из-за отсутствия записи на сервере DNS.
С записями всё нормально. VPS на LEMP стеке. На Айхоре. При установке также ругается. SEO модуль включить не даёт.
При этом есть абсолютная копия установки на другом VPS на Simplecloud.ru - там всё работает.
Nginx конфиги одинаковые, взятые из рекомендаций cs-cart. Добавлен только https.
Куда копать. Где-то в конфигах php-fpm вероятно....
И ещё обнаружил - подобная фигня на ihor-е получается только если включен https (и в настройках cs-cart и в конфиге nginx)
И на последок. Если отключить полностью https, затем включить SEO-модуль (он включится), затем включить https - то SEO работает (до первого отключения.)
Вопрос решился.
Предупреждение похоже появлялось из-за отсутствия записи на сервере DNS.
Что зашифровано в этой рекомендации никто не знает, однако, совершенно ясно, что на DNS отсутствует какая-то запись :grin: .
Я решил поступить радикально и перенести A-запись своего домена на другой NameServer. И кто бы мог подумать - через несколько часов всё заработало :mrgreen: .
Единственное логическое объяснение этим танцам может крыться в том, что изначально DNS записи моего домена были назначены через некую ж*пу. Ниже я опишу в чём заключалась эта ж*па - быть может посвящённые администраторы найдут какую-то логику и объяснят нам:
Итак, магазин был приписан к субдомену new.shop.ru. При этом родительский домен shop.ru делегирован на NS Инфобокса. А вот субдомен new.shop.ru путём хитрых манипуляций (DNS txt подтверждениями собственности) был делегирован целиком на pdd.yandex.ru (DNS Яндекса). И вот уже от туда корневой A-записью направлен на ip VPS Айхора.
Я убрал эту конструкцию.
В DNS Инфобокса (где делегирован родительский домен) добавил субдомен new с соответствующими A-записями и ip.
Заработало.
Повторюсь, я не уверен, что именно это помогло. Но больше вроде было нечему.
Теперь немного пользы. В процессе ковыряний, я отработал некоторые методы, которые могут быть полезны пользователям. Вот они. (на сервере LEMP - чистый NGINX, без апач)
1. Когда вы играетесь со включением/отключением http/https в админке и в конфигах nginx очень мешаются кэши. Как на стороне CS-Cart, так и на стороне браузера. Возникают всякие циклические переадресации.
Кэш CS-Cart удаляем понятно как: стираем папки /var/cache/* - не забываем об этом.
А вот простое открытие режима "инкогнито" и стирание куков в Хроме не помогает - он настойчиво помнит https.
Чтобы починить это в адресной строке Хрома пишем chrome://net-internals/#hsts, переходим на эту страничку, вбиваем свой домен в поле "Delete domain" и жмём "Delete". Перезапускаем хром и открываем инкогнито для пущей надёжности.
2. В процессе танцев несколько раз нарывался на то, что CS-Cart упрямо прёт в https, в то время, как в админке галочка "Включить безопасное соединение в панели администратора" не стоит. Соответственно попасть в админку не выходит. Особенно это доставало при переустановке.
Можно управлять этой галочкой в обход панели администратора CS-Cart. Её значение хранится в БД. У меня не установлен на сервере phpMyAdmin, я расскажу как поправить её ручками, через ssh:
В шелл-консоли подключаемся к SQL
mysql -u пользователь_бд -p
пароль
Подключаемся к БД
Вот мой рабочий конфиг NGINX
server {
listen 443 ssl http2;
listen 80;########################################################################
Настройки SSL. На сервере установлен LetsEncrypt
########################################################################
ssl_certificate /etc/letsencrypt/live/YOUR_DOMAIN.RU/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/YOUR_DOMAIN.RU/privkey.pem; # Такой формат включения ssl устарел. Он включен в директиве listen #ssl on; # Если оставить только 1.2 протокол, то старые браузеры не откроют сайт ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_stapling on; ssl_stapling_verify on; add_header Strict-Transport-Security max-age=15768000; # http заголовки http://zabolotskikh.com/tips/content-security-policy/ add_header Content-Security-Policy-Report-Only "default-src https:; script-src https: 'unsafe-eval' 'unsafe-inline'; style-src https: 'unsafe-inline'; img-src https: data:; font-src https: data:; report-uri /csp-report";
########################################################################
# Домен интернет-магазина server_name YOUR_DOMAIN.RU www.YOUR_DOMAIN.RU; # Кодировка по-умолчанию charset utf-8; # Запрещение выдачи версии nginx в HTTP-заголовках server_tokens off; # для валидации Let's Encrypt location ~ /.well-known { allow all; } # Расположение логов access_log /var/log/nginx/YOUR_DOMAIN_access.log combined; error_log /var/log/nginx/YOUR_DOMAIN_error.log; # Основной каталог интернет-магазина root /var/www/YOUR_FOLDER; # Сжатие gzip on; gzip_disable "msie6"; gzip_comp_level 6; gzip_min_length 1100; gzip_buffers 16 8k; gzip_proxied any; gzip_types text/plain application/xml application/javascript text/css text/js text/xml application/x-javascript text/javascript application/json image/svg+xml # Я добавил application/xml+rss; # Прочие настройки client_max_body_size 100m; client_body_buffer_size 128k; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; client_header_buffer_size 1k; large_client_header_buffers 4 16k; # Точка входа в интернет-магазин location / { # Папка с файлами интернет-магазина root /var/www/YOUR_FOLDER; # Главный скрипт index index.php index.html index.htm; # Для работы API rewrite ^/api/(.*)$ /api.php?_d=$1&ajax_custom=1&$args last; # Логика поиска скрипта по порядку: файл, папка, скрипт try_files $uri $uri/ @fallback; }
#####################################################################################
Это перенаправление для водяных знаков. Надо отключить если отключить знаки!!!
#####################################################################################
location ~* ^/images/(product|category|detailed)/.*(png|jpg|jpeg|gif)$ {
if (-f $request_filename) {
rewrite ^(.*)$ /index.php?dispatch=watermark.create;
}
}
#####################################################################################
# Правиле rewrite для модуля SEO location @fallback { rewrite ^(.*)$ /index.php?$args last; } # Настройки статики, первое правило location ~* \.(jpeg|ico|jpg|gif|png|css|js|pdf|txt|tar|gz|wof|csv|zip|xml|yml|woff|ttf) { access_log off; # Для работы sitemap.xml из корня rewrite ^/sitemap\.xml$ /index.php?dispatch=xmlsitemap.view last; # Для работы yandex_market.yml из корня rewrite ^/yandex_market\.yml$ /index.php?dispatch=yandex_market.view last; # Правило поиска статических файлов. Если файл не находится по адресу магазина, то ищем файл по правилу @statics. # Например если магазин расположен в подпапке dbazhenov.ru/shop/ try_files $uri @statics; expires 14d; add_header Access-Control-Allow-Origin *; add_header Cache-Control public; root /var/www/YOUR_FOLDER; } # Правило поиска статических файлов для витрин. Например, если у Вас две витрины в разных подпапках: dbazhenov.ru и dbazhenov.ru/shop/ location @statics { rewrite ^/(\w+)/(.*)$ /$2 break; access_log off; rewrite_log off; expires 14d; add_header Cache-Control public; add_header Access-Control-Allow-Origin *; root /var/www/YOUR_FOLDER; } # Обрабатываем PHP скрипты. Магия location ~ \.php$ { root /var/www/YOUR_FOLDER; proxy_read_timeout 61; fastcgi_read_timeout 61; try_files $uri $uri/ =404; # Путь до сокета демона PHP-FPM fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # REQUEST_URI включили по требованию водяных знаков, но по моему он и така включается в присоединяемом ниже файле fastcgi_params fastcgi_param REQUEST_URI $request_uri; include fastcgi_params; }
Ограничиваем возвожность запуска php в каталогах. Для безопасности.
location /app/ { deny all; # Разрешаем запуск скрипта обмена данными с 1С. location ^~ /app/addons/rus_exim_1c/exim_1c.php { allow all; } } # Разрешаем запуск скриптов способов оплаты location /app/payments/ { allow all; } # Запрещаем PHP в папке /design location /design/ { allow all; location ~* \.([tT][pP][lL]|[pP][hH][pP].?)$ { deny all; } } # Запрещаем PHP в папке /images location /images/ { allow all; location ~* \.([pP][hH][pP].?)$ { deny all; } } # Разрешаем только статику в папке /var location /var/ { deny all; location ~* \.(js|css|png|jpg|gz|xml|yml)$ { allow all; expires 1M; add_header Cache-Control public; add_header Access-Control-Allow-Origin *; } } # Закрываем доступ к бэкапам базы данных интернет-магазина (папка /var/database/) с наружи location /var/database/ { deny all; } # Хранилище резервных копий шаблонов location /var/skins_repository/ { allow all; location ~* \.([tT][pP][lL]|[pP][hH][pP].?)$ { deny all; } } # Обработка API location ~* api/ { rewrite ^/api/(.*)$ /api.php?_d=$1&ajax_custom=1&$args last; } # Запрвещаем .htaccess и .htpasswd location ~ /\.ht { deny all; }
}
Актуально для конфигурации с Apache2.
Мне помог вот этот пункт из инструкции:https://www.cs-cart.ru/docs/4.4.x/install/apache/install_apache.html
Включим AllowOverride для возможности использования .htaccess в директориях
Две команды по очереди:
sudo sed -i 's/AllowOverride None/AllowOverride All/g' /etc/apache2/sites-enabled/000-default.conf
sudo sed -i 's/AllowOverride None/AllowOverride All/g' /etc/apache2/apache2.conf
И по хорошему нужно рестартовать Apache2.
После безуспешных, нелогичных попыток что-то поменять, включить, выключить в конфигах Nginx я отчаялся и решил прибегнуть к волшебному методу от ilya123456
Что зашифровано в этой рекомендации никто не знает, однако, совершенно ясно, что на DNS отсутствует какая-то запись :grin: .
Я решил поступить радикально и перенести A-запись своего домена на другой NameServer. И кто бы мог подумать - через несколько часов всё заработало :mrgreen: .
Единственное логическое объяснение этим танцам может крыться в том, что изначально DNS записи моего домена были назначены через некую ж*пу.
:mrgreen: Устанавливал СС на потестировать. В этот раз настройку производил без прописаных A-записей на DNS. Прописав в локальном hosts адрес к которому обращаться. Встретил в очередной раз это сообщение. [background=#fcf8e3]Модуль URL rewrite неактивен. Витрины в подкаталогах будут недоступны. [/size][/background]
Помня эту историю прописал A-запись для своего домена и подождав сутки пока DNS обновится чтоб наверняка. Ошибки этой больше не встретил.
Пытаюсь поднять запустить cs-cart в окружении контейнеров docker.
Создал образ на базе Ubuntu 18.04.
Права на директории установил.
Сначала попробовал на связке Apache2 + PHP 7.3.
Проблема с “Модуль URL rewrite неактивен. Витрины в подкаталогах будут недоступны.”. Если установить с данным предупреждением и демо-данными, то на витринах формируются ссылки не ЧПУ и при попытке перейти попадаем на 404. При этом, если в браузере вбить ЧПУ ссылку, то карточка товара грузится.
Пытался бороться с данной проблемой модуля СЕО, но не получилось, хотя сам по себе модуль rewrite работал и через .htaccess правила отрабатывались. PHP info показывал, что модуль активен.
Далее попробовал пересобрать контейнер на связке Nginx + PHP-FPM + PHP 7.3.
Проблема осталась по прежнему. Попытался использовать и конфиги, которые выше указаны в данной теме. SSL отключен везде.
В контейнере устанавливаю nginx, php7.3-fpm, php7.3-curl, php7.3-cli, php-memcache, php-memcached, php7.3-mysql, php7.3-imagick, php7.3-mail, php7.3-intl, php7.3-zip, php7.3-xml, php7.3-json, php7.3-mbstring
Чего ещё может не хватать cs-cart, для работы модуля SEO?
Вопрос до сих пор актуален. Готовых рецептов по сборке в Docker не нашёл.