来自 CloudPicked 的独立推荐 — 编辑内容无利益冲突
Magento 电子商务托管

完整的 Magento 电子商务托管指南 2026

Magento 2 是面向严肃在线商人提供的最强大的电子商务平台。选择合适的托管提供商对您的在线商店的成功至关重要。在这份综合指南中,我们涵盖了您需要了解的有关 Magento 托管的一切内容 — 从服务器规范和 VPS 选择,到 Nginx/PHP/MySQL 配置、优化技术、安全加固和商店迁移策略。

什么是 Magento 以及为什么需要特殊托管

Magento 2 是一个建立在 PHP 和 MySQL/MariaDB 上的开源电子商务平台。与 WordPress(通用网站建设者)不同,Magento 2 是专门为认真的电子商务操作设计的,具有全面的功能,包括目录管理、购物车、支付网关集成、客户管理和高级报告。

Magento 2 社区版允许您免费开始,无需任何许可证成本。但是,由于其技术复杂性和广泛的 API 功能,它需要的服务器资源显著多于 WordPress。关键区别包括:

与 WordPress 的关键区别:

Magento 2 的最低服务器要求

在选择托管提供商之前,您必须了解 Magento 2 要求的服务器规范。这些要求基于官方 Magento 文档:

最低要求(开发/测试):

  • CPU: 最少 2 个核心(生产环境需要 4 个核心)
  • RAM: 最少 2GB(生产环境建议 4GB)
  • 存储: 安装加数据库需要 20GB(取决于产品数量可能需要更多)
  • PHP: PHP 8.1 或更高版本(强烈推荐 PHP 8.2、8.3)
  • 数据库: MySQL 8.0+ 或 MariaDB 10.4+
  • 搜索引擎: Elasticsearch 7.x 或 OpenSearch 1.x/2.x 用于目录搜索

推荐配置(生产 - 小到中等商店):

  • CPU: 4 个核心(Intel Xeon 或 AMD EPYC)
  • RAM: 8GB(高流量商店需要 16GB)
  • 存储: 最少 80GB SSD 用于操作系统、应用和数据库
  • PHP: PHP 8.2 或 8.3
  • 数据库: MariaDB 10.6 或 MySQL 8.0.35+
  • 缓存引擎: Redis 6.x 或更高版本
  • 搜索引擎: OpenSearch 2.x(比 Elasticsearch 更轻量更快)
  • Web 服务器: Nginx 1.20+(对 Magento 的性能优于 Apache)

关键:所有 Magento 2.4.0+ 版本都需要 Elasticsearch 或 OpenSearch 用于目录搜索。MySQL 单独已不再足够。在基础设施中计划这个专用搜索服务。

共享托管是否支持 Magento 或应该使用 VPS

明确答案:不要对生产 Magento 2 商店使用共享托管。虽然技术上可以在共享托管上安装 Magento,但您会遇到严重问题:

共享托管问题:

  • PHP 执行限制: 共享主机通常将 PHP memory_limit 限制为 64-256MB;Magento 需要 512MB-1GB
  • 超时问题: 执行时间限制导致 cron 作业和设置过程超时中断
  • 扩展限制: 提供商禁用 Magento 需要的 PHP 扩展
  • 性能糟糕: 您的商店运行速度缓慢,特别是在高流量下
  • 无法控制: 您无法安装 Redis、Varnish 或其他必要的优化工具
  • 安全风险: 账户之间的隔离不当造成漏洞

为什么 VPS 是正确选择:虚拟专用服务器提供:

  • 对服务器配置的完全控制
  • 不与其他用户共享的专用资源
  • 安装必要扩展和服务的能力
  • 用于服务器级定制的 Root 访问权限
  • 可扩展性 — 随着商店增长添加资源

使用 Linux VPS(CentOS 8、Ubuntu 22.04 LTS 或 AlmaLinux 9),配合托管控制面板(DirectAdmin、cPanel)或通过 SSH 的命令行管理。

在 Linux VPS 上分步安装 Magento 2

让我们逐步介绍在新的 Ubuntu 22.04 LTS VPS 上安装 Magento 2 社区版的过程:

步骤 1:系统准备

首先,更新系统包并安装必需的依赖项:

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget vim zip unzip git

步骤 2:安装 PHP 8.2 和所需的扩展

Magento 需要许多 PHP 扩展才能正常运行:

sudo apt install -y php8.2-fpm php8.2-cli php8.2-mysql php8.2-mbstring php8.2-curl php8.2-gd php8.2-intl php8.2-zip php8.2-bcmath php8.2-xml php8.2-json
sudo systemctl start php8.2-fpm
sudo systemctl enable php8.2-fpm

步骤 3:安装 Nginx Web 服务器

