Magento 2 Instalação:css/js/imagens não carregarem
-
12-12-2019 - |
Pergunta
Estou tentando instalar o Magento2(0.1.0-alpha107 ) no meu localhost alimentado por OSX 10.10 + bebida instalado o php-fpm + mysql + nginx.
Os passos que eu segui para a instalação:
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
Até agora tudo funcionou muito bem.Mas quando você carregar o frontend: http://magento2alpha.dev/
é mostrar apenas texto simples (por exemplo,css/imagens/js estão faltando).
Ver fonte dá-lhe o caminho, como http://magento2alpha.dev/pub/static/frontend/Magento/blank/en_US/[css/imagens]/[css/imagens arquivo], que levou para a página 404
Meu nginx conf arquivo se parece com:
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";
}
}
Eu acho que o problema está nos arquivos estáticos de reconfiguração.Mas isso é o que eu seguido do github que não está funcionando.Existe alguma solução?
Solução 2
Finalmente, tenho que modificar o meu nginx conf arquivo para torná-lo a trabalhar como:
(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";
}
}
Uma coisa que eu notei é:Se você criar virtual host específico de configuração do nginx conf.d
é de recursos mais caros e mais lentos do que manter em sites-enabled
dir.
[Editar]
Desculpe os meus maus, xdebug estava causando a lentidão não o nginx conf.
Outras dicas
Qualquer arquivo solicitado dentro /pub/static
que não existe actualmente precisa são roteadas através do Magento.Atualmente, isso é feito por meio de /pub/static.php
.
Você pode ver esta reescrita em /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]
Olhando para o seu nginx de configuração você tem este comentada:
# Rewrite magento2 static files
#location /pub/static {
# rewrite ^/pub/static/(.*)$ /magento/magento2alpha/pub/static.php?resource=$1? last;
#}
Presumivelmente, tornando as linhas executáveis iria resolver o problema, eu não estou muito familiarizado com nginx configuração, mas algo como isto pode também trabalho:
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /../static.php?resource=$0 last;
}
}
Tomada a partir de: https://magento.stackexchange.com/a/64808/3326
Quando não está em modo de produção Magento 2 irá tentar criar links simbólicos para alguns recursos estáticos.Você pode alterar esse comportamento, fazendo o seguinte.
Abrir app/etc/di.xml
e encontrar o virtualType name="developerMaterialization"
a seção.Nessa seção, você encontrará um item name="view_preprocessed"
o que precisa ser modificado ou excluído.Você pode modificá-lo alterando o conteúdo de Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink
para Magento\Framework\App\View\Asset\MaterializationStrategy\Copy
Excluir arquivos sob pub/static
para livrar-se de todos os links simbólicos.Você pode querer ter o cuidado de não excluir o .htaccess
arquivo.
Isso deve resolver o seu erro com o link simbólico.
esta é a melhor resposta até agora
Você pode modificá-lo alterando o conteúdo de
Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink
paraMagento\Framework\App\View\Asset\MaterializationStrategy\Copy
Eu tive um problema semelhante depois de executar o Magento 2 instalar e descobriu que a instalação falhou para realmente implantar a arquivos estáticos.Recebi 404 para muitos ficheiros de administração, incluindo inicialização, etc.A fim de corrigir corri um comando a partir da raiz do site para forçar o ficheiro estático de implantação:
php bin/magento setup:static-content:deploy -f
Isto irá regen estático ativos para frontend temas e adminhtml de back-end.