install-orange-on-linux

Description

  • 最近看到很多人在安装 Orange 过程中碰了问题,大多数是因为找不到第三方依赖包。其实 README.md 安装步骤已经写的很详细了,但是对于新手来说,特别是对 OpenResty 都不太熟悉的同学,还是有点不太友好。因为 Orange 是基于 OpenResty 的 API 网关。所以在使用 Orange 之前,建议去把 OpenResty官方文档认真的读两遍,可以避免由于自己缺乏常识而导致的一些错误以至于浪费太多时间。不可否认, Orange 现在对于插件的第三方依赖的管理方式并不是最完美的,这其实不是 Orange 本身的问题,是由于 OpenResty 到现在官方也没有提供一种特别好用的工具, opm 现在还是仅仅处于能用的状态,相比于 Node.js 社区中的 npm 还有很大的进步空间。

  • 现在 Orange 的开发成员将将插件所依赖的第三方包发布到 opm 仓库 中,我们只需要通过 opm --install-dir=./ get zhangbao0325/orangelib 就可以将所有第三方依赖下载下来,目前看来是一个不错的解决办法。但是也存在一个问题,由于维护这个仓库的人员跟插件的贡献者并不是同一个人,所有有可能会导致他维护提供的三方依赖包不是完全正确的,我在这个过程中遇到了几个问题,详情参看 #280 #281

Install Orange

  • 安装最新版本的 OpenResty,注意在编译 OpenResty 的时候需要添加上 --with-http_stub_status_module,监控插件需要统计 http 某些状态数据
  • nginxresty 命令配置到环境变量中,使用 nginx -vresty -v 验证是否正常输出
  • 安装 lor 框架
  • 安装 MySQL
  • install/oorange-v0.6.4.sql 导入到 orange 库中
  • 修改配置文件
    一个是关于 Dashboard 和插件的配置文件 conf/orange.conf,另一个是 Nginx 的配置文件 conf/nginx.conf
    orange.conf配置如下,请根据实际情况修改
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    {
    "plugins": [ //可用的插件列表,若不需要可从中删除,系统将自动加载这些插件的开放API并在7777端口暴露
    "stat",
    "monitor",
    "redirect",
    "rewrite",
    "rate_limiting",
    "property_rate_limiting",
    "basic_auth",
    "key_auth",
    "signature_auth",
    "waf",
    "divide",
    "kvstore"
    ],

    "store": "mysql",//目前仅支持mysql存储
    "store_mysql": { //MySQL配置
    "timeout": 5000,
    "connect_config": {//连接信息,请修改为需要的配置
    "host": "127.0.0.1",
    "port": 3306,
    "database": "orange",
    "user": "root",
    "password": "",
    "max_packet_size": 1048576
    },
    "pool_config": {
    "max_idle_timeout": 10000,
    "pool_size": 3
    },
    "desc": "mysql configuration"
    },

    "dashboard": {//默认的Dashboard配置.
    "auth": false, //设为true,则需用户名、密码才能登录Dashboard,默认的用户名和密码为admin/orange_admin
    "session_secret": "y0ji4pdj61aaf3f11c2e65cd2263d3e7e5", //加密cookie用的盐,自行修改即可
    "whitelist": [//不需要鉴权的uri,如登录页面,无需修改此值
    "^/auth/login$",
    "^/error/$"
    ]
    },

    "api": {//API server配置
    "auth_enable": true,//访问API时是否需要授权
    "credentials": [//HTTP Basic Auth配置,仅在开启auth_enable时有效,自行添加或修改即可
    {
    "username":"api_username",
    "password":"api_password"
    }
    ]
    }
    }

nginx.conf中需要注意以下几个配置

  1. lua_package_path:需要根据本地环境配置适当修改
  2. resolver:DNS解析
  • 通过 make install 安装

  • 安装第三方依赖包

    1
    2
    3
    4
    5
    cd /usr/local/orange/
    opm --install-dir=./ get zhangbao0325/orangeli
    luarocks install luafilesystem
    luarocks install luasocket
    luarocks install lrandom
  • 通过 orange start 启动,执行 orange help 来查看哪些命令可用。内置的Dashboard可通过 http://localhost:9999 访问

您的支持将鼓励我继续创作!