私有部署说明

私有部署是下载Masterlab程序到本地安装的一种部署方式,如果是你是在线注册直接使用Masterlab的以下内容请忽略

环境要求

Msterlab的运行依赖以下服务,因此要先安装它们: Apache+Php+Mysql 或 Nginx+Php+Mysql

- Web Server : Nginx 或 Apache
- Php
  - 版本 >= 7.0 ,建议版本 php7.4
  - 必备扩展 :curl,mysqlnd,pdo,opcache,mbstring,redis,ldap
  - php.ini   修改 upload_max_filesize = 8M
  - php.ini   修改 post_max_size = 8M
  - php.ini   修改 memory_limit = 128M  
  - php.ini   修改 max_execution_time = 30  

- Mysql
  - 版本 >= 5.6

- 目录权限
-  masterlab/app/config 目录要求写入权限
-  masterlab/storage 目录含子目录要求写入权限
-  masterlab/public/attachment 目录含子目录要求写入权限
-  masterlab/public/install 目录要求写入权限
-  masterlab/plugin/document 目录含子目录要求写入权限

使用Docker安装

https://github.com/gopeak/masterlab-docker

Windows下安装

基于手动安装(适合学习和研究者,耗时约3分钟)
基于宝塔安装(小白专用,耗时约2分钟)
基于Wampserver(备用安装方案)

Linux下安装

Linux手动安装
Linux基于宝塔安装

升级指南

v2.1 至 v3.0 升级

2.1到3.0暂未提供直接升级的脚本,请通过以下方法手动升级,顺利的话2分钟完成。
首先参考教程安装最新的Masterlab3.0版本(一定要安装完成),然后执行以下命令:

# 1.进入最新版本的bin目录
cd /data/www/masterlab3/bin

# 2.执行升级脚本并带上2.1版本的根目录, 如/data/www/masterlab2为2.1版本的根目录
php migrate3.php /data/www/masterlab2

# 显示"导入完成"表明升级成功

# 3.修改web服务器的配置,将2.1的路径修改为3.0的目录,然后重启Web服务器即可
# /data/www/masterlab2/app/public   --->  /data/www/masterlab3/public

v2.0 v2.1到v3.0升级方案

v2.0 v2.1到v3.0的功能和程序结构有了较大改变,升级程序运行需要较长时间,因此不进行在线升级。 手动升级脚本将近期提供。

在线升级(从v2.0.1往后已经支持在线升级)

在页面右上角点击"向下箭头/升级"打开升级界面进行确认操作即可,升级前请先备份好数据库
如果在线升级失败,可以尝试进行手动操作

# 下载对应的补丁包
v2.1.5 到 v2.1.7 补丁包:http://download.masterlab.vip/v2.1.5-v2.1.7-upgrade.zip
v2.1.3 到 v2.1.7 补丁包:http://download.masterlab.vip/v2.1.3-v2.1.7-upgrade.zip
v2.1.1 到 v2.1.7 补丁包:http://download.masterlab.vip/v2.1.1-v2.1.7-upgrade.zip
v2.1.1 到 v2.1.2 补丁包: http://download.masterlab.vip/v2.1.1-v2.1.2-upgrade.zip
v2.1 到 v2.1.2 补丁包:   http://download.masterlab.vip/v2.1-v2.1.2-upgrade.zip
v2.0.2 到 v2.1.2 补丁包: http://download.masterlab.vip/v2.0.2-v2.1.2-upgrade.zip  
v2.0.1 到 v2.1.2 补丁包: http://download.masterlab.vip/v2.0-v2.1.2-upgrade.zip
v2.0 到 v2.1.2 补丁包:   http://download.masterlab.vip/v2.0-v2.1.2-upgrade.zip

# 1.将补丁包下载到masterlab/upgrade目录下,并解压缩
# 2.将压缩包内的patch.zip文件和目录覆盖到masterlab原文件
# 3.如果压缩包内存在vendor.zip文件,则解压出来覆盖原来的vendor文件夹
# 4.在分别在数据库中执行 database.sql和index.sql
# 5.最后修改 `app/config/deploy/app.cfg.php`文件,将`MASTERLAB_VERSION`修改为最新版本号

v2.0 至 v2.0.1 升级

下载升级文件 http://download.masterlab.vip/v2.0-v2.0.1-upgrade.zip ,压缩包内文件覆盖到根目录即可

v1.2 至 v2.0.2 升级

下载升级文件 http://download.masterlab.vip/v1.2-v2.0.2-upgrade.zip ,按照压缩包内的 readme.md 进行升级
注:连接mysql的用户要求具备修改表结构的权限,升级期间请勿对masterlab进行操作

版本小于1.2升级

