ศูนย์คู่มือ Ruk-Com PaaS

คู่มือการพัฒนา Deploy และดูแล Application บน Platform

RUK-COM PAAS / DATABASE

การเชื่อมต่อ PHP กับ MongoDB

คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี

ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง

วัตถุประสงค์

บทความนี้อธิบายการเชื่อมต่อ PHP กับ MongoDB บน Ruk-Com Cloud PaaS โดยจัดลำดับขั้นตอนและจุดตรวจสอบสำหรับการนำไปใช้งานจริง

ก่อนเริ่มดำเนินการ

  • เข้าสู่ระบบด้วยบัญชีที่มีสิทธิ์จัดการ Environment ที่เกี่ยวข้อง
  • ตรวจสอบชื่อ Environment, Region และ Resource เป้าหมายก่อนบันทึกการเปลี่ยนแปลง
  • สำรองข้อมูลหรือกำหนดแผนย้อนกลับก่อนแก้ไขระบบ Production

MongoDBเป็น Database NoSQL ที่ใช้กันอย่างแพร่หลายโดยใช้รูปแบบ document-oriented และมีไว้สำหรับจัดเก็บข้อมูลกึ่งโครงสร้าง คำแนะนำด้านล่างนี้ให้คำแนะนำเกี่ยวกับวิธีที่คุณสามารถใช้งานร่วมกับแอป PHP ของคุณได้อย่างง่ายดายซึ่ง Host อยู่ใน Ruk-Com Cloud

การสร้าง Environment

ลงชื่อเข้าใช้บัญชี Ruk-Com Cloud ของคุณและ สร้าง Environment ใหม่ด้วย MongoDB node ของเวอร์ชันที่ต้องการ (สามารถพบได้ในส่วน NoSQL wizard)

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

เพิ่ม instance ที่จำเป็นที่เหลือทั้งหมด (หากมี - เราจะรวม Apache ไว้ด้วยเพื่อ deploy แอปสำหรับทดสอบในภายหลัง อย่างไรก็ตามอาจอยู่ใน Environment ที่แยกต่างหากเช่นกัน) และกำหนดค่า Parameter ที่จำเป็นอื่น ๆ เช่น จำนวนของ resources, region, ชื่อ Env ฯลฯ

คลิกปุ่ม Create เมื่อพร้อมและรอสองถึงสามนาทีเพื่อให้ Env ของคุณได้รับการตั้งค่า

การกำหนดค่า MongoDB

1. หลังจากสร้าง Environment เสร็จแล้ว จะมีอีเมลรายละเอียด ที่ใช้สำหรับจัดการ environment ส่งไปยัง inbox ของคุณ

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

2. คลิกที่ลิงค์ Access URL หรือเปลี่ยนไปที่ Dashboard และ Open in browser ใน MongoDB node

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

ในแท็บ Browser ที่เปิดขึ้นคุณจะเห็นแบบฟอร์ม Sign in สำหรับพาเนล MongoDB สำหรับแอดมิน ป้อนข้อมูลรับรองของผู้ดูแลระบบที่คุณได้รับในอีเมลดังกล่าวข้างต้นแล้วคลิก เข้าสู่ระบบ เพื่อเข้าถึง

3. สร้าง Database ใหม่โดยป้อนข้อมูลที่ช่องกรอกข้อมูลด้านบนทางขวา (ยกตัวอย่างเป็น mongodb-connect) แล้วกดปุ่ม Create Database

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

4. จากนั้นคุณต้องสร้างผู้ใช้สำหรับ Database นี้ – ให้เข้าไปที่ Web SSH ของ instance Mongodb และเข้าใช้ mongodb โดยใช้คำสั่ง

mongo -u 'admin' -p '[ใส่รหัสผ่านในตรงนี้]'
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

5. หลังจากนั้นเลือก database โดยใช้คำสั่ง

use mongodb-connect

จากนั้นพิมพ์คำสั่งต่อไปนี้:

db.createUser({ user: "dbuser", pwd: "passw0rd", roles:[{ role: "readWrite", db: "mongodb-connect"}]})
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

ที่ไหน

  • ชื่อผู้ใช้- ชื่อสำหรับผู้ใช้ DB ใหม่ของคุณ
  • รหัสผ่าน- รหัสผ่านสำหรับผู้ใช้รายนี้
  • db_name- Database (แนะนำอันที่สร้างขึ้นข้างต้น) ผู้ใช้รายนี้จะมีอ่าน/เขียนสิทธิ์สำหรับ
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