Nginx 对 Magento 的性能优于 Apache:

sudo apt install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx

步骤 4:安装 MariaDB

使用 MariaDB 代替 MySQL:

sudo apt install -y mariadb-server mariadb-client
sudo mysql_secure_installation
sudo systemctl start mariadb
sudo systemctl enable mariadb

步骤 5:为 Magento 创建数据库

mysql -u root -p
CREATE DATABASE magento;
CREATE USER 'magento'@'localhost' IDENTIFIED BY 'your_secure_password';
GRANT ALL PRIVILEGES ON magento.* TO 'magento'@'localhost';
FLUSH PRIVILEGES;
EXIT;

步骤 6:安装 Composer

Magento 使用 Composer 进行依赖管理:

cd /tmp
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer

步骤 7:下载并安装 Magento 2

设置网络目录并下载 Magento:

sudo mkdir -p /var/www/magento2
sudo chown -R www-data:www-data /var/www/magento2
cd /var/www/magento2

composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition .
系统会提示您使用 Magento Marketplace 账户凭证进行身份验证(account.magento.com)。

步骤 8:运行设置

执行 Magento 安装程序:

cd /var/www/magento2
bin/magento setup:install \
  --base-url=https://yourdomain.com \
  --db-host=localhost \
  --db-name=magento \
  --db-user=magento \
  --db-password='your_secure_password' \
  --admin-firstname=Admin \
  --admin-lastname=User \
  [email protected] \
  --admin-user=admin \
  --admin-password='YourSecureAdminPassword' \
  --language=en_US \
  --currency=USD \
  --timezone=America/Los_Angeles

步骤 9:设置目录权限

cd /var/www/magento2
find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;
find ./var -type d -exec chmod 777 {} \;
find ./pub/media -type d -exec chmod 777 {} \;
您的 Magento 安装现已准备就绪。

为 Magento 配置 Nginx + PHP-FPM + MariaDB

正确配置 Nginx、PHP-FPM 和 MariaDB 对 Magento 性能至关重要:

Magento 2 的 Nginx 配置

创建 Nginx 配置:

sudo nano /etc/nginx/sites-available/magento2
添加此配置:
upstream fastcgi_backend {
  server 127.0.0.1:9000;
}

server {
  listen 80;
  listen [::]:80;
  server_name yourdomain.com www.yourdomain.com;

  return 301 https://$server_name$request_uri;
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name yourdomain.com www.yourdomain.com;

  ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

  root /var/www/magento2;

  client_max_body_size 128m;

  location / {
    try_files $uri $uri/ /index.php?$args;
  }

  location /media {
    expires 7d;
    access_log off;
  }

  location /static {
    expires 7d;
    access_log off;
  }

  location ~ \.php$ {
    fastcgi_pass fastcgi_backend;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    fastcgi_read_timeout 300;
  }
}
启用配置:
sudo ln -s /etc/nginx/sites-available/magento2 /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

PHP-FPM 配置

优化 PHP-FPM 池:

sudo nano /etc/php/8.2/fpm/pool.d/www.conf
调整设置:
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 20
然后重启:
sudo systemctl restart php8.2-fpm

MariaDB 对 Magento 的配置

优化 MySQL 配置:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
添加/修改:
max_connections = 200
innodb_buffer_pool_size = 2G
innodb_flush_log_at_trx_commit = 2
query_cache_size = 128M
query_cache_type = 1
重启 MySQL:
sudo systemctl restart mariadb

性能优化:Redis/Varnish/全页面缓存

由于资源密集性,Magento 需要复杂的缓存。实现三个缓存层:

1. Redis 用于会话和缓存存储

Redis 将 Magento 会话和缓存存储在内存中,比磁盘快得多。安装 Redis:

sudo apt install -y redis-server
sudo systemctl start redis-server
sudo systemctl enable redis-server
配置 Magento 使用 Redis:
cd /var/www/magento2
bin/magento config:set system/full_page_cache/caching_application 3
bin/magento config:set --scope=default --scope-id=0 system/full_page_cache/redis/server 127.0.0.1
bin/magento config:set --scope=default --scope-id=0 system/full_page_cache/redis/port 6379

2. Varnish 用于全页面缓存

Varnish 是一个 HTTP 加速器,缓存整个 HTML 页面,使您的商店速度大幅提升:

sudo apt install -y varnish

# 然后配置 Magento
bin/magento config:set --scope=default --scope-id=0 system/full_page_cache/caching_application 2

3. 定期清除缓存

更新配置时清除缓存:

bin/magento cache:clean

配置了 Redis 和 Varnish 后,即使是具有 10,000+ 产品的 Magento 商店也能平稳处理数千个并发访问者。

服务器上的 Magento 安全加固

