Установка Magento 2:css/js/изображения не загружаются
-
12-12-2019 - |
Вопрос
Я пытаюсь установить Magento2(0.1.0-alpha107) на свой локальный хост с OSX 10.10 + установленный php-fpm + mysql + nginx.
Шаги, которые я выполнил при установке:
mkdir /path/to/magento2 && cd /path/to/magento2
git clone git@github.com:magento/magento2.git .
composer install
cd setup
composer install
php -f index.php install --base_url=http://magento2alpha.dev/ --backend_frontname=admin --db_host=localhost --db_name=magento2alpha --db_user=root --db_pass=root --admin_firstname=Raj --admin_lastname=KB --admin_email=magepsycho@gmail.com --admin_username=admin --admin_password=pass123 --language=en_US --currency=USD --timezone=America/Chicago
До сих пор все работало отлично.Но когда вы загружаете интерфейс: http://magento2alpha.dev/он показывает только обычный текст (т.css/images/js отсутствуют).
Просмотр источника дает вам путь вроде http://magento2alpha.dev/pub/static/frontend/Magento/blank/en_US/[css/images]/[css/images файл], что привело к странице 404.
Мой файл конфигурации nginx выглядит так:
server {
listen 80;
server_name magento2alpha.dev;
root /Users/Raj/Sites/magento/magento2alpha;
location /setup {
try_files $uri $uri/ @setuphandler;
}
# Rewrite Setup's Internal Requests
location @setuphandler {
rewrite /setup /magento/magento2alpha/setup/index.php;
}
location / {
index index.php index.html;
try_files $uri $uri/ @handler;
}
# Rewrite Internal Requests
location @handler {
rewrite / /magento/magento2alpha/index.php;
}
# Rewrite magento2 static files
#location /pub/static {
# rewrite ^/pub/static/(.*)$ /magento/magento2alpha/pub/static.php?resource=$1? last;
#}
location /pub/static {
try_files $uri $uri/ @static;
}
location @static {
rewrite ^/pub/static/(.*)$ /magento/magento2alpha/pub/static.php?resource=$1? last;
}
#location ~ .php/ {
# rewrite ^(.*.php)/ $1 last;
#}
location ~ \.php$ { ## Execute PHP scripts
try_files $uri =404;
expires off;
fastcgi_pass 127.0.0.1:9000;
fastcgi_read_timeout 900s;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
## Magento 2 Developer mode
fastcgi_param MAGE_MODE "developer";
}
}
Я предполагаю, что проблема заключается в перезаписи статических файлов.Но это то, что я следовал из github, и это не работает.Есть ли обходной путь?
Решение 2
Наконец, я должен изменить мой файл nginx conf, чтобы сделать его работать как:
(Ref: https://github.com/magento/magento2/issues/802 )
server {
listen 80;
server_name magento2alpha.dev;
root /Users/Raj/Sites/magento/magento2alpha;
location /setup {
try_files $uri $uri/ @setuphandler;
}
# Rewrite Setup's Internal Requests
location @setuphandler {
rewrite /setup /setup/index.php;
}
location / {
index index.php index.html;
try_files $uri $uri/ @handler;
}
# Rewrite Internal Requests
location @handler {
rewrite / /index.php;
}
location /pub/static {
try_files $uri $uri/ @static;
}
location @static {
rewrite ^/pub/static/(.*)$ /pub/static.php?resource=$1? last;
}
location ~ \.php$ { ## Execute PHP scripts
try_files $uri =404;
expires off;
fastcgi_pass 127.0.0.1:9000;
fastcgi_read_timeout 900s;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
## Magento 2 Developer mode
fastcgi_param MAGE_MODE "developer";
fastcgi_param PHP_FLAG "session.auto_start=off \n suhosin.session.cryptua=off";
fastcgi_param PHP_VALUE "memory_limit=256M \n max_execution_time=18000";
}
}
.
Одно, что я заметил, это: если вы создаете определенную конфигурацию виртуального хоста в GenaCodicCode в GenaCodicCode большего количества ресурсов, более подробно и медленнее, чем хранение в conf.d
DIR.
[править]
Извините, мой плохой, xdebug вызывал медлительность, а не nginx conf.
Другие советы
Любой файл, запрошенный в /pub/static
которого в настоящее время не существует, необходимо маршрутизировать через Magento.В настоящее время это делается через /pub/static.php
.
Вы можете увидеть эту перезапись в /pub/static/.htaccess
RewriteEngine On
# Remove signature of the static files that is used to overcome the browser cache
RewriteRule ^version.+?/(.+)$ $1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* ../static.php?resource=$0 [L]
Глядя на вашу конфигурацию nginx, вы закомментировали это:
# Rewrite magento2 static files
#location /pub/static {
# rewrite ^/pub/static/(.*)$ /magento/magento2alpha/pub/static.php?resource=$1? last;
#}
Предположительно, создание исполняемых строк могло бы решить проблему, я не очень знаком с конфигурацией nginx, но что-то вроде этого мощь также работают:
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /../static.php?resource=$0 last;
}
}
Взято из: https://magento.stackexchange.com/a/64808/3326
Когда Magento 2 не находится в производственном режиме, он попытается создать символические ссылки для некоторых статических ресурсов.Вы можете изменить это поведение, выполнив следующие действия.
Открыть app/etc/di.xml
и найдите virtualType name="developerMaterialization"
раздел.В этом разделе вы найдете товар name="view_preprocessed"
который необходимо изменить или удалить.Вы можете изменить его, изменив содержимое с Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink
к Magento\Framework\App\View\Asset\MaterializationStrategy\Copy
Удалите файлы под pub/static
чтобы избавиться от любых существующих символических ссылок.Вы можете быть осторожны, чтобы не удалить .htaccess
файл.
Это должно решить вашу ошибку с символической ссылкой.
Это лучший ответ до сих пор
Вы можете изменить его, изменив содержимое от Генеракодицетагкод к
Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink
У меня была похожая проблема после запуска Magento 2 Установить и обнаружила, что установка не удалось развернуть статические файлы.Я получил 404 для многих файлов администратора, включая Bootstrap и т. Д. Для того, чтобы исправить, я запустил команду из root сайта, чтобы заставить развертывание статического файла:
php bin/magento setup:static-content:deploy -f
.
Это режет статические активы для преступных тем и Backend AdminHTML.