จากนั้นเลือก Database ที่เกี่ยวข้องโดยใช้ลิสรายการและ Execute คำสั่งที่ระบุด้วยปุ่มชื่อเดียวกัน คุณจะได้รับการแจ้งเตือนการทำสำเร็จในเวลาไม่กี่วินาที

5. ตอนนี้ต้องเปิดใช้งานไดรเวอร์การเชื่อมต่อเฉพาะเพื่อเปิดใช้งานการโต้ตอบระหว่าง Server แอปของคุณและ MongoDB ที่ Ruk-Com Cloud จะรวมอยู่ในการสร้าง Server PHP แอปทั้งหมดตามค่าเริ่มต้น.

หมายเหตุ :
ลิงค์ #เริ่มต้นด้วยเวอร์ชัน 4.3 Ruk-Com PaaSมีไดร์เวอร์สองเวอร์ชันให้ใช้งานที่ Server แอป PHP ที่สร้างขึ้นใหม่ทั้งหมด:

  • mongo.so (ปัจจุบันถือว่าเลิกใช้งานแล้ว)
  • mongodb.so
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

ดังนั้นในการเปิดใช้งานไดรเวอร์ที่จำเป็นให้กลับไปที่ Dashboard วางเมาส์เหนือ compute node ใน Env ของคุณแล้วคลิกที่ปุ่ม Config ที่ปรากฏ

6. ภายในแท็บตัวจัดการการกำหนดค่าที่เปิดอยู่ให้ขยายโฟลเดอร์ etc แล้วเลือกไฟล์php.iniที่อยู่ข้างใน

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

ค้นหาคำว่า [mongodb] และนำ comment เครื่องหมาย (;) หน้าชื่อของ library ที่ต้องการใช้ออก ในเคสนี้จะเป็นmongdb.so

7.บันทึกการเปลี่ยนแปลงที่ดำเนินการ และ RestartNode แอป Server ของคุณเพื่อนำไปใช้

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

การ Deploy Application

ตอนนี้คุณสามารถดำเนินการ deploy Application ใน Environment ที่คุณเพิ่งเตรียมไว้โดยใช้ Ruk-Comผู้จัดการฝ่าย Deploy(สำหรับโปรเจ็กต์ที่รวมไว้ในที่เก็บแบบถาวรหรือดึงมาจากที่เก็บ GIT / SVN โดยตรง)

ตัวอย่างเช่นเราจะใช้แอปง่าย ๆ ต่อไปนี้ซึ่งออกแบบมาเพื่อตรวจสอบการสร้างการเชื่อมต่อระหว่าง compute node ที่เกี่ยวข้องกับ Server MongoDB ที่ระบุโดยใช้ส่วนขยายmongodb.so

ดัชนี.php:

<html>

<head>
 <title>Test MongoDB Connection</title>
</head>

<body>
 <h1>Test MongoDB Connection</h1>
<form action="#" name="form" method="POST">
  <table cellspacing="10">
    <tr><td>Host</td><td><input type="text" name="host" value="<?php echo htmlspecialchars($_POST['host']); ?>" size="40"></td></tr>
      <tr><td>User</td><td><input type="text" name="username" value="<?php echo htmlspecialchars($_POST['username']); ?>" size="20"></td></tr>
    <tr><td>Password</td><td><input type="text" name="password" value="<?php echo htmlspecialchars($_POST['password']); ?>" size="20"></td></tr>
    <tr><td>Database</td><td><input type="text" name="database" value="<?php echo htmlspecialchars($_POST['database']); ?>" size="20"></td></tr>
    <tr></tr>
    <tr><td> </td><td><input type="submit" name="sub" value="Test Me!"></td></tr>
  </table>
</form>

<?php
if (@$_POST['sub']){
 $host=$_POST['host'];
 $username=$_POST['username'];
 $password=$_POST['password'];
 $userdb=$_POST['database'];
 $database=$userdb.".phptest";

  try{
    $manager = new MongoDB\Driver\Manager("mongodb://{$host}/{$userdb}", array("username" => $username, "password" => $password));
       if ($manager) {
        $bulk = new MongoDB\Driver\BulkWrite;
        $bulk->insert(['x' => 1]);
        $bulk->insert(['x' => 2]);
        $bulk->insert(['x' => 3]);
        $manager->executeBulkWrite($database, $bulk);

        $filter = ['x' => ['$gt' => 1]];
        $options = [
            'projection' => ['_id' => 0],
            'sort' => ['x' => -1],
        ];

        $query = new MongoDB\Driver\Query($filter, $options);
        $cursor = $manager->executeQuery($database, $query);
            }
  }catch(Exception $e){
      echo  "<center><h1>Doesn't work</h1></center>";
    print_r($e);
           exit;
  }
}

