引用作都的介绍:
本系统是集工单统计、任务钩子、权限管理、灵活配置流程与模版等等于一身的开源工单系统,当然也可以称之为工作流引擎。
致力于减少跨部门之间的沟通,自动任务的执行,提升工作效率与工作质量,减少不必要的工作量与人为出错率。
演示Demo: ferry - ferry
账号密码:admin/123456
Gitee: 仓库地址 Github:仓库地址
文档:介绍 - 兰玉磊的个人博客
根据作者的安装文档,写的简单了些,在这个过程中碰到很多问题,因些自己记录了一下安装过程:
Ferry安装配置
首先安装所需要用的基础软件vim,wget,git
yum –y install vim wget git
一、安装mysql
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server
systemctl start mysqld.service #启动mysql
grep "password" /var/log/mysqld.log #找到安装后的默认密码
mysql -uroot -p
#输入初始密码(是上面图片最后面的SZgbj8,kpjSU此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
#其中‘new password’替换成你要设置的密码,注意:密码设置必须要大小写字母数字和特殊符号(,/';:等),不然不能配置成功。
#创建一个ferry用户用于ferry安装
create user 'ferry'@'localhost' identified by ' password ';
#给ferry用户授权可以访问ferry数据库
grant all privileges on ferry.* to 'ferry'@'localhost' identified by ' password ' ;
flush privileges;
exit
二、Go语方环境安装
wget https://studygolang.com/dl/golang/go1.17.5.linux-amd64.tar.gz
tar -C/usr/local -xvf go1.17.5.linux-amd64.tar.gz
mkdir /opt/gopath
cat >> /etc/profile < export GOROOT=/usr/local/go export GOPATH=/opt/gopath export PATH=$PATH:$GOROOT/bin export GOPROXY=https://goproxy.cn #设置go代理 EOF source /etc/profile go version 可以看到go的版本则安装成功。 三、安装redis 查看gcc版本,版本过低编译redis6会报错,升级gcc # 升级到gcc 9.3: yum -y install centos-release-scl yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils scl enable devtoolset-9 bash # 需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。 # 如果要长期使用gcc 9.3的话: echo -e "nsource /opt/rh/devtoolset-9/enable" >>/etc/profile wget http://download.redis.io/releases/redis-6.2.6.tar.gz tar zxvf redis-6.2.6.tar.gz cd redis-6.2.6/ make && make PREFIX=/usr/local/redis install # 编译安装到指定目录下 make PREFIX=/usr/local/redis install # 编译出错时,清出编译生成的文件 make distclean # 卸载 make uninstall mkdir /etc/redis #修改redis.conf文件设置开机启动 daemonize no 改为 daemonize yes cp redis.conf /etc/redis/6379.conf cd utils cp redis_init_script /etc/init.d/redis_6379 chmod +x /etc/init.d/redis_6379 #修改redis_6379 将EXEC=/usr/local/bin/redis-server改为安装路径: EXEC=/usr/local/redis/bin/redis-server #启动redis /etc/init.d/redis_6379 start #设置redis开机启动 chkconfig --add redis_6379 chkconfig redis_6379 on 四、安装node wget https://npm.taobao.org/mirrors/node/v14.18.2/node-v14.18.2-linux-x64.tar.gz tar xf node-v14.18.2-linux-x64.tar.gz mv node-v14.18.2-linux-x64 /opt/ vim /etc/profile 最后一行添加 : export PATH=$PATH:/opt/node-v14.18.2-linux-x64/bin source /etc/profile node –v npm -v 可以显示版本号则安装成功 五、ferry后端部署 cd /opt # 1. 拉取代码,以下命令二选一即可: git clone https://github.com/lanyulei/ferry.git git clone https://gitee.com/yllan/ferry.git # 2. 进入工作路径 cd ferry # 3. 交叉编译(centos) env GOOS=linux GOARCH=amd64 go build 更多交叉编译内容,请访问 https://www.fdevops.com/2020/03/08/go-locale-configuration # 4. config目录上传到项目根路径下,并确认配置信息是否正确 vim config/settings.yml 1). 修改为自己的数据库信息 2). 修改为自己的邮件服务器地址 其他的根据情况来修改调整 # 4. 创建日志路径及静态文件经历 mkdir -p log static/uploadfile static/scripts static/template # 5. 将本地项目下static/template目录下的所有文件上传的到,服务器对应的项目目录下static/template # 6. 连接数据库,并创建数据库 create database ferry charset 'utf8mb4'; # 7. 初始化数据 ./ferry init -c=config/settings.yml # 8. 启动程序,推荐通过"进程管理工具"进行启动维护 nohup ./ferry server -c=config/settings.yml > /dev/null 2>&1 & 六、ferry前端部署: # 1. 拉取代码,以下命令二选一即可: git clone https://github.com/lanyulei/ferry_web.git git clone https://gitee.com/yllan/ferry_web.git # 2. 进入工作路径 cd ferry_web # 3. 安装依赖 npm config set registry https://registry.npm.taobao.org npm install # 若npm install安装失败,可尝试使用一下命令安装 npm install --unsafe-perm # 推荐使用cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org cnpm install #这个过程中会碰到类似下图中的问题 #后面如果一直卡在那,再报错的话,我们就单独将这个包再安装一次如: cnpm install --save is-buffer@^1.1.5 #直到出现如下图所示,则这一步安装组件完成 # 4. 修改 .env.production 文件 # base api VUE_APP_base_API = 'http://fdevops.com:8001' # 修改为您自己的域名也可以是IP地址 # 5. 编译 cnpm run build:prod #下面的图是在编译时碰到的问题记录 #缺少webpack包,安装下,不要安装太高版本否则会报错 cnpm install --save webpack@^4.5.0 #注意这个问题 file-loader版本过高编译完成后,图片会有object module错误 cnpm install file-loader@^4.2.0 #编译时报下面错误,缺少组件,继续安装组件 cnpm install --save @babel/helper-validator-option #下图这个问题需要重建node-sass cnpm rebuild node-sass #重建过程中还是报错,看提示是缺少目录,我们创建这个目录,并给目录所有权 mkdir -p /opt/ferry/ferry_web/node_modules/_node-sass@4.14.1@node-sass/vendor chmod 777 /opt/ferry/ferry_web/node_modules/_node-sass@4.14.1@node-sass/vendor #在github下载这个文件会比较慢或都报错,我们可以直接先下好 wget https://npm.taobao.org/mirrors/node-sass/v4.14.1/linux-x64-83_binding.node #然后将下载好的文件放到对应的目录中即可 mv linux-x64-83_binding.node /opt/ferry/ferry_web/node_modules/_node-sass@4.14.1@node-sass/vendor/linux-x64-83/binding.node cnpm rebuild node-sass #又来新的错误了,总结下是需要安装几个新的组件 cnpm install --save core-js regenerator-runtime svg-baker-runtime #安装完成后继续执行编译命令 cnpm run build:prod #总算搞定了。 七、nginx安装配置 #安装nginx yum install yum-utils #添加源到 vim /etc/yum.repos.d/nginx.repo yum -y install nginx 添加ferry配置文件 vim /etc/nginx/conf.d/ferry.conf #检查配置文件是否有错 nginx –t #启动nginx nginx #启动完成后查看下主要的几个端口是否已开启 #记得在防火墙上打开被访问的端口8001 firewall-cmd --zone=public --add-port=8001/tcp --permanent (--permanent永久生效,没有此参数重启后失效) 重新载入 firewall-cmd --reload 安装完成[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
server {
listen 8001; # 监听端口
server_name 10.100.168.70:8001; # 域名可以有多个,用空格隔开
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /opt/ferry/ferry_web/web;
index index.html index.htm; #目录内的默认打开文件,如果没有匹配到index.html,则搜索index.htm,依次类推
}
#ssl配置省略
location /api {
# rewrite ^.+api/?(.*)$ /$1 break;
proxy_pass http://127.0.0.1:8002; #node api server 即需要代理的IP地址
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 登陆
location /login {
proxy_pass http://127.0.0.1:8002; #node api server 即需要代理的IP地址
proxy_redirect off;
proxy_ignore_client_abort on;
proxy_max_temp_file_size 256m;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 32k;
proxy_temp_file_write_size 64k;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 刷新token
location /refresh_token {
proxy_pass http://127.0.0.1:8002; #node api server 即需要代理的IP地址
proxy_set_header Host $host:$server_port;
}
# 接口地址
location /swagger {
proxy_pass http://127.0.0.1:8002; #node api server 即需要代理的IP地址
proxy_set_header Host $host:$server_port;
}
# 后端静态文件路径
location /static/uploadfile {
proxy_pass http://127.0.0.1:8002; #node api server 即需要代理的IP地址
proxy_set_header Host $host:$server_port;
}
#error_page 404 /404.html; #对错误页面404.html 做了定向配置
# redirect server error pages to the static page /50x.html
#将服务器错误页面重定向到静态页面/50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}



