安装和配置M2

news/2024/10/31 1:25:20/

这是我们的重头戏。万事俱备,只欠东风。

我们将在目录var/www/magento2中安装Magento。
对于Magento安装,我们需要PHP Composer

一,安装Composer

Composer是PHP的依赖管理器,你可以使用它来安装软件包。Composer将会为你的项目提供所需的所有库和依赖项。

转到根目录,使用curl下载composer安装程序文件并运行它以安装composer。

cd ~/
curl -sS https://getcomposer.org/installer | php

将文件'composer.phar'文件移动到服务器的bin目录,并将其重命名为composer,以便轻松执行

mv composer.phar /usr/bin/composer

现在验证composer命令是否正常工作:

composer -v

二,下载并提取Magento 2

特别强调下:
能用composer方式安装就一定要用composer安装。
以后M2升级的话 会方便很多。
源码包方式安装也可以,升级也很方便,跟上面是一样的。
github方式安装的话,以后升级会比较麻烦,仅供本地测试用,不宜上线用,因为github里的是给开发者测试用的。

composer方式安装 (推荐)

如果你的服务器是在国外,比如AWS/DigitalOcean的话,可以直接用
composer下载最新版的M2,并且会自动帮你安装各种依赖库。

截止到目前最新版是2.3.0

参考:https://devdocs.magento.com/guides/v2.3/install-gde/composer.html

cd /var/www/
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition magento2

用这种方式下载的话,会提示你输入Magento密钥,配置方法见下面的三,配置Magento密钥

Username 是 Public Key
Password 是 Private Key

源码包方式安装 (推荐)

去官网
https://magento.com/tech-resources/download

或者去
//bbs.mallol.cn/?thread-154.htm

下载对应版本的源码包。
解压到/var/www/magento2目录下。

这个源码包的内容跟 用composer方式安装 下载的源码是一样的。

github方式安装 (不推荐)

注意:
这种方式仅供开发测试,不宜上线,因为这是给开发人员用的,以后升级会很麻烦。
其实这个跟上面2种方式的源码内容除了核心文件存放路径不一样外,其他都是一样的。

用国内服务器的话,composer下载太慢,经常超时,下载不完全,导致后续各种奇怪的问题。
所以国内服务器的话 直接下载github里的压缩包 解压后安装。

从Github存储库下载Magento,然后解压下载的tar.gz文件。
获取最新的稳定版本,在编写本教程的时候是Magento 2.2.4:

cd /var/www/
wget https://github.com/magento/magento2/archive/2.2.4.tar.gz
tar -xzvf 2.2.4.tar.gz
mv magento2-2.2.4/ magento2/

还有一点要注意下,
weget下载2.2.4.tar.gz的时候 也比较慢

2.2.4.tar.gz.1                       [ <=>                                                      ]  18.05K  13.1KB/s 

有时候因为网络原因,下载不完全,所以下载完成后要检查下文件大小,如果少于20M的话 就不行 得重新下载。

三,配置Magento密钥

在Magento网站 marketplace.magento.com 上注册一个帐户。这个账户需要使用Magento和Magento Composer商店。注册后,转到选项卡My Profile > My Access Keys > Magento 2,然后生成密钥。


这个地方经常搞错:

Public Key 是 Username
Private Key 是 Password

四,安装Magento的第三方组件

注意:
用github方式安装的话,需要下载第三方组件。
用composer和源码包方式安装的,不需要执行这一步,因为第三方组件都已经有了,在vendor下面。当然你执行了也没事,不会怀孕。

转到Magento 2安装目录/var/www/magento2并运行composer命令:

cd /var/www/magento2/
composer install -v

如果要求进行Magento身份验证的话,使用配置Magento密钥配置的公钥作为用户名,私钥作为密码。

耐心等待安装完成后,就做下一步。

五,命令行一键安装M2

我们将在命令行上安装M2。在M2目录/var/www/magento2/bin/中,有一个名为magento的二进制文件,用于安装和管理magento
/var/www/magento2下:
运行命令:

