แปลงพอร์ทัลที่ใช้ tar เป็นพอร์ทัล RPM

พอร์ทัล Apigee Developer Services เวอร์ชัน 4.18.05 (หรือเรียกสั้นๆ ว่าพอร์ทัล) ไม่อนุญาตให้อัปเดตพอร์ทัลเวอร์ชันที่ใช้ไฟล์ tar ก่อนหน้านี้ คุณสามารถอัปเดตพอร์ทัลเวอร์ชันที่ใช้ RPM เป็น 4.18.05 ได้โดยตรงเท่านั้น

อย่างไรก็ตาม คุณสามารถแปลงพอร์ทัลเวอร์ชันที่ใช้ tar เป็นอินสแตนซ์ของพอร์ทัลที่ใช้ RPM 4.18.05 ได้ ในขั้นตอนนี้ คุณจะย้ายข้อมูล MySQL/MariaDB ของพอร์ทัลที่มีอยู่ไปยังฐานข้อมูล Postgres เมื่อแปลงแล้ว พอร์ทัลจะยังคงเป็นพอร์ทัลที่อิงตาม RPM

คุณสามารถย้ายข้อมูลพอร์ทัลที่ใช้ tar เวอร์ชันก่อนหน้าหลายเวอร์ชันไปยังพอร์ทัลที่ใช้ RPM ได้ ซึ่งรวมถึงเวอร์ชัน 4.16.09 และ 4.17.01 ไม่ใช่แค่เวอร์ชัน 4.17.05 เท่านั้น ข้อกำหนดเพียงอย่างเดียวคือพอร์ทัลต้องใช้ Drupal 7 ขึ้นไป หากต้องการตรวจสอบเวอร์ชันของ Drupal ให้เลือกรายงาน > รายงานสถานะในเมนู Drupal เวอร์ชันของ Drupal จะปรากฏในแถวแรกของเอาต์พุต

ขั้นตอนระดับสูงที่คุณใช้ในการย้ายข้อมูลจากพอร์ทัลที่ใช้ TAR ไปยังพอร์ทัลที่ใช้ RPM มีดังนี้

  • ติดตั้งพอร์ทัลเวอร์ชัน 4.18.05 ที่ใช้ RPM ในโหนดใหม่
  • สร้างฐานข้อมูล Postgres ใหม่ในพอร์ทัลที่ใช้ RPM
  • ย้ายข้อมูลฐานข้อมูลพอร์ทัลจากพอร์ทัลที่ใช้ tar
  • คัดลอกไฟล์เสริมทั้งหมดจากพอร์ทัลที่ใช้ tar ไปยังพอร์ทัลที่ใช้ RPM
  • อัปเดตรายการ DNS ให้ชี้ไปยังพอร์ทัลที่ใช้ RPM ใหม่

    โปรดทราบว่าพอร์ทัลเวอร์ชันที่ใช้ RPM จะใช้พอร์ต 8079 โดยค่าเริ่มต้น ส่วนเวอร์ชันที่ใช้ tar จะใช้พอร์ต 80 ตรวจสอบว่าคุณใช้หมายเลขพอร์ตที่ถูกต้องในรายการ DNS ดูข้อมูลเกี่ยวกับการใช้พอร์ตอื่นได้ที่หัวข้อตั้งค่าพอร์ต HTTP ที่พอร์ทัลใช้

ไดเรกทอรีการติดตั้งเริ่มต้นใหม่หลังจากการแปลง

หลังจากอัปเดตการติดตั้งที่ใช้ NGINX/Postgres ไดเรกทอรีรากจะเปลี่ยนจาก

/opt/apigee/apigee-drupal

ถึง:

/opt/apigee/apigee-drupal/wwwroot

ขั้นตอนการแปลงพอร์ทัล

