Linux下部署开源版“禅道”项目管理系统
1.开源版安装包下载
[root@iZbp ~]# wget http://dl.cnezsoft.com/zentao/9.0.1/ZenTaoPMS.9.0.1.zbox_64.tar.gz
2.直接解压安装包到/opt目录下
[root@iZbp ~]# tar -zxvf ZenTaoPMS.9.0.1.zbox_64.tar.gz -C /opt
3.修改禅道自带apache、mysql端口
为了不占用Server上默认的80、3306端口,我们修改禅道自带的apache、mysql端口
修改禅道自带apache端口:
[root@iZbp logs]# /opt/zbox/zbox -ap 9000
修改禅道自带mysql端口:
[root@iZbp logs]# /opt/zbox/zbox -mp 9001
4.重启禅道服务
[root@iZbp11rfoyeescusr9ha9qZ ~]# /opt/zbox/zbox start
Apache is running
Mysql is running
执行/opt/zbox/zbox start 命令开启Apache和Mysql。
执行/opt/zbox/zbox stop 命令停止Apache和Mysql。
执行/opt/zbox/zbox restart 命令重启Apache和Mysql。
可以使用/opt/zbox/zbox -h命令来获取关于zbox命令的帮助
5.创建数据库账号
[root@iZbp logs]# /opt/zbox/auth/adduser.sh
This tool is used to add user to access adminer
Account: adminer
Password: Adding password for user adminer
注:数据库的用户名:root,密码为空。数据库管理用的是adminer,但是为了安全,访问adminer的时候需要身份验证,需要运行脚本添加账户
命令行登录禅道自带mysql数据库:
/opt/zbox/bin/mysql -u root -P 3306 -p
命令行导入备份的数据:
/opt/zbox/bin/mysql -u root -P 3306 -p zentaopro < zentao.sql
如果是首次安装“禅道”,此处略过;如果之前已经装有“禅道”,想导入之前的数据,则可以导入备份的zentao.sql文件;
6.配置iptables防火墙规则,允许端口访问
[root@iZbp logs]#iptables -A INPUT -p tcp --dport 9000 -j ACCEPT
[root@iZbp logs]#iptables -A INPUT -p tcp --dport 9001 -j ACCEPT
重启防火墙,使规则生效:
[root@iZbp logs]#service iptables save
[root@iZbp logs]#service iptables restart
7.浏览器访问
http://x.x.x.x:9000
客户端:
http://x.x.x.x:9000/zentao/user-login-L3plbnRhby8=.html
默认账号密码:admin/123456
- MobX 在 React Native开发中的应用
- RCTEventEmitter使用
- Google V8 引擎
- 揭秘前端字符的戏精之路
- 跨语言嵌入模型的调查
- React Native如何消除启动时白屏
- 如何在Python中将TimeDistributed层用于Long Short-Term Memory Networks
- react native 调用原生UI组件
- Android侧滑删除另一种实现,SwipeListView补充
- React Native调用原生组件
- React Native调用原生UI组件
- js不好学并不是因为它难,而是因为它容易混淆
- Gradle详解
- React Native网络请求fetch简单封装
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Webpack学习笔记
- 正则表达式学习笔记
- R 可视化 | 华夫饼图
- 绝了!Python定时爬取微博热搜+pyecharts动态图展示
- 实战 | Python爬取B站柯南弹幕+Gephi梳理主线剧情
- 别再问我 Python 怎么识别数字验证码了!
- Python自动化办公 | 同事要我帮忙补写178份Word日报!别闹!
- Excel多区间判断,其实很简单
- 外观模式
- cp命令
- java基本数据类型及相互间的转换(转)
- 【java设计模式系列】1. 工厂方法模式(Factory Method)
- 为什么 Java 中 1000==1000 为 false ?
- 【java设计模式系列】2. 单例模式(Singleton)
- 跨域请求的解决方案