如何在Ubuntu 18.04上安装Magento 2

在本教程中,我们将向您展示如何在Ubuntu 18.04计算机上安装Magento 2.3。我们将使用Nginx作为网络服务器,使用最新的PHP 7.2和MySQL/MariaDB作为数据库服务器。

10 min read
By myfreax
如何在Ubuntu 18.04上安装Magento 2

Magento 是领先的企业级电子商务平台,建立在开源技术之上,结合了强大的功能,灵活性和友好的用户界面。

具有吸引购物体验,灵活的模块化体系结构以及企业级可伸缩性和性能等功能,Magento是大多数在线商家的首选平台。

在本教程中,我们将向您展示如何在Ubuntu 18.04计算机上安装Magento 2.3。我们将使用Nginx作为网络服务器,使用最新的PHP 7.2和MySQL/MariaDB作为数据库服务器。

先决条件

在继续本教程之前,请确保满足以下先决条件:

  • 拥有一个指向您的公共服务器IP的域名。我们将按照这些说明
  • 为您的域安装的SSL证书,将example.com
  • Nginx安装在Ubuntu服务器上,以加密用户信息。您可以按照这些说明

安装免费的Let's Encrypt SSL证书。

要访问Magento 2代码存储库,您需要生成身份验证密钥。如果您没有Magento Marketplace帐户,则可以在此处创建一个。创建帐户后,请查看这些说明,以了解如何生成一组新的身份验证密钥。

将系统软件包更新为最新版本,并安装 unzip实用程序

sudo apt update && sudo apt upgrade
sudo apt install unzip

创建MySQL数据库

如果您的服务器上安装了 MySQL MariaDB ,则可以跳过此步骤,如果没有,则可以通过键入以下内容从Ubuntu的默认存储库中安装MySQL 5.7服务器软件包:

sudo apt install mysql-server mysql-client

对于全新安装的MySQL,建议运行mysql_secure_installation命令以提高MySQL服务器的安全性。

使用以下命令登录到MySQL Shell:

sudo mysql

在MySQL Shell中,运行以下SQL语句以创建一个名为magento的新数据库

CREATE DATABASE magento;

接下来,通过运行以下命令,创建名为magento的MySQL用户帐户,以授予用户必要的权限

GRANT ALL ON magento.* TO 'magento'@'localhost' IDENTIFIED BY 'change-with-strong-password';

请确保您使用强密码更改了change-with-strong-password

完成后,通过键入以下内容退出MySQL控制台:

EXIT;

创建系统用户

创建一个新用户和一个组,它们将是Magento文件系统所有者,为简单起见,我们将用户命名为magento

sudo useradd -m -U -r -d /opt/magento magento

www-data用户添加到magento组,然后更改/opt/magento目录权限,以便Nginx可以访问Magento安装:

sudo usermod -a -G magento www-data
sudo chmod 750 /opt/magento

安装和配置PHP

PHP 7.2 是Ubuntu 18.04中的默认PHP版本,完全受Magento 2.3支持,并建议使用。由于我们将Nginx用作网络服务器,因此我们还将安装PHP-FPM软件包。

运行以下命令来安装PHP和所有必需的PHP模块:

sudo apt install php7.2-common php7.2-cli php7.2-fpm php7.2-opcache php7.2-gd php7.2-mysql php7.2-curl php7.2-intl php7.2-xsl php7.2-mbstring php7.2-zip php7.2-bcmath php7.2-soap

PHP-FPM服务将在安装过程完成后自动启动,您可以通过打印服务状态进行验证:

sudo systemctl status php7.2-fpm

输出应指示fpm服务处于活动状态并且正在运行。

● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2018-12-12 15:47:16 UTC; 5s ago
     Docs: man:php-fpm7.2(8)
 Main PID: 16814 (php-fpm7.2)
   Status: "Ready to handle connections"
    Tasks: 3 (limit: 505)
   CGroup: /system.slice/php7.2-fpm.service

通过使用 sed ::

编辑php.ini文件来设置必需和推荐的PHP选项。

sudo sed -i "s/memory_limit = .*/memory_limit = 1024M/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 256M/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/zlib.output_compression = .*/zlib.output_compression = on/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/max_execution_time = .*/max_execution_time = 18000/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/;opcache.save_comments.*/opcache.save_comments = 1/" /etc/php/7.2/fpm/php.ini

接下来,我们需要为magento用户创建一个FPM池。

打开您的文本编辑器,然后创建以下文件:

sudo nano /etc/php/7.2/fpm/pool.d/magento.conf

/etc/php/7.2/fpm/pool.d/magento.conf

[magento]
user = magento
group = www-data
listen.owner = magento
listen.group = www-data
listen = /var/run/php/php7.2-fpm-magento.sock
pm = ondemand
pm.max_children =  50
pm.process_idle_timeout = 10s
pm.max_requests = 500
chdir = /

重新启动PHP-FPM服务以使更改生效:

systemctl restart php7.2-fpm

通过运行以下 ls命令,验证是否成功创建了PHP套接字:

ls -al /var/run/php/php7.2-fpm-magento.sock

输出应如下所示:

srw-rw---- 1 magento www-data 0 Dec 12 16:07 /var/run/php/php7.2-fpm-magento.sock=

安装Composer

Composer是PHP的依赖项管理器,我们将使用它来下载Magento核心并安装所有必要的Magento组件。

要在全局安装composer ,请使用 curl 下载Composer安装程序,然后将文件移至/usr/local/bin目录:

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

