亚马逊云科技

广告

阿里云

广告

Linode安装Magento教程

美国云服务器推荐

Magento作为一款开源建站平台,因其强大的自定义功能为大型企业品牌出海出海提供了重要载体,但是Magento又因为它的难于配置使得一些建站小白望而却步,所以本文将围绕如何在Linode CentOS 8上安装Magento展开以下内容,为使用Magento建站的各位提供一个操作参考。

一、Linode安装Magento准备

1、创建一个Linode帐户和计算实例,建议在至少4GB的实例上运行Magento。

Linode具体方案推荐可阅读《Linode是什么 Linode价格多少钱

2、更新系统,并设置时区、配置主机名、创建受限用户帐户并加强SSH访问。

sudo dnf update && sudo dnf upgrade

3、本指南使用示例域名example.com和Magento根目录/var/www/html/example.com/public_html,以及默认用户名和密码变量,如magentouser和magentopassword,在整个指南中遇到这些变量时,请替换为自己的值。

二、Linode安装Magento教程

1、验证Magento系统要求

(1)内存要求

Magento需要高达2GB的可用内存,建议至少使用4GB的Linode以获得最佳性能。

(2)浏览器要求

Magento只在以下浏览器的最新两个版本之一上运行:

  • Microsoft Edge
  • Firefox(任何操作系统)
  • Chrome(任何操作体系)
  • Safari(仅限Mac操作体系)
  • 适用于移动商店的Chrome手机版(Android 4或更高版本)

Magento可以在以下平台上运行iOS 12或更高版:

  • 适用于iPad 2、iPad Mini、带Retina显示屏的iPad的Safari Mobile(桌面)
  • 适用于iPhone 6或更高版本的Safari Mobile

2、升级并验证主机

  • 确保主机符合系统要求;
  • 确认您主机正在运行最新版本的CentOS 8,并在必要时进行更新;
  • 设置并测试任何负载平衡配置(如适用);
  • 在继续安装之前,请备份系统。

3、安装和配置Linode必备组件

(1)Web服务器

Magento需要Apache 2.4版本,可以使用以下命令验证拥有的Apache版本:

httpd -v

Magento需要mod_deflate.c、mod_expire.c、mod_headers.c、mod_rewrite.c、mod_security.c、mod_ssl.c和mod_version.c Apache模块。可以通过命令sudo httpd-M生成已安装模块的列表,查找是否存在名为deflet_module的组件,以验证是否安装了mod_deflate.c。

使用以下命令安装任何缺失的模块,将modname替换为实际模块的名称:

sudo dnf install mod_modname

使用sudo httpd-t-D DUMP_MODULES | grep sslcommand检查是否安装了ssl模块。如果尚未安装mod_ssl.c,则应在安装时创建安全套接字层(ssl)证书,使用以下命令创建自己的自签名密钥和证书:

openssl req -newkey rsa:2048 -nodes -keyout /etc/pki/tls/private/httpd.key -x509 -days 365 -out /etc/pki/tls/certs/httpd.crt

创建密钥后,编辑/etc/httpd/conf.d/ssl.conf文件,设置SSLCertificateFile和SSLCertificateKeyFile的值以引用创建的密钥:

SSLCertificateFile /etc/pki/tls/certs/httpd.crt
SSLCertificateKeyFile /etc/pki/tls/private/httpd.key

在Apache上为网站配置虚拟主机设置。有多种方法可以构建这些设置,一种直接的方法是将它们添加到/etc/httpd/conf.d/vhost.conf文件中。将以下内容添加到文件中,将example.com替换为自己的域,虚拟主机中指定的目录用作Magento根目录,稍后将从此位置安装Magento软件。

要允许带有路径分隔符的URL(例如,%2F表示“/”),请在全局服务器配置或虚拟主机配置中将AllowEncoded睫毛设置为NoDecode,默认值off会导致Apache拒绝此类URL并返回404错误。

<Directory /var/www/html/example.com/public_html>
Require all granted
</Directory>

