升级门户

此过程介绍了如何升级现有的 Apigee 开发者服务门户(或简称为门户)本地安装。

确定正确的更新过程

您用于更新门户的过程取决于您当前的安装:

确定当前的安装类型

如果您不确定当前的安装类型,请使用以下命令进行确定:

  • ls /opt

    如果您使用的是 Nginx/Postgres,则会看到以下目录:/opt/apigee 和 /opt/nginx。

    如果您使用的是 Apache/MySQL 或 Apache/MariaDB,则不应存在这些目录。

  • /opt/apigee/apigee-service/bin/apigee-all status

    如果您使用的是 Nginx/Postgres,则会看到以下输出:

    + apigee-service
    apigee-drupal-devportal status
    OK: apigee-drupal-devportal is up and running
    + apigee-service apigee-lb status
    apigee-service: apigee-lb: OK
    + apigee-service apigee-postgresql status
    apigee-service: apigee-postgresql: OK
  • apachectl -S

    如果您使用的是 Apache/MySQL 或 Apache/MariaDB,则此命令应返回门户的 Web 根目录,格式如下:

    *:80
    192.168.56.102 (/etc/httpd/conf/vhosts/devportal.conf:1)

默认安装目录

升级过程假定门户安装在以下位置:

  • 4.17.05 及更高版本:/opt/apigee/apigee-drupal/wwwroot
  • 4.17.05 之前:/opt/apigee/apigee-drupal (Nginx) 或 /var/www/html (Apache)

如果您未在默认目录中安装门户,请修改以下过程中的路径,以使用您的安装目录。

支持的升级版本

门户版本 OPDK-17-01.x 及更高版本支持此升级过程。

如需确定门户版本,请在浏览器中打开以下网址:

http://yourportal.com/buildInfo

更新前

对于现有安装,如果您修改了 Drupal 核心或任何非自定义模块中的任何代码,您的修改将被覆盖。这包括您可能对 .htaccess 所做的任何更改。 您应假定 /sites 目录之外的所有内容都归 Drupal 所有。此规则的一个例外是 robots.txt;如果此文件存在于 Web 根目录中,系统会为您保留该文件。

在继续安装之前,请备份整个 Drupal Web 根目录。执行下述安装步骤后,您可以从备份中恢复自定义设置。

使用 RPM 升级门户

