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
- 确保主机符合系统要求;
- 确认您主机正在运行最新版本的CentOS 8,并在必要时进行更新;
- 设置并测试任何负载平衡配置(如适用);
- 在继续安装之前,请备份系统。
(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提供了一种将消息发布到队列和异步接收消息的工具。
(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.bz25、为文件和目录设置所有权和权限
在安装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.service6、运行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 developer7、完成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管理员页面。
(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”选项。
展开“基本URL(安全)”选项以显示多个文本字段,将安全基础URL从http://修改为https://,以便使用https协议。
保存配置,然后重新加载店面,浏览器现在在URL附近显示一个锁图标(前提是使用的是商业签名的证书)。
推荐阅读:
《Linode GPU服务器定价 Linode GPU服务器多少钱》
(本文由美国主机侦探原创,转载请注明出处“美国主机侦探”和原文地址!)

微信扫码加好友进群
主机优惠码及时掌握

QQ群号:164393063
主机优惠发布与交流