鑰匙要點
wget -qO- https://toolbelt.heroku.com/install.sh | sh根據官方的Heroku文檔,BuildPacks提供了魔術和靈活性,使您在Heroku上運行您的應用程序如此簡單。當您推動代碼時,構建包是處理環境設置的組件,以便您的應用程序可以運行。 BuildPack可以安裝依賴項,自定義軟件,操縱資產,並執行運行應用程序所需的其他任何操作。 Heroku並不總是有構建包,它們是Cedar堆棧帶來的新組件。
>您可以通過BuildPack文檔獲得有關這三個步驟以及更多信息的更多信息。
開始,我們在github上分配此代碼。單擊存儲庫中的“叉子”按鈕。為了能夠從事該項目,您需要將其克隆到本地機器。
運行以下代碼:
wget -qO- https://toolbelt.heroku.com/install.sh | sh>在您的$ home/buildpack-php/bin目錄中創建phalcon.sh文件,其中包含以下內容:
heroku login Enter your Heroku credentials. Email: fcopensuse@gmail.com Password: Could not find an existing public key. Would you like to generate one? [Yn] Generating new SSH public key. Uploading ssh public key /home/duythien/.ssh/id_rsa.pub此文件將安裝phalcon,但是必須指示Heroku執行它。為此,您將必須編輯bin/compile文件,並在其中添加以下行:
此外,您需要將文本擴展添加= phalcon.so添加到“ conf/php/php/php.ini”的文件:
<span>mbstring </span><span>mcrypt </span><span>openssl </span><span>PDO </span><span>PDO/Mysql </span><span>PDO/Postgresql </span><span>PDO/Sqlite </span><span>PDO/Oracle</span>
現在,我們可以將新的構建包推到:
git clone https://github.com/duythien/heroku-buildpack-php.git buildpack-php cd buildpack-php
>在Heroku
上創建一個新應用程序#!/bin/bash # Build Path: /app/.heroku/php/ dep_url=git://github.com/phalcon/cphalcon.git phalcon_dir=cphalcon echo "-----> Building Phalcon..." ### Phalcon echo "[LOG] Downloading PhalconPHP" git clone $dep_url -q if [ ! -d "$phalcon_dir" ]; then echo "[ERROR] Failed to find phalconphp directory $phalcon_dir" exit fi cd $phalcon_dir/build # /app/php/bin/phpize # ./configure --enable-phalcon --with-php-config=$PHP_ROOT/bin/php-config # make # make install BUILD_DIR= ln -s $BUILD_DIR/.heroku /app/.heroku export PATH=/app/.heroku/php/bin:$PATH bash ./install cd echo "important extension phalcon into php.ini" echo "extension=phalcon.so" >> /app/.heroku/php/etc/php/php.ini>為您的應用創建一個目錄,然後更改為:
>此外,您需要給Heroku指出此應用程序是PHP應用程序。為此,創建一個稱為Composer.json的空文件。在UNIX系統上,您可以這樣創建此文件:
>[...] source $BP_DIR/bin/phalcon [...]然後,執行以下操作以使我們的應用程序的存儲庫iNTAR INTAR INTAR INTAR INTICE:
>創建一個可以推動的新的Heroku應用程序,請使用CLI的CREATE命令:
[....] extension=phalcon.so ; Local Variables: ; tab-width: 4 ; End:
這將在Heroku Ready上創建應用程序,並等待我們的代碼,並將GIT遙控器附加到我們本地代碼庫。您現在準備部署應用程序,但是尚無代碼。請按照下一部分為您的應用程序添加一些內容。
git add -A git commit -m "edit php.ini and create phalcon file" git push origin master>
您的composer.json文件應該看起來像這樣:
>mkdir phalcon-dev cd phalcon-dev
>它將在Heroku上自動安裝McRypt,MbString等擴展名。如果您需要mongodb,memcached等,請進一步修改文件:
現在,Heroku將啟用相應的PHP擴展名,並將它們放入支持/構建/擴展/no-debug-non-ZTS-20121212文件夾中。接下來,創建一個帶有以下內容的test.php文件:
>touch composer<span>.json</span>
最後,讓我們部署Phalcon安裝:
git init git add -A git commit -m" first commit"第一個命令是指通過在buildpack_url config var中指定自定義buildpack來覆蓋heroku默認的buildpack。幾分鐘後,結果如下:
heroku create phalcon-dev Creating phalcon-dev... done, stack is cedar http://phalcon-dev.herokuapp.com/ | git@heroku.com:phalcon-dev.git Git remote heroku added>這將我們的代碼推向了Heroku,確定了它,並對它進行了構建過程,從而準備好進行部署。現在,我們的應用程序已在互聯網上使用!要驗證這一點,請立即打開:
<span>{ </span> <span>"require": { </span> <span>"php": "5.5.12" </span> <span>} </span><span>}</span>如果一切順利,您應該在瀏覽器中看到以下屏幕:
>
<span>{ </span> <span>"require": { </span> <span>"php": "5.5.12", </span> <span>"ext-memcached": "*", </span> <span>"ext-mongo": "*" </span> <span>} </span><span>}</span>
現在是指定Web根的棘手部分。指定Web根需要更多的工作和背景信息。 Phalcon網站應用程序的根源是/app/phalcon-website/public。對於Heroku來說,默認情況下,Web根是Git-Tree的根。該目錄在內部映射到 /應用程序。為了改變這一點,我們需要創建一個所謂的procfile,每次heroku應用網絡節點啟動時都會啟動SH-Script。然後,該腳本修改了服務器配置,並包含您自己的配置,該配置將Web root設置為/App/phalcon-website/public。創建一個帶有以下內容的procfile文件(如果您使用的是Apache):
>wget -qO- https://toolbelt.heroku.com/install.sh | sh
>克隆phalcon網站進入repo文件夾,完成後,git push命令將您本地主體上的所有提交發送到中央存儲庫。
heroku login Enter your Heroku credentials. Email: fcopensuse@gmail.com Password: Could not find an existing public key. Would you like to generate one? [Yn] Generating new SSH public key. Uploading ssh public key /home/duythien/.ssh/id_rsa.pub>訪問該應用程序的公共URL,瞧,您在Heroku上有一個運行的phalconphp.com。
總結
經常詢問有關在Heroku
上安裝自定義PHP擴展的問題(常見問題解答)
>如何在Heroku上安裝自定義PHP擴展?首先,您需要在項目root中創建一個名為“ composer.json”的文件。該文件將包含您要安裝的PHP擴展名。例如,如果要安裝'gd'擴展程序,則您的“ composer.json”文件應該看起來像: {}
}
創建'composer.json'文件後,您需要在終端中運行'Composer Update'命令。這將在您的項目root中創建一個“ composer.lock”文件。您需要將“ composer.json”和“ composer.lock”文件提交給您的git存儲庫。最後,您可以使用“ Git Push Heroku Master”命令將更改推向Heroku。 Heroku將自動安裝您的“ composer.json”文件中指定的PHP擴展。
我可以在Heroku上使用自定義的php.ini文件嗎? .ini在Heroku上歸檔。為此,您需要在項目根部創建一個“ .user.ini”文件。此文件將包含您的自定義PHP設置。例如,如果要增加最大文件上傳大小,則您的'.user.ini'文件應該看起來像這樣:
如何在Heroku上更新我的php版本?
>在Heroku上更新您的PHP版本涉及幾個步驟。首先,您需要在“ Composer.json”文件中指定新的PHP版本。例如,如果要更新到php 7.4,則您的“ composer.json”文件應該看起來像:
{
} 要使用自定義構建包,您需要在“ app.json”文件或Heroku儀表板中指定它。例如,如果要使用“ heroku/php'buildpack,則您的'app.json'文件應該看起來像這樣: >在Heroku上安裝PHP擴展時,我如何故障排除問題? ,但是您可以使用一些策略。首先,您可以檢查Heroku日誌中是否有任何錯誤消息。您可以通過在終端中運行“ Heroku Logs”命令來訪問日誌。日誌可以為您提供有關導致問題的線索的線索。 >我如何驗證是否在Heroku上安裝了PHP擴展?您的Heroku應用程序上的' php -m'命令。此命令列出了所有已安裝的PHP擴展名。您可以在終端中使用“ Heroku Run”命令來運行此命令。例如,您可以運行以下命令以列出所有已安裝的PHP擴展名: {
更新'composer.json'文件後,您需要在終端中運行'Composer Update'命令。這將更新“ composer.lock”文件。您需要將“ composer.json”和“ composer.lock”文件提交給您的git存儲庫。最後,您可以使用“ Git Push Heroku Master”命令將更改推向Heroku。 Heroku將自動更新您的php版本。 >我可以使用自定義的構建包在Heroku上安裝PHP擴展嗎? BuildPack是Heroku在將更改推向平台時運行的腳本。它負責設置應用程序的環境並安裝其依賴項。
{
{
“ buildpacks”:[
{
{
{
{ “ url”:“ heroku/php”
}
>]
}
} 在指定buildpack之後,您可以推動更改到埃羅子。 Heroku將自動運行BuildPack並安裝其中指定的PHP擴展名。
>第二,您可以使用“ Heroku Run”命令直接在Heroku應用程序上運行命令。例如,您可以運行“ PHP -M”命令以列出所有已安裝的PHP擴展名。這可以幫助您驗證是否已安裝了特定的擴展名。
>最後,您可以使用“ Heroku Config”命令來檢查Heroku應用程序的配置。這可以幫助您驗證您的自定義php.ini設置是否已應用。>我可以安裝Heroku上的PECL存儲庫中不可用的PHP擴展名嗎? Heroku的PECL存儲庫中無法使用的PHP擴展。 Heroku使用PECL存儲庫來安裝PHP擴展。如果擴展名在PECL存儲庫中不可用,則不能在Heroku上安裝。自定義構建包可以包含腳本以編譯和安裝來自源的PHP擴展。這需要對PHP和Unix shell腳本的高級知識。
HEROKU RUN PHP -M 如果安裝了擴展名,則應顯示在已安裝的PHP擴展名列表中。
>我可以在Heroku上安裝多個PHP擴展嗎?為此,您需要指定要在“ composer.json”文件中安裝的所有擴展名。例如,如果要安裝'gd'和'mbString'擴展名,則您的'composer.json'文件應該看起來像這樣:
{
-gd“:”* “,
” ext-mbstring“:”*“
}
}
}
更新後“ Composer.json”文件,您需要在終端中運行“ Composer Update ”命令。這將更新“ composer.lock”文件。您需要將“ composer.json”和“ composer.lock”文件提交給您的git存儲庫。最後,您可以使用“ Git Push Heroku Master”命令將更改推向Heroku。 Heroku將自動安裝您的'composer.json'文件中指定的PHP擴展名。>
以上是如何在Heroku上安裝自定義PHP擴展的詳細內容。更多資訊請關注PHP中文網其他相關文章!