通过打印Composer版本来验证安装:

composer --version

输出应如下所示:

Composer version 1.8.0 2018-12-03 10:31:16

安装Magento

有几种安装Magento 2的方法。避免从Github存储库安装Magento,因为该版本用于开发而不是用于生产安装。

在撰写本文时,Magento的最新稳定版本是2.3.0版本。在本教程中,我们将使用composer从其存储库中安装Magento。

通过键入:

sudo su - magento

切换到用户magento

将magento文件下载到/opt/magento/public_html目录来开始安装:

composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition /opt/magento/public_html

系统将提示您输入访问密钥,从您的Magento市场帐户复制密钥,并将其存储在auth.json文件中,因此稍后在更新安装时,无需再次添加相同的密钥。

    Authentication required (repo.magento.com):
      Username: e758ec1745d190320ca246e4e832e12c
      Password: 
Do you want to store credentials for repo.magento.com in /opt/magento/.config/composer/auth.json ? [Yn] Y

上面的命令将获取所有必需的PHP软件包。该过程可能需要几分钟,如果成功,则输出结束应类似于以下内容:

Writing lock file
Generating autoload files

创建项目后,我们可以开始Magento安装。我们可以从命令行或使用Web设置向导来安装Magento。在本教程中,我们将使用命令行安装Magento。

我们将使用以下选项安装Magento商店:

  • 基本和基本安全URL设置为https://example.com,用您的域进行更改。
  • Magento管理员:
  • John Doe作为名字和姓氏。
  • john@example.com作为电子邮件。
  • john作为用户名和j0hnP4ssvv0rD作为密码。
  • 数据库名称magento,用户名magento,密码change-with-strong-password和数据库服务器与Web服务器位于同一主机上。
  • en_US,美国英语为默认语言。
  • USD美元作为默认货币。
  • America/Chicago作为时区。

您可以在此处中找到所有安装选项。

更改到Magento ~/public_html目录:

cd ~/public_html

运行以下命令以开始安装:

php bin/magento setup:install --base-url=https://example.com/ \
        --base-url-secure=https://example.com/ \
        --admin-firstname="John" \
        --admin-lastname="Doe" \
        --admin-email="john@example.com" \
        --admin-user="john" \
        --admin-password="j0hnP4ssvv0rD" \
        --db-name="magento" \
        --db-host="localhost" \
        --db-user="magento" \
        --currency=USD \
        --timezone=America/Chicago \
        --use-rewrites=1 \
        --db-password="change-with-strong-password"

不要忘记将密码(j0hnP4ssvv0rD)更改为更安全的密码。

此过程可能需要几分钟,一旦完成,您将看到一条消息,其中包含Magento管理控制台的URI。

[Progress: 773 / 773]
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_13nv5k
Nothing to import.

创建Magento crontab

Magento使用Cron作业安排诸如重新编制索引,通知,站点地图,电子邮件等任务。

要创建Magento crontab,请以magento用户身份运行以下命令:

php ~/public_html/bin/magento cron:install
Crontab has been generated and saved

通过键入以下内容验证是否已安装crontab:

crontab -l
#~ MAGENTO START adc062915d7b30804a2b340095af072d
* * * * * /usr/bin/php7.2 /opt/magento/public_html/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /opt/magento/public_html/var/log/magento.cron.log
* * * * * /usr/bin/php7.2 /opt/magento/public_html/update/cron.php >> /opt/magento/public_html/var/log/update.cron.log
* * * * * /usr/bin/php7.2 /opt/magento/public_html/bin/magento setup:cron:run >> /opt/magento/public_html/var/log/setup.cron.log
#~ MAGENTO END adc062915d7b30804a2b340095af072d

配置Nginx

到现在,如果不检查本教程的先决条件,则应该已经在Ubuntu服务器上安装了带有SSL证书的Nginx。

我们将包含Magento随附的默认Nginx配置。

切换到您的sudo用户,打开您的文本编辑器并创建以下文件:

sudo nano /etc/nginx/sites-available/example.com

/etc/nginx/sites-available/example.com

upstream fastcgi_backend {
  server   unix:/var/run/php/php7.2-fpm-magento.sock;
}

server {
    listen 80;
    server_name example.com www.example.com;

    include snippets/letsencrypt.conf;
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    set $MAGE_ROOT /opt/magento/public_html;
    set $MAGE_MODE developer; # or production

    access_log /var/log/nginx/example.com-access.log;
    error_log /var/log/nginx/example.com-error.log;

    include /opt/magento/public_html/nginx.conf.sample;
}

请不要忘记用您的Magento域替换example.com,并为SSL证书文件设置正确的路径。此配置中使用的代码段是在本指南的 中创建的。

重新启动Nginx服务之前,请进行测试以确保没有语法错误:

sudo nginx -t

如果没有错误,则输出应如下所示:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

最后,通过输入以下内容,重新启动Nginx服务

sudo systemctl restart nginx

验证安装

打开浏览器,键入您的域,并假设安装成功,将出现类似于以下的屏幕:

您现在可以转到Magento管理员URI,以管理员用户身份登录并开始自定义新的Magento安装。

结论

恭喜,您已经在Ubuntu 18.04服务器上成功安装了Magento 2.3。您现在可以开始自定义商店了。

Magento 2.3开发人员文档是学习更多有关如何管理Magento安装的好起点。

如果您有任何疑问,请在下面发表评论。