习惯了使用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到一个新技能,开发中的神技。