如何使用 Composer 安裝 WordPress:分步安裝指南
已發表: 2023-02-28簡介:為什麼要使用 Composer base WordPress?
與任何其他應用程序一樣,當您可以確保代碼及其依賴項的可重複構建和可提交更新時,您的 WordPress 站點是最安全的。 您的基礎架構通過一組配置文件提交,這些配置文件指定您要使用的 PHP 和 MariaDB 版本。 這是確保您的項目在開發新功能時保持可重現性的最佳方式。
WordPress 核心,加上它的主題和插件,理想情況下應該以相同的方式工作,但通常情況並非如此。 WordPress 管理面板提供一鍵式按鈕,可在所有這些組件過時或以其他方式希望對文件系統進行寫入訪問以在運行時進行配置更改時更新所有這些組件。 然而,以這種方式發展是有其後果的。
首先,您並不總是在運行時對文件系統具有寫訪問權。 因此,依賴於這種更新和配置更改的機制對於許多託管解決方案來說是完全受限的。 另一方面,如果您在當前託管的運行時確實具有寫訪問權限,則安裝新模塊或主題會帶來不小的安全風險(當來源未知時)。
但是,也許最重要的是,在運行時更新 WordPress 可以將站點狀態與存儲庫中的代碼分離。 一位同事在他們的項目的本地克隆上開發新功能很可能是實時站點背後的完整版本。 作為此工作流程的結果,您可能會引入具有未知(和未經測試)後果的錯誤。
使用 Composer 的優勢
鑑於上述事實,使用 Composer 管理您的 WordPress 站點具有明顯的優勢。 首先,它允許您在提交的文件 (composer.lock) 中明確定義您的依賴項。 這個鎖定文件是在安裝依賴項時從更具描述性的依賴項約束列表 (composer.json) 生成的,並且它成為項目提交歷史記錄的一部分。 從那時起,任何新分支都將從相同的依賴項集合開始工作,直到精確的提交哈希。 在這一點上,誰為項目做出貢獻甚至部署在哪裡都無關緊要——它對任何地方的每個人都是相同的代碼。
Composer 還消除了將大量外部代碼提交到您的存儲庫的需要。 對於 WordPress,不使用 Composer 通常需要您將主題的所有代碼,甚至是 WordPress 核心和插件本身的所有代碼提交到您自己的項目中。 除了使存儲庫變得不必要的大和克隆速度變慢之外,更新這些副本成為一種雜耍行為,沒有人需要處理。
使用 Composer,您可以向項目添加和更新依賴項,然後鎖定它們的確切版本,以便每個新分支都獲得相同的更新。 如果更新是在運行時在已部署的站點上執行的,您將必須記住先進行 git pull。
使用 Composer 安裝 WordPress 核心
同樣,使用 Composer 使您不必將所有 WordPress 提交到您的存儲庫,因為您可以將其添加為依賴項。 有幾種方法可以做到這一點(比如 Bedrock),這取決於你想為你的配置和項目結構做出多少假設。 最簡單的方法是使用 John Bloch Composer fork 將安裝程序添加到您的 WordPress 構建中:
$ composer 需要 johnpbloch/wordpress-core-installer $ composer 需要 johnpbloch/wordpress-core
上面的命令將創建一個 composer.json 文件並在 WordPress 目錄中安裝 WordPress 核心。 composer.json 看起來像這樣
{ “要求”: { "johnpbloch/wordpress-core-installer": "^2.0", “johnpbloch/wordpress-core”:“^6.1” }, “配置”:{ “允許插件”:{ "johnpbloch/wordpress-core-installer": true } } }
我們在 WordPress 文件夾中有 WordPress 核心。 但是我們需要將 index.php 複製到 WordPress 目錄之外,以便我們可以將 Web 服務器指向根目錄。
要使用 Composer 完全管理 WordPress ,我們需要為 wp-content 使用不同的目錄,而不是默認目錄 WordPress/wp-content。
讓我們在項目的根目錄中創建一個名為 wp-content 的新目錄。
從 WordPress 文件夾中復制 index.php 一次。 我們需要更改我們的 WordPress 目錄所在的 wp-blog-header.php 文件的位置。
更改後,index.php 將如下所示
<?php 定義('WP_USE_THEMES',真); 要求(目錄名(__FILE__)。'/wordpress/wp-blog-header.php');
我們需要在根目錄中創建一個 .htaccess 文件,內容如下:
# 開始 WordPress <IfModule mod_rewrite.c> 重寫引擎開啟 重寫基礎 / 重寫規則 ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d 重寫規則。 /index.php [L] </IfModule> # 結束 WordPress
讓我們繼續複製示例 wp-config.php 文件,然後添加以下代碼:
$domain = 'mydomain.com; define('WP_SITEURL', "https://{$domain}/wordpress"); define('WP_HOME',"https://{$domain}"); $httpHost = isset($_SERVER['HTTPS_HOST']) ? $_SERVER['HTTPS_HOST'] : $域名; define( 'WP_CONTENT_DIR', dirname( __FILE__ ) . '/wp-content' ); define( 'WP_CONTENT_URL', 'https://' . $httpHost . '/wp-content' ); /** WordPress 目錄的絕對路徑。 */ 如果 ( !defined('ABSPATH') ) { define('ABSPATH', dirname(__FILE__) . '/wordpress'); }
我們在 ABSPATH 中添加了 WordPress,因為 WordPress 核心位於 /WordPress
由於 wp-config.php 文件包含敏感數據; 我們不會通過創建 .gitignore 文件將其提交到我們的存儲庫:
/wp-config.php /WordPress/ /wp-內容/ /小販/
WordPress、wp-content 和 vendor 目錄也需要被忽略,以便我們將它們也添加到 .gitignore 文件中。
注意:如果您想為 wp-content 添加不同的命名約定,則需要更改 wp-content 目錄。
我們的項目根目錄應該是這樣的
.git .gitignore 作曲家鎖 作曲家.json 小販 wp-config.php 索引.php WordPress的
您需要創建一個數據庫並更改 wp-config.php 中的詳細信息。 您的 WordPress 網站將被稱為“mydomain.com”,WordPress 後端將可通過 mydomain.com/wordpress/wp-admin 訪問

