最详细的 Windows 安装 Magneto 2.3.7 指南

(95) 2024-05-15 17:01:01

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

   项目采用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=1111@qq.com --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;
}

最详细的 Windows 安装 Magneto 2.3.7 指南 (https://mushiming.com/)  第1张

至此,安装结束!

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

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

附录:

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

开发文档 Installation flow | Adobe Commerce Developer Guide

THE END

发表回复