本教程适用于以下操作系统版本
- 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

现在使用以下 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 确认安装。

安装完成后,检查所有相关服务以确保它们正常运行。
使用以下命令检查 Nginx 服务。你将看到 Nginx 服务正在运行且已设置为开机自启。
sudo systemctl is-enabled nginx
sudo systemctl status nginx

现在使用以下命令检查 MySQL 服务器。从下方输出中可以看到 MySQL 服务器正在运行。
sudo systemctl is-enabled mysql
sudo systemctl status mysql

使用以下命令检查 PHP-FPM 服务。PHP-FPM 应当已自动运行并被启用。
sudo systemctl is-enabled php8.3-fpm
sudo systemctl status php8.3-fpm

使用以下命令检查 Redis 服务器。你应该能看到 Redis 正在运行且已启用。
sudo systemctl is-enabled redis-server
sudo systemctl status redis-server

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

配置 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 正在运行且已启用。

最后,使用以下 curl 命令检查你的 OpenSearch 安装情况。该命令将返回 OpenSearch 安装的基本信息。
curl -X GET http://localhost:9200
从下方可以看到,OpenSearch 2.14 正在 Ubuntu 服务器上运行。

配置 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;

接着,运行以下查询来验证 magento 用户的权限。确保你的用户能够访问 magento 数据库。
SHOW GRANTS FOR magento@localhost;
最后,输入 quit 退出 MySQL 服务器。

通过命令行安装 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 安装过程已经启动:

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

为完成 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 已生成。

最后,运行以下命令清除 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

使用 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 默认首页。

现在,访问 Magento 的管理后台地址,即 https://howtoforge.local/admin_ze87mmj。参见安装过程截图。
输入你的 Magento 管理员用户名和密码,然后点击 Login(登录)。

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

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