從 WordPress 存儲庫添加插件和主題
默認情況下,Composer 只會查看 packagist.org 存儲庫。 但它不包含 WordPress 插件和主題。
為了能夠引入 WordPress 插件和主題,您需要將 Composer 指向 wpackagist.org 存儲庫。 您可以通過將此配置塊添加到您的 composer.json 文件中來執行此操作:
“存儲庫”:[ { “類型”:“作曲家”, “網址”:“https://wpackagist.org”, “僅有的”: [ “wpackagist-插件/*”, “wpackagist-主題/*” ] } ],
我們還需要告訴 Composer 在哪裡放置插件和主題。 這涉及在 composer.json 中添加更多配置:
“額外的”: { “安裝程序路徑”:{ “wp-content/mu-plugins/{$name}/”:[ “類型:wordpress-muplugin” ], “wp-content/plugins/{$name}/”:[ “類型:wordpress插件” ], “wp-content/themes/{$name}/”:[ “類型:wordpress 主題” ] } }
有了它,您現在可以使用 composer require 命令從官方存儲庫安裝任何插件或主題,就像我們安裝 WordPress 所做的那樣。
# 要安裝插件,請使用以下格式:
作曲家需要“wpackagist-plugin/:”
# 要安裝主題,請使用以下格式:
作曲家需要“wpackagist-theme /:”
版本約束很複雜,但可能要記住的最簡單形式是使用 * 通配符。 要使用 2.x 版安裝我們的 WP Migrate 插件的免費版本,您需要運行:
composer require "wpackagist-plugin/wp-migrate-db:2.*"
如果你總是希望你的更新讓你獲得最新版本,你可以使用 * 作為版本約束:
composer require "wpackagist-plugin/wp-migrate-db:*"
第一次運行這樣的命令時,系統可能會詢問您是否要“信任‘composer/installers’來執行代碼”。 這樣做是安全的,但請注意,這確實會讓 Composer 在您的計算機上運行代碼。
如果一切順利,您應該安裝插件(但未激活)。 我還建議此時將您的更改提交給 Git。
添加自定義或第三方插件和主題
如果您想要存儲庫中的插件和主題,這一切都很好。 但是,如果您想添加 wordpress.org 存儲庫中沒有的第三方插件或您自己的自定義代碼怎麼辦? WordPress 目錄不在 Git 中,那麼你如何對自己的東西進行版本控制?
一些主題和插件作者支持他們的插件的自定義存儲庫。
並且某些主題和插件不允許為其插件使用任何存儲庫,例如付費插件。
但如果這不適用,那麼這裡的技巧是使用 .gitignore 文件有選擇地取消忽略特定目錄,並將這些自定義插件和主題添加到 composer.json 中。
我們也可以將這些插件放在另一個目錄中,以便從 composer.json 安裝它們。
由於我們忽略了 .gitignore 中的插件文件夾,因此我們需要創建另一個名為 dist 的文件夾,
在 dist 中,我們可以有付費插件和自定義插件,我們可以從 Composer 安裝它們。
- 分佈/
- 插件/
- 主題/
- mu插件/
我們需要將我們的自定義插件和主題複製到適當的文件夾中。
我們需要為 dist/plugins 中添加的每個插件創建 composer.json。
目前,我們有付費的 advanced-custom-fields-pro。 我們還想通過 composer 添加該插件,以實現一鍵安裝和自動化部署。
我們必須從作者網站門戶下載該插件並將該插件解壓縮到 dist/plugins/advanced-custom-fields-pro 文件夾中。 並在具有以下內容的同一文件夾中創建 composer.json,
{ “名稱”:“自定義插件/acf-pro”, "description": "高級自定義字段 PRO", “版本”:“5.12.2”, “類型”:“wordpress插件”, “要求”: { “作曲家/安裝者”:“^1.0”, “johnpbloch/wordpress-core”:“>=5.4” } }
我們可以在這裡添加帶有自定義前綴的版本和名稱。 並在根 composer.json 文件中添加一些代碼以在我們安裝時調用此插件。
在“repositories”: 部分的最後添加以下代碼,
“存儲庫”:[ { “類型”:“路徑”, "url": "dist/plugins/*", “選項”: { “符號鏈接”:假 }
您在存儲庫部分還有其他條目。 要安裝這個插件,我們有兩種方法,首先在
“要求”: { “自定義插件/acf-pro”:“>=5.12.2” }
或運行以下命令,它將安裝插件並在 composer.json 中添加上述條目。
$ composer 需要自定義插件/acf-pro
同理,我們可以安裝主題和mu插件。
對於主題,我們需要添加主題文件夾位置,
“存儲庫”:[ { “類型”:“路徑”, "url": "dist/主題/*", “選項”: { “符號鏈接”:假 }
您必須需要在自定義主題中添加 composer.json 以及名稱和版本詳細信息。 使用該名稱,我們可以使用 composer require 命令安裝主題。
綜上所述
使用 Composer 是確保您的 WordPress 保持安全、最新和可重現的最有效方法。 Composer 允許開發人員輕鬆地在他們的項目中添加和更新依賴項並鎖定他們的確切版本以確保每個新分支都使用相同的代碼。
憑藉這些優勢,Composer 是管理 WordPress 項目、確保可重複構建和可提交更新的絕佳選擇。
我們知道開始使用 Composer 可能有點讓人不知所措。 如果您有任何疑問,請隨時與我們聯繫。 我們在這裡幫助您充分利用 WordPress 體驗。
參考:
- https://docs.platform.sh/guides/wordpress/composer.html
- https://deliciousbrains.com/storing-wordpress-in-git/
- https://time2hack.com/composer-wordpress-deployment/