การเชื่อมต่อ 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)

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

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

ในแท็บ Browser ที่เปิดขึ้นคุณจะเห็นแบบฟอร์ม Sign in สำหรับพาเนล MongoDB สำหรับแอดมิน ป้อนข้อมูลรับรองของผู้ดูแลระบบที่คุณได้รับในอีเมลดังกล่าวข้างต้นแล้วคลิก เข้าสู่ระบบ เพื่อเข้าถึง
3. สร้าง Database ใหม่โดยป้อนข้อมูลที่ช่องกรอกข้อมูลด้านบนทางขวา (ยกตัวอย่างเป็น mongodb-connect) แล้วกดปุ่ม Create Database

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

5. หลังจากนั้นเลือก database โดยใช้คำสั่ง
use mongodb-connect
จากนั้นพิมพ์คำสั่งต่อไปนี้:
db.createUser({ user: "dbuser", pwd: "passw0rd", roles:[{ role: "readWrite", db: "mongodb-connect"}]})

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

จากนั้นเลือก Database ที่เกี่ยวข้องโดยใช้ลิสรายการและ Execute คำสั่งที่ระบุด้วยปุ่มชื่อเดียวกัน คุณจะได้รับการแจ้งเตือนการทำสำเร็จในเวลาไม่กี่วินาที
5. ตอนนี้ต้องเปิดใช้งานไดรเวอร์การเชื่อมต่อเฉพาะเพื่อเปิดใช้งานการโต้ตอบระหว่าง Server แอปของคุณและ MongoDB ที่ Ruk-Com Cloud จะรวมอยู่ในการสร้าง Server PHP แอปทั้งหมดตามค่าเริ่มต้น.
หมายเหตุ :
ลิงค์ #เริ่มต้นด้วยเวอร์ชัน 4.3 Ruk-Com PaaSมีไดร์เวอร์สองเวอร์ชันให้ใช้งานที่ Server แอป PHP ที่สร้างขึ้นใหม่ทั้งหมด:
- mongo.so (ปัจจุบันถือว่าเลิกใช้งานแล้ว)
- mongodb.so

ดังนั้นในการเปิดใช้งานไดรเวอร์ที่จำเป็นให้กลับไปที่ Dashboard วางเมาส์เหนือ compute node ใน Env ของคุณแล้วคลิกที่ปุ่ม Config ที่ปรากฏ
6. ภายในแท็บตัวจัดการการกำหนดค่าที่เปิดอยู่ให้ขยายโฟลเดอร์ etc แล้วเลือกไฟล์php.iniที่อยู่ข้างใน

ค้นหาคำว่า [mongodb] และนำ comment เครื่องหมาย (;) หน้าชื่อของ library ที่ต้องการใช้ออก ในเคสนี้จะเป็นmongdb.so
7.บันทึกการเปลี่ยนแปลงที่ดำเนินการ และ RestartNode แอป Server ของคุณเพื่อนำไปใช้

การ 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 ทดสอบนี้ ขั้นตอนการทำงานจะคล้ายกับที่อธิบายไว้ด้านล่าง

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

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

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

ดังนั้นคุณสามารถไปที่พาเนล 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 เพื่อสำรองข้อมูลของคุณได้อย่างง่ายดาย
