本教程适用于以下操作系统版本

  • Ubuntu 24.04 (Noble Numbat)
  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 20.04 (Focal Fossa)
  • Ubuntu 18.04 (Bionic Beaver)
  • Ubuntu 16.04 (Xenial Xerus)
  • Ubuntu 15.10 (Wily Werewolf)

本页内容

  • 准备工作
  • 安装依赖项
  • 配置 OpenSearch
  • 配置 PHP-FPM
  • 配置 MySQL 服务器
  • 通过命令行安装 Magento
  • 配置 Nginx 虚拟主机
  • 使用 HTTPS 保护 Magento
  • 访问 Magento
  • 结语

Magento 是一款使用 PHP 编写的开源、知名的电子商务平台。作为一套强大且稳健的电商解决方案,全球有超过 24 万家商户在使用它。Magento 是一个通用且可扩展的平台,适合搭建各类电商商店,无论是小型、中型还是大型在线商店都能胜任。Magento 允许你在自己的服务器上创建并托管在线商店。

在本指南中,我们将带你一步步在 Ubuntu 22.04 服务器上安装 Magento 电子商务平台。

准备工作

在开始本指南之前,请确保你已经准备好以下条件:

  • 一台至少具备 4GB 内存的 Ubuntu 24.04 服务器。
  • 一个拥有 sudo 权限的非 root 用户。
  • 一个已解析到服务器 IP 地址的域名。

安装依赖项

在正式安装之前,必须先确保 Magento 的各项依赖已安装就绪。本节中,你将安装 Magento 所需的软件包,包括 OpenSearch、Nginx、MySQL 服务器、PHP-FPM、Redis、Composer 以及 Git。

首先,使用以下命令安装 apt-transport-https 和 gnupg 软件包:

sudo apt install apt-transport-https gnupg -y

运行以下命令,为基于 Debian/Ubuntu 的发行版添加 OpenSearch 的 GPG 密钥与软件仓库。

curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | \
sudo gpg --dearmor --batch --yes -o /usr/share/keyrings/opensearch-keyring
echo "deb [signed-by=/usr/share/keyrings/opensearch-keyring] https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt stable main" | \
sudo tee /etc/apt/sources.list.d/opensearch-2.x.list

在 Ubuntu 24.04 上用 Nginx 安装 Magento 电商平台

现在使用以下 apt 命令更新 Ubuntu 软件包索引并安装依赖。通过该命令,你将安装 OpenSearch、Nginx、MySQL、PHP-FPM、Redis、Composer 和 Git 等软件包。

sudo apt update && sudo apt install opensearch nginx mysql-server composer git redis-server php-fpm php-bcmath php-common php-mbstring php-xmlrpc php-soap php-gd php-xml php-intl php-mysql php-cli php-redis php-ldap php-zip php-curl php-imagick

输入 Y 确认安装。

在 Ubuntu 24.04 上用 Nginx 安装 Magento 电商平台

安装完成后,检查所有相关服务以确保它们正常运行。

使用以下命令检查 Nginx 服务。你将看到 Nginx 服务正在运行且已设置为开机自启。

sudo systemctl is-enabled nginx
sudo systemctl status nginx

在 Ubuntu 24.04 上用 Nginx 安装 Magento 电商平台

现在使用以下命令检查 MySQL 服务器。从下方输出中可以看到 MySQL 服务器正在运行。

sudo systemctl is-enabled mysql
sudo systemctl status mysql

在 Ubuntu 24.04 上用 Nginx 安装 Magento 电商平台

使用以下命令检查 PHP-FPM 服务。PHP-FPM 应当已自动运行并被启用。

sudo systemctl is-enabled php8.3-fpm
sudo systemctl status php8.3-fpm

在 Ubuntu 24.04 上用 Nginx 安装 Magento 电商平台

使用以下命令检查 Redis 服务器。你应该能看到 Redis 正在运行且已启用。

sudo systemctl is-enabled redis-server
sudo systemctl status redis-server

