lnmp 用mongo
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lnmp 用mongo相关的知识,希望对你有一定的参考价值。
本操作是针对与centos7.2 进行的安装服务,和环境配置,用mongodb代替mysql进行的lnmp安装
---------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
//添加用户
useradd -M -s /sbin/nologin php
//安装编译工具及库文件
yum install -y zlib-devel fontconfig fontconfig-devel libXpm* libtool* libxml2 libxml2-devel curl curl-devel
yum install -y openssl-devel libcurl-devel libjpeg-devel libpng-devel libicu-devel openldap-devel libmcrypt
yum install -y libmcrypt-devel yasm yasm-devel
yum install -y gcc+ gcc-c++
//下载各个安装包
libpng http://downloads.sourceforge.net/libpng/libpng-1.6.16.tar.xz
gd https://bitbucket.org/libgd/gd-libgd/downloads/libgd-2.1.0.tar.gz
tiff http://download.osgeo.org/libtiff/tiff-4.0.3.tar.gz
freetype http://ring.u-toyama.ac.jp/archives/graphics/freetype/freetype2/freetype-2.5.4.tar.gz
jpegsrc http://www.ijg.org/files/jpegsrc.v9a.tar.gz
//安装tiff
./configure --prefix=/usr/local/tiff --enable-shared
make && make install
//安装libpng
cd libpng-1.6.16
./configure --prefix=/usr/local/libpng --enable-shared
make && make install
//安装freetype
cd freetype-2.4.0
./configure --prefix=/usr/local/freetype
make && make install
//安装jpeg
cd jpeg-v9a
./configure --prefix=/usr/local/jpeg --enable-shared
make && make install
//安装libgd
cd libgd-2.1.0
./configure \
--prefix=/usr/local/libgd \
--enable-shared \
--with-jpeg=/usr/local/jpeg \
--with-png=/usr/local/libpng \
--with-freetype=/usr/local/freetype \
--with-fontconfig=/usr/local/freetype \
--with-xpm=/usr/ \
--with-tiff=/usr/local/tiff
make && make install
//安装php的准备(只有64位机器才用得到)
cp -frp /usr/lib64/libltdl.so* /usr/lib/
cp -frp /usr/lib64/libXpm.so* /usr/lib/
//安装php
export LD_LIBRARY_PATH=/usr/local/libgd/lib
cd php-5.6.16
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-mysql-sock=/tmp/mysqld.sock \
--with-pdo-mysql=mysqlnd \
--with-png-dir=/usr/local/libpng \
--with-gd \
--with-jpeg-dir=/usr/local/jpeg \
--with-freetype-dir=/usr/local/freetype \
--with-xpm-dir=/usr/ \
--with-mcrypt \
--with-zlib \
--with-iconv \
--enable-libxml \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-opcache \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--enable-ftp \
--enable-gd-native-ttf \
--with-openssl \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--without-pear \
--with-gettext \
--enable-session \
--with-curl \
--enable-ctype \
--disable-ipv6 \
--disable-short-tags
make && make install
//后续处理
cp php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
vi /usr/local/php/etc/php-fpm.conf
pid = run/php-fpm.pid //去除左侧分号
进行以下设置:
这个默认是在/usr/loccal/php/etc/php-fpm.d/www.php-fpm.conf
user = php
group = php
pid = run/php-fpm.pid //去除左侧分号
wq!
//添加开机启动
cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php
chmod +x /etc/rc.d/init.d/php
chkconfig php on
---------------------------------------------------------------------
*****************yum 安装nginx 或者编译安装nginx
---------------------------------------------------------------------
http://www.nginx.org 在 downloads里面的底部有个一个文件可以写进.repo的那种
弄好之后直接yum安装,
nginx如果是编译安装的话,在你下载网络源的那一页有./configure 后面的参数,或者自行找文档
php 和 nginx 链接好
sudo yum install -y mongodb-enterprise 这个大概会安装10个软件包,有5个是以前yun源指定,这里我还没写,
剩下的5个应该是支持mongod某些特性的软件包
这5个包是:mongodb-enterprise,
mongodb-enterprise-server,
mongodb-enterprise-shell,
mongodb-enterprise-mongos,
mongodb-enterprise-tools
11个包是:
(1/11): cyrus-sasl-gssapi-2.1.26-19.2.el7.x86_64.rpm | 41 kB 00:00:00
(2/11): lm_sensors-libs-3.3.4-11.el7.x86_64.rpm | 40 kB 00:00:00
(3/11): cyrus-sasl-plain-2.1.26-19.2.el7.x86_64.rpm | 38 kB 00:00:00
(4/11): mongodb-enterprise-3.2.1-1.el7.x86_64.rpm | 5.9 kB 00:00:02
(5/11): mongodb-enterprise-mongos-3.2.1-1.el7.x86_64.rpm | 5.4 MB 00:01:06
(6/11): mongodb-enterprise-shell-3.2.1-1.el7.x86_64.rpm | 7.0 MB 00:01:14
(7/11): net-snmp-5.7.2-24.el7.x86_64.rpm | 321 kB 00:00:00
(8/11): net-snmp-agent-libs-5.7.2-24.el7.x86_64.rpm | 702 kB 00:00:00
(9/11): net-snmp-libs-5.7.2-24.el7.x86_64.rpm | 747 kB 00:00:00
(10/11): mongodb-enterprise-server-3.2.1-1.el7.x86_64.rpm | 12 MB 00:02:19
(11/11): mongodb-enterprise-tools-3.2.1-1.el7.x86_64.rpm
-------------------------------
*********mongodb3.2
--------------------------------
首先先要看一下有没有mysql安装这,rpm -qa | grep mysql
yum remove mysql-libs*
yum install perl cyrus-sasl cyrus-sasl-plain cyrus-sasl-gssapi krb5-libs \
lm_sensors net-snmp openssl popt rpm-libs tcp_wrappers zlib
yum install cyrus-sasl cyrus-sasl-plain cyrus-sasl-gssapi krb5-libs \
net-snmp openssl
yum install cyrus-sasl cyrus-sasl-plain cyrus-sasl-gssapi krb5-libs \
lm_sensors-libs net-snmp-agent-libs net-snmp openssl rpm-libs \
tcp_wrappers-libs
mongd32.repo (这个会更好点儿) 企业版,收费的
[mongodb-enterprise]
name=MongoDB Enterprise Repository
baseurl=https://repo.mongodb.com/yum/redhat/$releasever/mongodb-enterprise/stable/$basearch/
gpgcheck=0
enabled=1
另一个这个会安装5个包 社区版
[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=0
enabled=1
((((如果要是删除mongodb sudo yum erase $(rpm -qa | grep mongodb-enterprise)
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongo
)))))))
*********重头戏,这里,需要php与mongod连接的时候,需要有驱动http://www.cnblogs.com/chengmo/archive/2010/06/28/1766959.html
cd /usr/local/php/
wget http://pear.php.net/go-pear.phar
bin/php go-pear.phar 按照导向选择安装位置,这里保持默认即可 ,这样之后就有了pecl命令了,在php的bin下面
bin/pecl install mongodb
vim etc/php.ini 写入extension=mongodb.so
要重启一下php-fpm 就可以了
这个是测试php与mongod是否连通的 (一个连通,一个插入数据)
<?php
$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
var_dump($manager);
?>
<?php
$bulk = new MongoDB\Driver\BulkWrite();
$bulk->insert([‘_id‘ => 1, ‘x‘ => 1]);
$bulk->insert([‘_id‘ => 2, ‘x‘ => 2]);
$bulk->update([‘x‘ => 2], [‘$set‘ => [‘x‘ => 1]], [‘multi‘ => false, ‘upsert‘ => false]);
$bulk->update([‘x‘ => 3], [‘$set‘ => [‘x‘ => 3]], [‘multi‘ => false, ‘upsert‘ => true]);
$bulk->update([‘_id‘ => 3], [‘$set‘ => [‘x‘ => 3]], [‘multi‘ => false, ‘upsert‘ => true]);
$bulk->insert([‘_id‘ => 4, ‘x‘ => 2]);
$bulk->delete([‘x‘ => 1], [‘limit‘ => 1]);
$manager = new MongoDB\Driver\Manager(‘mongodb://localhost:27017‘);
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 100);
$result = $manager->executeBulkWrite(‘db.collection‘, $bulk, $writeConcern);
printf("Inserted %d document(s)\n", $result->getInsertedCount());
printf("Matched %d document(s)\n", $result->getMatchedCount());
printf("Updated %d document(s)\n", $result->getModifiedCount());
printf("Upserted %d document(s)\n", $result->getUpsertedCount());
printf("Deleted %d document(s)\n", $result->getDeletedCount());
foreach ($result->getUpsertedIds() as $index => $id) {
printf(‘upsertedId[%d]: ‘, $index);
var_dump($id);
}
/* If the WriteConcern could not be fulfilled */
if ($writeConcernError = $result->getWriteConcernError()) {
printf("%s (%d): %s\n", $writeConcernError->getMessage(), $writeConcernError->getCode(), var_export($writeConcernError->getInfo(), true));
}
/* If a write could not happen at all */
foreach ($result->getWriteErrors() as $writeError) {
printf("Operation#%d: %s (%d)\n", $writeError->getIndex(), $writeError->getMessage(), $writeError->getCode());
}
?>
[[email protected] ~]# cat /lib/systemd/system/php-fpm.service
[Install]
WantedBy=multi-user.target
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
[Service]
Type=forking
PIDFile=/usr/local/php/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --fpm-config /usr/local/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
[[email protected] /]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[[email protected] /]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
vi /usr/lib/systemd/system/nginx.service
[Unit]
Desciption=nginx
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecReload=/usr/local/nginx/sbin/nginx -s reload
[Install]
WantedBy=multi-user.target
//开机启动
systemctl enable nginx
接下来是mongod的开机自启动,这个是安装了11个包的那个稳定版的
[[email protected] web]# cat /lib/systemd/system/mongod.service
# Automatically generated by systemd-sysv-generator
[Unit]
Documentation=man:systemd-sysv-generator(8)
SourcePath=/etc/rc.d/init.d/mongod
Description=SYSV: Mongo is a scalable, document-oriented database.
Before=runlevel3.target runlevel5.target shutdown.target
After=network-online.target network.service
Conflicts=shutdown.target
[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=no
PIDFile=/var/run/mongodb/mongod.pid
ExecStart=/etc/rc.d/init.d/mongod start
ExecStop=/etc/rc.d/init.d/mongod stop
ExecReload=/etc/rc.d/init.d/mongod reload
本文出自 “北极的linux” 博客,请务必保留此出处http://941012521.blog.51cto.com/9253690/1745157
以上是关于lnmp 用mongo的主要内容,如果未能解决你的问题,请参考以下文章