搭建centos7+apache+mongodb+php環境

搭建centos7+apache+mongodb+php環境

最近在作一個關於nosql注入的實驗,須要搭建數據庫是mongodb的數據庫網站環境環境。可是本人對mongodb數據庫瞭解甚少,因此在搭建的過程當中遇到了不少問題。由於菜,因此學。不知道有沒有童靴在搭建環境的時候是否是也遇到了不少問題。
這篇文章是在作完實驗以後寫的,因此當中遇到的問題也沒有去找辦法截圖,因此只是在下面提幾個記憶猶新的問題。若是有同窗遇到一樣的問題,但願能夠幫助你解決。不要成天在搭建環境,而且尚未完成(我就是這樣,嘲笑我吧!!!)
php

遇到的問題:

一、php版本的安裝影響php的mongodb數據庫的擴展
本次安裝選擇php5.6的版本
二、安裝時的依賴包問題
三、安裝順序問題
四、安裝後配置文件和啓動方式的問題
五、馬虎html

環境介紹:

linux:CentOS7
apache:2.4.6
MongoDB:3.2.10
php:5.6mysql

須要下載的安裝源碼及其餘源碼

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.tgzlinux

安裝步驟:

一、安裝apache服務

apache服務安裝沒有特別的要求,直接用yum源安裝就能夠。
解答點:(依賴問題)
注意的是,必定要安裝httpd-devel,由於這個包和apxs命令相關,此命令用來加載php模塊,當在安裝php的時候會用到。這個就屬於安裝依賴、包的問題。沒有這個後面編譯安裝後php,Apache服務是沒有辦法加載libphp5.so這個模塊的。
爲了不有個別包須要安裝而沒有安裝的事故發生,直接:sql

yum install httpd* -ymongodb

搭建centos7+apache+mongodb+php環境

二、安裝mongodb數據庫

(1)將下載的源碼上傳到服務器,而後就行解壓安裝
(2)安裝以前應先建立有關目錄和文件數據庫

mkdir /data/mongodb/dbs -p
touch /data/mongodb/logapache

做用,第一個目錄是用來後面存放數據庫數據的,第二個文件是用來存放數據庫日誌的文件,後面都會用的到。
搭建centos7+apache+mongodb+php環境centos

(3)將壓縮包解壓到指定目錄bash

tar -xvf mongodb-linux-x86_64-rhel62-3.2.10.gz -C /usr/local

(4)爲了使用命令的方便,將數據庫的文件路徑加入到環境變量中

vi .bash_prefile

搭建centos7+apache+mongodb+php環境

使環境變量可以生效,須要執行一條命令:

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

三、安裝php

(1)將下載的源碼上傳到服務器
(2)解壓

tar -zxvf php-5.6.39.tar.gz

搭建centos7+apache+mongodb+php環境

(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)一樣的,設置環境變量
搭建centos7+apache+mongodb+php環境

使環境變量生效:source .bash_prefile
安裝完以後看一看在/etc/httpd/modules/目錄下有沒有libphp5.so,有的話說明模塊安裝的沒問題,若是這裏沒有這個模塊的話,在apache解析php的時候會出現錯誤。

四、安裝擴展

(1)將擴展的源碼上傳服務器
(2)解壓:tar -zxvf mongo-1.5.5.tgz
(3)進入解壓後的目錄,生成執行文件configure

執行命令:phpize
搭建centos7+apache+mongodb+php環境

是出錯的,有辦法解決
解決錯誤方法:

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 install

yum 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 .html

DirectoryIndex 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

但願可以幫到那些如我通常錯誤一堆的人。

相關文章
相關標籤/搜索