[內部部署]{class="badge informative" title="僅適用於Adobe Commerce內部部署專案。"}

安裝Nginx以供內部部署使用 nginx

本指南會逐步引導您安裝適用於Adobe Commerce內部部署的Nginx,以及設定Commerce所需的Nginx設定。 它包括Ubuntu和CentOS的作業系統特定程式,以及設定PHP-FPM的指南。 Adobe建議遵循本指南中提供的設定指示,以保留Commerce應用程式的功能與安全性。

Adobe支援Adobe Commerce發行版本之系統需求中列出的Nginx版本。 支援的版本因發行版本而異。 Nginx也需要支援的PHP-FPM組態。 如需相關的PHP需求,請參閱PHP

安裝在Ubuntu上

使用本節在Ubuntu上安裝Adobe Commerce搭配Nginx、PHP和MySQL。

安裝Nginx

sudo apt -y install nginx

您也可以從來源建置Nginx。

完成下列章節並安裝應用程式之後,請使用範例組態檔來設定Nginx。 此建議的設定同時保留Commerce應用程式的功能與安全性。

安裝和配置PHP-FPM

Adobe Commerce需要多個PHP擴充功能才能正常運作。 除了這些擴充功能之外,如果您使用Nginx,您也必須安裝並設定php-fpm擴充功能。

若要安裝和設定php-fpm

  1. 安裝Adobe Commerce發行版本支援的PHP版本的php-fpmphp-cli套件。 在Ubuntu上,套件名稱通常遵循以下模式:

    code language-bash
    apt-get -y install php<php-version>-fpm php<php-version>-cli
    
    note note
    NOTE
    <php-version>取代為您正在安裝的Adobe Commerce發行版本的系統需求中所列出的支援PHP次要版本。 在下列步驟中,在檔案路徑、服務名稱和通訊端路徑中使用相同的值。
  2. 在編輯器中開啟php.ini檔案:

    code language-bash
    vim /etc/php/<php-version>/fpm/php.ini
    
    code language-bash
    vim /etc/php/<php-version>/cli/php.ini
    
  3. 編輯這兩個檔案以符合以下行:

    code language-conf
    memory_limit = 2G
    max_execution_time = 1800
    zlib.output_compression = On
    
    note note
    NOTE
    Adobe建議在測試Adobe Commerce時將記憶體限制設為2 GB。 如需詳細資訊,請參閱必要的PHP設定
  4. 儲存並退出編輯器。

  5. 重新啟動php-fpm服務:

    code language-bash
    systemctl restart php<php-version>-fpm
    

安裝及設定MySQL

如需詳細資訊,請參閱MySQL

安裝Adobe Commerce

您可以透過數種方式下載Adobe Commerce:

此範例顯示使用命令列的Composer型安裝。

  1. 檔案系統擁有者的身分,登入您的應用程式伺服器。

  2. 變更至Web伺服器docroot目錄,或您設定為虛擬主機docroot的目錄。 在此範例中,我們使用Ubuntu預設值/var/www/html

    code language-bash
    cd /var/www/html
    
  3. 全域安裝撰寫器。 安裝Adobe Commerce之前需要撰寫器更新相依性:

    code language-bash
    curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer
    
  4. 使用Adobe Commerce中繼資料建立撰寫器專案。

    Magento Open Source

    code language-bash
    composer create-project --repository=https://repo.magento.com/ magento/project-community-edition <install-directory-name>
    

    Adobe Commerce

    code language-bash
    composer create-project --repository=https://repo.magento.com/ magento/project-enterprise-edition <install-directory-name>
    

    出現提示時,請輸入您的驗證金鑰。 您的​ 公開金鑰 ​是您的使用者名稱;私密金鑰​是您的密碼。

  5. 安裝應用程式之前,請先設定網頁伺服器群組的讀寫許可權。 這是必要的,以便命令列可以將檔案寫入檔案系統。

    code language-bash
    cd /var/www/html/<magento install directory>
    
    code language-bash
    find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
    
    code language-bash
    find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
    
    code language-bash
    chown -R :www-data . # Ubuntu
    
    code language-bash
    chmod u+x bin/magento
    
  6. 命令列安裝。 此範例假設安裝目錄名為magento2ee,且資料庫主機位於相同電腦(localhost):

    code language-bash
    bin/magento setup:install \
    --base-url=http://localhost/magento2ee \
    --db-host=localhost \
    --db-name=<db-name> \
    --db-user=<db-user> \
    --db-password=<db-password> \
    --backend-frontname=<backend-uri> \
    --admin-firstname=<admin-first-name> \
    --admin-lastname=<admin-last-name> \
    --admin-email=<admin-email> \
    --admin-user=<admin-user> \
    --admin-password=<admin-password> \
    --language=en_US \
    --currency=USD \
    --timezone=America/Chicago \
    --use-rewrites=1 \
    --search-engine=<search-engine-value> \
    --<search-engine-host-parameter>=search-host.example.com \
    --<search-engine-port-parameter>=9200
    
    note note
    NOTE
    使用您正在安裝的Adobe Commerce發行版本所需的--search-engine值和相符的主機/連線埠選項。 若是2.4.6之前的版本,請搭配使用elasticsearch7與Elasticsearch 7或OpenSearch的--elasticsearch-*選項。 若是2.4.6版或更新版本,請使用該版本支援的搜尋引擎值和對應的CLI選項。
  7. 切換到開發人員模式:

    code language-bash
    cd /var/www/html/magento2/bin
    
    code language-bash
    ./magento deploy:mode:set developer
    

設定Nginx

Adobe建議使用安裝目錄中提供的nginx.conf.sample設定檔和您的Nginx虛擬主機設定,以保留Commerce應用程式的功能與安全性。

IMPORTANT
nginx.conf.sample檔案提供必要的應用程式路由以及安全性強化規則。 例如,它會限制執行上傳至伺服器的有害指令碼。 如果您未使用此檔案或修改其規則,則您有責任在您的自訂nginx設定中實作相同的安全性控制項。

這些指示假設您正在使用Nginx虛擬主機的Ubuntu預設位置(例如/etc/nginx/sites-available)和Ubuntu預設docroot (例如/var/www/html)。 您可以變更這些位置以符合您的環境。

  1. 為您的網站建立新的虛擬主機:

    code language-bash
    vim /etc/nginx/sites-available/magento
    
  2. 新增下列設定:

    code language-conf
    upstream fastcgi_backend {
      server  unix:/run/php/php<php-version>-fpm.sock;
    }
    
    server {
    
      listen 80;
      server_name www.magento-dev.com;
      set $MAGE_ROOT /var/www/html/magento2;
      include /var/www/html/magento2/nginx.conf.sample;
    }
    
    note note
    NOTE
    include指示詞必須指向安裝目錄中的範例nginx組態檔。
  3. www.magento-dev.com取代為您的網域名稱。 這必須符合您在安裝Adobe Commerce時指定的基底URL。

  4. 儲存並退出編輯器。

  5. /etc/nginx/sites-enabled目錄中建立新建立的虛擬主機的symlink以啟動它:

    code language-bash
    ln -s /etc/nginx/sites-available/magento /etc/nginx/sites-enabled
    
  6. 請確認語法正確:

    code language-bash
    nginx -t
    
  7. 重新啟動Nginx:

    code language-bash
    systemctl restart nginx
    

驗證安裝

若要驗證安裝,請開啟網頁瀏覽器,並導覽至您網站的基底URL。 如需詳細資訊,請參閱驗證安裝

在CentOS 7上安裝

使用本節將Adobe Commerce安裝在具有Nginx、PHP和MySQL的CentOS 7上。

安裝Nginx

yum -y install epel-release
yum -y install nginx

安裝完成後,請啟動nginx並將它設定為在開機時啟動:

systemctl start nginx
systemctl enable nginx

完成下列各節並安裝應用程式後,請使用範例組態檔來設定Nginx。

安裝和配置PHP-FPM