if ($host)
 echo "<center><h1>Good connection</h1></center>";

?>

</body>
</html>

ดังนั้นหากคุณต้องการทดสอบการเชื่อมต่อ เพียงดาวน์โหลด Package พร้อมกับโปรเจ็กต์ดังที่แสดงไว้ด้านบน และ deploy

เคล็ดลับ: สำหรับเวอร์ชันไดรเวอร์เดิม (เช่น mongo.so) โปรดใช้ Application ทดสอบนี้ ขั้นตอนการทำงานจะคล้ายกับที่อธิบายไว้ด้านล่าง

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

ดังนั้นคุณจะได้รับ Environment ที่คล้ายกับที่แสดงด้านบน

ตรวจสอบการเชื่อมต่อ

1. เปิด Environment ของคุณใน Browser ด้วยปุ่มชื่อเดียวกันคุณจะเห็นแบบฟอร์มสำหรับป้อนรายละเอียด Database MongoDB ของคุณ

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

ควรระบุค่าต่อไปนี้:

  • Host– ลิงก์ไปยังพาเนล Database สำหรับแอดมินของคุณโดยไม่มีส่วน https:// (สามารถพบได้ในอีเมลที่เกี่ยวข้องหรือคัดลอกจากแถบ address ของ Browser หลังจากคลิก Open in browser สำหรับ MongoDB node)
  • ผู้ใช้- ชื่อผู้ใช้ที่คุณกำหนดให้กับ Database (ในกรณีของเรา คือ dbuser)
  • รหัสผ่าน- รหัสผ่านสำหรับผู้ใช้ที่ระบุไว้ในฟิลด์ก่อนหน้านี้
  • Database- ชื่อของ Database ที่ต้องการ (ในกรณีของเรา คือ mongodb-connect)

หลังจากป้อนข้อมูลในช่องที่เกี่ยวข้องแล้วให้คลิกที่ปุ่ม Test Me!

2. หากข้อมูลที่ระบุถูกต้องข้อความ Good connection จะแสดงขึ้น

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

ถ้าข้อมูลผิดคุณจะได้รับการแจ้งเตือนว่าการเชื่อมต่อของคุณไม่ทำงาน และผลลัพธ์โดยละเอียดของข้อผิดพลาดนี้เกิดจากสิ่งใด

3. นอกจากนี้เมื่อสร้างการเชื่อมต่อสำเร็จคอลเลกชัน phptest อันใหม่ที่ภายในมี record จำนวนหนึ่งจะถูกเพิ่มไปยัง Database ที่ระบุ

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

ดังนั้นคุณสามารถไปที่พาเนล Database ของแอดมิน เพื่อให้แน่ใจว่าทุกอย่างทำงานได้อย่างถูกต้องและดำเนินการอื่น ๆ ที่จำเป็นต่อไป

สิ่งที่ควรรู้

Ruk-Com Developer’s Center ยังมีคู่มือ MongoDB ที่เฉพาะเจาะจงอีกจำนวนมากซึ่งอาจมีประโยชน์สำหรับงานที่แตกต่างกัน:

  • ตั้งค่าMaster-Slave Replicationระหว่าง ServerDatabase หลายตัวเพื่อให้ได้ประสิทธิภาพที่ดีขึ้นและการเข้าถึงข้อมูล
  • กำหนดค่าชุดจำลองด้วยจำนวน MongoDB node ที่ไม่เท่ากันเพื่อใช้ Master-Slave Replication และ Failover อัตโนมัติพร้อมกัน
  • เพิ่มความปลอดภัยให้กับข้อมูลผ่านการตั้งค่าการกำหนดการสำรองข้อมูลซึ่งอาจป้องกันข้อมูลสูญหายหรือลดผลที่ตามมา (ผ่านการกู้คืน) หากเกิดความล้มเหลวของ Server โดยไม่คาดคิด
  • ใช้ตัวเลือกการเข้าถึงระยะไกลสำหรับการดำเนินการกับ Database ของคุณโดยตรงผ่าน Client Application ที่ต้องการ กำจัดความจำเป็นในการเข้าสู่ระบบ Dashboard ของเรา
  • ตรวจสอบวิธีการนำเข้าและส่งออกการถ่ายโอนข้อมูลโดยใช้ 3d-party DB management clients เพื่อสำรองข้อมูลของคุณได้อย่างง่ายดาย