阅读更多
关于OpenResty(http://openresty.org/cn/) OpenResty (也称为 ngx_openresty)是一个全功能的 Web 应用服务器,它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项。
OpenResty 通过汇聚各种设计精良的 Nginx 模块,
从而将 Nginx 有效的变成一个强大的 Web 应用服务器,
这样, Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种C以及Lua 模块,
快速构造出足以胜任 10K+ 并发连接响应的超高性能Web 应用系统
一. 安装openresty
mkdir -p /usr/local/src/nginx
cd /usr/local/src/nginx
#安装drizzle模块(访问mysql数据库模块,非必需,建议安装)
wget http://agentzh.org/misc/nginx/drizzle7-2011.07.21.tar.gz
tar zxvf drizzle7-2011.07.21.tar.gz
cd drizzle7-2011.07.21
./configure --without-server
make libdrizzle-1.0
make install-libdrizzle-1.0
cd ..
#下载openresty
wget http://openresty.org/download/ngx_openresty-1.4.2.7.tar.gz //也可以先下载到本地然后FTP传到服务器上
tar zxvf ngx_openresty-1.4.2.7.tar.gz
#下载nginx-http-concat(合并静态文件请求模块,非必需,建议安装)
wget https://github.com/alibaba/nginx-http-concat/archive/master.zip
unzip master
mv nginx-http-concat-master/ ngx_openresty-1.4.2.7/bundle/nginx-http-concat
#安装openresty
cd ngx_openresty-1.4.2.7
./configure --with-luajit --with-http_drizzle_module --with-http_iconv_module --with-ld-opt="-Wl,-rpath,/usr/local/lib" --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --add-module=./bundle/nginx-http-concat/
gmake
gmake install
ps: 执行解压缩后产生的一个名为configure的可执行脚本程序。它是用于检查系统是否有编译时所需的库,以及库的版本是否满足编译的需要等安装所需要的系统信息。为随后的编译工作做准备。命令为: #./configure
如果您想把软件安装到指定目录,应该用#./configure --prefix=/您自己指定的目录,比如我想把一个mlterm安装到/opt/mlterm目录中,应该如下输入#./configure --prefix=/opt/mlterm
执行configure后可能会有如下报错:
错误信息:
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre= option.
ERROR: failed to run command: sh ./configure --prefix=/usr/local/openresty/nginx \...
这时候如果执行make也会报错:No targets specified and no makefile found,说明必须configure成功才可以进行make,因为只有检查通过后,才能生成用于编译的MakeFile文件。
通过错误信息可以看出是由于没有安装PCRE库或找不到PCRE路径导致的,于是我们安装或通过
-with-pcre=
(如果已安装过的话)来找到PCRE,然后接下来我们configure时还会报一些类似的找不到依赖的错误,如 openSSL,Zlib。接下来我们将介绍如何安装这3个依赖。
二. 安装PCRE
1.下载PCRE包
首先去官网下载pcre的安装包
如果通过FTP的方式,下载地址为:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
如果通过http的方式,下载地址为:http://sourceforge.net/projects/pcre/files/pcre/
目前最新的版本为8.32,linux对应的安装包名称为:pcre-8.32.tar.gz。
2.把安装包上传到服务器,然后解压
- tar -zxvf pcre-8.32.tar.gz
- cd pcre-8.32
- ./configure
- make ( 如果报错no UTF-8 support in PCRE library 则表示在前面步骤中执行./configuration配置时没有加上对utf-8的支持,重新执行 ./configure --enable-utf8 然后再make
- make install
三. 安装openSSL
目前版本最新的SSL地址为http://www.openssl.org/source/openssl-1.0.0e.tar.gz
1、将下载的压缩包放在根目录,
2、在文件夹下解压缩,命令:tar -xzf openssl-openssl-1.0.0e.tar.gz,得到openssl-openssl-1.0.0e文件夹
3、进入解压的目录:cd openssl-1.0.0e
4、设定Openssl 安装,( --prefix )参数为欲安装之目录,也就是安装后的档案会出现在该目录下:
执行命令: ./config --prefix=/usr/local/openssl
5、执行命令./config -t
6.执行make,make install
四.安装Zlib
1) wget http://zlib.net/zlib-1.2.8.tar.gz
2) cd zlib-1.2.8
3) ./configure --prefix=/data/progam/zlib
4) make
5) make install
6) 再进行配置一下系统的文件,加载刚才编译安装的zlib生成的库文件
vi /etc/ld.so.conf.d/zlib.conf
加入如下内容后保存退出
/data/program/zlib/lib
==============================
也就是添加安装目录的文件路径,库文件。ldconfig 运行之后就会加载安装的库文件了。
至此,我们已经安装好了nginx所需的三个依赖包,现在就可以重新configure了
./configure --prefix=/usr/local/src --with-luajit --with-openssl=/usr/local/src/openssl-1.0.0e --with-zlib=/usr/local/src/zlib-1.2.8 --with-pcre=/usr/local/src/pcre-8.37 (这些依赖都是解压缩后的目录,不是安装目录)
然后make,make install
然后进入到openResty的安装目录(不是解压缩后的目录)
安装成功后进入nginx的安装路径,进入sbin,执行./nginx -c /usr/local/tools/nginx/conf/nginx.conf
来启动nginx,ps -ef|grep nginx 可以看到nginx是否启动成功。
然后在游览器中输入虚拟机的游览器IP地址,如果访问时如果超时的话,则可能是虚拟机开了防火墙,关闭:service iptables stop ,再次访问如果出现nginx的欢迎页面则表明nginx启动成功。
遇到的错误:
1) 如果发现shell链接不上虚拟机的话,那么在虚拟机上alt+F2,调出控制台,然后执行service sshd status 查看ssh状态,如果是关闭,则执行 service sshd start , 会看到错误信息:/usr/sbin/sshd:error while loading shared libraries:libz.so.1:failed to map segment from shared object:Permission denied [FAILED]
这就表示系统文件libz.so.1找不到了,原因是之前安装的zlib包也生成了一个libz.so.1(和系统库包同名但内容不一样),系统启动SSH时会默认去/lib和/lib64中寻找需要的系统库包,但是生成的那个libz.so.1把系统库里的lib.so.1指向到了zlib包中的lib.so.1,所以导致错误。
whereis sshd 先找到sshd在哪个位置
然后执行ldd /usr/sbin/sshd 列出sshd运行所需的共享库
可以看到如下打印:
libz.so.1 => /lib64/libz.so.1 (0x00007f85f4796000)
这个表示libz.so.1指向的是 /lib64/libz.so.1 目录,发生错误的时候我指向的是zlib/lib/libz.so.1,所以会报错误。
2)虚拟机ping主机ping不通,但主机可以ping通虚拟机,这时候要去查主机的防火墙,找到允许程序通过Windows防火墙通信,找到VMware的四个相关选项,然后打上勾。即可解决。