配置迁移

当需要将原来部署在 Nginx/OpenResty 的业务迁移到 OpenResty Edge 时,就需要将原来的配置转换为 OpenResty Edge 的配置。

OpenResty Edge 提供在线服务和离线的 CLI 工具。在线服务无需额外安装任何软件,而 CLI 转换工具需要您安装 openresty-nginx2edge-cli 软件包。您可以根据你们的需要选择对应的转换方式。

使用在线转换服务

登陆你们的 OpenResty-Edge-Admin 管理站点,选择 tools 下的 Nginx.conf Migration Tool 进行转换。

注意:需要使用在 openresty.com 注册过的账号并且开通了 ngx2edge 权限才能使用在线转换服务。

migration-tool

转换完成后,选择下载将转好好的配置下载到本地。

migration-tool

使用离线 CLI 工具

安装 openresty-nginx2edge-cli

openresty-nginx2edge-cli 存放在 OpenResty Edge 的仓库,因此您需要具有访问权限的机器上安装该软件包。比如可以选择在 OpenResty-Edge-Admin 或者 OpenResty-Edge-Node 所在的机器上进行安装。您也可以选择下载后安装到其它的机器。

对于 CentOS, RHEL, Amazon Linux, Rocky Linux 系统

# install on the current machine
sudo yum install -y openresty-nginx2edge-cli

# download package only
yum download openresty-nginx2edge-cli

# cp the rpm package to another machine
# execute the following command
sudo yum install -y openresty-nginx2edge-cli*.rpm

对于 Fedora

# install on the current machine
sudo dnf install -y openresty-nginx2edge-cli

# download package only
dnf download openresty-nginx2edge-cli

# cp the rpm package to another machine
# execute the following command
sudo dnf install -y ./openresty-nginx2edge-cli*.rpm

对于 Ubuntu, Debian 系统

# install on the current machine
sudo apt-get -y install openresty-nginx2edge-cli

# download package only
apt-get download openresty-nginx2edge-cli

# cp the rpm package to another machine
# execute the following command
sudo apt-get install -y ./openresty-nginx2edge-cli*.rpm

执行配置转换

配置转换工具要求将原来的配置文件压缩为 tar.gz 格式的压缩包。因此你需要将原来的配置压缩为 nginx.tar.gz。如果你的配置文件当中用到 include 指令并且是使用绝对路径,那么需要将配置转换为相对路径。

比如 /etc/nginx/nginx.conf 里面有 include /etc/nginx/conf.d/example.com.conf;。那么需要将该指令转换为 include conf.d/example.com.conf;

完成配置文件的准备工作后,你可以执行下面的命令来执行配置转换。

/usr/local/orngx2edge-cli/ngx2edge ./nginx.tar.gz

比如,下面命令的执行结果最后一行显示最终生成的包的路径是 app-nginx-1013152554.tar.bz2.

$ /usr/local/orngx2edge-cli/ngx2edge /tmp/nginx.tar.gz
TODO: unsupported `root` directive in this location, not found settings of error page or favicon in server context at nginx.conf line 39.
TODO: unsupported `root` directive in this location, not found settings of error page or favicon in server context at nginx.conf line 61.
total App num: 2
done App num: 2

App dst: app-nginx-1013152554.tar.bz2

配置导入 OpenResty-Edge-Admin

这里假设你要导入的配置文件为 app-nginx-1013152554.tar.bz2.

安装 python sdk

可以使用 pip 命令直接安装

pip3 install openresty-edge-sdk

如果不能直接访问外网,可以选择在 https://pypi.org/project/openresty-edge-sdk/#files 下载。

导入配置到 admin

如果你安装了 openresty-nginx2edge-cli, 那么可以使用如下的方式导入到 admin。

export NGINX2EDGE_HOST='https://your.admin'
export NGINX2EDGE_USER='admin'
export NGINX2EDGE_PASSWORD='{your password}'

workdir=`date +%s`
rm -fr $workdir
mkdir -p $workdir
tar -xf -C $workdir ./app-nginx-1013152554.tar.bz2
tar -xf app-nginx-1013153306.tar.bz2 -C $workdir/

python3  /usr/local/orngx2edge-cli/utils/global_ini.py $workdir
python3  /usr/local/orngx2edge-cli/utils/create_apps.py $workdir/app
rm -fr $workdir

如果你没有安装 openresty-nginx2edge-cli, 那么请下载 ngx2edge-import-utils. 下载完成后将工具解压到当前目录。

export NGINX2EDGE_HOST='https://your.admin'
export NGINX2EDGE_USER='admin'
export NGINX2EDGE_PASSWORD='{your password}'

if [ ! -d utils ]; then
   echo "Please download ngx2edge-import-utils-xxx.tar.gz from https://openresty.com.cn/download/ first."
   exit 1
fi

workdir=`date +%s`
rm -fr $workdir
mkdir -p $workdir
tar -xf -C $workdir ./app-nginx-1013152554.tar.bz2
tar -xf app-nginx-1013153306.tar.bz2 -C $workdir/

python3  ./utils/global_ini.py $workdir
python3  ./utils/create_apps.py $workdir/app
rm -fr $workdir

查看配置

导入完成后,请到您的 Openresty-Edge-Admin 管理界面进行查看,确认导入成功,并且导入的配置是预期的。在导入配置发布后,需要进行测试,确保访问的行为是符合预期的。