草庐IT

LNMP环境添加第三方模块

z597011036 2023-03-28 原文
一.在LNMP环境下添加memcache模块

1.安装依赖库(libevent)

[root@node1 ~]# tar xvf libevent-2.0.21-stable.tar.gz

[root@node1 ~]# cd libevent-2.0.21-stable
[root@node1 libevent-2.0.21-stable]# ./configure  --prefix=/usr/local/libevent

[root@node1 libevent-2.0.21-stable]# make

[root@node1 libevent-2.0.21-stable]# make install

[root@node1 libevent-2.0.21-stable]# echo $?
0
[root@node1 libevent-2.0.21-stable]#

 

2.安装memcached服务端

[root@node1 libevent-2.0.21-stable]# cd ..
[root@node1 ~]# wget http://memcached.org/files/memcached-1.4.21.tar.gz

[root@localhost libevent-1.4.13-stable]# cd ..

[root@node1 ~]# tar xvf memcached-1.4.21.tar.gz

[root@node1 ~]# cd memcached-1.4.20

[root@node1 memcached-1.4.21]# ./configure  --prefix=/usr/local/memcached

--with-libevent=/usr/local/libevent/

[root@node1 memcached-1.4.21]# make && make install

[root@node1 memcached-1.4.21]# echo $?
0
[root@node1 memcached-1.4.21]#

 

3.安装memcache客户端

[root@node1 memcached-1.4.21]# cd ..
[root@node1 ~]# wget http://pecl.php.net/get/memcache-2.2.7.tgz

[root@node1 ~]# tar xvf memcache-2.2.7.tgz

[root@node1 ~]# cd memcache-2.2.7 
[root@node1 memcache-2.2.7]# /usr/local/php-5.4.28/bin/phpize
Configuring for:
PHP Api Version:         20100412
Zend Module Api No:      20100525
Zend Extension Api No:   220100525
[root@node1 memcache-2.2.7]# ./configure  --enable-memcache --with-php-config=/usr/local/php-5.4.28/bin/php-config  --with-zlib-dir

[root@node1 memcache-2.2.7]# make && make install

[root@node1 memcache-2.2.7]# vim /usr/local/php-5.4.28/lib/php.ini

[memcache]
extension_dir="/usr/local/php-5.4.28/lib/php/extensions/no-debug-non-zts-20100525/"
extension=memcache.so

[root@node1 memcache-2.2.7]#

 

4.启动memcached服务

[root@node1 memcache-2.2.7]# /usr/local/memcached/bin/memcached -d -m 10 -u root -l 192.168.1.105 -p 11211 -c 256 -P /tmp/memcached.pid
[root@node1 memcache-2.2.7]# netstat -antp | grep 11211
tcp        0      0 192.168.1.105:11211         0.0.0.0:*                   LISTEN      6943/memcached     
[root@node1 memcache-2.2.7]#

参数说明:
-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址202.207.177.177,
-p是设置Memcache监听的端口,我这里设置了11211,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid.

 

5.启动nginx和php-fpm打开php首页,查看是否加载memcache模块

[root@node1 memcache-2.2.7]# killall nginx
[root@node1 memcache-2.2.7]# killall php-fpm
[root@node1 memcache-2.2.7]# /usr/local/php-5.4.28/sbin/php-fpm
[root@node1 memcache-2.2.7]# /usr/local/nginx-1.6.2/sbin/nginx
[root@node1 memcache-2.2.7]# netstat -antup | grep -E '80|11211|9000'
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      6954/php-fpm       
tcp        0      0 192.168.1.105:11211         0.0.0.0:*                   LISTEN      6943/memcached     
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      6958/nginx                  
udp        0      0 192.168.1.105:11211         0.0.0.0:*                               6943/memcached       
[root@node1 memcache-2.2.7]#

 

6.测试面显示加载的模块

 

二.在LNMP环境下添加redis模块

1.下载安装phpredis模块

[root@node1 phpredis-develop]# ./configure --with-php-config=/usr/local/php-5.4.28/bin/php-config  --enable-redis

[root@node1 phpredis-develop]# make && make install

[root@node1 phpredis-develop]# echo $?
0
[root@node1 phpredis-develop]# vim /usr/local/php-5.4.28/lib/php.ini

[redis]
extension_dir="/usr/local/php-5.4.28/lib/php/extensions/no-debug-non-zts-20100525/"
extension=redis.so

[root@node1 phpredis-develop]# killall php-fpm
[root@node1 phpredis-develop]# killall nginx
[root@node1 phpredis-develop]# /usr/local/php-5.4.28/sbin/php-fpm
[root@node1 phpredis-develop]# /usr/local/nginx-1.6.2/sbin/nginx
[root@node1 phpredis-develop]#

 

2.检查模块是否已安装好

 

三.LNMP环境下安装mongodb模块

1.下载安装mongo模块

[root@node1 ~]# wget http://pecl.php.net/get/mongo-1.5.8.tgz

[root@node1 ~]# tar xvf mongo-1.5.8.tgz

[root@node1 ~]# cd mongo-1.5.8
[root@node1 mongo-1.5.8]# /usr/local/php-5.4.28/bin/phpize
Configuring for:
PHP Api Version:         20100412
Zend Module Api No:      20100525
Zend Extension Api No:   220100525
[root@node1 mongo-1.5.8]# ./configure  --with-php-config=/usr/local/php-5.4.28/bin/php-config 

