libeio commented on issue #3752:
URL: https://github.com/apache/apisix/issues/3752#issuecomment-790417938


   the following content below is all the record about how I compiled and 
installed. You can try it in yr machine in the same way.
   
   ### downlinks
   [lua5.1.5](http://www.lua.org/ftp/lua-5.1.5.tar.gz)
   [luarocks](http://luarocks.github.io/luarocks/releases/luarocks-3.5.0.tar.gz)
   [pcre](ftp://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz)
   [zlib](http://zlib.net/zlib-1.2.11.tar.gz)
   [openssl](https://github.com/openssl/openssl/archive/OpenSSL_1_1_0l.zip)
   rename OpenSSL_1_1_0l to openssl-1.1.0l after unzip it
   
   ### Lua
   
   Lua 当前常用版本有 5.1, 5.2, 5.3 三个,目前 `apisix` 使用 5.1 版本。
   
   - 依赖包安装
   
     对于 redhat 系列:
     ```sh
       yum install readline-devel
     ```
     
     对于 debian 系列:
     ```sh
       apt-get install libreadline-dev
     ```
   
   - 解压 tarball 进入顶层目录下
     ```sh
       tar -zxvf lua-5.1.5.tar.gz
       cd lua-5.1.5
     ```
   
   - 编译、测试与安装
     ```sh
       make linux
       make test
       make install
     ```
     默认安装到 `/usr/local/bin/` 目录下。
   
   
   ### LuaRocks
   
   
[参考](https://github.com/luarocks/luarocks/wiki/Installation-instructions-for-Unix)
   
   `LuaRocks` 是 Lua 包管理工具,必须指定 Lua 安装路径进行安装(缺省会去 `/usr/local/bin` 目录下寻找)。
   
   作为包管理工具,当然也可以使用 `yum` 或 `apt-get` 进行安装,但有些机器版本的源中并没有提供该安装包。
   
   此外,在某些平台上,通过包管理工具安装 `LuaRocks` 会导致 Lua 被升级为 Lua 
5.3,所以`apisix`官方也建议通过源代码的方式安装 `LuaRocks`。
   
   所以这里以编译安装示例。
   
   - 解压
     ```sh
       tar -zxvf luarocks-3.5.0.tar.gz 
       cd luarocks-3.5.0
     ```
   
   - 配置、编译与安装
     ```sh
       ./configure --prefix=/usr/local/luarocks 
--with-lua-include=/usr/local/include
       make
       make install
     ```
   
   - 链接到搜索路径
     ```sh
       ln -s /usr/local/luarocks/bin/luarocks /usr/bin
     ```
   
   
   ### OpenResty
   
   `apisix` 依赖于 `OpenResty`,而 `OpenResty` 又依赖其他模块,不过很多模块在 `OpenResty` 包内均有内置,除了 
`openssl`,`zlib` 和 `pcre`。
   
   所以在安装 `OpenResty` 时,需要指定上述三个依赖包的位置。
   
   方法一: `OpenResty` 的依赖可以通过 yum 包管理方式安装,参考[这里](60_openresty-openssl-devel.md)。
   
   方法二: 这里采用编译安装,依赖包版本如下:
   
   |  依赖包  |  版本  |
   |:--------|:-------|
   | openssl | 1.1.0l |
   | zlib    | 1.2.11 |
   | PCRE    | 8.44   |
   
   采用编译安装时,不需要将 `openssl`,`zlib` 和 `PCRE` 各自独立编译完成之后再通过 `OpenResty` 
指定依赖头文件或库文件路径。
   
   `OpenResty` 采用了一种更为简单的编译方式,在配置时只需要指定各依赖对应的源码文件即可。具体编译安装方式如下:
   
   ```sh
     ./configure --prefix=/usr/local/openresty 
--with-zlib=/usr/local/src/zlib-1.2.11 --with-pcre=/usr/local/src/pcre-8.44 
--with-openssl=/usr/local/src/openssl-1.1.0l --with-http_stub_status_module 
--with-http_ssl_module --with-http_realip_module --with-http_v2_module
     gmake
     gmake install
   ```
   在 ubuntu 系统下会提示采用 `make` 和 `make install` 方式进行编译安装。
   
   
   ### etcd
   
   
[下载查找](https://github.com/etcd-io/etcd/releases/download/v3.4.13/etcd-v3.4.13-linux-amd64.tar.gz)
   
   版本: v3.4.13
   
   `etcd` 使用 golang 编写,为了避免编译不规范,这里直接使用编译好的二进制包。
   
   
   ### apisix
   
   在部署 `apisix` 之前,还需要做两件事情,链接命令与放置 `openssl` 库文件。
   
   1.链接命令
     ```sh
       ln -s /usr/local/openresty/bin/openresty /usr/bin/openresty
       ln -s /usr/local/openresty/bin/resty /usr/bin/resty
     ```
   
   2.放置库文件
   
   在部署 `apisix` 时,也会用到 `openssl` 和 `zlib`,与 `OpenResty` 不同,`apisix` 要求 
`openssl` 和 `zlib` 编译成开发头文件和库的形式,链接路径分别为 `/usr/local/openresty/openssl` 和 
`/usr/local/openresty/zlib` 。
   
   这里将编译完成之后的 `/usr/local/openssl` 和 `/usr/local/zlib` 分别链接到对应路径下下:
   ```sh
     ln -s /usr/local/openssl /usr/local/openresty/openssl
     ln -s /usr/local/zlib /usr/local/openresty/zlib
   ```
   
   附:[openssl和zlib编译安装](61_openssl_zlib_compiled.md)
   
   附: `/usr/local/openssl` 的二级目录树结构为:
   ```sh
     ├── bin
     │   ├── c_rehash
     │   └── openssl
     ├── include
     │   └── openssl
     ├── lib
     │   ├── engines-1.1
     │   ├── libcrypto.a
     │   ├── libcrypto.so -> libcrypto.so.1.1
     │   ├── libcrypto.so.1.1
     │   ├── libssl.a
     │   ├── libssl.so -> libssl.so.1.1
     │   ├── libssl.so.1.1
     │   └── pkgconfig
     ├── share
     │   ├── doc
     │   └── man
     └── ssl
         ├── certs
         ├── misc
         ├── openssl.cnf
         ├── openssl.cnf.dist
         └── private
   ```
   
   完成之后,`/usr/local/openresty` 的一级目录树结构如下:
   ```sh
     ├── bin
     ├── COPYRIGHT
     ├── luajit
     ├── lualib
     ├── nginx
     ├── openssl -> /usr/local/openssl
     ├── pod
     ├── resty.index
     ├── site
     └── zlib -> /usr/local/zlib
   ```
   
   至此,就可以进行对 `apisix` 的部署了。部署过程如下:
   
   进入 `apisix` 的顶层目录中执行如下命令:
   ```sh
     make deps
   ```
   
   
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to