在 Ubuntu 24.04 上用 Nginx 安装 Magento 电商平台

最后,使用以下命令检查 Composer 版本。你的系统上应当已安装 Composer v2.7。

sudo -u www-data composer -v

在 Ubuntu 24.04 上用 Nginx 安装 Magento 电商平台

配置 OpenSearch

安装好依赖后,你需要对 OpenSearch 进行配置。Magento 使用 OpenSearch 来实现高级搜索与商品索引功能。本节中,你将调大默认的堆内存上限,并禁用 OpenSearch 的安全插件(仅适用于开发环境)。

使用以下 nano 编辑器打开 /etc/opensearch/jvm.options 文件。

sudo nano /etc/opensearch/jvm.options

按需修改 OpenSearch 的默认内存分配。本示例中,我们将为 OpenSearch 分配 2GB 内存。

-Xms2g
-Xmx2g

保存文件并退出。

现在使用 nano 编辑器打开 OpenSearch 的默认配置文件 /etc/opensearch/opensearch.yml。

sudo nano /etc/opensearch/opensearch.yml

添加以下配置以禁用 OpenSearch 的安全插件。出于演示目的可以禁用它,但在生产环境中必须启用该安全插件,并为你的 OpenSearch 安装配置 TLS 证书。

plugins.security.disabled: true

完成后,保存并退出文件。

接下来,运行以下命令重新加载 systemd 管理器。安装 OpenSearch 后,必须重新加载 systemd 管理器。

sudo systemctl daemon-reload

现在使用以下命令启动、启用并验证 OpenSearch 服务:

sudo systemctl enable --now opensearch
sudo systemctl status opensearch

在下方输出中,你可以看到 OpenSearch 正在运行且已启用。

在 Ubuntu 24.04 上用 Nginx 安装 Magento 电商平台

最后,使用以下 curl 命令检查你的 OpenSearch 安装情况。该命令将返回 OpenSearch 安装的基本信息。

curl -X GET http://localhost:9200

从下方可以看到,OpenSearch 2.14 正在 Ubuntu 服务器上运行。

在 Ubuntu 24.04 上用 Nginx 安装 Magento 电商平台

配置 PHP-FPM

本节中,你将修改 PHP-FPM 的默认配置,并通过 php.ini 文件启用 Opcache 扩展。你还将调大默认的 memory_limit 并调整 date.timezone 选项。

使用以下 nano 编辑器打开 PHP-FPM 的配置文件 /etc/php/8.3/fpm/php.ini。

sudo nano /etc/php/8.3/fpm/php.ini

按以下内容修改默认配置。同时,请根据你当前服务器的环境调整 date.timezone 与 memory_limit。

date.timezone = Europe/Amsterdam

完成后,保存文件并退出。

现在运行以下命令重启 PHP-FPM 服务以使配置生效。

sudo systemctl restart php8.3-fpm

配置 MySQL 服务器

在配置好 PHP-FPM 之后,下一节你将完成 MySQL 服务器的初始化设置,并为 Magento 创建新的数据库与用户。

执行以下命令,对你的 MySQL 服务器安装进行安全加固。

sudo mysql_secure_installation

执行后,你将被问及以下 MySQL 服务器配置相关的问题:

  • 输入 y 以启用 VALIDATE PASSWORD 组件。
  • 输入 1 将密码强度级别设为 MEDIUM(中等)。
  • 当询问是否更改 MySQL root 密码时,输入 y。
  • 输入 y 以删除默认的匿名用户。
  • 输入 y 禁止 MySQL root 用户远程登录。
  • 再次输入 y 以移除 MySQL 中默认的 test 数据库。
  • 最后,输入 y 重新加载权限表使更改生效。

完成 MySQL 配置后,你需要为 Magento 创建一个新的数据库和用户。

使用以下命令登录 MySQL 服务器。在提示时输入你的 MySQL root 密码。

sudo mysql -u root -p