在处理客户支付和个人数据时,安全至关重要:

1. HTTPS 和 SSL 证书

使用 Let's Encrypt 安装免费 SSL:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot certonly --nginx -d yourdomain.com
sudo certbot renew --dry-run
更新 Nginx 以强制 HTTPS 并添加 HSTS:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

2. 防火墙配置

设置 UFW 防火墙:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

3. PHP 配置加固

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

# 设置:
expose_php = Off
disable_functions = exec,passthru,shell_exec,system,proc_open
upload_max_filesize = 256M
post_max_size = 256M

4. Magento 管理员安全

更改管理员 URL:

cd /var/www/magento2
bin/magento setup:config:set --backend-frontname=my_custom_admin_url
为所有管理员用户启用双因素认证。

5. 限制文件访问

通过 Nginx 阻止访问敏感目录:

location ~ ^/(\.well-known|\.git|\.gitignore|\.htaccess|\.php_cs|\.php_cs.dist|\.htpasswd)/ {
  deny all;
}

location ~ ^/var {
  deny all;
}

location ~ ^/app {
  deny all;
}

备份和灾难恢复

对于处理客户数据和交易的电子商务商店,全面的备份策略至关重要:

自动数据库备份

创建备份脚本:

#!/bin/bash
BACKUP_DIR="/backups/magento"
DB_NAME="magento"
DB_USER="magento"
DB_PASS="your_password"
DATE=$(date +%Y-%m-%d_%H-%M-%S)

mkdir -p $BACKUP_DIR

mysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/magento-$DATE.sql.gz

# 仅保留 30 天的备份
find $BACKUP_DIR -name "*.gz" -mtime +30 -delete

echo "Backup completed: magento-$DATE.sql.gz"
使用 cron 进行调度:
0 2 * * * /path/to/backup-script.sh

文件系统备份

将媒体目录同步到远程存储:

rsync -avz --delete /var/www/magento2/pub/media/ remote_server:/backups/magento-media/

完整服务器备份

使用云备份服务(如 Acronis、Carbonite)或自托管 Bacula 进行完整系统备份,包括所有配置和数据。

将 Magento 商店迁移到新服务器

您可能需要将 Magento 迁移到新服务器以进行升级或更改主机。以下是该过程:

步骤 1:备份旧商店

在旧服务器上:

cd /var/www/magento2

# 备份数据库
mysqldump -u magento -p'your_password' magento > /tmp/magento-backup.sql

# 备份文件
tar -czf /tmp/magento-files.tar.gz /var/www/magento2/
将备份文件下载到您的计算机。

步骤 2:设置新服务器

如上所述在新服务器上配置 Nginx、PHP-FPM 和 MariaDB。

步骤 3:恢复数据库和文件

cd /var/www/magento2

# 将备份文件上传到新服务器,然后:

# 恢复数据库
mysql -u magento -p'your_password' magento < /tmp/magento-backup.sql

# 恢复文件
tar -xzf /tmp/magento-files.tar.gz -C /

步骤 4:更新配置

更新数据库中的基础 URL:

mysql -u magento -p'your_password' magento
UPDATE core_config_data SET value='https://newdomain.com/' WHERE path LIKE 'web/secure/base_url';
UPDATE core_config_data SET value='https://newdomain.com/' WHERE path LIKE 'web/unsecure/base_url';
EXIT;

步骤 5:清除缓存并重新编译

cd /var/www/magento2
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento setup:static-content:deploy -f
bin/magento cache:clean

步骤 6:测试和验证

验证:

  • 店面正确加载和功能
  • 管理面板可访问
  • 支付网关集成有效
  • 电子邮件通知正确发送

常见问题

Magento 2 需要什么类型的托管 - 共享或 VPS?
Magento 2 需要 VPS(虚拟专用服务器)或云服务器才能实现可接受的性能。共享托管由于资源限制、无法自定义服务器配置和性能不佳而不适合。
Magento 的确切服务器规范是什么
最低:2-4 个 CPU 核心、4GB RAM、20GB+ 存储。对于生产:4 个 CPU 核心、8-16GB RAM、80GB+ SSD 存储,外加 Redis 和 Elasticsearch/OpenSearch 以获得完整功能。
Redis 对于 Magento 是必需的吗
Redis 不是必需的,但强烈推荐。虽然 Magento 具有基于文件的缓存回退,但 Redis 显着改进缓存性能,即使对于小型商店也值得投资。
在我的服务器上存储支付卡数据是否安全
不。永远不要存储卡数据。使用符合 PCI 规范的支付网关,如 Stripe、PayPal 或 Authorize.net。Magento 的支付模块可以安全地处理集成,而无需在服务器上存储敏感的支付信息。