習慣了使用VScode,sublime text 3等編輯器,需要自己在開發機上改bug,只能依靠linux系統提供的vim,對於我這種對vim不熟的人來說,在開發機上改bug用vim真的是非常難受了,總是會在本地將代碼修改完畢,再複製上開發機,這樣的體驗真的很蛋疼!!!
接觸了百度提供的fis ,可直接將本地項目部署到遠程服務器,每次只需要將本地文件重新提交一次就好了,實現了windows->linux開發機->nginx服務器的同步。即項目部署。
**
具體操作:
**
服務端接收腳本部署:
直接克隆代碼庫中的文件:(克隆到服務器下項目所在的目錄下,比如:/home/www/test)
在項目目錄下建receiver.php文件,寫入以下代碼。
<?php
// !!!! 注意 !!!!
// 此代碼存在很大的安全隱患,請不要部署到線上服務。
// 百度內部請使用:http://agroup.baidu.com/fis/md/article/196978
@error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
function mkdirs($path, $mod = 0777) {
if (is_dir($path)) {
return chmod($path, $mod);
} else {
$old = umask(0);
if(mkdir($path, $mod, true) && is_dir($path)){
umask($old);
return true;
} else {
umask($old);
}
}
return false;
}
if($_POST['to']){
$to = urldecode($_POST['to']);
if(is_dir($to) || $_FILES["file"]["error"] > 0){
header("Status: 500 Internal Server Error");
} else {
if(file_exists($to)){
unlink($to);
} else {
$dir = dirname($to);
if(!file_exists($dir)){
mkdirs($dir);
}
}
echo move_uploaded_file($_FILES["file"]["tmp_name"], $to) ? 0 : 1;
}
} else {
echo 'I\'m ready for that, you know.';
}
這裏如果正常,可以直接訪問此項目下的此文件,比如:http://(項目地址)/receiver.php 正常情況下會看到以下頁面:
到這裏,服務器(開發機)的環境基本完成。
本地環境配置:
先安裝fis,網上教程很多。版本也很多,fis-plus,fis2,fis3等等。不多說。
安裝完成後,克隆項目:
git clone https://github.com/chyingp/fis-receiver.git
跟着,安裝依賴
cd fis-receiver/
npm install
在本地項目中建立文件fis-conf.js文件,將以下代碼寫入其中:
不同的ifs版本可能配置不同,自己去看fis對應版本的文檔,這裏使用的是fis-plus版本。
fis.config.set('deploy', {
//使用fis release --dest static來使用這個配置
remote: [{
//如果配置了receiver,fis會把文件逐個post到接收端上
receiver : 'http://(項目地址)/receiver.php',
//從產出的結果的static目錄下找文件
from : '/static',
//上傳目錄從static下一級開始不包括static目錄
subOnly : true,
//保存到遠端機器的/home/www/aaa目錄下
//這個參數會跟隨post請求一起發送
to : '/home/www/aaa',
//某些後綴的文件不進行上傳
exclude : /.*\.(?:svn|cvs|tar|rar|psd).*/
}]
});
上傳成功後即可在服務器(開發機)上看到本地項目的所有文件,如果上成功卻沒有在服務器上看到文件,name恭喜你踩了與我相同的一個坑:上傳的那個文件夾的權限是不可寫的,改變其權限即可。chmod -R 777 項目文件夾
ok ,到這裏恭喜你又GET到一個新技能,開發中的神技。