现在运行以下 SQL 语句,为 Magento 创建新的数据库和用户。本示例中,你将创建一个名为 magento 的新用户和数据库,密码为 M4gentoPassw0rd__。

请务必将上述信息替换为你自己的设置。此外,Magento 的 MySQL 密码应包含特殊字符、数字以及大写字母。

CREATE DATABASE magento;
CREATE USER 'magento'@'localhost' IDENTIFIED BY 'M4gentoPassw0rd__';
GRANT ALL PRIVILEGES ON magento.* to 'magento'@'localhost';
FLUSH PRIVILEGES;

在 Ubuntu 24.04 上用 Nginx 安装 Magento 电商平台

接着,运行以下查询来验证 magento 用户的权限。确保你的用户能够访问 magento 数据库。

SHOW GRANTS FOR magento@localhost;

最后,输入 quit 退出 MySQL 服务器。

在 Ubuntu 24.04 上用 Nginx 安装 Magento 电商平台

通过命令行安装 Magento

本节中,你将下载 Magento 源代码并使用 Composer 安装 PHP 依赖,随后通过命令行安装 Magento,最后为 Magento 生成 crontab 定时任务。

进入 /var/www 目录,并使用以下 wget 命令下载 Magento 源代码。请前往 Magento 的 GitHub 页面获取最新版本的下载地址。

cd /var/www
wget https://github.com/magento/magento2/archive/refs/tags/2.4.7.tar.gz

下载完成后,解压 Magento 源代码并将解压后的目录重命名为 magento2。这样,你的 Magento 安装目录将位于 /var/www/magento2。

tar -xf 2.4.7.tar.gz
mv magento2-* magento2

现在运行以下命令,为 Composer 创建额外的目录,并将 /var/www 目录的属主更改为 www-data 用户。

sudo mkdir -p /var/www/{.config,.cache}
sudo chown -R www-data:www-data /var/www

然后,运行以下命令,赋予 www-data 用户在 /var/www/magento2 目录内读取、写入和执行的权限。

sudo chmod u+rwx /var/www/magento2

接下来,进入 /var/www/magento2 目录,并使用以下 Composer 命令安装 Magento 所需的 PHP 依赖。这将确保 Magento 的依赖被正确安装。

cd /var/www/magento2
sudo -u www-data composer install

依赖安装完成后,运行以下命令,赋予 www-data 用户对 Magento 网站根目录下 generated 和 var 两个目录的 rwx(读/写/执行)权限。

sudo chown -R www-data:www-data /var/www/magento2/var /var/www/magento2/generated
sudo chmod u+rwx /var/www/magento2/var /var/www/magento2/generated
sudo chmod g+rw /var/www/magento2/var /var/www/magento2/generated

现在运行以下命令开始安装 Magento。请务必将命令中的 URL 地址、MySQL 数据库、管理员用户名和密码替换为你自己的 Magento 安装信息。

sudo -u www-data bin/magento setup:install \
--base-url=http://howtoforge.local \
--db-host=localhost \
--db-name=magento2 \
--db-user=magento \
--db-password=M4gentoPassw0rd__ \
--admin-firstname=bob \
--admin-lastname=admin \
[email protected]
 \
--admin-user=bob \
--admin-password=BobAdm1nP4ssword \
--currency=USD \
--timezone=Europe/Amsterdam \
--use-rewrites=1 \
--session-save=redis \
--search-engine=opensearch \
--opensearch-host=127.0.0.1 \
--opensearch-port=9200 \
--opensearch-enable-auth=0 \
--opensearch-index-prefix=magento22 \
--opensearch-timeout=30

从下方可以看到 Magento 安装过程已经启动:

在 Ubuntu 24.04 上用 Nginx 安装 Magento 电商平台

安装完成后,你将看到输出 'Magento installation complete.' 以及你的 Magento 安装对应的管理员 URL 路径。请务必保存生成的管理后台访问地址。

在 Ubuntu 24.04 上用 Nginx 安装 Magento 电商平台

为完成 Magento 安装,运行以下命令为 Magento 生成 crontab 并执行索引操作。