วิธีแปลงพอร์ทัลเป็นการติดตั้งที่ใช้ RPM

  1. ติดตั้งพอร์ทัลเวอร์ชัน 4.18.05 ที่ใช้ RPM ในโหนดอื่นจากพอร์ทัลที่ใช้ tar
  2. ในพอร์ทัลที่ใช้ RPM ให้สร้างฐานข้อมูล Postgres ใหม่ จากนั้น คุณจะย้ายข้อมูลฐานข้อมูลจากพอร์ทัลที่ใช้ TAR ไปยังฐานข้อมูลใหม่นี้
    1. เข้าสู่ระบบ psql โดยทำดังนี้
      psql -h localhost -p 5432 -U apigee

      ป้อนรหัสผ่าน Postgres ตามที่กำหนดโดยพร็อพเพอร์ตี้ PG_PWD ในไฟล์การกำหนดค่าพอร์ทัล

    2. สร้างฐานข้อมูล Postgres ใหม่โดยทำดังนี้
      CREATE DATABASE newportaldb;
    3. ออกจาก psql:
      \q
  3. ในพอร์ทัลที่ใช้ tar ให้นำโมดูลเก่าที่ไม่ได้ใช้แล้วออก โดยทำดังนี้

    cd /var/www/html
    drush sql-query --db-prefix "DELETE from {system} where name = 'apigee_account' AND type = 'module';"
    drush sql-query --db-prefix "DELETE from {system} where name = 'apigee_checklist' AND type = 'module';"
    drush sql-query --db-prefix "DELETE from {system} where name = 'apigee_sso_ui' AND type = 'module';"
  4. ในพอร์ทัลที่ใช้ tar ให้ติดตั้งและกำหนดค่าโมดูล Migrator Drupal ดังนี้
    1. cd /tmp 
    2. wget https://ftp.drupal.org/files/projects/dbtng_migrator-7.x-1.4.tar.gz 
    3. gunzip /tmp/dbtng_migrator-7.x-1.4.tar.gz 
    4. tar -xvf /tmp/dbtng_migrator-7.x-1.4.tar --directory /var/www/html/sites/all/modules 
    5. เข้าสู่ระบบพอร์ทัลในฐานะผู้ดูแลระบบ
    6. เลือก Modules ในเมนู Drupal
    7. เปิดใช้โมดูล DBTNG Migrator
    8. บันทึกการกำหนดค่า
  5. ในพอร์ทัลที่ใช้ TAR ให้แก้ไข /var/www/html/sites/default/settings.php เพื่อเพิ่มการกำหนดค่าฐานข้อมูลที่ 2 ซึ่งชี้ไปยังฐานข้อมูลที่สร้างขึ้นใหม่ในพอร์ทัลที่ใช้ RPM การกำหนดค่าฐานข้อมูลปัจจุบันชื่อ "default" ตั้งชื่อการกำหนดค่าใหม่ว่า "custom" ดังตัวอย่างต่อไปนี้
    $databases = array (
      'default' =>
      array (
        'default' =>
        array (
          'database' => 'devportal',
          'username' => 'devportal',
          'password' => 'devportal',
          'host' => 'localhost',
          'port' => '',
          'driver' => 'mysql',
          'prefix' => '',
        ),
      ),
      'custom' =>
      array (
        'default' =>
        array (
          'database' => 'newportaldb',
          'username' => 'apigee',
          'password' => 'postgres',
          'host' => '192.168.168.100',
          'port' => '5432',
          'driver' => 'pgsql',
          'prefix' => '',
        )
      )
    );

    โดย host และ port จะระบุที่อยู่ IP และพอร์ตของเซิร์ฟเวอร์ Postgres Postgres ใช้พอร์ต 5432 สำหรับการเชื่อมต่อ

  6. ในพอร์ทัลที่ใช้ tar ให้ติดตั้งไดรเวอร์ Postgres โดยทำดังนี้
    1. ใช้ Yum เพื่อติดตั้งไดรเวอร์ โดยทำดังนี้
      yum install php-pdo_pgsql
    2. แก้ไข /etc/php.ini เพื่อเพิ่มบรรทัดต่อไปนี้ที่ใดก็ได้ในไฟล์
      extension=pgsql.so
    3. รีสตาร์ท Apache:
      service httpd restart
  7. ในพอร์ทัลที่ใช้ tar ให้ย้ายข้อมูลฐานข้อมูลพอร์ทัลไปยังพอร์ทัลที่ใช้ RPM โดยทำดังนี้
    1. เข้าสู่ระบบพอร์ทัลในฐานะผู้ดูแลระบบ
    2. เลือก Structure->Migrator ในเมนู Drupal
    3. เลือกฐานข้อมูลต้นทางในพอร์ทัลที่ใช้ TAR, default และฐานข้อมูลปลายทาง custom โดยอิงตามไฟล์ settings.php ที่แสดงด้านบน
    4. คลิกย้ายข้อมูล ระบบจะย้ายข้อมูลฐานข้อมูลที่ใช้ tar ไปยังฐานข้อมูลที่ใช้ RPM
  8. คัดลอกไดเรกทอรี sites จากเซิร์ฟเวอร์ที่ใช้ TAR ไปยังเซิร์ฟเวอร์ที่ใช้ RPM เส้นทางที่แสดงในขั้นตอนต่อไปนี้อิงตามเส้นทางเริ่มต้น แก้ไขตามที่จำเป็นสำหรับการติดตั้ง
    1. ในพอร์ทัลที่ใช้ tar ให้รวมไดเรกทอรี /var/www/html/sites ดังนี้
      cd /var/www/html/sites
      tar -cvzf /tmp/sites.tar.gz .
    2. คัดลอก /tmp/sites.tar.gz ไปยัง /opt/apigee/apigee-drupal/wwwroot/sites ในเซิร์ฟเวอร์ที่ใช้ RPM
    3. แยกไดเรกทอรีเว็บไซต์ แต่ไม่เขียนทับไฟล์สำคัญ
      1. สำรองข้อมูลไฟล์ settings.php โดยทำดังนี้
        sudo cp /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.php
          /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.bak.php
      2. สำรองข้อมูลไดเรกทอรี files ที่มีอยู่ โดยทำดังนี้
        sudo mv /opt/apigee/apigee-drupal/wwwroot/sites/default/files
          /opt/apigee/apigee-drupal/wwwroot/sites/default/files_old
      3. สำรองข้อมูลไดเรกทอรี sites ที่มีอยู่ โดยทำดังนี้
        tar -cvzf /tmp/sites_old.tar.gz /opt/apigee/apigee-drupal/wwwroot/sites
      4. แตกไฟล์และ Untar ไดเรกทอรี sites จากเซิร์ฟเวอร์ที่ใช้ Tar โดยทำดังนี้
        gunzip /opt/apigee/apigee-drupal/wwwroot/sites/sites.tar.gz
        tar -xvf /opt/apigee/apigee-drupal/wwwroot/sites/sites.tar
      5. ตรวจสอบว่าไฟล์ที่คัดลอกมีการเป็นเจ้าของที่เหมาะสม ดังนี้
        chown -R apigee:apigee /opt/apigee/apigee-drupal/wwwroot/sites/
      6. กู้คืนไฟล์ settings.php โดยทำดังนี้
        sudo cp /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.bak.php
          /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.php
      7. ย้ายไฟล์ส่วนตัวไปยังตำแหน่งใหม่:
        cp -r /opt/apigee/apigee-drupal/wwwroot/sites/default/files/private/* /opt/apigee/data/apigee-drupal-devportal/private
        rm -rf /opt/apigee/apigee-drupal/wwwroot/sites/default/files/private
        chown -R apigee:apigee /opt/apigee/data/apigee-sap-drupal-devportal/private
  9. ในพอร์ทัลที่ใช้ tar เฉพาะในกรณีที่คุณเปลี่ยนเส้นทางไปยังไดเรกทอรีรากของเว็บในพอร์ทัลที่ใช้ tar จากเส้นทางเริ่มต้นของ /var/www/html ให้เรียกใช้ drush status และดูเส้นทาง files และเส้นทาง private files ดังนี้
    cd /var/www/html
    drush status

    หากไฟล์/ไฟล์ส่วนตัวไม่ได้อยู่ในไดเรกทอรี sites ให้คัดลอกไฟล์เหล่านั้นไปยังเซิร์ฟเวอร์ที่ใช้ RPM ตามที่แสดงด้านบน

  10. ในพอร์ทัลที่ใช้ RPM ให้อัปเดต /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.php เพื่อตั้งค่าพร็อพเพอร์ตี้ของฐานข้อมูลเริ่มต้น ดังนี้
    vi /opt/apigee/apigee-drupal/wwwroot/sites/default/settings.php

    ตั้งค่าคำอธิบายฐานข้อมูลเริ่มต้นใน settings.php:

    $databases = array (
      'default' =>
      array (
        'default' =>
        array (
          'database' => 'newportaldb',
          'username' => 'apigee',
          'password' => 'postgres',
          'host' => 'localhost', 'port' => '5432',
          'driver' => 'pgsql',
          'prefix' => '',
        )
      )
    );

    โดย database ระบุฐานข้อมูลใหม่ที่คุณสร้างขึ้น username และ password เป็นไปตามที่กำหนดไว้สำหรับฐานข้อมูลที่กำหนดเองในพอร์ทัลที่ใช้ tar และ prefix จะว่างเปล่า

  11. ในพอร์ทัลที่ใช้ RPM เวอร์ชันที่ใช้ RPM ของพอร์ทัลจะมีโมดูล Drupal น้อยกว่าเวอร์ชันที่ใช้ tar หลังจากย้ายข้อมูลไปยังพอร์ทัลที่ใช้ RPM แล้ว คุณต้องตรวจสอบโมดูลที่ขาดหายไปและติดตั้งตามความจำเป็น
    1. ติดตั้ง Drupal missing_module ที่ใช้ตรวจหาโมดูลที่ขาดหายไป โดยทำดังนี้
      cd /opt/apigee/apigee-drupal/wwwroot
      drush dl missing_module
      drush en missing_module
    2. เข้าสู่ระบบพอร์ทัลที่ใช้ RPM ในฐานะผู้ดูแลระบบ
    3. เลือกรายงาน > รายงานสถานะในเมนู Drupal และตรวจสอบโมดูลที่ขาดหายไป
    4. ใช้รายงานดังกล่าวเพื่อติดตั้งโมดูลที่ขาดหายไป หรือใช้คำสั่งต่อไปนี้
      cd /opt/apigee/apigee-drupal/wwwroot
      drush dl <moduleA> <moduleB> ...
      drush en <moduleA> <moduleB> ...
    5. หลังจากเปิดใช้โมดูลทั้งหมดแล้ว ให้ตรวจสอบว่าผู้ใช้ Apigee เป็นเจ้าของไฟล์ โดยทำดังนี้
      chown -LR apigee:apigee /opt/apigee/apigee-drupal/wwwroot

      ดูข้อมูลเพิ่มเติมเกี่ยวกับสิทธิ์ในไฟล์ได้ที่ https://www.drupal.org/node/244924

  12. ในพอร์ทัลที่ใช้ RPM ให้เรียกใช้ update.php ในเบราว์เซอร์เพื่อนำข้อผิดพลาดเกี่ยวกับโมดูลที่ขาดหายไปออก
    1. เข้าสู่ระบบพอร์ทัลที่ใช้ RPM ในฐานะผู้ดูแลระบบ
    2. ในเบราว์เซอร์ ให้ไปที่ URL ต่อไปนี้
      http://portal_IP_or_DNS:8079/update.php

      โดยที่ portal_IP_or_DNS คือที่อยู่ IP หรือชื่อโดเมนของพอร์ทัลที่ใช้ RPM

    3. ทำตามข้อความที่ปรากฏบนหน้าจอ
  13. อัปเดตรายการ DNS ให้ชี้ไปยังพอร์ทัลที่ใช้ RPM ใหม่

    โปรดทราบว่าพอร์ทัลเวอร์ชันที่ใช้ RPM จะใช้พอร์ต 8079 โดยค่าเริ่มต้น ส่วนเวอร์ชันที่ใช้ tar จะใช้พอร์ต 80 ตรวจสอบว่าคุณใช้หมายเลขพอร์ตที่ถูกต้องในรายการ DNS ดูข้อมูลเกี่ยวกับการใช้พอร์ตอื่นได้ที่หัวข้อตั้งค่าพอร์ต HTTP ที่พอร์ทัลใช้

การแปลงเสร็จสมบูรณ์แล้ว