การเชื่อมต่อ PHP กับ MongoDB
คู่มือนี้เรียบเรียงและปรับรูปแบบสำหรับ Ruk-Com Cloud PaaS ภาพหน้าจออาจแตกต่างเล็กน้อยตามเวอร์ชันของระบบ
คลิกหรือแตะภาพหน้าจอเพื่อดูรายละเอียดขนาดจริง
วัตถุประสงค์
บทความนี้อธิบายการใช้งาน การเชื่อมต่อ PHP กับ MongoDB บน Ruk-Com Cloud PaaS โดยจัดลำดับขั้นตอนและจุดตรวจสอบสำหรับการนำไปใช้งานจริง
ก่อนเริ่มดำเนินการ
- เข้าสู่ระบบด้วยบัญชีที่มีสิทธิ์จัดการ Environment ที่เกี่ยวข้อง
- ตรวจสอบชื่อ Environment, Region และทรัพยากรเป้าหมายก่อนบันทึกการเปลี่ยนแปลง
- สำรองข้อมูลหรือกำหนดแผนย้อนกลับก่อนแก้ไขระบบ Production
MongoDBเป็นฐานข้อมูล NoSQL ที่ใช้กันอย่างแพร่หลายโดยใช้รูปแบบ document-oriented และมีไว้สำหรับจัดเก็บข้อมูลกึ่งโครงสร้าง คำแนะนำด้านล่างนี้ให้คำแนะนำเกี่ยวกับวิธีที่คุณสามารถใช้งานร่วมกับแอป PHP ของคุณได้อย่างง่ายดายซึ่งโฮสต์อยู่ใน Ruk-Com Cloud
การสร้าง Environment
ลงชื่อเข้าใช้บัญชี Ruk-Com Cloud ของคุณและ สร้าง Environment ใหม่ด้วย MongoDB node ของเวอร์ชันที่ต้องการ (สามารถพบได้ในส่วน NoSQL wizard)

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

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

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

4. จากนั้นคุณต้องสร้างผู้ใช้สำหรับฐานข้อมูลนี้ – ให้เข้าไปที่ 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- ฐานข้อมูล (แนะนำอันที่สร้างขึ้นข้างต้น) ผู้ใช้รายนี้จะมีอ่าน/เขียนสิทธิ์สำหรับ

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

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

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

การ Deploy แอปพลิเคชัน
ตอนนี้คุณสามารถดำเนินการ deploy แอปพลิเคชันใน Environment ที่คุณเพิ่งเตรียมไว้โดยใช้ Ruk-Comผู้จัดการฝ่ายปรับใช้(สำหรับโปรเจ็กต์ที่รวมไว้ในที่เก็บแบบถาวรหรือดึงมาจากที่เก็บ GIT / SVN โดยตรง)
ตัวอย่างเช่นเราจะใช้แอปง่าย ๆ ต่อไปนี้ซึ่งออกแบบมาเพื่อตรวจสอบการสร้างการเชื่อมต่อระหว่าง compute node ที่เกี่ยวข้องกับเซิร์ฟเวอร์ 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>
ดังนั้นหากคุณต้องการทดสอบการเชื่อมต่อ เพียงดาวน์โหลดแพ็กเกจพร้อมกับโปรเจ็กต์ดังที่แสดงไว้ด้านบน และ deploy
เคล็ดลับ: สำหรับเวอร์ชันไดรเวอร์เดิม (เช่น mongo.so) โปรดใช้แอปพลิเคชันทดสอบนี้ ขั้นตอนการทำงานจะคล้ายกับที่อธิบายไว้ด้านล่าง

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

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

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

ดังนั้นคุณสามารถไปที่พาเนลฐานข้อมูลของแอดมิน เพื่อให้แน่ใจว่าทุกอย่างทำงานได้อย่างถูกต้องและดำเนินการอื่น ๆ ที่จำเป็นต่อไป
สิ่งที่ควรรู้
Ruk-Com Developer’s Center ยังมีคู่มือ MongoDB ที่เฉพาะเจาะจงอีกจำนวนมากซึ่งอาจมีประโยชน์สำหรับงานที่แตกต่างกัน:
- ตั้งค่าการจำลองแบบ Master-Slaveระหว่างเซิร์ฟเวอร์ฐานข้อมูลหลายตัวเพื่อให้ได้ประสิทธิภาพที่ดีขึ้นและการเข้าถึงข้อมูล
- กำหนดค่าชุดจำลองด้วยจำนวน MongoDB node ที่ไม่เท่ากันเพื่อใช้การจำลองแบบ Master-Slave และ Failover อัตโนมัติพร้อมกัน
- เพิ่มความปลอดภัยให้กับข้อมูลผ่านการตั้งค่าการกำหนดการสำรองข้อมูลซึ่งอาจป้องกันข้อมูลสูญหายหรือลดผลที่ตามมา (ผ่านการกู้คืน) หากเกิดความล้มเหลวของเซิร์ฟเวอร์โดยไม่คาดคิด
- ใช้ตัวเลือกการเข้าถึงระยะไกลสำหรับการดำเนินการกับฐานข้อมูลของคุณโดยตรงผ่านไคลเอนต์แอปพลิเคชันที่ต้องการ กำจัดความจำเป็นในการเข้าสู่ระบบแดชบอร์ดของเรา
- ตรวจสอบวิธีการนำเข้าและส่งออกการถ่ายโอนข้อมูลโดยใช้ 3d-party DB management clients เพื่อสำรองข้อมูลของคุณได้อย่างง่ายดาย