Magento 2 Instalación:css/js/imágenes que no se cargan
-
12-12-2019 - |
Pregunta
Estoy tratando de instalar Magento2(0.1.0-alpha107 ) en mi localhost alimentado por OSX 10.10 + cerveza instalado php-fpm + mysql + nginx.
Los pasos que he seguido para la instalación:
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
Hasta ahora todo funcionaba de maravilla.Pero cuando se carga la interfaz de usuario: http://magento2alpha.dev/
muestra de sólo texto sin formato (es decir,css/images/js faltan).
Ver código fuente te da la ruta de acceso como http://magento2alpha.dev/pub/static/frontend/Magento/blank/en_US/[css/images]/[css/images archivo] lo que llevó a la página de error 404
Mi nginx conf archivo se parece a:
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";
}
}
Supongo que el problema radica en que los archivos estáticos de reescritura.Pero esto es lo que he seguido desde el github que no está funcionando.¿Hay alguna solución?
Solución 2
Por último, tengo que modificar mi nginx conf archivo para trabajar 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";
}
}
Una cosa que he notado es:Si usted crear host virtuales específicos de configuración de nginx del conf.d
es el recurso más caros y más lento que el de mantener en sites-enabled
dir.
[Editar]
Lo siento mi mal, xdebug fue el causante de la lentitud no la nginx conf.
Otros consejos
Cualquier archivo solicitado dentro de /pub/static
que no existe actualmente necesita enrutarse a través de Magento.Esto se hace actualmente a través de /pub/static.php
.
Puedes ver esta reescritura en /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]
Mirando su configuración de NGINX que tiene esto comentado:
# Rewrite magento2 static files
#location /pub/static {
# rewrite ^/pub/static/(.*)$ /magento/magento2alpha/pub/static.php?resource=$1? last;
#}
Presumiblemente haciendo que esas líneas sean ejecutables resolverían el problema, no estoy muy familiarizado con la configuración de NGINX, pero algo así como este podría también funciona:
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /../static.php?resource=$0 last;
}
}
Tomado de: https://magento.stackexchange.com/a/64808/3326
Cuando no en el modo de producción de Magento 2 intentará crear enlaces simbólicos para algunos recursos estáticos.Usted puede cambiar el comportamiento mediante la siguiente.
Abierto hasta app/etc/di.xml
y encontrar la virtualType name="developerMaterialization"
sección.En esta sección usted encontrará un elemento name="view_preprocessed"
que necesita ser modificado o eliminado.Se puede modificar cambiando el contenido de Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink
a Magento\Framework\App\View\Asset\MaterializationStrategy\Copy
Eliminar los archivos bajo pub/static
para deshacerse de los enlaces simbólicos.Puede que desee tener cuidado de no borrar la .htaccess
archivo.
Esto debería solucionar el error con el enlace simbólico.
Esta es la mejor respuesta hasta ahora
Puede modificarlo cambiando los contenidos de
Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink
aMagento\Framework\App\View\Asset\MaterializationStrategy\Copy
Tuve un problema similar después de ejecutar la instalación Magento 2 y encontré que la instalación no pudo implementar los archivos estáticos.Recibí 404 para muchos archivos de administración, incluido el bootstrap, etc. Para solucionar I corrí un comando desde la raíz del sitio para forzar la implementación del archivo estático:
php bin/magento setup:static-content:deploy -f
Esto regenerará los activos estáticos para los temas frontend y el backend adminhtml.