2011-07-15 48 views
1

我正在開發我的本地機器(apache2,php,mysql)。當我想將文件上傳到我的服務器(nginx,mysql,php5-fpm)時,我首先備份我的www文件夾,提取數據庫,將所有內容都提交給我的服務器(這很乏味,因爲它受opiekey保護)在中,將服務器上的主目錄中的文件複製到我的www目錄,如果我很幸運,文件權限和其他所有內容都可以運行,則可以在線查看更改。如果我不走運,我將不得不研究出了什麼問題。Linux:將文件上傳到實時服務器 - 如何自動化進程?

今天,我只更改了一個文件,並且只能通過整個過程來完成此文件。你可以想象這有多惱人。有沒有更快的方法來做到這一點?一種將其自動化的方法?也許像SVN中的「提交」並關閉你飛行?

你們如何處理這些類型的東西?

PS:我對這一切都非常陌生,所以請耐心等待!例如,我總是將文件複製到服務器上的主目錄中,因爲scp似乎無法將它們直接複製到/ var/www文件夾中?

回答

1

我認爲「SVN」方法非常接近你真正想要的。你做一個cron作業,每隔幾分鐘就會運行「svn update」(或者如果使用mercurial,則使用hg pull -u,類似於git)。另一個選擇是使用Dropbox(我們有時使用它用於我們的Web服務器) - 這個很容易setyp並與非開發人員(如UI設計師)共享...

2

有很多實用程序會爲你做。如果您知道python,請嘗試fabric。如果你知道紅寶石,你可能更喜歡capistrano。它們允許您編寫本地和遠程操作的腳本。

如果您有一個服務器場需要照顧,那麼這兩個服務器可能無法按您想要的規模工作。對於超過10臺服務器,請查看chefpuppet以完全管理您的服務器。

無論您是從本地簽出,打包源代碼(我的首選解決方案),遠程存儲庫還是完全不同的東西都由您決定。無論你爲什麼工作都可以。只要確保你的部署是可重複的(也就是說你總是可以說「5分鐘前它沒有損壞,我想要5分鐘前我現在擁有的東西」)。無論使用哪種版本,都比沒有版本更好(標籤發佈可能是最舒適的)。

0

rsync將只發送您的本地機器和遠程機器之間的變化。這將是一個替代scp。你可以看看如何設置它來做你需要的。

您無法複製到/ var/www,因爲您用於登錄複製會話的憑據無權訪問/ var/www上的內容。假設你有root權限,將/ var/www(或更好的子目錄)上的組(chown)更改爲組,並更改權限以允許組寫入權限(chmod g + w)。

rsync相當輕量級,所以它應該很簡單。

相關問題