2010-08-17 60 views
3

我們正在創建一個php腳本項目;我們將銷售給客戶。
客戶可以在其Web服務器上託管腳本。PHP腳本「更新過程」管理教程

我們希望爲此腳本開發更新或升級過程。
意思是,如果客戶正在使用腳本的1.2版本,並且我們發佈了腳本的新版本1.3,則用戶將能夠在後端控制面板中看到「新版本可用」文本。

用戶可以去更新或升級頁面並點擊按鈕來自動更新腳本。
我可以理解,這個過程將涉及以下內容: 1.檢查我們主頁上可用腳本的當前版本的過程。
2.文件更新過程:從客戶端服務器上的我的服務器上下載並更新所需的文件。
3.進行必要的數據庫更改:從我的主服務器上下載升級sql文件並在數據庫上運行它。

我試圖谷歌找到一個很好的啓動教程,讓我踢開始,並驗證如果我失去了一些東西,但我無法找到任何東西。
你能指點我一些啓動教程或指導開發或管理腳本的更新過程嗎?
我知道像Wordpress,Joomla,osCommerce,Magento等所有主要的開源腳本都有這個功能。因此,互聯網上必須有可用的資源。

謝謝你我們的時間..玩得開心! :)

+2

的一個重要步驟:檢查所有文件的簽名,以確保沒有改動做了(其中升級可能會破壞系統)... – ircmaxell 2010-08-17 12:43:29

+0

ircmaxell,感謝您發表評論! 注:用戶,我的意思是我們的腳本的客戶。 – happyhardik 2010-08-17 13:07:01

回答

1

這是否真的需要一個教程?只需帶上你的編輯器開始編碼,如果我是你,這是我會做的方式:

  • 爲了操縱它們,所有的文件需要chmoded 777(如UNIX)。
  • 創建一個文件,說更新。PHP
  • 該文件會連接到您的網站(通過捲曲例如),並檢查更新是否可用。
  • 服務器側,可考慮將與路徑的清單文件的文件被替換+與數據庫的變化+替換的文件的SQL文件並打包所有在焦油(或zip)。
  • 作出這樣的存檔,並將其存儲在本地目錄說「臨時」您updater.php腳本下載。
  • updater.php將(使用PHP的例如拉鍊擴展)./temp/files
  • updater.php將不得不爲了使用./temp/files/manifest查找和替換文件
  • 解壓
  • 替換之前做一些文件完整性檢查,並確保文件沒有改變(比較校驗和)。
  • 檢查數據庫也一樣,在進行任何更改之前。
  • 如果一切正常,提交更改。
  • 刪除臨時數據。
  • 就是這樣。

您可以添加如果它未能恢復工作拷貝備份支持。

+2

這些文件不需要是chmod'777'。他們只需要由Web服務器的用戶寫入即可。離開(或者甚至允許他們)他們'777'只是一個壞的舉動... – ircmaxell 2010-08-17 16:21:00

+0

@ircmaxell,對。 777將使所有文件都可寫。考慮受限制的chmod。 – Youssef 2010-08-19 01:09:26

1

要做到這一點需要自定義與核心代碼的牢固分離。您需要確保用戶擁有一組單獨的頁面以從您的代碼中掛鉤。也許你應該在執行更新之前在頁面上遠程運行MD5檢查。

最簡單的解決方案是讓您的腳本(在客戶端)運行SOAp/REST命令,將其版本和序列發送到您的主服務器。反過來,你的服務器可以發送一個消息與新版本。

如果用戶單擊鏈接,客戶端腳本需要發送另一個帶有信息(例如FTP信息)的SOAP/REST命令,以允許服務器連接並覆蓋核心文件。

請記住,這需要用戶在文件上設置正確的chmod和chgrp/chown權限,以便實際連接和覆蓋文件。

許多腳本都具有此功能,但它存在很大的安全風險。想一想,如果努力實現這個正確是值得的...有時只需發送一個tar/zip更容易。

通過遠程更新,你正在運行到巨大的責任和安全問題......