最详细的 Windows 安装 Magneto 2.3.7 指南

最详细的 Windows 安装 Magneto 2.3.7 指南公司给我新安排了一个已运行项目接手 负责维护和小修小改 作为一名资深开发者 我自然没把这个项目放在眼里 项目采用 Magento 开发 我拿到管理密码后 也没有看任何文档 三下五除二直接上服务器拉源码 按照以往的经验部署好测试环境 按理说到这就可以继续开发了

大家好,我是讯享网,很高兴认识大家。

  公司给我新安排了一个已运行项目接手,负责维护和小修小改,作为一名资深开发者,我自然没把这个项目放在眼里。

   项目采用Magento开发,我拿到管理密码后,也没有看任何文档,三下五除二直接上服务器拉源码,按照以往的经验部署好测试环境,按理说到这就可以继续开发了,谁知道老革命遇上了新问题,项目直接报错,根本跑不起来!

  谁知道这仅仅是噩梦的开始,接下来的一周时间里,我都在“部署环境->安装程序->删除环境"的循环里惊恐的渡过,我跟家人说:”我可能要失业了”。

  因为Mogento国内使用的可能还不多,可参考的文档很少,而且这套系统比较讨厌,每个版本的环境要求都可能不一样,并且Windows上部署采坑的几率也会大很多,下来我就逐步说明一下如何在Windows系统上部署Mangento,总结我这一周的遭遇,让后来者不再踩坑。

  开始之前先着重说明一下,开发环境为:Win10 + Apahce2.3.4 + PHP 7.4.30(cli) + MySQL 5.7 + Rides(cli) 3.2 + Composer 2.3 + Magento 2.3.7(release),全手动安装,没有使用面板。

准备工作:

1.设置Apache

按照通常方式安装好Apache,在conf目录中打开httpd.conf,去掉167、187行的注释,打开mod_rewrite.so和mod_version.so,然后设置好站点,在277行中将AllowOverride None改为AllowOverride All。根据站点设置方式的不同,此处修改可能会在其他文件当中,总之开启站点的伪静态就可以了。

2.设置PHP

安装好PHP,打开php.ini的 ext-bcmath、ext-ctype、ext-curl、ext-dom、ext-fileinfo、ext-gd、ext-hash、ext-iconv、ext-intl、ext-json、ext-libxml、ext-mbstring、ext-openssl、ext-pcre、ext-pdo_mysql、ext-simplexml、ext-soap、ext-sockets、ext-sodium、ext-spl、ext-tokenizer、ext-xmlwriter、ext-xsl、ext-zip、lib-libxml、lib-openssl 扩展,共计26个扩展项目。

安装过程:

1.部署源码

先将下载好的源码解压至站点目录,假如根目录为:magento。

2.安装依赖

使用命令行(也就是cms)进入站点根目录,执行以下命令

magento>composer install

讯享网

此时系统会自动从网络上下载所需要的依赖包,根据网速情况,用时约3~5分钟。

3.修改GD2文件

Magento大概天生没想着在windows进行部署,所以会有一些路径转义的问题,先来修改一个文件。打开 lib\internal\Magento\Framework\Image\Adapter\Gd2.php,在第86行找到函数 function validateURLScheme,进行如下修改:

讯享网private function validateURLScheme(string $filename) : bool { $allowed_schemes = ['ftp', 'ftps', 'http', 'https']; $url = parse_url($filename); //if ($url && isset($url['scheme']) && !in_array($url['scheme'], $allowed_schemes)) { if ($url && isset($url['scheme']) && !in_array($url['scheme'], $allowed_schemes) && !file_exists($filename)) { return false; } return true; }

4.执行安装

注意,这次执行目录要切换到bin,命令如下:

magento/bin>php magento setup:install --base-url=http://127.0.0.1/ --db-host=127.0.0.1 --db-name=magento --db-user=root --db-password=1234 --admin-firstname=aaa --admin-lastname=bbb --admin-email= --admin-user=admin --admin-password=admin123 --language=en_US --currency=USD --timezone=America/Chicago --use-rewrites=0 --backend-frontname="admin"

base-url 相当于绑定域名,安装好的系统访问时会自动跳转到这个地址,可以写域名,也可以写ip

db-host、db-name、db-user、db-password是Mysql数据库信息,这个根据你的开发环境实际情况填写


讯享网

admin-first、admin-lastname、admin-emai是必填项,有就可以

admin-user和admin-password是登录后台的账号、密码,这个要记好,不然安装完了没法登录

backend-frontname是后台访问路径,如果不指定,会随机生成一个admin_xxxxxx的随机地址

安装完成后会显示类似这样的提示信息:

讯享网[SUCCESS]: Magento installation complete. [SUCCESS]: Magento Admin URI: /admin_xxxxxx Nothing to import.

5.执行部署

现在虽然安装完成了,但是访问站点会发现没有样式,pub/static/ 目录下没有静态文件,此时需要执行一次如下命令:

php magento setup:static-content:deploy -f

当出现如下提示信息,就算是完成了

讯享网Deploy using quick strategy
adminhtml/Magento/backend/en_US         2293/2293           ============================ 100%   6 secs
frontend/Magento/blank/en_US            2287/2287           ============================ 100%   5 secs
frontend/Magento/luma/en_US             2304/2304           ============================ 100%   8 secs

Execution time: 33.576869010925

6.查缺补漏

此时你觉得应该安装完了,但是事实上......并没有,前面说了Magento大概没打算在windows上部署,所以还需要修改 lib\internal\magento\framework\View\Element\Template\File\Validator.php 的函数 isPathInDirectories,在 139 行添加一句 $realPath = str_replace('\\', '/', $realPath);,最终是这样的:

protected function isPathInDirectories($path, $directories) { if (!is_array($directories)) { $directories = (array)$directories; } $realPath = $this->fileDriver->getRealPath($path); $realPath = str_replace('\\', '/', $realPath); foreach ($directories as $directory) { if (0 === strpos($realPath, $directory)) { return true; } } return false; }

至此,安装结束!

多说两句:首先,源码一定要从官方下载,否则可能会有文件缺失,导致一些莫名其妙的问题;其次,一定要确认版本号和系统环境需求,Magneto系统即便是小版本号的区别,对环境要求也是天壤之别。

如有问题欢迎留言或者私信沟通。

附录:

源码下载 https://github.com/magento/magento2/

开发文档 Installation flow | Adobe Commerce Developer Guide

小讯
上一篇 2025-02-09 15:09
下一篇 2025-03-28 17:19

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/23048.html