Adobe Commerce需要多個PHP擴充功能才能正常運作。 除了這些擴充功能之外,如果您使用Nginx,您也必須安裝並設定php-fpm擴充功能。

  1. 安裝php-fpm

    code language-bash
    yum -y install <php-fpm-package>
    
  2. 在編輯器中開啟/etc/php.ini檔案。

    note note
    NOTE
    安裝為要安裝的Adobe Commerce發行版本所支援的PHP版本提供php-fpm的套件。 套件名稱會因存放庫和作業系統而異。 請參閱系統需求
  3. 取消註解cgi.fix_pathinfo行並將值變更為0

  4. 編輯檔案以符合下列各行:

    code language-conf
    memory_limit = 2G
    max_execution_time = 1800
    zlib.output_compression = On
    
    note note
    NOTE
    Adobe建議在測試Adobe Commerce時將記憶體限制設為2 GB。 如需詳細資訊,請參閱必要的PHP設定
  5. 取消註解工作階段路徑目錄並設定路徑:

    code language-conf
    session.save_path = "/var/lib/php/session"
    
  6. 儲存並退出編輯器。

  7. 在編輯器中開啟/etc/php-fpm.d/www.conf

  8. 編輯檔案以符合下列各行:

    code language-conf
    user = nginx
    group = nginx
    listen = /run/php-fpm/php-fpm.sock
    listen.owner = nginx
    listen.group = nginx
    listen.mode = 0660
    
  9. 取消環境行的註解:

    code language-conf
    env[HOSTNAME] = $HOSTNAME
    env[PATH] = /usr/local/bin:/usr/bin:/bin
    env[TMP] = /tmp
    env[TMPDIR] = /tmp
    env[TEMP] = /tmp
    
  10. 儲存並退出編輯器。

  11. 為PHP工作階段路徑建立目錄,並將擁有者變更為nginx使用者和群組:

    code language-bash
    mkdir -p /var/lib/php/session/
    
    code language-bash
    chown -R nginx:nginx /var/lib/php/
    
  12. 為PHP-FPM通訊端建立目錄,並將擁有者變更為nginx使用者和群組:

    code language-bash
    mkdir -p /run/php-fpm/
    
    code language-bash
    chown -R nginx:nginx /run/php-fpm/
    
  13. 啟動php-fpm服務,並將它設定為在開機時啟動:

    code language-bash
    systemctl start php-fpm
    
    code language-bash
    systemctl enable php-fpm
    
  14. 驗證php-fpm服務是否正在執行:

    code language-bash
    netstat -pl | grep php-fpm.sock
    

安裝及設定MySQL

如需詳細資訊,請參閱MySQL

安裝Adobe Commerce

您可以透過數種方式下載Adobe Commerce:

此範例顯示使用命令列的Composer型安裝。

  1. 檔案系統擁有者的身分,登入您的應用程式伺服器。

  2. 變更至Web伺服器docroot目錄,或您設定為虛擬主機docroot的目錄。 在此範例中,使用CentOS預設值/usr/share/nginx/html

    code language-bash
    cd /usr/share/nginx/html
    
  3. 全域安裝撰寫器。 安裝Adobe Commerce之前需要撰寫器更新相依性:

    code language-bash
    curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer
    
  4. 使用Adobe Commerce中繼資料建立撰寫器專案。

    Magento Open Source

    code language-bash
    composer create-project --repository=https://repo.magento.com/ magento/project-community-edition <install-directory-name>
    

    Adobe Commerce

    code language-bash
    composer create-project --repository=https://repo.magento.com/ magento/project-enterprise-edition <install-directory-name>
    

    出現提示時,請輸入您的驗證金鑰。 您的​ 公開金鑰 ​是您的使用者名稱;私密金鑰​是您的密碼。

  5. 安裝應用程式之前,請先設定網頁伺服器群組的讀寫許可權。 這是必要的,以便命令列可以將檔案寫入檔案系統。

    code language-bash
    cd /usr/share/nginx/html/<magento install directory>
    
    code language-bash
    find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
    
    code language-bash
    find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
    
    code language-bash
    chown -R :nginx . # CentOS
    
    code language-bash
    chmod u+x bin/magento
    
  6. 命令列安裝。 此範例假設安裝目錄名為magento2ee,且資料庫主機位於相同電腦(localhost):

    code language-bash
    bin/magento setup:install \
    --base-url=http://localhost/magento2ee \
    --db-host=localhost \
    --db-name=<db-name> \
    --db-user=<db-user> \
    --db-password=<db-password> \
    --backend-frontname=<backend-uri> \
    --admin-firstname=<admin-first-name> \
    --admin-lastname=<admin-last-name> \
    --admin-email=<admin-email> \
    --admin-user=<admin-user> \
    --admin-password=<admin-password> \
    --language=en_US \
    --currency=USD \
    --timezone=America/Chicago \
    --use-rewrites=1
    
  7. 切換到開發人員模式:

    code language-bash
    cd /usr/share/nginx/html/magento2/bin
    
    code language-bash
    ./magento deploy:mode:set developer
    

