Symfony 2用於開發和部署的清單
鑰匙要點
- 在開始開發過程之前,要測試生產服務器的兼容性至關重要,以避免潛在的問題,例如丟失的庫或應用程序所依賴的不變的全局設置。 服務器準備,版本控制,遠程開發模式,緩存更新和錯誤頁面自定義是在Symfony 2應用程序部署過程中要考慮的一些關鍵方面。
- 使用Git進行版本控制可以幫助在開發過程中對遠程站點進行本地更改。每次更新應用程序以避免錯誤時清除緩存也很重要。
> >自定義Symfony 2應用程序的錯誤頁面可以提供更量身定制的用戶體驗。但是,這些頁面不支持Twig模板擴展名,因此必須從頭開始設計。 - 在我的建築物中,我的個人網絡應用程序與Symfony 2系列發佈在SitePoint上的腳趾,我介紹了引導,開發和完成(在一些高級技術上)的一些基礎知識,以使用Symfony 2來開發Web應用程序。但是,由於該系列的長度限制,我們在“最終”步驟中沒有涵蓋太多:將Symfony 2應用程序部署到生產環境中。
- 當我們進行開發時,我們很可能處於“根”角色;但是在生產環境中,我們可能被剝奪了這種特權。另外,設置可能不同。為了使情況變得更糟,有時我們無法像在自己的機器中那樣更改這些設置。 > 因此,在我們自己的服務器中進行任何實際開發之前,檢查我們的生產服務器的“兼容性”非常重要。這將避免這種可怕的情況,例如:Symfony依賴的庫缺失,該應用程序所依賴的某些全局設置不變,等等。
> 在以下各節中,我們將假設您對生產服務器沒有完全控制。如果這樣做,大多數兼容性問題可能不適用,因為您應該可以輕鬆地自己解決它們。
>生產服務器上的空物框架>請按照我在Symfony 2上的第一篇文章中的說明進行說明,以在Production Server上設置一個空的Symfony框架。
>這對於測試服務器是否已啟用捲曲也很有用,不僅安裝在服務器上,而且作為PHP擴展名,確保我們可以獲取外部資源。在我的特殊情況下,這非常重要 - composer.org在我的國家被阻止,我需要使用代理來獲取和安裝Symfony框架。
>以後可以將此空框架檢查到版本控件中。
config file
Symfony 2附帶一個config.php文件,該文件位於Web目錄中。這是測試大多數“準備就緒”問題的腳本。要訪問該頁面,我們需要對其進行一些調整:
<span><span><?php </span></span><span> </span><span><span>if (!isset($_SERVER['HTTP_HOST'])) { </span></span><span> <span>exit('This script cannot be run from the CLI. Run it from a browser.'); </span></span><span><span>} </span></span><span> </span><span><span>if (!in_array(@$_SERVER['REMOTE_ADDR'], array( </span></span><span> <span>'127.0.0.1', </span></span><span> <span>'::1', </span></span><span><span>))) { </span></span><span> <span>header('HTTP/1.0 403 Forbidden'); </span></span><span> <span>exit('This script is only accessible from localhost.'); </span></span><span><span>} </span></span><span><span>...</span></span>
我的服務器已正確配置,沒有任何關鍵問題:
此文件測試了我在下表中總結的準備問題。實際測試是在App/SymfonyRequirentess.php中完成的,因此我們還可以查看該文件。
設置/模塊
使用git同步文件
在開發過程中,您可以使用版本控件將文件複製到遠程站點的本地更改。在這種情況下,適當的.gitignore(或其他版本控制系統中的等效物)將變得方便。我的.gitignore文件的以下摘錄是用於參考:這絕不是詳盡或適合的列表。例如,如果您使用phpstorm,但不使用Netbeans,則可以刪除NetBeans部分,並用適合PhpStorm的過濾器替換:
<span><span><?php </span></span><span> </span><span><span>if (!isset($_SERVER['HTTP_HOST'])) { </span></span><span> <span>exit('This script cannot be run from the CLI. Run it from a browser.'); </span></span><span><span>} </span></span><span> </span><span><span>if (!in_array(@$_SERVER['REMOTE_ADDR'], array( </span></span><span> <span>'127.0.0.1', </span></span><span> <span>'::1', </span></span><span><span>))) { </span></span><span> <span>header('HTTP/1.0 403 Forbidden'); </span></span><span> <span>exit('This script is only accessible from localhost.'); </span></span><span><span>} </span></span><span><span>...</span></span>
或只是將它們都放在其中,因此您會自動容納可能使用其他IDE的其他開發人員。建議始終包含前3節(作曲家,Symfony,Logs)。
<span># Composer </span><span>vendor </span><span>vendor/* </span><span>!public/assets/js/vendor </span><span>!public/assets/js/vendor/* </span><span>!public/assets/css/vendor </span><span>!public/assets/css/vendor/* </span><span>composer.phar </span><span>composer.lock </span><span> </span><span># Symfony </span><span>app/cache/* </span><span>app/logs/* </span><span> </span><span># Logs </span><span>error.log </span><span>access.log </span><span> </span><span># Netbeans </span><span>nbproject </span><span>.nbproject </span><span>.nbproject/* </span><span>nbproject/* </span><span>nbproject/private/ </span><span>build/ </span><span>nbbuild/ </span><span>dist/ </span><span>nbdist/ </span><span>nbactions.xml </span><span>nb-configuration.xml</span>
>清除緩存
> SYMFONY應用程序首次在遠程服務器上運行時,它將在應用程序/CACH/PORD目錄中創建我們的應用程序的編譯版本。當我們的文件(尤其是我們的控制器和路由)更新時,我們需要刷新緩存,或者輸出可能不正確,並且通常會導致500個錯誤。
要清除緩存,我通常會ssh到我的生產服務器,並在App Directory下執行RM -RF緩存命令。控制台緩存:清除或控制台緩存:熱身命令可能不是最乾淨的方法。
遠程開發模式
謹慎使用它,只有在絕對必要的情況下!
> 在某些情況下,當本地功能網站部署到生產服務器時,本地功能網站可能會崩潰。引起這一點的原因可能很複雜,並且與編碼過程本身無關。在這種情況下,我們可以考慮啟用遠程開發模式。為此,我們採用類似的方法來通過評論App_dev.php中的以下代碼塊禁用Local -Host檢查
然後,我們可以訪問域和頁面,並以http://rsywx_remote/app_dev.php之類的內容進行訪問。當出現問題時,此開發模式將顯示更有用的調試信息,並可以幫助我們找到一些根深蒂固的問題。要在此調試期內增加安全性,請添加一張僅允許從您自己的IP訪問到上面文件的檢查 - 這將使其他所有人都保持開發模式。大多數問題將與數據庫設置有關(錯誤的數據庫和/或憑據),錯誤的API URI(本地和遠程URIS可能不同),過時的緩存,缺少本地使用但未遠程啟用的庫等。
解決問題後,請記住要解開這些行以恢復完整的訪問控制。普通用戶只能被允許使用app.php作為我們的應用程序的輸入點。自定義錯誤頁面
<span># IntelliJ - PhpStorm and PyCharm </span><span>.idea </span><span>.idea/ </span><span>.idea/* </span><span>*.iml </span><span>*.ipr </span><span>*.iws </span>
>我們可以自定義錯誤頁面,並將它們放在應用程序/資源/twigbundle/views/exception下。可以將文件命名為404錯誤,error403.html.twig的文件error404.html。
>重要的是要注意,在Symfony 2中,錯誤消息頁面不支持TWIG模板擴展。這意味著我們無法從為其他頁面設計的現有佈局擴展到錯誤頁面。我們必須從頭開始設計錯誤頁面。這有點不方便,但仍然值得一個嚴肅的網站。
結論
在本文中,我們介紹了一些與Symfony部署相關的主題:服務器準備,版本控制,遠程開發模式,緩存更新,錯誤頁面自定義等。> 部署通常是我們發展的最後一步。我希望這篇文章能幫助您避免一些常見的pitfals,並使您的部署過程更加順利。
>如果您覺得它很有趣或有用,請重新檢查本文,如果您有反饋,請在下面發表評論,非常感謝!
>!經常詢問有關Symfony 2開發和部署的問題
什麼是Symfony 2,為什麼我應該將其用於我的Web開發項目?
Symfony 2是用於開發Web應用程序的高性能PHP框架。它以速度,靈活性和可重複使用的組件而聞名。它允許開發人員有效地構建強大的應用程序。該框架遵循MVC(模型視圖控制器)設計模式,這使得管理代碼庫更容易,並促進可擴展應用程序的開發。 Symfony 2還具有一個充滿活力的社區,可提供出色的支持並為其廣泛的捆綁圖書館做出貢獻。
>如何在本地機器上安裝Symfony 2?涉及幾個步驟。首先,您需要確保安裝了PHP。 Symfony 2需要PHP 5.3.9或更高。安裝了PHP後,您可以使用PHP的依賴關係管理工具來安裝Symfony。您可以從其官方網站下載作曲家。安裝作曲家後,您可以通過運行命令的“ Create-Project Symfony/Framework-standard-edition my_project_name”。
> Symfony 2的關鍵功能是什麼? >
Symfony 2具有許多功能,使其成為Web開發的強大工具。其中一些功能包括其可重複使用的組件,可以在多個項目中使用,其對MVC設計模式的支持,可促進清潔和可維護的代碼以及將其用於數據庫抽象的學說ORM。 Symfony 2還具有強大的安全組件,可為您的應用程序提供全面的安全系統。>如何部署Symfony 2應用程序? >如何將我的Symfony 2應用程序升級到較新版本?
2可以使用Composer完成對較新版本的應用程序。首先,您需要在項目中更新“ composer.json”文件,以指定要使用的新版本的Symfony。之後,您可以運行“作曲家更新”命令來更新您的應用程序。升級後徹底測試您的應用程序很重要,以確保一切正常工作。其他軟件中的插件。它們是包裝和分發Symfony 2代碼的一種方式。它們可以包含庫,模板,控制器,配置中的任何內容 - 本質上是可以執行的任何PHP代碼。您可以使用Symfony社區提供的捆綁包或創建自己的捆綁包。要使用捆綁包,您需要下載它,在'appkernel.php'文件中啟用它,並在必要時進行配置。
>如何處理Symfony 2? > Symfony 2提供了一種強大而靈活的方法來處理錯誤和異常。它帶有內置的“調試”組件,該組件在開發過程中提供詳細的錯誤消息。在生產環境中,Symfony 2捕獲了所有例外,並將它們轉換為“響應”對象。您可以通過在'app/resource/twigbundle/twigbundle/views/extescondory中創建模板來自定義錯誤頁面。一個“表單”組件,可輕鬆創建和管理表單。您可以通過創建“ formType”類並以形式定義字段來創建表單。創建表單後,您可以處理控制器中的表單提交。 Symfony 2還提供了一種使用驗證約束來驗證表單數據的方法。
如何在Symfony 2中管理用戶身份驗證和授權?和授權。您可以配置不同的身份驗證方法,例如形式登錄,HTTP基本身份驗證或OAuth。為了授權,Symfony 2提供了靈活的“訪問控制列表”(ACL)系統,該系統允許您為用戶定義細粒度的權限。
>如何優化Symfony 2應用程序的性能?
>有幾種方法可以優化Symfony 2應用程序的性能。其中一些包括使用“產品”環境進行生產,使APC PHP擴展用於OpCode緩存,使用作曲家優化自動加載器,並使用“ HTTPCACHE”類使用“ HTTPCACHE”類將HTTP緩存標頭添加到您的響應中。
>如何將我的Symfony 2應用程序升級到較新版本?
2可以使用Composer完成對較新版本的應用程序。首先,您需要在項目中更新“ composer.json”文件,以指定要使用的新版本的Symfony。之後,您可以運行“作曲家更新”命令來更新您的應用程序。升級後徹底測試您的應用程序很重要,以確保一切正常工作。其他軟件中的插件。它們是包裝和分發Symfony 2代碼的一種方式。它們可以包含庫,模板,控制器,配置中的任何內容 - 本質上是可以執行的任何PHP代碼。您可以使用Symfony社區提供的捆綁包或創建自己的捆綁包。要使用捆綁包,您需要下載它,在'appkernel.php'文件中啟用它,並在必要時進行配置。
>如何處理Symfony 2? > Symfony 2提供了一種強大而靈活的方法來處理錯誤和異常。它帶有內置的“調試”組件,該組件在開發過程中提供詳細的錯誤消息。在生產環境中,Symfony 2捕獲了所有例外,並將它們轉換為“響應”對象。您可以通過在'app/resource/twigbundle/twigbundle/views/extescondory中創建模板來自定義錯誤頁面。一個“表單”組件,可輕鬆創建和管理表單。您可以通過創建“ formType”類並以形式定義字段來創建表單。創建表單後,您可以處理控制器中的表單提交。 Symfony 2還提供了一種使用驗證約束來驗證表單數據的方法。
如何在Symfony 2中管理用戶身份驗證和授權?和授權。您可以配置不同的身份驗證方法,例如形式登錄,HTTP基本身份驗證或OAuth。為了授權,Symfony 2提供了靈活的“訪問控制列表”(ACL)系統,該系統允許您為用戶定義細粒度的權限。
>如何優化Symfony 2應用程序的性能?
>有幾種方法可以優化Symfony 2應用程序的性能。其中一些包括使用“產品”環境進行生產,使APC PHP擴展用於OpCode緩存,使用作曲家優化自動加載器,並使用“ HTTPCACHE”類使用“ HTTPCACHE”類將HTTP緩存標頭添加到您的響應中。
以上是Symfony 2用於開發和部署的清單的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP中有四種主要錯誤類型:1.Notice:最輕微,不會中斷程序,如訪問未定義變量;2.Warning:比Notice嚴重,不會終止程序,如包含不存在文件;3.FatalError:最嚴重,會終止程序,如調用不存在函數;4.ParseError:語法錯誤,會阻止程序執行,如忘記添加結束標籤。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

在PHP中,應使用password_hash和password_verify函數實現安全的密碼哈希處理,不應使用MD5或SHA1。1)password_hash生成包含鹽值的哈希,增強安全性。 2)password_verify驗證密碼,通過比較哈希值確保安全。 3)MD5和SHA1易受攻擊且缺乏鹽值,不適合現代密碼安全。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

HTTP請求方法包括GET、POST、PUT和DELETE,分別用於獲取、提交、更新和刪除資源。 1.GET方法用於獲取資源,適用於讀取操作。 2.POST方法用於提交數據,常用於創建新資源。 3.PUT方法用於更新資源,適用於完整更新。 4.DELETE方法用於刪除資源,適用於刪除操作。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

在PHPOOP中,self::引用當前類,parent::引用父類,static::用於晚靜態綁定。 1.self::用於靜態方法和常量調用,但不支持晚靜態綁定。 2.parent::用於子類調用父類方法,無法訪問私有方法。 3.static::支持晚靜態綁定,適用於繼承和多態,但可能影響代碼可讀性。

PHP通過$\_FILES變量處理文件上傳,確保安全性的方法包括:1.檢查上傳錯誤,2.驗證文件類型和大小,3.防止文件覆蓋,4.移動文件到永久存儲位置。
