您好,登錄后才能下訂單哦!
最近在做一個關于nosql注入的實驗,需要搭建數據庫是mongodb的數據庫網站環境環境。但是本人對mongodb數據庫了解甚少,所以在搭建的過程中遇到了很多問題。因為菜,所以學。不知道有沒有童靴在搭建環境的時候是不是也遇到了很多問題。
這篇文章是在做完實驗之后寫的,所以當中遇到的問題也沒有去找辦法截圖,所以只是在下面提幾個記憶猶新的問題。如果有同學遇到同樣的問題,希望可以幫助你解決。不要整天在搭建環境,并且還沒有完成(我就是這樣,嘲笑我吧!!!)
1、php版本的安裝影響php的mongodb數據庫的擴展
本次安裝選擇php5.6的版本
2、安裝時的依賴包問題
3、安裝順序問題
4、安裝后配置文件和啟動方式的問題
5、馬虎
linux:CentOS7
apache:2.4.6
MongoDB:3.2.10
php:5.6
php-5.6:http://cn2.php.net/downloads.php
mongodb-3.2.10:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.10.tgz
mongodb的php擴展:http://pecl.php.net/get/mongo-1.5.5.tgz
apache服務安裝沒有特別的要求,直接用yum源安裝就可以。
解答點:(依賴問題)
注意的是,一定要安裝httpd-devel,因為這個包和apxs命令相關,此命令用來加載php模塊,當在安裝php的時候會用到。這個就屬于安裝依賴、包的問題。沒有這個后面編譯安裝后php,Apache服務是沒有辦法加載libphp5.so這個模塊的。
為了避免有個別包需要安裝而沒有安裝的事故發生,直接:
yum install httpd* -y
(1)將下載的源碼上傳到服務器,然后就行解壓安裝
(2)安裝之前應先創建有關目錄和文件
mkdir /data/mongodb/dbs -p
touch /data/mongodb/log
作用,第一個目錄是用來后面存放數據庫數據的,第二個文件是用來存放數據庫日志的文件,后面都會用的到。
(3)將壓縮包解壓到指定目錄
tar -xvf mongodb-linux-x86_64-rhel62-3.2.10.gz -C /usr/local
(4)為了使用命令的方便,將數據庫的文件路徑加入到環境變量中
vi .bash_prefile
使環境變量能夠生效,需要執行一條命令:
source .bash_prefile
(4)為數據庫創建配置文件,啟動數據庫
vi /etc/mongodb.conf
dbpath=/date/mongodb/dbs //數據文件地址
logpath=/data/mongodb/log //日志文件地址
port=27071 //端口號(默認27017)
fork=true //后臺運行
journal=true //啟用日志選項
啟動數據庫:
mongod -f /etc/mongodb.conf
解答點(數據庫啟動方式問題)
面啟動方式出現的問題進行一下解答,mongodb數據庫默認的端口是27017,進入數據庫的時候可以直接輸入命令mongo就可以,但是由于我的一時馬虎,將配置文件中寫成了27071所以用開始的方法是沒辦法啟動的。當改變了端口,進入數據庫的方法是:
mongo localhost:端口號
例如我這里:mongo localhost:27071
(1)將下載的源碼上傳到服務器
(2)解壓
tar -zxvf php-5.6.39.tar.gz
(3)安裝相關依賴:
yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel gcc
這里編譯安裝的時候會需要很多相關依賴,為了方便,避免產生錯誤,在網上搜集了一些需要的依賴,同時,編譯安裝需要gcc,可以看一下自己有沒有這個編譯工具,沒有的話也需要安裝。
(4)進入解壓后的目錄,編譯安裝
cd php-5.6.39
./configure --prefix=/usr/local/php --with-config-file-path=/etc --with-apxs2=/usr/bin/apxs
--prefix 指定了安裝位置
--with-config-file-path 指定php.ini的位置
--with-apxs2 整合 apache,apxs功能是使用mod_so中的LoadModule指令,加載指定模塊到 apache,要求 apache 要打開SO模塊
這里apxs的命令根據自己個人情況路徑而定,查看apxs文件路徑方法:
which apxs
(5)安裝
make && make install
cp php.ini-production /etc/php.ini
(6)同樣的,設置環境變量
使環境變量生效:source .bash_prefile
安裝完之后看一看在/etc/httpd/modules/目錄下有沒有libphp5.so,有的話說明模塊安裝的沒問題,如果這里沒有這個模塊的話,在apache解析php的時候會出現錯誤。
(1)將擴展的源碼上傳服務器
(2)解壓:tar -zxvf mongo-1.5.5.tgz
(3)進入解壓后的目錄,生成執行文件configure
執行命令:phpize
是出錯的,有辦法解決
解決錯誤方法:
wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz
tar -zvxf m4-1.4.9.tar.gz
cd m4-1.4.9/
./configure && make && make installyum install autoconf.
重新執行phpize命令就ok了
(4)執行configure文件生成Makefile文件
./configure --enable-mongo=share --with-php-config=php-config
(5)安裝
make && make install
到這里基本的安裝是差不多已經完成了,但是環境還是不能使用,接下來就是對配置文件的修改。
(1)當安裝完成擴展的時候,會出現這樣的一句話,extension_dir=/usr/lib/php/extensions/debug-non-zts-20151012/
可能和我的不同,但是都是類似的,將這樣的一句話復制下來,打開/etc/php.ini文件,添加進去,同時還要添加extension=mongo.so
這兩個都是在啟用mongodb的擴展。沒有這個是沒有辦法對數據庫操作的。
vi /etc/php.ini
追加:
extension_dir=/usr/lib/php/extensions/debug-non-zts-20151012/
extension=mongo.so
(2)打開apache的配置文件對其進行修改。
追加:
AddType application/x-httpd-php .php
AddType application/x-httpd-php .htm
AddType application/x-httpd-php .htmlDirectoryIndex index.html index.cgi index.php index.phtml index.php3
這些語句的位置在文件中已經給出,搜索AddType和DirectoryIndex就會找到
解釋點:(php版本和擴展之間的問題)
有的人可能是直接利用的mongodb的yum源,然后執行pecl install momgodb的安裝擴展,這個時候如果你的php是5.4或5.4以下的版本會直接報錯,提示你說需要php5.5.99以上的版本。所以這里為了避免沖突,也是利用了php5.6的版本。
解釋點:(安裝順序問題、馬虎)
我們都知道lamp(linux+apa+mysql+php)的安裝順序,就是安裝amp的順序安裝的,這里apa+mongo+php也是一樣,按照這樣的順序安裝。我出現安裝錯誤的原因在于,沒有安裝apa的時候就安裝了php。我有個習慣,就是在做不了解的環境的時候,沒安裝一個服務就會創建一個快照,防止后面做錯,還可以回來重新做。但是就是因為這個,當我返回快照的時候,我以為返回到了安裝好Apache服務的快照上了,結果不想而知。
好了,到這里基本都已經解決了所有服務的安裝,只要將服務都啟動開就可以訪問網站了,自己可以寫個php網頁進行測試。如果出現關于mongo class的錯誤,說明你的擴展沒有弄好,要么去修改一下php.ini要么重新安裝一下就好。
注意:在訪問網站的時候一定記得關閉防火墻,和selinux。關閉方法:systemctl stop firewalld 和 setenforce 0
希望能夠幫到那些如我一般錯誤一堆的人。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。