>這篇文章首先在Auth0博客上發表,並在此處全額重新發布。 > tl; dr:在開發人員中有一個流行的咒語,就像寫作,測試和部署
一樣。在本教程中,我將向您展示如何將PHP應用程序部署到其他雲服務器平台,例如Google Cloud,Microsoft Azure,Heroku,IBM Bluemix等。鑰匙要點
在雲中部署PHP應用程序提供可擴展性,成本效益,提高性能和更好的可靠性,使其成為各種尺寸的企業的有利選擇。>
通用的PHP應用程序涉及常見燈(Linux,Apache,MySQL和PHP) linux:運行其他軟件包的操作系統。
> Heroku Heroku是一個雲平台,可幫助您以現代方式部署和託管應用程序。它為您帶來了所有重型。讓我們快速看一下如何在Heroku上部署和維護PHP應用程序。 >
php heroku架構
如果您沒有帳戶,請繼續在Heroku.com上創建一個。然後繼續安裝Heroku CLI。安裝了此功能後,請克隆此簡單的Starwars PHP應用程序。
> Heroku在Dyno中運行您的PHP應用程序,該應用程序是一個智能容器,它為您選擇的Web服務器(Apache或nginx)和運行時(PHP或HHVM)提供了現代堆棧。 >
確保您在下面遵循以下步驟:
>從.env.example創建.ENV文件。
>>轉到您的auth0儀表板,然後單擊“創建新客戶端”按鈕。>您需要擁有一個Auth0的帳戶。
>命名您的新應用程序,然後選擇“常規Web應用程序”。
> 在您的新Auth0 Client應用程序的設置中登錄用戶
太棒了!我們的應用在本地起作用。是時候部署了!我們要做的第一件事是在應用程序的根目錄中添加一個procfile。
>創建一個新文件,稱為procfile,而無需任何文件擴展名,並添加以下內容:
web: vendor/bin/heroku-php-apache2procfile是您應用程序的根目錄中的一個文本文件,它定義過程類型並明確聲明應執行哪些命令以在Heroku上啟動您的應用。
作為Web服務器,則您的如果您有興趣使用
nginx
> procfile的內容為:
web: vendor/bin/heroku-php-nginx
從儀表板創建一個新應用
>給它一個類似的名字:
給應用程序名稱
>
選擇一種部署方法。在我們的情況下,我們將使用GitHub這樣的github:>
連接到github
選擇GITHUB的原因是使開發和維護過程非常順利。開發人員可以使用GIT工作流來處理新功能。 >
現在,在圓形區域中鍵入回購的名稱,然後單擊搜索。 Heroku將在您的github帳戶下搜索您的回購,並像So>一樣顯示它
搜索repo
單擊“ so so ”的連接
單擊“連接”按鈕
>
Heroku將像SO 一樣連接回購
>連接的項目
>向下滾動。這是有趣的部分。 Heroku允許您使用按鈕啟用自動部署。它還為您提供了等待連續集成過程在部署到生產之前通過的選擇。在現實世界應用中,您將為您的代碼庫提供測試套件。開發人員的代碼與測試套件相對。如果通過了,代碼將被推到生產中。 >
>單擊以啟用自動部署。我們沒有任何CI服務,因此我們不需要啟用該選項。現在,讓我們部署主分支。
>單擊部署分支。 Heroku將通過您的composer.lock文件掃描,安裝必要的軟件包,然後部署!
>
>部署最終
單擊“視圖”按鈕查看您的應用。
>錯誤500
哎呀!我們正在遇到500個錯誤。啊哈,我們還沒有設置任何環境變量。在本地,我們有一個.env文件。在Heroku上,沒有.env文件,但是有一種設置環境變量的方法。轉到儀表板中的設置,然後將它們添加為config變量,例如:
>
![]()
哦,還有一件事!在我的情況下,新的回調URL是http://starwazapp.herokuapp.com。確保將新的回調URL添加到Auth0儀表板中允許的回調URL 。 您的應用程序應該現場直播!
>>實時應用
>進行小更改
>讓我們對我們的應用進行一個小的更改,看看它毫不費力地將其部署到生產中。
>打開index.php並從聽到的標籤的內容更改您不想遷移到php 7的內容?敢我們!要星球大戰 - 覺醒!提交並推向您的主分支。現在,轉到Heroku儀表板的“活動”選項卡,並註意構建。重新加載您的應用程序,您會看到區別。
構建成功的
新版本
![]()
>讓我們快速談論如何處理數據庫,緩存和CRON工作。在Heroku上,您可以使用PHP的ClearDB和Postgres。像這樣將ClearDB添加到您的應用程序中:
>數據庫,緩存和cron作業
此命令配置一個新的ClearDB數據庫,並返回該應用程序將使用的URL訪問它。您需要做的就是將其添加到您的應用程序中,作為環境變量,然後在應用程序的配置中解析它:
web: vendor/bin/heroku-php-apache2clearDB是您的MySQL驅動應用程序中云中有功能強大的容錯數據庫-AS-A-Service。
使用mysqli >>您可以對其進行調整以適合PDO風格。像這樣將Postgres添加到您的應用程序中:web: vendor/bin/heroku-php-nginx>前往插件,您會看到可以與PHP應用一起使用的其他類型的數據庫。 > Heroku提供了一系列用於緩存的附加組件,從Memcache,到快捷,再到Ironcache等。您可以在此處查看如何在Heroku上使用PHP的Memcache。
>>最後,您可以在計劃的時間間隔內使用HEROKU調度程序在應用程序上運行作業。
Google Cloud
> Google Cloud平台是一個巨大而值得信賴的雲平台,世界各地的許多公司在部署和託管應用程序時都採用了該平台。您的應用程序將在為所有Google產品提供動力的基礎架構上運行。您還需要哪些其他形式的信心來向您保證,您的應用程序可以很好地擴展到足以為您的數千萬用戶提供服務?
Google Cloud提供了託管PHP應用程序的不同選項。該平台提供應用程序引擎(完全管理),計算引擎(可擴展VM)和容器引擎(Kubernetes簇)。 在我們的情況下,我們將使用應用引擎。它將基礎架構抽像出來。讓我們跳入將我們著名的《星球大戰》應用程序部署到Google App Engine。
使用Google App Engine時,您可以選擇標准或靈活的環境。後者如名稱所示,允許您安裝在Debian Linux上使用的任何PHP擴展程序,它具有可配置的NGINX Web服務器,可寫的文件系統,最新的PHP版本,並允許您使用Composer.json.json .我們將使用靈活的環境。繼續創建一個新項目。單擊創建,給項目一個名稱,選擇要使用應用程序的區域,然後啟用帳單。 注意:未經您的許可,您將不會收取費用。
>
現在,下載Google SDK並安裝Google Cloud Tools。>安裝Google SDK
>運行gcloud
繼續在我們項目的根部創建一個app.yaml文件,例如:
> app.yaml
>因此,我們的.env文件已被推到Google Cloud。使用該方法的一種替代方法是將環境變量添加到app.yaml文件之類的。
現在,通過運行GCLOUD應用程序部署從控制台部署您的應用程序 抓住URL,在我的情況下是https://starwars-166515.appspot.com/,並添加到允許的oridens(CORS),並允許在您的auth0儀表板中允許回調URL。還將URL添加到.env文件中的Auth0_callback_url中。
web: vendor/bin/heroku-php-apache2運行GCLOUD應用程序再次部署以提供該應用的新版本。立即查看您的應用程序。它應該像這樣的生活:
web: vendor/bin/heroku-php-nginx>實時應用
>數據庫,緩存和cron作業
Google Cloud提供了一個雲SQL實例平台。查看如何在此處為您的應用程序配置,連接和創建MySQL實例。
您也可以在Google App Engine上使用phpmyadmin。 Google App Engine包括標準Memcache和Memcached API的實現。查看如何在Google Cloud上的應用程序中使用memcache。> App Engine Cron服務允許您配置在定義時間或常規間隔操作的定期計劃任務。查看如何安排CRON作業並在Google Cloud上使用php的任務隊列。
>將Laravel,Symfony和WordPress應用程序部署到Google Cloud Platform相對容易。> IBM Bluemix
IBM Bluemix> ibm bluemix允許您輕鬆地在功能強大的高性能全局雲基礎架構上配置,部署和擴展。讓我們跳入將我們著名的《星球大戰》應用程序部署到IBM Bluemix。
>在藍色上註冊,例如:
bluemix
>
上的註冊 注意:Bluemix平台提供了30天的免費試用版,因此您有機會嘗試在交出信用卡詳細信息之前嘗試部署自己的申請。
繼續創建一個組織和空間。我命名了我的空間產品。
>現在,繼續安裝雲鑄造CLI。完成此操作後,像這樣從終端登錄:
>
web: vendor/bin/heroku-php-apache2登錄到藍色下一步是在應用程序的根目錄中創建一個subtest.yml文件。 subtest.yml文件包括有關您應用的基本信息,例如名稱,每個實例分配多少內存以及路由。我們的清單文件應該看起來像這樣:
>您還可以明確指定清單文件中的構建包。值得慶幸的是,Cloud Foundry會自動檢測到當您推動應用時需要哪些構建包。
> BuildPacks為您的應用程序提供框架和運行時支持。 BuildPacks通常檢查用戶提供的偽像,以確定要下載的依賴項以及如何配置應用程序以與約束服務通信。
web: vendor/bin/heroku-php-nginx最後,通過運行以下命令來部署您的應用程序:
>
必須是一個唯一的名稱。 >啟動部署
heroku addons:create cleardb:ignite
>現在嘗試運行該應用程序。就我而言,URL是starwarsapp.mybluemix.net。糟糕,一個500錯誤。我們還沒有加載環境變量。我們如何使用藍色?
>結束部署
>
>您可以使用Cloud Foundry CLI或Bluemix用戶界面來設置環境變量。讓我們使用Bluemix用戶界面。因此,請按照以下步驟操作:
打開藍色儀表板。
現在查看您的應用程序 - 應該是Live!
- 從左圖中選擇“運行時”。
>
單擊該應用程序。您將被重定向到另一個頁面,其中包含有關應用程序的更多詳細信息。- 現在,單擊環境變量
![]()
- 向下滾動,然後單擊“添加”按鈕以添加環境變量,例如so
>
![]()
- 單擊“保存”按鈕。一旦這樣做,您的應用將自動重新啟動。
![]()
- 現在抓取URL,在我的情況下,是https://starwarsapp.mybluemix.net/,並將其添加到允許的Origins(CORS)中,並允許在您的auth0 dashboard中允許回調url 。
>
>
>數據庫,緩存和cron作業Cloud Foundry提供了創建服務的能力。 IBM Bluemix提供Cloudant NOSQL數據庫(CouchDB的藍色名稱)。您可以使用CF工具來創建類似的數據庫服務:
IBM Bluemix還提供ClearDB MySQL服務。因此,您可以使用CF工具來創建類似的工具:
web: vendor/bin/heroku-php-apache2他們提供MongoDB,PostgreSQL和RethinkDB。>
>您始終可以使用Cloud Foundry工具來檢查許多內容,例如日誌,環境變量等。web: vendor/bin/heroku-php-nginxcf logs - recent yourapp - 顯示您的應用程序的日誌。
cf env yourApp - 顯示與您的應用程序關聯的環境變量。cf市場 - 展示Bluemix必須提供的所有服務。
>IBM Bluemix還提供Redis Cloud,這是一種完全管理的雲服務,用於以高度可用且可擴展的方式託管和運行REDIS數據集。
Microsoft Azure- > IBM Bluemix提供工作負載調度程序服務。此服務使您可以將應用程序與安排工作流程的功能集成在一起。遠遠超出了cron,在藍色內部和外部開發工作安排。根據您的需求,在您的應用程序中輕鬆地在應用程序中創建工作流以定期運行(例如,刪除或更新文件時)。您可以使用
或使用API。Workload Scheduler用戶界面 - 開始在這裡調度作業。
- 另外,這是如何在IBM Bluemix上部署Laravel應用程序的方法。
>Microsoft Azure是另一個龐大的雲平台,可讓您輕鬆擴展應用程序。讓我們開始在Azure上部署我們的《星球大戰》應用程序。
>使用Microsoft Azure,您可以通過以下方式部署:>
> ftp。與雲文件夾同步。
>本地git。
基於雲的源控制服務,例如github或bitbucket。
>
在我們的情況下,我們將使用git進行部署。
>首先,使用Microsoft Azure創建一個帳戶。
- dashboard
- >
單擊左圖的新
- >
單擊Marketplace旁邊的所有內容。
- >
>單擊Web SQL,然後繼續創建。
![]()
- >您將提示您選擇訂閱類型的報價。我選擇了
>免費試用。這樣,您將獲得$ 200的Azure信用。
>- >給您的應用程序一個名稱,然後創建一個SQL數據庫。好吧,我們的應用不需要它,但由於某種原因,Azure迫使您創建它。
創建一個新的應用
>>現在已經創建了我們的應用程序,請單擊左面板以查看您的應用程序。
- 新應用
>
>單擊該應用程序,選擇
>部署選項 ,然後單擊GitHub上。- >
>授權訪問您的存儲庫,選擇項目和分支。就我而言,我有一個Azure分支。這就是我將用於將代碼部署到Azure平台的分支。 >
- 查看部署通知。
- 現在,瀏覽到http:// [yoursiteName] .azurewebsites.net。就我而言,是http://starwarzapp.azurewebsites.net。
默認情況下,哎呀! ,有一個HTTP 500錯誤。發生了什麼事?好的,我們需要再次設置環境變量。
>
>轉到您的應用程序中的應用程序,單擊應用程序設置,然後在右側添加環境變量。>
現在抓取應用程序URL,在我的情況下,它是http://starwarzapp.azurewebsites.net/並添加到允許的oridins(cors),並在您的auth0 dashboard中允許回調url。
- >
>
,Azure部署對我們的composer.json或composer.lock文件無能為力。因此,沒有安裝軟件包。現在返回到應用程序服務,單擊您的應用程序,然後轉到開發工具並選擇擴展名。選擇作曲家的擴展並同意法律條件。
>現在,對您的應用程序進行一些更改,然後再次推到GitHub。您應該看到它像這樣部署:
![]()
現在再次查看您的應用程序。它應該活著和工作!
![]()
>數據庫,緩存和cron作業
Microsoft Azure提供> azure redis Cache。它基於流行的開源Redis Cache。像這樣的創建和使用很容易:
單擊新>數據存儲> redis Cache。
- 輸入緩存的名稱,選擇該區域並創建它。
> - >查看有關如何使用它的文檔。
>用於調度和運行任務,Azure提供了調度程序。它允許您:
>在Azure內部或外部呼叫服務。
>我們已經在部署應用程序時已經談論過一些有關設置數據庫的問題,但是讓我們快速研究如何設置MySQL數據庫。
- 在任何時間表上運行作業。
- >使用Azure存儲隊列進行長期運行或離線工作。
>- 調用Azure Service Bus隊列。
- >查看如何使用調度程序創建和管理作業。
> >
>登錄到Azure門戶。
- >
>單擊儀表板的左面板中的新建。選擇市場中的數據存儲,然後選擇MySQL數據庫。
>- 繼續並配置您的新MySQL數據庫。輸入名稱,選擇您的訂閱,位置並填寫所需字段。創建!
- 連接到數據庫。
- >更多的公司使用AWS(Amazon Web服務)來存儲從圖像和MP3文件到視頻的各種數據,而不是任何其他雲平台。實際上,像Uber,Spotify或Salesforce這樣的許多組織完全使用Amazon Web服務 - 用於託管,部署和基礎架構。 AWS有大量的開發產品。
laravel開發人員可以輕鬆地在Azure上為其應用程序配置MySQL數據庫。
![]()
Amazon Web服務 >我們將用於部署著名的星球應用程序的服務是Amazon Elastic Beanstalk。讓我們開始。
如果您沒有一個AWS帳戶,請註冊AWS帳戶。
>- >
前往Elastic Beanstalk Console。- 創建一個新應用。
- >單擊創建Web服務器。
![]()
- 創建網絡服務器環境。
![]()
- >上傳您的代碼。 Elastic Beanstalk要求您上傳代碼庫的zip文件。您可以手動將其拉動,但是我更喜歡從我的終端做到這一點:zip ../starwarsapp.zip -r *。
![]()
- 現在,將其上傳到這樣的AWS:
檢查應用程序URL的可用性。我的看起來像這樣:
>下一頁允許我們配置數據庫實例。我們的應用不需要一個,因此我們可以跳過。
>此步驟允許我們修改我們的配置詳細信息。默認一個對我們的應用程序還可以。
現在,添加您的環境變量這樣:
- 現在抓住URL,在我的情況下,是http://starwarzapp.us-west-2.elasticbeanstalk.com,並添加到允許的Origins(CORS),並允許在您的auth0儀表板中回電URL。確保您也將其添加為彈性beanstalk中的環境變量。
![]()
>添加權限這樣:
>在啟動之前查看信息。
啟動。
>實時應用
>查看如何部署:
laravel應用到彈性豆stall。
- > cakephp應用程序到彈性豆stal。
- symfony2應用到彈性beanstalk。
- > wordpress網站到Elastic Beanstalk。
- > Drupal網站到Elastic Beanstalk。
- >數據庫,緩存和cron作業
>您可以使用Amazon關係數據庫服務(Amazon RDS)DB實例存儲由應用程序收集和修改的數據。數據庫可以附加到您的環境上,並通過彈性豆串管理,也可以在外部創建和管理。查看如何輕鬆地將DB實例添加到您的應用程序。
>用於緩存,Amazon Web Services提供ElasticAcce。它是一款Web服務,使其易於部署,操作和擴展雲中的內存數據存儲或緩存。 Amazon Elasticache支持兩個開源內存中的內存引擎:
redis。
- > memcached。
Amazon Elasticache自動檢測並替換失敗的節點,減少與自我管理的基礎架構相關的開銷,並提供一個彈性的系統,以減輕過載數據庫的風險,從而減慢網站並增加應用程序負載時間。通過與Amazon CloudWatch的集成,Amazon Elasticache為與您的Redis或Memcached節點相關的關鍵性能指標提供了增強的可見性。 > Airbnb,Healthguru,Placeiq和Tokyo Data Network等公司使用Elasticache在跨越HTML片段的多層緩存,昂貴的DB查詢的結果,近代會話數據以及搜索結果。
>查看如何在此處安裝PHP的Elasticache群集客戶端。
這是關於構建具有Elasticache和Elastic Beanstalk的PHP訪問者計數器的出色帖子由泰勒·奧特威爾(Taylor Otwell)創建的Laravel Forge是一個平台,可幫助您在幾分鐘內部署和啟動應用程序。它為您帶來了重型。 Forge照顧您的服務器在流行的雲託管提供商(例如Linode,Digital Ocean和AWS)上。它最初是為Laravel應用程序構建的,但現在它幾乎支持任何PHP應用程序。>您可以在Elastic Beanstalk上設置Cron工作。了解如何在Amazon Web Services(AWS)彈性Beanstalk上運行CRON Jobs。
laravel forgelaravel forge
除了配置服務器外,Laravel Forge允許您輕鬆執行以下操作:
> 它與Letsencrypt集成,以生成您的應用程序的免費SSL證書。
可以輕鬆管理作業和隊列。
Matt Stauffer在部署您的第一個Laravel應用程序forge上有一篇驚人的帖子。>與您的團隊合作,通過與同事共享服務器的管理儀表板。 >
James Fairhurst還提供了有關使用Laravel Forge設置AWS服務器的絕佳指南。
Laracasts.com是最受歡迎的教育PHP平台,與Forge有關服務器管理系列。
與Envoyer一起,您可以執行:- 當然,我們在Laravel課程中提到了它,並且還用類似的深入教程介紹了它。
- > Envoyer
- Eunvoyer是一個允許零停機時間PHP部署的平台 - 這是Envoy的SaaS版本。它允許您與各種服務集成,例如GitLab,Slack,Bitbucket E.T.C.
- >無縫部署回滾。
- >部署到多個服務器。
- 監視Cron Jobs。
- 執行申請健康檢查。
> Deployer
> Deployer是PHP的部署工具。它允許您執行以下操作:
>它可以與
- >並行運行任務。
回滾。 - >以食譜的形式創建部署腳本。
laravel ,symfony , cakephp ,
>經常詢問有關在雲中部署PHP應用程序的問題(常見問題解答)yiiframework ,> drupal ,和> magento 。查看有關與Deployer部署PHP應用程序的出色文章。 > 結論 >我們無法涵蓋部署PHP應用程序可用的所有不同選項。 PHP是多年來發展的企業語言,因此呼籲將PHP應用程序從本地機器部署到生產。希望本指南涵蓋了將PHP應用程序部署到所有主要雲提供商的所有基本需求。但是,我建議在學習部署PHP應用程序方面進行廣泛的知識。 > >您如何處理部署?請讓我在下面的評論部分中知道! > >在雲中部署PHP應用程序的好處是什麼?首先,它提供可擴展性。隨著應用程序的增長,您可以輕鬆調整資源以滿足需求。其次,它提供了成本效益。您只為使用的資源付費,與傳統託管相比,這可以是可觀的節省。第三,雲託管提供了更好的性能和速度。在全球數據中心的情況下,您的應用程序可以託管更靠近您的用戶,從而減少延遲。最後,它提供了更好的可靠性和正常運行時間,因為您的應用程序不取決於單個服務器。
>>我如何為我的PHP應用程序選擇正確對於您的PHP應用程序,取決於幾個因素。這些包括您的應用程序,預算和技術專長的特定需求。一些雲服務提供了更多的高級功能,但可能需要更多的技術知識才能有效使用。其他人可能更友好,但可能無法提供相同的自定義或控制水平。重要的是要徹底研究每個選項並考慮哪些功能和服務對您的特定需求最重要。
>在Google Cloud上部署PHP應用程序的步驟是什麼?
>在Google Cloud上部署PHP應用程序涉及多個步驟。首先,您需要創建一個Google Cloud帳戶並設置一個新項目。然後,您需要在本地計算機上安裝Google Cloud SDK。接下來,您需要在app.yaml文件中配置應用程序的設置。之後,您可以使用GCLOUD應用Deploy命令部署應用程序。最後,您可以使用gcloud應用程序瀏覽命令在瀏覽器中查看您的應用程序。
>>如何確保云中的PHP應用程序的安全性?
>確保您的PHP應用程序的安全性在雲中涉及多種措施。其中包括使用安全的編碼實踐,定期更新和修補軟件,使用對運輸和休息中的數據進行加密,實現強大的訪問控件,並定期監視和審核您的系統以進行任何異常活動。>
什麼是什麼。像Cloudways這樣的PHP託管平台的角色? >像Cloudways這樣的PHP託管平台提供了一個託管環境,用於部署和運行您在雲中的PHP應用程序。它照顧了雲託管的許多技術方面,例如服務器設置,安全性,備份和更新,使您可以專注於開發應用程序。它還提供工具和功能來幫助您優化應用程序的性能和可擴展性。>
>如何將現有的PHP應用遷移到雲? >將現有的PHP應用遷移到雲涉及幾個涉及幾個步驟。首先,您需要選擇雲服務並創建一個帳戶。然後,您需要準備應用程序進行遷移,這可能涉及重構代碼或進行其他更改以確保與雲環境的兼容性。接下來,您需要將應用程序部署到雲中,對其進行徹底測試以確保其正常工作,然後將用戶切換到新版本。在雲中部署PHP應用程序面臨什麼挑戰?在雲中部署PHP應用程序的
可能會帶來一些挑戰。其中包括處理雲環境的複雜性,確保應用程序和數據的安全性,管理成本和優化性能。重要的是要對這些挑戰有良好的了解以及在開始部署之前如何解決這些挑戰。
>
>我如何在雲中優化我的PHP應用程序的性能?您的PHP應用程序中的應用程序可能涉及幾種策略。這些包括使用緩存和其他增強性能功能,優化您的代碼和數據庫查詢,並根據需要定期監視和調整資源。> Google Cloud PHP庫的作用是什麼?它們提供了一組API,您可以使用這些API來執行各種操作,例如存儲和檢索數據,運行查詢以及管理資源。使用這些庫可以使您更容易將應用程序與Google Cloud集成並利用其功能和服務。
什麼是RunCloud,它如何幫助將PHP應用在雲中部署? > RunCloud是一種雲服務器管理工具,簡化了在雲中部署和管理PHP應用程序的過程。它提供了一個用戶友好的接口以及一系列工具和功能,可幫助您設置,保護和優化雲服務器。它支持多個雲提供商,並允許您從單個儀表板管理所有服務器。
>
以上是在雲中部署PHP應用程序的最終指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!