<VirtualHost *:80>
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

<Directory /var/www/html/example.com/public_html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>

</VirtualHost>

解析此目录需要添加IncludeOptional指令到etc/httpd/conf/httpd.conf,请执行以下操作:

IncludeOptional conf.d/*.conf

SELinux可能会阻止Apache写入这些日志,甚至阻止Apache使用这些设置启动。如果发生这种情况,请导航到var/www/html/example.com目录并运行以下命令:

semanage fcontext -a -t httpd_sys_rw_content_t 'logs' 
sudo semanage fcontext -a -t httpd_sys_rw_content_t 'logs'

如果Apache尚未配置为在启动时激活,请在systemctl中添加一个条目,然后重新启动Web服务器:

sudo systemctl start httpd.service 
sudo systemctl enable httpd.service 
sudo systemctl restart httpd.service

(2)SQL数据库

建议使用MySQL 8.0,但也可以使用MariaDB 10.4+版本,所有Magento SQL语句都与MariaDB兼容,执行以下步骤为Magento安装准备数据库。

确保MySQL已安装,确认其发布版本,必要时进行升级。

sudo dnf install mysql-server 
mysql -V

确保MySQL服务器正在运行,如果没有,请启动服务器并使用以下命令验证其状态:

sudo systemctl start mysqld.service 
sudo systemctl status mysqld

运行mysql_secure_installation实用程序以确保数据库更加安全,此实用程序将引导用户完成安全设置,并允许用户设置根密码。

mysql_secure_installation

以root身份登录mysql:

mysql -u root -p

为Magento创建数据库和用户帐户。将dbpassword替换为自己的强密码(MySQL密码中不得使用感叹号“!”),还可以将用户名更改为更具体的名称(在这种情况下,请确保在GRANT命令中进行相同的替换)。

CREATE database magento; 
CREATE user 'magento' IDENTIFIED BY 'dbpassword'; 
GRANT ALL ON magento.* TO 'magento';
FLUSH PRIVILEGES; EXIT;

以新用户身份登录数据库并验证其是否可访问:

mysql -u magento -p

记录创建的数据库名称和密码,并将此信息存储在安全的地方以备后用。

如果MySQL尚未配置为在启动时处于活动状态,请将此条目添加到systemctl中:

mysql -u magento -p

(3)PHP

1)使用PHP-m命令验证以下PHP模块是否已启用:

ext-bcmath 
ext-ctype 
ext-curl 
ext-dom 
ext-gd ext-hash 
ext-iconv 
ext-intl 
ext-mbstring 
ext-openssl 
ext-pdo_mysql 
ext-simplexml 
ext-soap
ext-xsl 
ext-zip 
ext-sockets

2)安装所有缺失的模块,以下示例安装了ext bcmath、ext gd和ext intl:

sudo dnf install php-bcmath php-gd php-intl

php.ini文件需要进行许多修改,此文件通常位于/etc目录中(如果不是,可以在phpinfo.php文件中找到它的位置)。

1)为主机设置正确的系统时区,可以使用PHP时区参考来定位时区的正确设置。

date.timezone =

2)设置PHP内存限制,建议1G用于编译代码或部署资产,2G用于调试,4G用于测试。

memory_limit=2G

3)将缓存量增加到推荐设置,这允许PHP缓存文件路径并提高性能。

realpath_cache_size=10M 
realpath_cache_ttl=7200

4)调整其他一些设置,如upload_max_filesize、max_input_time和maxexecution_time。

date.timezone = Europe/London
memory_limit= 2G
realpath_cache_size=10M
realpath_cache_ttl=7200
upload_max_filesize = 256M
max_execution_time = 18000
max_input_time = 30
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
error_log = /var/log/php/error.log

启用PHP Opcache以获得更好的性能,可以在opache.ini中找到并修改此设置。

1)打开opache.ini文件,此文件通常位于/etc/php.d/opcache.ini,但可以使用php–ini命令找到其确切位置。

2)将opache.save_comments变量设置为1,必要时取消注释:

opcache.save_comments = 1

3)如果还有其他opache.ini文件,请以相同的方式修改所有文件。

4)为PHP创建一个日志目录,并将所有权分配给Web服务器:

sudo mkdir /var/log/php 
sudo chown apache /var/log/php

5)重新启动Web服务器:

sudo systemctl restart httpd.service

(4)Elasticsearch

Elasticsearch为Magento提供了高级搜索功能。Magento需要Elasticsearch 7.6或更高版本(当前版本为7.10),反过来,Elasticsearch需要Java开发工具包(JDK)1.8或更高版本。安装Magento之前必须安装Elasticsearch,建议Elasticsearch和Web服务器在同一台主机上运行,以实现更无故障的部署。

在Elasticsearch下载页面上下载适用于CentOS的Elasticsearchs存档,并按照所有说明进行操作。

输入安装Elasticsearch的目录(例如,Elasticsearch-7.10.0)并启动Elasticsearch:

./bin/elasticsearch

运行curl命令以确认Elasticsearch正常工作。“绿色”状态表示回复成功,使用以下命令进行Elasticsearch健康检查:

curl -XGET 'localhost:9200/_cat/health?v&pretty'

确认Java JDK的版本,并根据需要进行安装或升级:

java -version 
yum install java-1.8.0-openjdk

防火墙可能被设置为禁止Elasticsearch和Web服务器之间的通信,如果遇到任何问题,CentOS SELinux页面会很有帮助,如果在强制模式下运行SELinux,则可以使用以下命令允许Linux连接到本地上游组件:

do setsebool -P httpd_can_network_connect=1

为Apache服务器安装并启用mod_proxy组件(如果尚未安装),使用命令httpd-M查看安装了哪些模块:

sudo dnf install mod_proxy

启用Elasticsearch和Web服务器之间的通信。此过程在Apache和Elasticsearch之间建立了一个不安全的通信通道,因为这更容易设置和验证,为了以后提高此通道的安全性,请咨询Magento的代理信息,打开/etc/httpd/sites-available/000-defult.conf文件,并在文件顶部添加以下信息:

Listen 8080
<VirtualHost *:8080>
ProxyPass "/" "http://localhost:9200/"
ProxyPassReverse "/" "http://localhost:9200/"
</VirtualHost>

确保/etc/httpd/conf/httpd.conf中有可用站点/*.conf的IncludeOptional条目。

IncludeOptional sites-available/*.conf

重新启动Apache:

sudo systemctl restart httpd.service

使用以下命令验证Apache和Elasticsearch之间的通信通道,HTTP 200 OK响应表示组件正在协同工作。

curl -i http://localhost:8080/_cluster/health

(5)可选软件扩展

Magento可以与以下可选软件组件一起使用:

  • Redis:建议使用5.0版本,可以使用Redis来缓存页面和会话存储。
  • Varnish:建议使用6.x版本。
  • RabbitMQ:3.8.x是必需的,RabbitMQ提供了一种将消息发布到队列和异步接收消息的工具。

4、下载并解压Magento软件

(1)导航到Magento下载页面。

(2)滚动到“Archive(zip.tar)”部分,可以在其中下载压缩或tarred文件。选择所需的“构建版本”和“格式”(zip、tar.gz或tar.bz2),可以选择包含样本/测试数据集,此数据集可以在Magento完全安装后查看完全配置的店面,单击下载开始下载文件。

单击下载

(3)如果已将软件下载到与主机不同的计算机上,请通过scp、ftp或其他文件传输方法将Magento文件传输到主机,将用户和主机值替换为用户名和主机IP地址:

scp /localpath/magento-ce-2.*.tar.gz user@LinodeIPaddress:~/

(4)在主机上,导航到Magento根目录,(这是在域的虚拟主机条目中指定的目录)将Magento存档复制到此子目录。

(5)使用以下列表中的相应命令(与您的存档格式对应的命令)提取文件,用实际存档的名称代替存档。提取过程完成后,删除存档或将其存储在系统其他位置的安全位置。

tar -zxvf archive.tar.gz 
unzip archive.zip 
tar -jxvf archive.tar.bz2

5、为文件和目录设置所有权和权限

在安装Magento之前,必须为某些目录和文件配置权限和所有权。此过程因Magento和Web服务器用户是否不同而有所不同,在共享主机的情况下,单用户设置最为常见,但不如两个用户那么安全。

如果只有一个用户,请导航到Magento根目录并输入以下命令,这确保了某些目录是可写的。

find var generated vendor pub/static pub/media app/etc -type f -exec chmod u+w {} + find var generated vendor pub/static pub/media app/etc -type d -exec chmod u+w {} + chmod u+x bin/magento

如果Magento和Web服务器用户不同,请为两个所有者创建一个共享组,以便他们都可以访问Magento文件,这种方法被认为比为两个服务拥有相同的所有者更安全。

(1)创建一个Linux用户作为Magento文件系统所有者,并为该用户提供密码,这里的用户名是magento,也可以选择其他名称。

sudo adduser "magento" 
sudo passwd "magento"

(2)确定Web服务器用户的组(通常称为apache):

grep -Ei '^user|^group' /etc/httpd/conf/httpd.conf

(3)将Magento文件系统所有者添加到Web服务器组,在以下命令中替换Web服务器组和Magento文件系统所有者的实际用户名:

sudo usermod -a -G "apache" "magento"

(4)确认Magento用户现在是Web服务器组的成员:

groups "magento"

(5)重新启动Web服务器:

sudo systemctl restart httpd.service

(6)确保仍在Magento根目录中,并使用特定Web服务器用户和Magento用户名为chown命令键入以下命令:

sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} + sudo find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} + sudo chown -R magento:apache . sudo chmod u+x bin/magento

(7)SELinux可能会阻止Apache和PHP写入Magento目录,使用以下命令将magentorootdirectory替换为实际的根目录,以解决此问题:

sudo restorecon -R "magentorootdirectory" 
sudo setsebool -P httpd_unified 1

(8)重新启动Web服务器:

sudo systemctl restart httpd.service

6、运行Magento设置程序安装软件

(1)导航到Magento根目录(在域的虚拟主机条目中指定的目录),必须从此目录中安装Magento,或者在命令中指定此位置的完整目录路径。

(2)运行安装命令:

sudo bin/magento setup:install --<option>=<value> ... --<option>=<value>
  • admin名字:Magento管理员用户的名字。
  • admin lastname:Magento管理员用户的姓氏。
  • 管理员电子邮件:Magento管理员的电子邮件。
  • admin user:Magento管理员的用户名(用于登录Magento管理员页面)。
  • admin密码:Magento管理员的用户密码(用单引号括起来),Magento要求使用至少包含一个字母和一个数字的密码。
  • base url:访问店面的url。例如:http://<website>/<Magento安装目录>/或http://<ip>/<Magento安装目录>/。Magento安装目录是Magento目录根(虚拟主机文件中的网站目录)相对于Web服务器文档根的路径。如果这两个值相同,请将Magento安装目录留空,要在本地主机上访问它,请使用http://127.0.0.1/<Magento安装目录>/,对于集装箱环境,请使用“”。
  • db-host:数据库的地址。如果数据库服务器与Magento位于同一主机上,请使用localhost,如果没有,请指定托管数据库的服务器的地址或名称。
  • db name:安装Magento数据库表的数据库实例的名称。
  • db-user:Magento数据库实例所有者的用户名,默认设置为root。
  • db-password:Magento数据库用户的密码。

(3)这是一个示例安装。用之前为MySQL创建的用户名和密码替换db密码和db用户,为管理员密码创建一个唯一且强大的密码,如上所述,将your_URL_or_domain替换为正确的基本URL。

bin/magento setup:install --admin-firstname="Magento" --admin-lastname="User" --admin-email="user@example.com" --admin-user="Magentouser" --admin-password="password" --db-name="magento" --db-host="localhost" --db-user="magento" --db-password="password" --language=en_US --currency=USD --timezone=Europe/London --cleanup-database --base-url=http://"your_URL_or_domain"

(4)等待Magento完成安装,通常需要5到10分钟。完成后,程序将显示“成功”消息以及Magento管理员URI密钥,URI提供对Magento管理页面的访问,标签以admin_开头,后面是六位字母数字序列。

(5)为了便于开发,可以在运行Magento应用程序的同时将其置于开发模式。

sudo bin/magento deploy:mode:set developer

7、完成Magento安装后的任务

(1)安装Magento Cron作业

Magento依赖于几个定期安排的任务才能正确运行,应该使用Magento的cron实用程序在CentOS的cron文件中创建必要的条目。

1)导航到Magento根目录。

2)执行以下命令:

bin/magento cron:install

3)检查crontab条目,以确保Magento相关的cron条目现在存在:

crontab -l

(2)验证安装

使用Web浏览器访问店面。在安装过程中,使用配置为基本网址的地址,如果下载了示例数据集,将看到一个带有图像的店面模型,否则页面将显示一个示例模板,其中包含一些通用的默认消息,如“主页内容在此处”。

带有图像的店面模型

确认可以访问基本url/Magento_Admin_URI上的Magento管理页面。使用实际的基本url和安装中的Magento管理员URI,当访问此页面时,Magento会提示使用在安装过程中提供的管理员用户名和管理员密码登录。

登录Magento

成功登录后,将进入Magento管理员页面。

Magento管理员页面

(3)安装后锁定权限

在安装了Magento并且不想再进行任何基本更改后,限制某些权限以使网站更安全是很重要的。

1)进入Magento根目录并设置以下权限:

sudo find app/etc -type f -exec chmod g-w {} \; 
sudo find app/etc -type d -exec chmod g-ws {} \;

2)当准备将服务器投入生产时,导航到Magento根目录并将Magento置于生产模式。

bin/magento deploy:mode:set production

3)从其他敏感目录中删除写访问权限:

find app/code lib var generated vendor pub/static pub/media app/etc \( -type d -or -type f \) -exec chmod g+w {} + && chmod o+rwx app/etc/env.php

(4)设置X-Frame选项

建议禁用在框架内显示店面的功能,以防止点击劫持尝试。修改/var/www/html/example.com/public_html/app/etc/env.php文件中的以下设置,将文件路径中的example.com替换为自己的域:

'x-frame-options' => 'DENY',

(5)SSL证书

使用在之前的验证阶段使用的URL登录到Magento管理员页面。

单击侧栏中的存储,然后单击设置子菜单下的配置选项。

单击设置子菜单下的配置选项

单击“常规”子菜单下的“Web”选项。

单击“常规”子菜单下的“Web”选项

展开“基本URL(安全)”选项以显示多个文本字段,将安全基础URL从http://修改为https://,以便使用https协议。

在安全基础URL字段中输入HTTPS地址

保存配置,然后重新加载店面,浏览器现在在URL附近显示一个锁图标(前提是使用的是商业签名的证书)。

推荐阅读:

Linode日本VPS稳定吗

Linode可以支付宝付款吗

Linode GPU服务器定价 Linode GPU服务器多少钱

(本文由美国主机侦探原创,转载请注明出处“美国主机侦探”和原文地址!)

主机侦探企业微信

微信扫码加好友进群

主机优惠码及时掌握

主机侦探QQ群

QQ群号:164393063

主机优惠发布与交流

温馨提示:

1、本站部分图片来源于互联网,如有侵权请联系删除。邮箱:2942802716#qq.com(#改为@)

2、本文评论没有专人回复,如果您有问题请到美国主机侦探论坛提问!

3、美国主机侦探免费为您提供美国主机购买咨询。

RAKsmart美国服务器
返回顶部