--enable-mongo

[root@node1 mongo-1.5.8]# make && make install

[root@node1 mongo-1.5.8]# vim /usr/local/php-5.4.28/lib/php.ini

[mongo]
extension_dir="/usr/local/php-5.4.28/lib/php/extensions/no-debug-non-zts-20100525/"
extension=mongo.so

[root@node1 mongo-1.5.8]# killall php-fpm
[root@node1 mongo-1.5.8]# killall nginx
[root@node1 mongo-1.5.8]# /usr/local/php-5.4.28/sbin/php-fpm
[root@node1 mongo-1.5.8]# /usr/local/nginx-1.6.2/sbin/nginx
[root@node1 mongo-1.5.8]#

 

2.检查模块是否已安装好

 

四.在安装php时禁用了libiconv模块,此时需要添加此模块

1.下载和线上版本对应的php源代码,在源代码中找到iconv模块的路径进行编译

[root@node1 ~]# cd php-5.4.28/ext/iconv/
[root@node1 iconv]# /usr/local/php-5.4.28/bin/phpize
Configuring for:
PHP Api Version:         20100412
Zend Module Api No:      20100525
Zend Extension Api No:   220100525
[root@node1 iconv]# ./configure  --with-php-config=/usr/local/php-5.4.28/bin/php-config

[root@node1 iconv]# make && make install

[root@node1 iconv]# vim /usr/local/php-5.4.28/lib/php.ini

[iconv]
extension_dir="/usr/local/php-5.4.28/lib/php/extensions/no-debug-non-zts-20100525/"
extension=iconv.so

[root@node1 iconv]# killall php-fpm
[root@node1 iconv]# killall nginx
[root@node1 iconv]# /usr/local/php-5.4.28/sbin/php-fpm
[root@node1 iconv]# /usr/local/nginx-1.6.2/sbin/nginx
[root@node1 iconv]#

 

2.检查模块是否已安装好

 

五.对nginx服务添加模块

[root@node1 ~]# cd /usr/local/nginx-1.6.2/sbin/
[root@node1 sbin]# ./nginx  -V         --查看此时nginx安装的模块
nginx version: nginx/1.6.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)
configure arguments: --prefix=/usr/local/nginx-1.6.2 --user=nginx --group=nginx --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module

[root@node1 ~]# cd nginx-1.6.2

[root@node1 nginx-1.6.2]# ./configure --prefix=/usr/local/nginx-1.6.2/ --user=nginx --group=nginx --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_sub_module       --下载新的源代码包重新编译

[root@node1 nginx-1.6.2]# make 

[root@node1 nginx-1.6.2]# ll objs/        --编译和配置后本地目录会生成objs目录
total 3004
-rw-r--r--. 1 root root   17760 Dec 29 05:22 autoconf.err
-rw-r--r--. 1 root root   38159 Dec 29 05:22 Makefile
-rwxr-xr-x. 1 root root 2960495 Dec 29 05:23 nginx
-rw-r--r--. 1 root root    5253 Dec 29 05:23 nginx.8
-rw-r--r--. 1 root root    5572 Dec 29 05:22 ngx_auto_config.h
-rw-r--r--. 1 root root     657 Dec 29 05:22 ngx_auto_headers.h
-rw-r--r--. 1 root root    4010 Dec 29 05:22 ngx_modules.c
-rw-r--r--. 1 root root   21204 Dec 29 05:23 ngx_modules.o
drwxr-xr-x. 8 root root    4096 Dec 27 23:34 src
[root@node1 nginx-1.6.2]# mv /usr/local/nginx-1.6.2/sbin/nginx  /usr/local/nginx-1.6.2/sbin/nginx.old   --配置以前的服务脚本
[root@node1 nginx-1.6.2]# cp -a objs/nginx /usr/local/nginx-1.6.2/sbin/    --将新编译的脚本放到nginx服务的根目录
[root@node1 nginx-1.6.2]# /usr/local/nginx-1.6.2/sbin/nginx -V    --查看新编译后的配置
nginx version: nginx/1.6.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)
configure arguments: --prefix=/usr/local/nginx-1.6.2/ --user=nginx --group=nginx --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_sub_module
[root@node1 nginx-1.6.2]#

 

 

有关LNMP环境添加第三方模块的更多相关文章

  1. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  2. ruby-on-rails - Ruby net/ldap 模块中的内存泄漏 - 2

    作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代

  3. ruby - 我需要将 Bundler 本身添加到 Gemfile 中吗? - 2

    当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/

  4. ruby - 将 Bootstrap Less 添加到 Sinatra - 2

    我有一个ModularSinatra应用程序,我正在尝试将Bootstrap添加到应用程序中。get'/bootstrap/application.css'doless:"bootstrap/bootstrap"end我在views/bootstrap中有所有less文件,包括bootstrap.less。我收到这个错误:Less::ParseErrorat/bootstrap/application.css'reset.less'wasn'tfound.Bootstrap.less的第一行是://CSSReset@import"reset.less";我尝试了所有不同的路径格式,但它

  5. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  6. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  7. ruby - 当使用::指定模块时,为什么 Ruby 不在更高范围内查找类? - 2

    我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or

  8. ruby - 获取模块中定义的所有常量的值 - 2

    我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c

  9. ruby - 模块嵌套代码风格偏好 - 2

    我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的

  10. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

随机推荐