linux:CentOS7apache:2.4.6MongoDB:3.2.10php:5.6
需要下载的安装源码及其他源码php-5.6:http://cn2.php.net/downloads.phpmongodb-3.2.10:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.10.tgzmongodb的php扩展:http://pecl.php.net/get/mongo-1.5.5.tgz
安装步骤:1、安装apache服务apache服务安装没有特别的要求,直接用yum源安装就可以。解答点:(依赖问题)注意的是,一定要安装httpd-devel,因为这个包和apxs命令相关,此命令用来加载php模块,当在安装php的时候会用到。这个就属于安装依赖、包的问题。没有这个后面编译安装后php,Apache服务是没有办法加载libphp5.so这个模块的。为了避免有个别包需要安装而没有安装的事故发生,直接:
yum install httpd* -y
2、安装mongodb数据库(1)将下载的源码上传到服务器,然后就行解压安装(2)安装之前应先创建有关目录和文件
mkdir /data/mongodb/dbs -ptouch /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
3、安装php(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 installcp php.ini-production /etc/php.ini
(6)同样的,设置环境变量
使环境变量生效:source .bash_prefile安装完之后看一看在/etc/httpd/modules/目录下有没有libphp5.so,有的话说明模块安装的没问题,如果这里没有这个模块的话,在apache解析php的时候会出现错误。
4、安装扩展(1)将扩展的源码上传服务器(2)解压:tar -zxvf mongo-1.5.5.tgz(3)进入解压后的目录,生成执行文件configure
执行命令:phpize
是出错的,有办法解决解决错误方法:
wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gztar -zvxf m4-1.4.9.tar.gzcd 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
到这里基本的安装是差不多已经完成了,但是环境还是不能使用,接下来就是对配置文件的修改。
5、对配置文件的修改(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 .phpAddType application/x-httpd-php .htmAddType 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
希望能够帮到那些如我一般错误一堆的人。
搭建centos7+apache+mongodb+php环境
标签:整合 image alt 数据库 使用 load 产生 centos 查看
小编还为您整理了以下内容,可能对您也有帮助:
怎么在Centos7下安装MongoDB
1、mongodb下载地址:http://www.mongodb.org/downloads,可以找到32位的tgz文件地址,如:http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.4.2.tgz
2、安装MongoDB(安装到/usr)
cd /usr
wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.4.2.tgz
tar zxvf mongodb-linux-i686-2.4.2.tgz
mv mongodb-linux-i686-2.4.2 mongodb (文件重命名,移动文件跟重命名都是同一个命令,mv(就是move)的意思)
cd mongodb
mkdir data
cd data
mkdir db (建立数据文件目录)
cd ../
mkdir logs (建立日志目录)
cd bin
vi mongodb.conf
3、mongodb.conf文件输入如下内容:
dbpath=/data/db (看w3cschool上,data目录只能在根目录上,不然自启动会有问题)
logpath=/usr/mongodb/logs/mongodb.log
port=27017
fork=true
nohttpinterface=true
4、命令行输入一下内容,重新绑定mongodb的配置文件地址和访问IP
/usr/mongodb/bin/mongod --bind_ip localhost -f /usr/mongodb/bin/mongodb.conf
5、开机自动启动mongodb
vi /etc/rc.d/rc.local
/usr/mongodb/bin/mongod --config /usr/mongodb/bin/mongodb.conf (文件输入内容)
6、重启一下系统,测试下能不能自启
#进入mongodb的shell模式
/usr/mongodb/bin/mongo
#查看数据库列表
show dbs
#当前db版本
db.version();
7、配置环境变量
vi /etc/profile #添加环境变量,编辑,在最后一行添加下面的代码:
export PATH=$PATH:/usr/mongodb/bin
保存后重启电脑。这样直接输入mongo就可以连接数据库了,在不需要像5中需要输入/usr/mongodb/bin/mongo进入mongodb的shell模式了
8、如果某次启动后,发现输入mongo无法连接数据库,可能原因是上次未正常关机导致的,此时删除/data/db目录内的mogod.lock文件,重启即可。
9、mongodb管理工具:Robomongo
centos安装mongodb
标签:
怎么在Centos7下安装MongoDB
1、mongodb下载地址:http://www.mongodb.org/downloads,可以找到32位的tgz文件地址,如:http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.4.2.tgz
2、安装MongoDB(安装到/usr)
cd /usr
wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.4.2.tgz
tar zxvf mongodb-linux-i686-2.4.2.tgz
mv mongodb-linux-i686-2.4.2 mongodb (文件重命名,移动文件跟重命名都是同一个命令,mv(就是move)的意思)
cd mongodb
mkdir data
cd data
mkdir db (建立数据文件目录)
cd ../
mkdir logs (建立日志目录)
cd bin
vi mongodb.conf
3、mongodb.conf文件输入如下内容:
dbpath=/data/db (看w3cschool上,data目录只能在根目录上,不然自启动会有问题)
logpath=/usr/mongodb/logs/mongodb.log
port=27017
fork=true
nohttpinterface=true
4、命令行输入一下内容,重新绑定mongodb的配置文件地址和访问IP
/usr/mongodb/bin/mongod --bind_ip localhost -f /usr/mongodb/bin/mongodb.conf
5、开机自动启动mongodb
vi /etc/rc.d/rc.local
/usr/mongodb/bin/mongod --config /usr/mongodb/bin/mongodb.conf (文件输入内容)
6、重启一下系统,测试下能不能自启
#进入mongodb的shell模式
/usr/mongodb/bin/mongo
#查看数据库列表
show dbs
#当前db版本
db.version();
7、配置环境变量
vi /etc/profile #添加环境变量,编辑,在最后一行添加下面的代码:
export PATH=$PATH:/usr/mongodb/bin
保存后重启电脑。这样直接输入mongo就可以连接数据库了,在不需要像5中需要输入/usr/mongodb/bin/mongo进入mongodb的shell模式了
8、如果某次启动后,发现输入mongo无法连接数据库,可能原因是上次未正常关机导致的,此时删除/data/db目录内的mogod.lock文件,重启即可。
9、mongodb管理工具:Robomongo
centos安装mongodb
标签:
Centos7配置MongodDB服务
1、在 /lib/systemd/system 目录下创建名称为 mongodb 的服务(自定义服务名)
2、在 mongodb.service 中输入如下信息:
3、设置 mongodb.service 权限
至此,MongoDB服务配置完成~~
其中MongoDB的配置文件mongod.conf的基本内容如下:
systemctl命令
参考:
https://www.cnblogs.com/sunday294/p/6907992.html
http://www.jinbuguo.com/systemd/systemd.service.html
Centos7配置MongodDB服务
1、在 /lib/systemd/system 目录下创建名称为 mongodb 的服务(自定义服务名)
2、在 mongodb.service 中输入如下信息:
3、设置 mongodb.service 权限
至此,MongoDB服务配置完成~~
其中MongoDB的配置文件mongod.conf的基本内容如下:
systemctl命令
参考:
https://www.cnblogs.com/sunday294/p/6907992.html
http://www.jinbuguo.com/systemd/systemd.service.html
Out of memory: Kill process 解决
环境:Centos7
现象:Linux测试服务器上部署了很多程序mysql、mongodb、java等等。程序操作mongodb经常进程被杀死的情况,导致业务中断,mongodb 的logs无提示信息。查看系统日志message后,发现对应时间点,系统自动kill掉了mongodb进程,如下
Out of memory: Kill process 5372 (mongod) score 130 or sacrifice child
Killed process 5372 (mongod), UID 0, total-vm:2539052kB, anon-rss:2117096kB, file-rss:0kB, shmem-rss:0kB
Linux 分配内存策略
Linux内核根据应用程序的要求来分配内存,由于进程实际上并不会将分配的内存全部使用,所以,为了提高性能,内核采用了一种过度分配内存(over-commit-memory)的策略,来间接利用进程的空闲内存,提高内存的使用效率。一般来说,这没问题。但如果大多数进程都耗光自己的内存,就有麻烦了。因此此时,所有应用程序的内存之和大于物理内存。所以,必须杀掉一部分进程,一般来说,是选内存占用最大的进程杀掉。
挑选原理
挑选的过程由linux/mm/oom_kill.c里的 oom_badness() 函数决定,挑选的算法很直接:是那个最占用内存的进程。
/**
test 2334 1.6 2.1 623800 4876 ? Ssl 09:52 0:00 /usr/sbin/test
0
当然,也可以完全关闭 OOM killer,但线上生产环境最好不要这么做。
OOM_killer是Linux自我保护的方式,当内存不足时不至于出现太严重问题,有点壮士断腕的意味
在kernel 2.6,内存不足将唤醒oom_killer,挑出/proc/<pid>/oom_score最大者并将之kill掉
为了保护重要进程不被oom-killer掉,我们可以:echo -17 > /proc/<pid>/oom_adj,-17表示禁用OOM
我们也可以对把整个 系统 的OOM给禁用掉:
sysctl -w vm.panic_on_oom=1 (默认为0,表示开启)
sysctl -p
值得注意的是,有些时候 free -m 时还有剩余内存,但还是会触发OOM-killer,可能是因为进程占用了特殊内存地址
平时我们应该留意下新进来的进程内存使用量,免得系统重要的业务进程被无辜牵连
可用 top M 查看最消耗内存的进程,但也不是进程一超过就会触发oom_killer
参数/proc/sys/vm/overcommit_memory可以控制进程对内存过量使用的应对策略
当overcommit_memory=0 允许进程轻微过量使用内存,但对于大量过载请求则不允许(默认)
当overcommit_memory=1 永远允许进程overcommit
当overcommit_memory=2 永远禁止overcommit
参考:
https://blog.csdn.net/pansaky/article/details/87518586
https://www.cnblogs.com/shenlinken/p/10987895.html
https://blog.csdn.net/weixin_34186128/article/details/94673229
https://www.cnblogs.com/yanqingxu/p/8316359.html
如何让centos6运行centos7软件
1、首先让centos6运行centos7软件足以下载MongoDB数据库。
2、其次将安装文件解压到C盘(注意:安装路径中不能出现空格),配置“环境变量”,将%MONGODB_HOME%in添加到“Path”中。
2、最后进入DOS窗口,设置数据保存目录(与端口)和日志输出目录。DOS命令:mongod--port--dbpath--logpath,就可以运行centos7软件了。