由于1.2以下的版本和v2.0的数据库表结构差异比较大,目前暂不提供自动升级脚本,如果你拥有Mysql的数据管理能力,可以手动进行升级

1.备份源码和数据库

2.安装最新的v2.0版本

3.使用数据库管理Navicat最新版 进行老版本和v2.0数据的差异对比,并同步
可参考文章 https://www.cnblogs.com/guoyinghome/p/11220281.html

4.将当前的app/storage/attachment 的所有子目录和文件拷贝到2.0的 app/public/attachment

5.将当前的 app/config/deploy/database.cfg.php 覆盖到 v2.0的 app/config/deploy/database.cfg.php

6.使用2.0版本进行访问

Masterlab - 404
404
您所访问的页面不存在或出错了
help->pageIndex no found;
debug
Sql:
Array
(
)
TRACE:
Array
(
)
GET:
Array
(
    [md] => private-deployment
    [_target] => Array
        (
            [0] => help
        )

)
POST:
Array
(
)
FILES:
Array
(
)
Include: 118
Array
(
    [0] => /data/www/masterlab_site/public/index.php
    [1] => /data/www/masterlab_site/app/globals.php
    [2] => /data/www/masterlab_site/vendor/autoload.php
    [3] => /data/www/masterlab_site/vendor/composer/autoload_real.php
    [4] => /data/www/masterlab_site/vendor/composer/platform_check.php
    [5] => /data/www/masterlab_site/vendor/composer/ClassLoader.php
    [6] => /data/www/masterlab_site/vendor/composer/autoload_static.php
    [7] => /data/www/masterlab_site/vendor/symfony/polyfill-php72/bootstrap.php
    [8] => /data/www/masterlab_site/vendor/symfony/polyfill-intl-normalizer/bootstrap.php
    [9] => /data/www/masterlab_site/vendor/ralouphie/getallheaders/src/getallheaders.php
    [10] => /data/www/masterlab_site/vendor/symfony/polyfill-ctype/bootstrap.php
    [11] => /data/www/masterlab_site/vendor/symfony/polyfill-intl-idn/bootstrap.php
    [12] => /data/www/masterlab_site/vendor/guzzlehttp/psr7/src/functions_include.php
    [13] => /data/www/masterlab_site/vendor/guzzlehttp/psr7/src/functions.php
    [14] => /data/www/masterlab_site/vendor/guzzlehttp/promises/src/functions_include.php
    [15] => /data/www/masterlab_site/vendor/guzzlehttp/promises/src/functions.php
    [16] => /data/www/masterlab_site/vendor/symfony/polyfill-mbstring/bootstrap.php
    [17] => /data/www/masterlab_site/vendor/guzzlehttp/guzzle/src/functions_include.php
    [18] => /data/www/masterlab_site/vendor/guzzlehttp/guzzle/src/functions.php
    [19] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/bootstrap.php
    [20] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/function.php
    [21] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/FilterSqlInject.php
    [22] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/HornetCoreException.php
    [23] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/HornetLogicException.php
    [24] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/ErrorHandler.php
    [25] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/HornetEngine.php
    [26] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/protocol/Iprotocol.php
    [27] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/protocol/Api.php
    [28] => /data/www/masterlab_site/vendor/hornet/framework/src/framework/protocol/Ajax.php
    [29] => /data/www/masterlab_site/vendor/lcobucci/jwt/compat/class-aliases.php
    [30] => /data/www/masterlab_site/vendor/lcobucci/jwt/src/Token/Plain.php
    [31] => /data/www/masterlab_site/vendor/lcobucci/jwt/src/Token.php
    [32] => /data/www/masterlab_site/vendor/lcobucci/jwt/src/Token/Signature.php
    [33] => /data/www/masterlab_site/vendor/lcobucci/jwt/src/Signature.php
    [34] => /data/www/masterlab_site/vendor/lcobucci/jwt/compat/json-exception-polyfill.php
    [35] => /data/www/masterlab_site/vendor/lcobucci/jwt/compat/lcobucci-clock-polyfill.php
    [36] => /data/www/masterlab_site/app/function/autoload.php
    [37] => /data/www/masterlab_site/app/function/array.php
    [38] => /data/www/masterlab_site/app/function/common.php
    [39] => /data/www/masterlab_site/app/function/cryptojs-aes.php
    [40] => /data/www/masterlab_site/app/function/sql.php
    [41] => /data/www/masterlab_site/app/function/string.php
    [42] => /data/www/masterlab_site/app/function/system.php
    [43] => /data/www/masterlab_site/app/function/time.php
    [44] => /data/www/masterlab_site/app/function/upload_image.php
    [45] => /data/www/masterlab_site/app/function/web.php
    [46] => /data/www/masterlab_site/app/function/response_error.php
    [47] => /data/www/masterlab_site/app/function/excel.php
    [48] => /data/www/masterlab_site/vendor/symfony/yaml/Yaml.php
    [49] => /data/www/masterlab_site/vendor/symfony/yaml/Parser.php
    [50] => /data/www/masterlab_site/vendor/symfony/yaml/Inline.php
    [51] => /data/www/masterlab_site/vendor/symfony/yaml/Unescaper.php
    [52] => /data/www/masterlab_site/app/config/app.cfg.php
    [53] => /data/www/masterlab_site/app/constants.php
    [54] => /data/www/masterlab_site/app/config/common.cfg.php
    [55] => /data/www/masterlab_site/app/config/session.cfg.php
    [56] => /data/www/masterlab_site/app/ctrl/Help.php
    [57] => /data/www/masterlab_site/app/ctrl/BaseCtrl.php
    [58] => /data/www/masterlab_site/vendor/symfony/event-dispatcher/EventDispatcher.php
    [59] => /data/www/masterlab_site/vendor/symfony/event-dispatcher/EventDispatcherInterface.php
    [60] => /data/www/masterlab_site/vendor/symfony/event-dispatcher-contracts/EventDispatcherInterface.php
    [61] => /data/www/masterlab_site/app/model/SettingModel.php
    [62] => /data/www/masterlab_site/app/model/BaseDictionaryModel.php
    [63] => /data/www/masterlab_site/app/model/CacheModel.php
    [64] => /data/www/masterlab_site/app/model/DbModel.php
    [65] => /data/www/masterlab_site/app/model/BaseModel.php
    [66] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/DriverManager.php
    [67] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Configuration.php
    [68] => /data/www/masterlab_site/vendor/doctrine/event-manager/lib/Doctrine/Common/EventManager.php
    [69] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDO/MySQL/Driver.php
    [70] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php
    [71] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php
    [72] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver.php
    [73] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/ExceptionConverterDriver.php
    [74] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/VersionAwarePlatformDriver.php
    [75] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php
    [76] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/Connection.php
    [77] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/TransactionIsolationLevel.php
    [78] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/ParameterType.php
    [79] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/FetchMode.php
    [80] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Query/Expression/ExpressionBuilder.php
    [81] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDO/Connection.php
    [82] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php
    [83] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/ServerInfoAwareConnection.php
    [84] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOQueryImplementation.php
    [85] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDO/Statement.php
    [86] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php
    [87] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/Statement.php
    [88] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/ResultStatement.php
    [89] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/Result.php
    [90] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatementImplementations.php
    [91] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Events.php
    [92] => /data/www/masterlab_site/lib/MyRedis.php
    [93] => /data/www/masterlab_site/vendor/doctrine/dbal/lib/Doctrine/DBAL/SQLParserUtils.php
    [94] => /data/www/masterlab_site/app/classes/UserAuth.php
    [95] => /data/www/masterlab_site/app/ctrl/Resource.php
    [96] => /data/www/masterlab_site/lib/parsedown/Parsedown.php
    [97] => /data/www/masterlab_site/app/view/help.php
    [98] => /data/www/masterlab_site/app/view/common/header-meta.php
    [99] => /data/www/masterlab_site/app/view/common/header-style.php
    [100] => /data/www/masterlab_site/app/view/common/header-script.php
    [101] => /data/www/masterlab_site/app/view/common/body-header.php
    [102] => /data/www/masterlab_site/app/view/common/common-footer.php
    [103] => /data/www/masterlab_site/app/view/common/siteFooter.php
    [104] => /data/www/masterlab_site/app/view/modal/login.php
    [105] => /data/www/masterlab_site/app/view/modal/signup.php
    [106] => /data/www/masterlab_site/app/view/modal/get-started.php
    [107] => /data/www/masterlab_site/app/view/modal/try.php
    [108] => /data/www/masterlab_site/app/view/modal/trial.php
    [109] => /data/www/masterlab_site/app/view/modal/buy-premium.php
    [110] => /data/www/masterlab_site/app/view/modal/loading.php
    [111] => /data/www/masterlab_site/app/view/modal/signup-failed.php
    [112] => /data/www/masterlab_site/app/view/modal/existing-account.php
    [113] => /data/www/masterlab_site/app/view/modal/unsupported-browser.php
    [114] => /data/www/masterlab_site/app/view/modal/calculate.php
    [115] => /data/www/masterlab_site/app/view/modal/sso-signup.php
    [116] => /data/www/masterlab_site/app/view/modal/i18n.php
    [117] => /data/www/masterlab_site/app/view/exception.php
)