[SQL] Configure MongoDB by PHP
今天我要講解如何在 PHP 的環境下安裝 MongoDB,並且介紹一些簡單的指令讓大家輕易的上手,在過去我們都透過 MySQL 來搭配,PHP 來運行,不過每次要優先定義欄位就覺得非常麻煩…,而且資料量一大,搜索的速度似乎就變慢了許多,所以我在想有沒有其他的替代方案呢?然而最近又在研究 MEAN.io,當下體驗到 MongoDB 的好處,所以就思考能不能讓 PHP 與 MongoDB 結合呢,經過測試原來真的可行,而且官方早已提供熟悉的套件指令給開發者,這真是一大福音,我就不多說,一起來實作吧。
Get Ready before hand
同樣的跟上篇一樣,我們必須先有 Ubuntu 的系統才可以安裝,雖然其他系統也可以拉,不過我只熟悉 Ubuntu…(被揍
Install PHP-MongoDB
Step 1: Install Apache2
看過其他的文章就知道,首先我們必須先安裝 Apache2 的網頁伺服器在我們的系統上:
1 | sudo apt-get install apache2 |
在安裝完成之後你可以修改網頁的 Port,預設為 80
。你可以在 /etc/apache2/ports.conf
,這個路徑下去做修改。(這是非必須的)
Step 2: Install MongoDB
接下來你需要先匯入公開的鑰匙:
1 | sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 |
之後透過 apt-get 進行安裝 MongoDB:
1 | sudo apt-get install mongodb-org mongodb-org-server |
Step 3: Install PHP5
接下來我們必須安裝 PHP 套件中的 MongoDB:
1 | sudo apt-get install php5 php5-dev libapache2-mod-php5 apache2-threaded-dev php-pear php5-mongo |
Step 4: Install MongoDB PHP Module
緊接著我們需要安裝 MongoDB PECL 擴展並且開啟他,他是 PHP 與 MongoDB 之間的橋樑:
1 | sudo pecl install mongo |
Step 5: Verify Setup
最後我們要去檢查是否有安裝成功,我們必須在網頁伺服器下建立一個 PHP 的網頁去做測試,接著輸入以下:
1 | <?php |
接下來打開瀏覽器輸入網頁的所在地,接著點選 Ctrl+F 去搜尋 mongo
,假設有搜索到代表你安裝成功了!反之失敗。
Configure MongoDB username and password
當 MongoDB 安裝完成後,你可以進入系統設定一組帳號密碼並且通知 MongoDB 可以透過遠端去訪問。
Step 1: Open mongo shell
在設定帳號密碼之前,我們先打開 Mongo 的命令內:
1 | mongo |
如果你初始化發生錯誤可以修改環境變數:
1 | export LC_ALL=C |
※如果你輸入完,出現此錯誤: Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refus ed
,這代表 Mongo 拒絕你的訪問,我們需要到/etc/mongod.conf 修改 bindIp,可以把他從 bindIp = 127.0.0.1
,修改成 bindIp = 0.0.0.0
或者把他註解起來 #bindIp = 127.0.0.1
。
除此之外拉到最下方如果發現 auth: true
請先刪掉他,不然沒認證無法啟動。
1 | sudo nano /etc/mongod.conf |
修改完成後接著 Ctrl + X
接著按 Y
並且 Enter
儲存,接著重啟 Mongod 就完成了。
1 | sudo service mongod restart |
※另外記得確認有沒把 TCP 的 27000-27020 的 Port 打開。
Step 2: Switch to the database admin
接著我們需要進入管理員的資料庫內:
1 | use admin |
※未來要進入任何資料庫可以透過指令 use database
。
Step 3: Create the root user
接下來我們要創建一個管理員帳號:
1 | db.createUser({user:"admin", pwd:"admin123", roles:[{role:"root", db:"admin"}]}) |
成功之後他會出現: Successfully added user: …
Step 4: Edit MongoDB configuration file
完成之後我們輸入 exit
,離開 Mongo Shell
,緊接著透過指令修改 MongoDB 的設定檔:
1 | sudo nano /etc/mongod.conf |
在裡面我們可以看到 dbPath
,此路徑為資料儲存的地方,我們往下看可以找到 #security:
,我們把他前方的 #
去除並且在下方加入 authorization: "enabled"
:
1 | security: |
另外如果想要開啟遠端訪問,可以把 bindIP
後方的 127.0.0.1
修正為 0.0.0.0
,或者直接把他註解起來如 #bindIp: 127.0.0.1
。
Step 5: Restart MongoDB and Try to connect
接著我們重新啟動 MongoDB:
1 | sudo service mongod restart |
並且打開 Mongo Shell:
1 | mongo -u admin -p admin123 --authenticationDatabase admin |
-u
後方為剛剛創建的使用者, -p
後方為剛剛創建的密碼, --authenticationDatabase
後方為授權進入的資料庫。另外你可以嘗試省略 -p
後方的密碼,確定完系統會詢問你密碼,這樣能防止他人去觀看紀錄:
1 | mongo -u admin -p --authenticationDatabase admin |
Other: Change the db location
如果你想要修改資料的位置可以嘗試去修改剛才的 /etc/mongod.conf
,但在修改前記得先拿掉 security
與 authorization
,可以加個註解如:
1 | #security: |
接著你可以放心修改 dbPath
,我自己是修改到 /data/db
裡,完成後記得新建一個 /data/db
的資料夾,另外記得授權給 mongod
:
1 | sudo mkdir /data/db |
之後記得依照 Step 1
的步驟新增使用者,即可完成!