sudo -u www-data bin/magento cron:install
sudo -u www-data bin/magento cron:run --group index

你可以使用以下命令查看 www-data 用户的 crontab 列表:

crontab -u www-data -l

从下方可以看到,Magento 的 crontab 已生成。

在 Ubuntu 24.04 上用 Nginx 安装 Magento 电商平台

最后,运行以下命令清除 Magento 安装的缓存。至此,你已完成了 Magento 的安装,接下来需要配置 Nginx Web 服务器。

sudo -u www-data bin/magento cache:clean

配置 Nginx 虚拟主机

至此,Magento 安装已完成,现在你将创建一个新的 Nginx 虚拟主机来运行 Magento。请确保你已有一个解析到服务器 IP 地址的域名。

使用 nano 编辑器创建新的 Nginx 虚拟主机配置文件 /etc/nginx/sites-available/magento.conf。

sudo nano /etc/nginx/sites-available/magento.conf

插入以下配置,并确保将 server_name 选项改为你自己的 Magento 域名。

upstream fastcgi_backend {
 server unix:/run/php/php8.3-fpm.sock;
}
server {
 listen 80;
 listen [::]:80;
 server_name howtoforge.local;
 set $MAGE_ROOT /var/www/magento2/;
 include /var/www/magento2/nginx.conf.sample;
 client_max_body_size 2M;
 access_log /var/log/nginx/magento.access;
 error_log /var/log/nginx/magento.error;
}

完成后,保存并退出文件。

现在运行以下命令启用 magento.conf 虚拟主机并校验 Nginx 配置语法。请确保看到 'syntax is ok - test is successful' 的输出。

sudo ln -s /etc/nginx/sites-available/magento.conf /etc/nginx/sites-enabled/
sudo nginx -t

最后,使用以下命令重启 Nginx 服务以应用新的虚拟主机配置。命令执行后,你的 Magento 站点即可访问。

sudo systemctl restart nginx

在 Ubuntu 24.04 上用 Nginx 安装 Magento 电商平台

使用 HTTPS 保护 Magento

如果你在公网域名上运行 Magento,则必须使用 HTTPS 对其进行保护。本节中,你将通过 Certbot 与 Let's Encrypt 为 Magento 启用 HTTPS。

使用以下命令安装 Certbot 以及 Certbot 的 Nginx 插件。输入 Y 确认安装。

sudo apt install certbot python3-certbot-nginx

安装完成后,运行以下命令从 Let's Encrypt 申请 SSL/TLS 证书。请务必将命令中的邮箱地址和域名替换为你自己的信息。

sudo certbot --nginx --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email 
[email protected]
 -d howtoforge.local

整个过程完成后,你的 Magento 站点应当已自动通过 HTTPS 得到保护。你的 SSL/TLS 证书位于 /etc/letsencrypt/live/domain.com 目录中。

访问 Magento

打开你的网页浏览器,访问你的 Magento 域名(例如 https://howtoforge.local)。如果安装成功,你将看到如下所示的 Magento 默认首页。

在 Ubuntu 24.04 上用 Nginx 安装 Magento 电商平台

现在,访问 Magento 的管理后台地址,即 https://howtoforge.local/admin_ze87mmj。参见安装过程截图。

输入你的 Magento 管理员用户名和密码,然后点击 Login(登录)。

在 Ubuntu 24.04 上用 Nginx 安装 Magento 电商平台

如果登录成功,你将看到如下所示的 Magento 管理后台仪表盘:

在 Ubuntu 24.04 上用 Nginx 安装 Magento 电商平台

结语

恭喜!你已成功在 Ubuntu 24.04 服务器上完成了 Magento 电子商务平台的安装。你现在拥有了一套基于 LEMP 技术栈(Linux、Nginx、MySQL 和 PHP-FPM)、OpenSearch 与 Redis 的 Magento 部署,并且已通过 Certbot 与 Let's Encrypt 为 Magento 启用了 HTTPS 保护。