使用fis將本地項目部署到開發機(遠程服務器)

習慣了使用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到一個新技能,開發中的神技。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章