The Makefile has already give a recommended way for install dependencies by
using luarock 3 with the --lua-dir option specified to OpenResty's luajit,
and the dependencies is installed at current directory(project repo root).
But how we do this for production environment? The `install` target in
`Makefile` copy the source to `/usr/local/apisix`(`apisix_home`),I think
this is very good, but it doesn't copy deps directory to
`/usr/local/apisix`, I think we should also copy this.
The OpenResty use `/usr/local/apisix` as its prefix path, the log path
locate at /var/log/apisix/ may be more compatible with Linux FHS standard.
As this can be configured by `config.yaml`, we can skip this step now.

So the standard production install like this:
1. Ensure `OpenResty` is installed and has the expected version(s)
2. Ensure `luarocks 3` is installed
3. Use `/usr/local/apisix` as `apisix_home`
    sudo luarocks install --lua-dir=/usr/local/openresty/luajit
--tree=/usr/local/apisix apisix
The directory tree like this:
/usr/local/apisix
├── bin
│   └── apisix
├── conf
│   ├── cert
│   │   ├── apisix.crt
│   │   └── apisix.key
│   ├── config.yaml
│   ├── mime.types
│   └── nginx.conf
├── lib
│   ├── lua
│   │   └── 5.1
│   │       ├── lfs.so
│   │       ├── librestychash.so
│   │       ├── librestyradixtree.so
│   │       ├── pb.so
│   │       └── rapidjson.so
│   └── luarocks
│       └── rocks-5.1
│           ├── apisix
│           ├── iresty-nginx-lua-prometheus
│           ├── luafilesystem
│           ├── lua-protobuf
│           ├── lua-resty-balancer
│           ├── lua-resty-cookie
│           ├── lua-resty-etcd
│           ├── lua-resty-healthcheck-iresty
│           ├── lua-resty-http
│           ├── lua-resty-ipmatcher
│           ├── lua-resty-jit-uuid
│           ├── lua-resty-jwt
│           ├── lua-resty-ngxvar
│           ├── lua-resty-openidc
│           ├── lua-resty-radixtree
│           ├── lua-resty-session
│           ├── lua-resty-template
│           ├── lua-resty-worker-events
│           ├── lua-tinyyaml
│           ├── lua-typeof
│           ├── manifest
│           ├── opentracing-openresty
│           └── rapidjson
├── logs
└── share
    └── lua
        └── 5.1
            ├── apisix
            ├── nginx
            ├── opentracing
            ├── protoc.lua
            ├── resty
            ├── tinyyaml.lua
            └── typeof.lua


What can we do?
1. Add install document for production environment
2. Support upgrade document for each release
3. Modify Makefile to support installation(`make install`) current codebase
4. Add some `config.yaml` config item, eg. `tmp_dir`, this would set
*_temp_path for OpenResty.
```
client_body_temp_path
fastcgi_temp_path
uwsgi_temp_path
scgi_temp_path
proxy_temp_path
```

Reply via email to