設定Nginx

我們建議使用安裝目錄中的nginx.conf.sample檔案以及您的Nginx虛擬主機組態來設定Nginx。

IMPORTANT
nginx.conf.sample檔案提供必要的應用程式路由以及安全性強化規則。 例如,它會限制執行上傳至伺服器的有害指令碼。 如果您未使用此檔案或修改其規則,則您有責任在您的自訂nginx設定中實作相同的安全性控制項。

這些指示假設您正在使用Nginx虛擬主機的CentOS預設位置,例如/etc/nginx/conf.d,以及預設docroot,例如/usr/share/nginx/html。 您可以變更這些位置以符合您的環境。

  1. 為您的網站建立新的虛擬主機:

    code language-bash
    vim /etc/nginx/conf.d/magento.conf
    
  2. 新增下列設定:

    code language-conf
    upstream fastcgi_backend {
      server  unix:/run/php-fpm/php-fpm.sock;
    }
    
    server {
    
      listen 80;
      server_name www.magento-dev.com;
      set $MAGE_ROOT /usr/share/nginx/html/magento2;
      include /usr/share/nginx/html/magento2/nginx.conf.sample;
    }
    
    note note
    NOTE
    include指示詞必須指向安裝目錄中的範例nginx組態檔。
  3. www.magento-dev.com取代為您的網域名稱。

  4. 儲存並退出編輯器。

  5. 請確認語法正確:

    code language-bash
    nginx -t
    
  6. 重新啟動Nginx:

    code language-bash
    systemctl restart nginx
    

設定SELinux和firewalld

CentOS 7預設啟用SELinux。 使用以下命令確認它正在執行:

sestatus

若要設定SELinux與firewald:

  1. 安裝SELinux管理工具:

    code language-bash
    yum -y install policycoreutils-python
    
  2. 執行以下命令來變更安裝目錄的安全性內容:

    code language-bash
    semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/magento2/app/etc(/.*)?'
    
    code language-bash
    semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/magento2/var(/.*)?'
    
    code language-bash
    semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/magento2/pub/media(/.*)?'
    
    code language-bash
    semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/magento2/pub/static(/.*)?'
    
    code language-bash
    restorecon -Rv '/usr/share/nginx/html/magento2/'
    
  3. 安裝防火牆套件:

    code language-bash
    yum -y install firewalld
    
  4. 啟動防火牆服務,並將它設定為在開機時啟動:

    code language-bash
    systemctl start firewalld
    
    code language-bash
    systemctl enable firewalld
    
  5. 執行以下命令來開啟HTTP和HTTPS的連線埠,以便您可以從網頁瀏覽器存取基本URL:

    code language-bash
    firewall-cmd --permanent --add-service=http
    
    code language-bash
    firewall-cmd --permanent --add-service=https
    
    code language-bash
    firewall-cmd --reload
    

驗證安裝

若要驗證安裝,請開啟網頁瀏覽器,並導覽至您網站的基底URL。 如需詳細資訊,請參閱驗證安裝

recommendation-more-help
0f8e7db5-0e9c-4002-a5b8-a0088077d995