php bin/magento setup:install --backend-frontname="adminlogin" \
--key="65b07bf53f4d7ee8f4b884c102e5ee62" \
--base-url="http://magento2demo.texiaoyao.cn" \
--base-url-secure="https://magento2demo.texiaoyao.cn" \
--db-host=localhost \
--db-name=magento2 \
--db-user=magento_user \
--db-password='mi@$wEw*d8' \
--admin-firstname=Zou  \
--admin-lastname=Last \
--admin-email=zouhongzhao@126.com \
--admin-user=admin \
--admin-password=123A_Zhz \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1

注意:一定要复制到代码编辑器或者纯文本编辑器去修改,因为有些编辑器自动转换标点符号了,导致运行命令报错。

参数解释:

  1. backend-frontname => 我们使用的magento网站的管理页面adminlogin
  2. key => 我们的magento键,用来加密数据库的敏感数据, 默认自动生成,我们也可以手动填写,或者在http://randomkeygen.com/上随机生成一个。注意:不能超过32个字符。
  3. base-url => 就是网站域名,确保它与nginx虚拟主机配置的域名相同
  4. db-name =>m2的数据库名,在配置Mysql的时候已创建
  5. db-user => 数据库用户名,在配置Mysql的时候已创建
  6. db-password => 数据库密码,在配置Mysql的时候已创建,注意这密码有前后单引号,如果密码有特殊字符的话,要加单引号,不然报错
  7. admin-user =>后台admin用户名,没有就自动创建
  8. admin-password => 后台admin用户的密码
  9. language => 网店默认语言
  10. currency => 网店默认货币
  11. timezone =>网店默认时区

如果你的数据库端口不是3306,而是别的(比如3308),那么你可以这样写:

--db-host=localhost:3308

 

在安装过程结束时,你应该看到以下这些行:

[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /adminlogin

给项目设置权限:

必须要设权限,不然会报各种权限错误!

cd /var/www/magento2/
find . -type f -exec chmod 644 {} \; && find . -type d -exec chmod 755 {} \; && chmod 777 var/ -R && find pub/media -type d -exec chmod 777 {} \; && find pub/static -type d -exec chmod 777 {} \; && chmod 777 app/etc && chmod 644 app/etc/*.xml && chmod u+x bin/magento

在测试Magento2之前,确保Web目录所有者是www-data,然后重新启动nginx。

cd /var/www/magento2/
chown -R www-data:www-data .
systemctl restart nginx

现在在你的浏览器中打开Magento2域名:

就我而言,域名是:magento2demo.texiaoyao.cn。

尝试登录到Magento后台管理仪表板:
magento2demo.texiaoyao.cn/adminlogin


OK! 厉害了! 到现在为止,算是大功告成了。

现在安装了Ubuntu 16.04上的Nginx和PHP-FPM 7的Magento 2。

以后项目部署上线后,还会配置Redis和Varnish来提高速度。
这个我们后续再讲。

六,一些设置

后台Configuration -> ADVANCED -> Admin ->Security

这样设置的话,就不会强制性的提示你修改密码了。
同一个账号 可以多个人同时登录后台。

七,(非常重要) 服务器创建m2项目用户

下面的步骤都在root下执行
因为目前项目的用户是www-data,这是nginx默认用户。无法切换到该用户,是不可用的。

root@xxx:/var/www/magento2# su www-data
This account is currently not available.

并且我们一般不要直接用root账号来操作,避免误删,把系统搞坏。
所以我们必须创建个普通用户,比如我的普通用户是zou。
1,先创建用户zou,并设置密码

adduser zou
passwd zou

2,给zou添加sudo权限

vim /etc/sudoers

如果用上面的vim编辑后保存不了的话 就用

visudo

添加

zou  ALL=(ALL:ALL) ALL


这样的话,用zou用户登录后,可以直接
sudo su快速切换到root用户

3,把zou加入web服务器组,也就是拥有www-data的权限

//把zou用户加入www-data组
usermod -a -G www-data zou
//查看www-data组,看是否包含zou用户
groups www-data
//重启nginx
systemctl restart nginx

4,设置m2项目文件的所有权
root下执行
记得把里面的zou改成你自己创建的普通用户

cd /var/www/magento2
find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} \;
find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} \;
find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;
find ./var -type d -exec chmod 777 {} \;
chmod 777 var/ -R
find ./pub/media -type d -exec chmod 777 {} \;
find ./pub/static -type d -exec chmod 777 {} \;
chmod 777 ./app/etc
chmod 644 ./app/etc/*.xml
chown zou:zou . -hR
chmod u+x bin/magento
chmod -R g+rwxs .
ls -la


可以看到,m2文件权限变了。用用户zou登录可以直接管理m2源代码了。
以后直接用zou登录,不需要用root登录了。

还需要把/var/www整个目录权限给zou用户。如果有多个网站的话,便于修改网站代码。否则没权限修改。

chown zou:zou /var/www

然后还得改下php-fpm和nginx配置文件,把www-data改成zou。不改的话到时候一大堆权限错误,非常蛋疼。

PHP7.0版本是:

vim /etc/php/7.0/fpm/pool.d/www.conf

PHP7.1版本是:

vim /etc/php/7.1/fpm/pool.d/www.conf

PHP7.2版本是:

vim /etc/php/7.2/fpm/pool.d/www.conf

;号注释

;user = www-data
;group = www-data
user = zou
group = zou
;listen.owner = www-data
;listen.group = www-data
listen.owner = zou
listen.group = zou

保存。

Nginx配置文件是:

vim /etc/nginx/nginx.conf

user www-data改成user zou;

注意这个后面有分号;

再重启下nginx和php-fpm

systemctl restart nginx
systemctl restart php7.0-fpm  (php7.0版本)
systemctl restart php7.1-fpm  (php7.1版本)
systemctl restart php7.2-fpm  (php7.2版本)

科普下:

nginx 本身不能处理 PHP,它只是个 web 服务器。当接收到客户端请求后,如果是 php 请求,则转发给 php 解释器处理,并把结果返回给客户端。如果是静态页面的话,nginx 自己处理,然后把结果返回给客户端。

Nginx 下 php 解释器使用最多的就是 fastcgi 。一般情况 nginx 把 php 请求转发给 fastcgi 管理进程处理,fastcgi 管理进程选择 cgi 子进程进行处理,然后把处理结果返回给 nginx。

在这个过程中就牵涉到两个用户,一个是 nginx 运行的用户,一个是 php-fpm 运行的用户。如果访问的是一个静态文件的话,则只需要 nginx 运行的用户对文件具有读权限或者读写权限。

而如果访问的是一个 php 文件的话,则首先需要 nginx 运行的用户对文件有读取权限,读取到文件后发现是一个 php 文件,则转发给 php-fpm,此时则需要 php-fpm 用户对文件具有有读权限或者读写权限。

八,更新系统

安装完成后 最好更新下系统 以防万一
这一连串命令 要依次执行 缺一不可 是按顺序互相关联的。
一定要记住,用这一连串命令可以解决你99%的报错问题。

zou用户下执行

php bin/magento maintenance:enablerm -rf var/di/* && rm -rf var/generation/* && rm -rf var/cache/* && rm -rf var/page_cache/* && rm -rf var/view_preprocessed/* && rm -rf pub/static/* && rm -rf generated/* && mkdir var/diphp bin/magento setup:upgrade && php bin/magento setup:di:compilephp bin/magento setup:static-content:deploy -f && php bin/magento indexer:reindex && php bin/magento maintenance:disable && php bin/magento cache:clean && php bin/magento cache:flush

九,配置Cronjob

注意:如果你收到有关缺少Magento索引器cronjob的错误,则可以通过将以下cronjob添加到您的服务器来解决它:

注意:你的crontab用户必须跟项目主用户一致,不然又会出现权限问题。

failed to open stream: Permission denied in /var/www/magento2/vendor/colinmollenhour/cache-backend-file/File.php on line 663

比如,本教程项目的主用户都是zou。那么你crontab用户也必须是zou
也就是说:

  1. 切换到zou用户(su zou)或者直接用zou用户登录
  2. zou用户里输入命令crontab -e
crontab -e

如果是用composer下载安装的,添加以下行:

* * * * * /usr/bin/php /var/www/magento2/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /var/www/magento2/var/log/magento.cron.log
* * * * * /usr/bin/php /var/www/magento2/update/cron.php >> /var/www/magento2/var/log/update.cron.log
* * * * * /usr/bin/php /var/www/magento2/bin/magento setup:cron:run >> /var/www/magento2/var/log/setup.cron.log

如果是用github下载安装的,只需添加以下行:

* * * * * /usr/bin/php /var/www/magento2/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /var/www/magento2/var/log/magento.cron.log

也就是说github安装的缺少update/cron.phpsetup:cron:run
这2项是用来定时检测 升级M2版本更新组件时并写入日志的,只有composer安装才支持。

github安装的 需要手动升级M2版本和组件。

保存并退出。

设置完后,用crontab -l命令查看是否设置成功。

如果你是在root用户,你可以直接指定crontab用户进行设置。

crontab -u zou -e

注意,如果上线后,这个cron是必须要配置的,因为它能定时刷新索引(reindex)和定时升级依赖包/定时发送order邮件等等
参考 //bbs.mallol.cn/?thread-147.htm

也可以用m2的命令来自动配置cron,

php bin/magento cron:install 

参考:https://devdocs.magento.com/guides/v2.3/config-guide/cli/config-cli-subcommands-cron.html

十,注意事项

在刚开始安装php的时候已经预装了git,所以无需再安装,直接使用即可。

如果没有的话,直接用命令行安装

sudo apt-get install git

十一,(非常重要)接下来的教程,若无特殊说明,都是用zou用户登录。

记住,你也许不是创建的zou用户,是其他名字的用户,用你自己创建的用户即可。
为了避免混乱,我都直接用zou用户来讲解。

十二,一些常见报错

问题已转移到下一章
使用Magento2->常见问题 里。


http://www.ppmy.cn/news/212977.html

相关文章

数据结构-线性表

什么是线性表&#xff1a; 线性表是有限的数据元素组成的有限序列。 通常用(a1,a2,a3…,an),来表示 线性表的两种存储结构&#xff1a; 1.顺序存储结构&#xff08;数组&#xff09;&#xff1b; 2.链式存储结构&#xff08;链表&#xff09;&#xff1b; 数据结构-线性表 一、…

ChatGPT 使用 拓展资料:大模型时代的开发者新机遇

ChatGPT 使用 拓展资料:大模型时代的开发者新机遇

Linux邮件发送教程:深入了解mail命令

前言 大家好&#xff0c;又见面了&#xff0c;我是沐风晓月&#xff0c;本文是专栏【linux基本功-基础命令实战】的第59篇文章。 专栏地址&#xff1a;[linux基本功-基础命令专栏] &#xff0c; 此专栏是沐风晓月对Linux常用命令的汇总&#xff0c;希望能够加深自己的印象&am…

红米10xpro手机图纸

红米10xpro手机图纸品牌小米型号红米10xpro图纸类型手机图纸图纸内容 手机电路图 主板元件位号图 图纸格式PDF其他信息 红米10xpro手机原理图.pdf 红米10xpro手机主板元件位号图.pdf 红米10xpro手机电路图

红米note10是双卡双待吗 红米note10是5g手机

红米note10这款手机支持双卡双卡&#xff0c;还支持主副卡切换 网络红米Note10系列将会发布4G以及5G两个版本 红米手机爆降800这活动太给力了 机会不容错过http://xiaomi.adiannao.cn/1 红米note10可是一款采用了6.5英寸的LCD屏幕&#xff0c;配上了居中单挖孔设计同时其是支持…

红米手机查看屏幕厂家

红米手机查看屏幕厂家 屏幕厂家代码 36&#xff1a;天马 37&#xff1a;深超 38&#xff1a;三星 41&#xff1a;维信诺 42&#xff1a;华星光电 43&#xff1a;JDI 获取屏幕厂家代码的方法如下 设置 -> 我的设备 -> 全部参数 -> 内核版本(狂点N下) -> 右上角…

小米(红米)手机查看生产日期和启用日期

解决方案 1、打开网址 https://m.buy.mi.com/hk/registration 2、查找IMEI号码 物理查询 系统查询 怎么查看手机的IMEI码 3、查询 参考文章 小米8吧-各位万能的吧友&#xff0c;在哪看手机的生产日期

QMessageBox信息模态对话框详细使用教程,对象创建栈和指针类型,对话框的风格样式设置,不要浪费实时间自己封装了,图文并茂,看图说话。

QMessageBox 界面设计图展示效果【1】PC端使用QMessageBoxinformation &#xff08;常规信息&#xff09;warning &#xff08;警告消息&#xff09;critical &#xff08;错误信息&#xff09;about (关于信息&#xff0c;无按钮)question &#xff08;问题信息&#xff1f;&a…