如需更新节点上的门户 RPM,请执行以下操作:

  1. 切换到 Drupal 目录(默认为 /opt/apigee/apigee-drupal):
    cd /opt/apigee/apigee-drupal
  2. 备份 Drupal 数据库实例。pg_dump 命令会创建数据库的副本:
    pg_dump --dbname=devportal --host=host_IP_address --username=drupaladmin
      --password --format=c > /tmp/portal.dmp

    其中:

    • devportal 是门户安装配置文件中的 PG_NAME 属性指定的数据库名称。
    • host_IP_address 是门户节点的 IP 地址。
    • drupaladmin 是门户用于访问数据库的 Postgres 用户名,由门户安装配置文件中的 DRUPAL_PG_USER 属性指定。

    系统会提示您输入 Postgres 用户密码,该密码由门户安装配置文件中的 DRUPAL_PG_PASS 属性定义。

    如果您日后想从备份中恢复,请使用以下命令:

    pg_restore --clean --dbname=devportal --host=localhost  --username=apigee < /tmp/portal.dmp
  3. 备份整个 Drupal Web 根目录。默认安装位置为 /opt/apigee/apigee-drupal,但您可能已更改该位置。

    如果您不确定此目录的位置,请使用 drush status 命令或 Drupal 菜单中的配置 > 媒体 > 文件条目来确定公共文件系统和私有文件系统路径的位置(用于下一步)。

  4. 备份 /opt/apigee/data/apigee-drupal-devportal/private 中的文件。
  5. 将 Drupal 设置为维护模式:
    1. 在 Drupal 菜单中选择配置。
    2. 在配置页面上,选择开发下的维护模式。
    3. 选中将网站置于维护模式复选框。
    4. 输入用户在维护期间看到的消息。
    5. 选择保存配置。
  6. 按照安装 Edge apigee-setup 实用程序中的说明停用 SELinux。
  7. 切换到 /opt 目录:
    cd /opt
  8. 对于连接到互联网的服务器上的升级:
    1. 将 Edge 4.19.06 bootstrap_4.19.06.sh 文件下载到 /tmp/bootstrap_4.19.06.sh:
      curl https://software.apigee.com/bootstrap_4.19.06.sh -o /tmp/bootstrap_4.19.06.sh
    2. 安装 Edge 4.19.06 apigee-service 实用程序和依赖项:
      sudo bash /tmp/bootstrap_4.19.06.sh apigeeuser=uName apigeepassword=pWord

      其中,uName 和 pWord 是您从 Apigee 收到的用户名和密码。如果您省略 pWord,系统会提示您输入。

      默认情况下,安装程序会检查您是否已安装 Java 1.8。您可以使用“C”选项继续操作,而无需安装 Java。

  9. 如需在没有互联网连接的服务器上进行升级,请执行以下操作:
    1. 按照创建本地 Apigee 代码库中的说明创建本地 4.19.06 代码库。
    2. 如需从 .tar 文件安装 apigee-service,请执行以下操作:
      1. 在具有本地代码库的节点上,使用以下命令将本地代码库打包到名为 /opt/apigee/data/apigee-mirror/apigee-4.19.06.tar.gz 的单个 .tar 文件中:
        /opt/apigee/apigee-service/bin/apigee-service apigee-mirror package
      2. 将 .tar 文件复制到要更新 Edge 的节点。例如,将其复制到新节点上的 /tmp 目录。
      3. 在新节点上,将文件解压缩到 /tmp 目录:
        tar -xzf apigee-4.19.06.tar.gz

        此命令会在包含 .tar 文件的目录中创建一个名为 repos 的新目录。例如 /tmp/repos。

      4. 从 /tmp/repos 安装 Edge apigee-service 实用程序和依赖项:
        sudo bash /tmp/repos/bootstrap_4.19.06.sh apigeeprotocol="file://" apigeerepobasepath=/tmp/repos

        请注意,您在此命令中添加了代码库目录的路径。

    3. 如需使用 Nginx Web 服务器安装 apigee-service,请执行以下操作:
      1. 按照安装 Edge apigee-setup 实用程序中的“使用 Nginx Web 服务器从代码库安装”中的说明配置 Nginx Web 服务器。
      2. 在远程节点上,将 Edge bootstrap_4.19.06.sh 文件下载到 /tmp/bootstrap_4.19.06.sh:
        /usr/bin/curl http://uName:pWord@remoteRepo:3939/bootstrap_4.19.06.sh
          -o /tmp/bootstrap_4.19.06.sh

        其中 uName 和 pWord 是您在上面为代码库设置的用户名和密码,remoteRepo 是代码库节点的 IP 地址或 DNS 名称。

      3. 在远程节点上,安装 Edge apigee-service 实用程序和依赖项:
        sudo bash /tmp/bootstrap_4.19.06.sh apigeerepohost=remoteRepo:3939
          apigeeuser=uName apigeepassword=pWord apigeeprotocol=http://

        其中 uName 和 pWord 是代码库用户名和密码。

  10. 使用 apigee-service 更新 apigee-setup 实用程序:
    /opt/apigee/apigee-service/bin/apigee-service apigee-setup update
  11. 在 Postgres 节点上运行 update 实用程序:
    /opt/apigee/apigee-setup/bin/update.sh -c ps -f configFile

    其中,configFile 是您用于安装 Postgres 数据库的配置文件。对配置文件的唯一要求是,“apigee”用户必须能够访问或读取配置文件。

  12. 通过执行以下命令,移除 PHP RPM,但不移除 Apigee Drupal Devportal RPM 依赖项:
    rpm -ev --nodeps $(rpm -qa | grep php | awk '{printf "%s ", $1}')

    此命令执行以下操作:

    • rpm -ev --nodeps 会移除 RPM,但不会移除其依赖项。
    • rpm -qa 会构建要移除的 RPM 列表。
    • grep php 搜索所有 PHP RPM。
    • awk '{printf "%s ", $1}' 会输出 RPM 名称。
  13. 在节点上运行 update 实用程序以更新门户:
    /opt/apigee/apigee-setup/bin/update.sh -c dp -f configFile

    其中,configFile 是您用于安装门户的配置文件。对配置文件的唯一要求是,配置文件必须可供“apigee”用户访问或读取。

  14. 在浏览器窗口中打开以下网址,运行 Drupal 的 update.php 脚本:
    http://portal_IP_DNS:8079/update.php
  15. 停用维护模式:
    1. 在 Drupal 菜单中选择配置。
    2. 在配置页面上,选择开发下的维护模式。
    3. 取消选中将网站置于维护模式复选框。
    4. 选择保存配置。

请注意,更新后的根目录为:

/opt/apigee/apigee-drupal/wwwroot

升级现已完成。如果 Apigee update 实用程序降级了您的 Drupal 版本,您可能需要重新运行 Drupal 升级实用程序。如需了解详情,请参阅重新运行 Drupal 升级。

重新运行 Drupal 升级

如果运行 Apigee update 实用程序来升级 Edge for Private Cloud 实际上导致 Drupal 版本降级,请重新安装 Drupal 升级。如果您在 Private Cloud 更新之间仅升级了 Drupal,则可能会出现这种情况。

例如:

  1. 您运行的是 Edge for Private Cloud 4.18.05 版,其中包含 Drupal 7.59。
  2. 由于需要进行安全更新,您已将 Drupal 升级到 7.64。
  3. 您现在要将私有云升级到 4.19.01,其中包含 Drupal 7.61。

如本例所示,Apigee update 实用程序使用的 Drupal 版本可能未引用最新的 Drupal 升级。因此,您现在必须重新运行 Drupal 升级,以将 Drupal 安装恢复到更高版本。