配置遷移

當需要將原來部署在 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 管理介面進行檢視,確認匯入成功,並且匯入的配置是預期的。在匯入配置釋出後,需要進行測試,確保訪問的行為是符合預期的。