原文作者:null
原文地址:https://www.linode.com/docs/websites/ecommerce/install-magento-on-centos-7/
译者微博:@从流域到海域
译者博客:blog.csdn.net/solo95
在这篇教程中,您将学习如何在CentOS 7上安装Magent。Magento Community Edition(CE,即社区版)是一个免费的开源电子商务平台。由于它简单却强大的管理面板和庞大的开发者社区,它是自助式在线商店最受欢迎的解决方案之一。
考虑到Magento插件所需的资源,我们强烈建议您至少拥有一个4GB的Linode。你需要为PHP和Magento分配最多2GB的内存才能使用; 在较小内存的Linode上运行Magento可能会导致服务器崩溃或在中到大流量情况下不可靠。为了进行更多内存密集型的Magento设置,我们建议使用high memory Linode。
注意本教程介绍了如何在刚发布时安装最新的Magento发行版。使用Community Edition,这将是2.1.x版。如果您计划使用来自一个较旧版本Magento站点中的数据、主题和扩展,请务必检查两个版本之间的兼容性问题,因为并非所有内容都可以像在旧版本中那样运行。
sudo yum update
注意本教程是为非root用户编写的。需要提升权限的命令带有前缀
sudo
。如果您不熟悉该sudo
命令,可以查看我们的“ 用户和组”教程。
LAMP堆栈是Magento站点的基础,但在安装Magento软件之前,需要对其组件进行更多的配置。在本节中,我们将解释如何向Apache添加一些额外的设置以及如何安装MySQL 5.7和PHP 7。
由于Magento将由Apache提供服务,因此需要一些额外的配置来确保应用程序正常运作。在本节中,我们将为Magento配置Apache,以确保样式和其他设置在店面中正确显示。
1. 确保您使用的是Apache 2.4版:
httpd -v
如果显示2.2版或其他版本,请在继续之前升级Apache软件包。
2. 修改Magento站点的虚拟主机文件,使其接近于下面的示例。如果您之前没有创建过虚拟主机文件,请立即执行此操作,并参阅我们的Apache on CentOS 7教程以获取更多指导。
/etc/httpd/conf.d/vhost.conf
Require all granted
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/example.com/public_html
ErrorLog /var/www/html/example.com/logs/error.log
CustomLog /var/www/html/example.com/logs/access.log combined
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Virtual Host
块的内部块Directory
应该指向你要安装的Magento的目录。为简单起见,我们将在我们的Web根目录中安装它,但如果您想将其放在其他地方(例如,您的Web根目录的子目录),则需要修改此设置。
AllowOverride
的值需要特别重视,因为它会影响每个目录的.htaccess
文件中的哪些设置将被应用,哪些将被忽略。如果您不确定该All
选项是否适合您的站点,请参阅Apache文档以获取有关此设置的更多信息。
3. 重新启动Apache以应用这些更改:
sudo systemctl restart httpd
在本教程的发布中,Magento 2与MariaDB不兼容,后者通常是CentOS 7中MySQL的等效替代品。相反,我们将从单独的库安装MySQL 5.7。
1. 下载并安装MySQL RPM:
sudo wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm -P /tmp/
sudo yum localinstall /tmp/mysql57-community-release-el7-7.noarch.rpm
sudo yum update
sudo yum install mysql-community-server
2 启动MySQL守护进程:
sudo systemctl start mysqld
3 首次启动MySQL时,会生成一个临时密码,用于对数据库进行root访问。用grep
命令可以在日志文件中找到它:
sudo grep 'temporary password' /var/log/mysqld.log
注意如果您以前安装了MariaDB或MySQL并设置了root密码,则此安装可能不会覆盖您已有的数据库凭据。如果是这种情况,请使用您之前设置的root密码。
4 使用mysql_secure_installation
脚本保护您的MySQL安装并更改root密码:“`
mysql\_secure\_installation
5 以root用户身份登录MySQL shell,在提示时输入新密码:
mysql -u root -p
6 创建Magento数据库和用户,并设置权限。在这个例子中,我们将我们的数据库和用户命名为magento
,在使用时请用安全密码替换P@ssword1
。您也可以选择替换其他值:
CREATE DATABASE magento;
CREATE USER 'magento' IDENTIFIED BY 'P@ssword1';
GRANT ALL PRIVILEGES ON magento.\\* TO 'magento';
本小节假定您的数据库与Magento应用程序位于同一服务器上。如果不是这种情况,请执行以下步骤,然后参阅有关使用远程数据库服务器的 Magento教程。
注意如果密码不够安全,您可能会收到有关密码复杂性的错误。默认情况下,CentOS 7启用
validate-password
MySQL插件。有关更多信息,请参阅MySQL官方文档。
不要在密码中使用感叹号(!
)。Magento安装脚本在其命令选项中并不能正确解析它们。
7 退出MySQL shell:
quit
Magento是一个PHP应用程序,因此您需要安装PHP 7并对其设置进行一些调整。
1 CentOS 7的默认存储库包括PHP 5.4,它与Magento 2不兼容。安装IUS(Inline with Upstream Stable)存储库以获取PHP 7:
sudo wget http://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/ius-release-1.0-14.ius.centos7.noarch.rpm -P /tmp
sudo yum localinstall /tmp/ius-release-1.0-14.ius.centos7.noarch.rpm
sudo yum update
2 从IUS存储库安装PHP 7及其所需的扩展:
sudo yum install php70u php70u-pdo php70u-mysqlnd php70u-opcache php70u-xml php70u-mcrypt php70u-gd php70u-devel php70u-mysql php70u-intl php70u-mbstring php70u-json php70u-iconv
3 修改php.ini
文件中的以下设置:
/etc/php.ini
max\\_input\\_time = 30
memory\\_limit= 2G
error\\_reporting = E\\_COMPILE\\_ERROR|E\\_RECOVERABLE\\_ERROR|E\\_ERROR|E\\_CORE\\_ERROR
error\\_log = /var/log/php/error.log
date.timezone = America/New\\_York
这为PHP的date()
函数设置了时区,并对PHP可以使用的内存量施加了2GB的限制。对于4GB Linode,建议使用此值,但对于较大的服务器,可以选择增加此值。
注意
date.timezone
的值将根据系统的时区而有所不同。请参阅PHP时区文档,并确保此值与您配置Linode时设置的时区相匹配。
1 创建PHP的日志目录并授予Apache用户所有权:
sudo mkdir /var/log/php
sudo chown apache /var/log/php
2 因为您在步骤2中为Apache安装了PHP模块,所以重新启动Web服务器以应用更改并允许Apache为PHP页面提供服务:
sudo systemctl restart httpd
3 可选项:您可能希望借此机会创建一个phpinfo.php
页面,以确保PHP处于活动状态并与Apache一起正常工作:
/var/www/html/example.com/public_html/phpinfo.php
phpinfo(); ?>
在浏览器中访问此页面并确认PHP正常工作后,请删除测试页。
在本节中,我们将解释如何在您的Linode上获取Magento Community Edition(CE)软件。有几种方法可以做到这一点,但在这里我们将介绍最简单的方法。
1 在您的本地计算机上,从他们的官方网站下载Magento的副本。有几个版本可用,但我们建议您下载最新版本。在撰写本文时,最新版本为2.1.2:
在您选择的版本旁边,会出现一个下拉菜单,上面写着“选择您的格式。”选择以.tar.gz
扩展名结尾的选项,然后点击下载。请务必记下保存下载文件的位置。
在此步骤中,您还可以下载带有可选样本数据的软件。无论您选择此版本还是基本版本都取决于您。
注意选择版本时,请参阅Magento的前提条件以确保特定版本与LAMP堆栈组件的兼容性。在撰写本文时,Magento 2.1.2版本与本教程中介绍的所有软件包版本兼容。
2 从本地计算机,将文件复制到您的Linode中。替换/path/on/local/
为下载文件的路径,使用Linode上的标准用户帐户替换user
,并用Linode的主机名或IP地址替换yourhost
:
scp /path/on/local/Magento-CE-2.\*.tar.gz user@yourhost:~/
如果,您正在运行Windows,或者无法使用命令行工具scp
,则可以使用FTP客户端如Filezilla`。
3 通过SSH作为标准用户帐户登录您的Linode。导航到您在虚拟主机文件中指定的文档根目录:
cd /var/www/html/example.com/public\_html
将存档直接提取(即解压)到您的webroot中,就像您在下一步中所做的那样,将使其可以作为您域中的主页面进行访问。例如,如果您的域名是example.com
,则当您example.com
在浏览器中访问时,将显示Magento的店面。
如果要将Magento商店作为站点的子部分运行,请在webroot中的目录中移动并解压缩存档。例如,如果您打算通过访问example.com/store
来访问您的站点,请创建子目录/var/www/html/example.com/public_html/store
并导航到该目录,然后再继续下一步。
4 将Magento存档移动到您的文档根目录并提取其内容:
sudo mv ~/Magento-CE-2.\\*.tar.gz .
sudo tar -xvf Magento-CE-2.\\*.tar.gz
1 创建一个Magento用户,该用户将运行该软件。为简单起见,请命名此用户为magento
:
sudo useradd magento
2 接下来,将Magento用户添加到Web服务器的用户组。对于Apache,默认用户是apache
:
sudo usermod -g apache magento
3 此步骤中的命令应从Magento安装目录(解压缩归档)运行。如果您还不在该目录中,请在继续之前导航到该目录。
按顺序运行这些命令:
sudo find var vendor pub/static pub/media app/etc -type f -exec chmod g+w {} \;
sudo find var vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} \;
sudo chown -R magento:apache .
sudo chmod u+x bin/magento
这允许您的magento
用户(以及该apache
组的成员)写入他们在您的站点上运行和提供Magento所需的各种文件。
注意前两个命令可能需要一些时间才能运行,因为它们会匹配安装文件夹中的各种文件和目录。可能看起来系统处于非活动状态,但在取消操作之前一定要留出几分钟。
您始终可以启动新的SSH连接,或在屏幕会话中运行这些命令,并使用htop和iotop等工具来监控进度。
4 重启Apache:
sudo systemctl restart httpd
1 切换到magento
用户并导航到Magento安装文件夹中的bin
目录:
sudo su magento
cd bin
2 使用以下选项运行Magento安装脚本:
./magento setup:install --admin-firstname="John" --admin-lastname="Doe" --admin-email="[email protected]" --admin-user="john" --admin-password="password1" --db-name="magento" --db-host="localhost" --db-user="magento" --db-password="P@ssword1"
替换选项中的值,如下所示:
- admin-firstname / admin-lastname - 这将设置管理员用户的全名。如果您是管理员,请将其替换为您的姓名。
- admin-email - 这是您重置密码和接收管理员通知的电子邮件。
- admin-user / admin-password - 这些是Magento管理控制台的登录凭据。请务必在此处设置安全密码并将其存放在安全的地方。请注意,Magento脚本要求您在密码中使用字母和数字字符,如果不这样做,则会返回错误。
- db-name - 这是您在MySQL中设置的数据库的名称。在我们的示例中,我们将它命名为magento
,但如果您选择了不同的值,请在此处替换它。
- db-host - 如果您在与其数据库相同的服务器上运行Magento,请在此处使用localhost
。如果不是,则此值将是数据库所在服务器的主机名。
- db-user - 这是您之前设置的MySQL数据库用户。在我们的示例中,我们将它命名为magento
,但如果您选择了其他名称,请在此处使用。
- db-password - 这是您为magento
的MySQL用户配置的密码。
注意这些只是配置Magento安装的一些可用选项。有关更多信息,请参阅Magento安装教程,在运行脚本时可以随意使用其他选项。
3 安装脚本可能需要几分钟才能运行。一旦完成,您将看到成功消息:
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_a61e40
4 退出magento
用户:
exit
恭喜你,你已经在你的Linode上成功安装了Magento!您可以在Web浏览器中输入您的域名,然后输入上面显示的“Magento Admin URI”,登录管理面板。您在运行安装脚本时指定的admin-user和admin-password选项将是您的凭据。
此时仪表板功能正常,但在网站准备就绪之前,您仍有工作要做。在本节中,我们将解释如何设置cron作业并确保Magento软件适用于实时电子商务站点。
Magento依靠cron来执行诸如不断重新编制站点索引以及生成电子邮件和新闻简报等任务。如果您登录管理面板,您可能已经注意到一条错误消息,指出需要设置cron作业。幸运的是,Magento用于基础安装的cron作业很容易配置。
1 打开您的magento
用户的crontab 。以具有sudo
权限的用户身份执行此步骤:
sudo crontab -u magento -e
2 如果这是您第一次使用cron,系统可能会提示您选择文本编辑器。如果您没有首选项,请选择2以使用nano。
3. 将以下行添加到文件末尾,替换每个中的Magento安装目录:
* * * * * /bin/php /var/www/html/example.com/public_html/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /var/www/html/example.com/public_html/var/log/magento.cron.log
* * * * * /bin/php /var/www/html/example.com/public_html/update/cron.php >> /var/www/html/example.com/public_html/var/log/update.cron.log
* * * * * /bin/php /var/www/html/example.com/public_html/bin/magento setup:cron:run >> /var/www/html/example.com/public_html/var/log/setup.cron.log
第一行处理重建索引。组件管理器和系统升级分别需要第二行和第三行。/bin/php
每行的一部分指定您的PHP二进制文件。如果您使用本教程安装了PHP,则可以保留此值,但是如果您通过其他方法安装了PHP,则可以用which php
检查其位置并替换该值。
完成后,保存并退出文件。
4 要验证规则是否已正确设置,请注销Magento管理员并重新登录。如果一切配置正确,您将不再看到通知。
如果消息仍然存在,请在重新登录前等待几分钟,以便cron作业有时间在系统上生效。
有关为开发服务器和自定义Magento模块设置cron作业的更多信息,请参阅Magento Cron文档。
我们强烈建议您禁用在框架中显示Magento店面的功能以防止点击劫持攻击。为此,请修改env.php
文件中的以下行:
/var/www/html/example.com/public_html/app/etc/env.php
'x-frame-options' => 'DENY',
这可以防止攻击者将您的网站嵌入框架中(例如,在模仿您的商店的恶意网站上),以拦截付款和其他敏感的客户信息。
在app/etc
向客户开放站点之前,您应该至少限制对目录的写访问权限。从Magento安装目录中运行以下命令:
sudo find app/etc -type f -exec chmod g-w {} \;
sudo find app/etc -type d -exec chmod g-ws {} \;
根据您是否安装自定义主题或扩展,您可能需要执行其他配置。这取决于您安装的内容。准备好将站点部署到生产模式后,请参阅Magento的所有权和权限教程,以获取更全面的建议集。
注意如果将来需要进行其他配置更改,则需要再次手动添加写入权限。有关更多信息,请参阅我们的Linux用户和组教程。
安全套接字层(SSL)证书是电子商务的重要组成部分。它们可以加密传输敏感数据,例如信用卡号,可以由客户验证和信任。实际上,一些支付供应商(如PayPal)需要SSL证书才能用于客户交易。
有关如何在商店中使用SSL证书的说明,请参阅有关获取商业签名SSL证书和使用Apache 证书的教程。
注意许多需要SSL的支付供应商不支持自签名证书。根据您处理付款的方式,您可能需要购买商业签名证书。
当您将Apache配置为使用SSL证书时,如果您在站点的子目录中安装了Magento并且只希望加密该部分,请确保修改您的块以进行匹配。
安装SSL证书并配置Apache以安全方式为您的站点提供服务后,您需要配置Magento以使用安全URL。
1 使用URL登录Magento管理面板,您将获取一个名为安装运行后脚本。
2 单击屏幕左侧边栏中的“ 商店”,然后在“设置”子菜单下选择“ 配置 ”。
3 在下一个屏幕上,您将看到配置设置列表,包括“常规”,“目录”和“客户”。单击“ 常规”,然后从其子菜单中选择“ Web”。
4 选择基本URL(安全),将打开以显示多个文本字段。修改第一个字段Secure Base URL以使用HTTPS协议,而不是HTTP协议:https://example.com
这假设您将/var/www/html/example.com/public_html
用作Magento安装目录,就像我们在示例中所做的那样。如果您在Web根目录的子目录中安装了Magento,则需要在此处进行修改。例如,如果您在名为的/var/www/html/example.com/public_html/magento
文件夹中安装了Magento,则需要输入:
https://example.com/magento
5 保存配置。
6 要验证是否已正确配置SSL,请在Web浏览器中使用HTTPS协议访问您的域名,然后导航到几个链接。您应该在每个页面的浏览器URL栏中看到绿色锁定图标,确认您(以及您的未来客户)访问的每个页面都是安全的。
如果您从一开始就遵循本教程,那么您现在应该可以安全地运行Magento。您现在已准备好配置商店并开始销售产品。
您可能希望安装扩展程序以添加功能或者安装主题以更改网站的用户体验。如果您这样做,请确保您购买或安装的扩展程序和主题与Magento 2兼容。
您可能还希望使用Varnish或其他软件来配置缓存,以提高网站的速度。有关此配置选项和其他配置选项的更多信息,请参阅Magento的配置教程。
最后,请务必使Magento软件及其组件保持最新。这不仅对您网站的安全性很重要,而且还允许您使用Magento提供的最新功能和功能。有关更多信息,请参阅Magento升级文档。
有关在CentOS 7上安装Magento的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部材料的准确性或及时性。