前言
前面几个教程,我们已经完成了安装虚拟机,在虚拟机安装CentOS7系统,然后在CentOS7系统上安装宝塔,在宝塔完成Lnmp的环境搭建,最后安装了Magento2.3。然而安装完Magento2.3只是万里长征的第一步,因为后面还有各种各样的bug要修复~
1.安装完成后前台后台页面CSS样式和JS样式不生效。
原因是css和js的静态路径缺少index.php,但是Magento安装完,默认是没有index.php的
解决办法:(治标不治本~)
1. 在数据库MYSQL中运行SQL:
insert core_config_data (config_id, scope, scope_id, path, value) values (null, 'default', 0, 'dev/static/sign', 0);
2. 在SSH magento2根目录运行CLI命令
php bin/magento setup:static-content:deploy -f
php bin/magento indexer:reindex
3. 删除magento2跟文件夹下的var目录
rm -rf var/*
2.安装完成后,发现后台404,或者前台链接打开404
原因还是因为Magento安装后路径默认是隐藏index.php的,如果你已经运行过上面的解决办法,那么你在路径中加上index.php即可正常访问后台。如
http://magento23.com/index.php/admin_qjeg89/ 。但是正如我前面所说,这方法是治标不治本,因为当你要使用伪静态的时候,也不想路径上带有index.php的时候。
解决办法:(一劳永逸)
1.在Magento2的根目录下有一个文件,nginx.conf.sample文件,这个是Magento推荐的nginx配置,我们需要把Nginx默认的配置改成Magento推荐的配置。
在宝塔Nginx配置里面可以看到
nginx对网站的配置是在 include /www/server/panel/vhost/nginx/*.conf;,我们跟踪该文件路径找到我们网站的nginx配置
我们可以看到我们网站的配置已经找到了,打开该文件,内容如下:
server
{
listen 80;
server_name magento23.com;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/magento2_3;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#SSL-END
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-72.conf;
#PHP-INFO-END
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include /www/server/panel/vhost/rewrite/magento2_3.com.conf;
#REWRITE-END
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log off;
access_log /dev/null;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log off;
access_log /dev/null;
}
access_log /www/wwwlogs/magento2_3.com.log;
error_log /www/wwwlogs/magento2_3.com.error.log;
}
我们把Magento2根目录的nginx.conf.sample文件的配置代码移到网站的nginx配置文件里,修改后代码如下:
## Example configuration:
upstream fastcgi_backend {
# # use tcp connection
# # server 127.0.0.1:9000;
# # or socket
server unix:/var/run/php/php7.0-fpm.sock;
}
server
{
listen 80;
server_name 你的域名;
index index.php index.html index.htm default.php default.htm default.html;
set $MAGE_ROOT /www/wwwroot/你的根目录;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#SSL-END
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-72.conf;
#PHP-INFO-END
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include /www/wwwroot/你的根目录/nginx.conf.sample;
#REWRITE-END
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log off;
access_log /dev/null;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log off;
access_log /dev/null;
}
access_log /www/wwwlogs/magento2_3.com.log;
error_log /www/wwwlogs/magento2_3.com.error.log;
}
保存完成后,重启Nginx
4.Constraint "quote_to_store" references table that does not exist.
此错误一般都是以quote前缀的表缺失导致的报错
5.Warning:require():open_basedir restrction……………………..
如果是用宝塔安装的,出现此错误,直接取消勾选防跨站攻击,然后重启php服务即可
6.The each() function is deprecated. ..................
这种是因为php7+以上版本抛弃了each函数导致的报错, 在报错的提示文件处,把
while (list ($key, $val) = each ($para_temp)) {
改成,参数按照实际参数来更改~
foreach ($para_temp as $key => $val) {
7.文件权限问题
在Magento2里,
/pub
/var
/generated
/vendor
这几个文件夹的权限必须为777,当你发现报错的提示里,带有这些文件夹的信息时,先去看一下权限有没有被更改了,可能文件外面的权限没改变,但不代表里面的权限没有改变
8.未完待续
有没有视频呀, 这个看起来好难操作