参与现在这个项目一年多了,也该写写总结了。这个项目通过nginx来做到负载分摊的,因此,今天先把nginx在Solaris上的安装和起停先总结下。
nginx是个很强大的负载http转发器。在Solaris上安装nginx其实是一件很简单的事,但是当初我刚接触Solaris时候,不是很熟悉Solaris下的程序安装,费了很大的事。
刚开始安装nginx是项目组的开发人员先做了尝试,他给了我nginx-0.7.65,然后下载libiconv,libintl,还有gcc,还有一本实战nginx的电子书,让我安装在测试机上(一台Solaris机器)。
除了nginx外,其它3个以来的程序都是Solaris的包,我先去看了下Solaris的pkg的管理,顺利的将这3个包安装上了,不过接下来运行./configure时老是报错找不到lib**.so,后面在/usr/local/lib中找到了这个文件,不过很郁闷,我们怎么运行./configure,它总是会出错。./configure运行出错后,当然不能进行编译了。
当时比较傻,从网上看到有人说在/usr/lib中建立了符号连接,链到/usr/local/lib中就能解决这个问题,就以为可能是nginx在确认配置时候是需要某些库文件的,而这些库文件必须在/usr/lib中。
事实上,nginx在./configure时候,确实是需要检查一些依赖的库文件的,而系统的库文件是存放在/usr/lib下的,系统安装好之后,再去安装Solaris的包文件,新加进来的库文件会存放到/usr/local/lib下,新加进来的可执行文件会放到/usr/local/bin目录下。
Solaris中有个环境变量LD_LIBRARY_PATH专门用来告诉操作系统,程序执行时所需要的库文件存放在什么位置。当时不知道这个,就只能在/usr/lib中创建符号连接,链到/usr/local/lib中的那个.so文件上了,傻傻的照着网上某个也不是很懂的人的操作,跟着傻逼了一回。
好了,反正不管怎么着,nginx的./configure是通过了,然后就是make,make install了。运行完成后,就在/usr/local/nginx目录下安装好了nginx。
最后简洁介绍下ngxin的安装步骤:
- 安装nginx依赖的包,首先pcre(这个是必须的,nginx的rewrite模块就是要靠这个才能跑起来),然后pcre包又依赖ncure,gcc包又依赖libiconv和libintl
- 设置好LD_LIBRARY_PATH变量,可以在运行nginx之前在启动脚本中添加export LD_LIBRARY_PATH=/usr/lib:/usr/local/lib 注意,不同路径之间是用冒号隔开的。当然,如果图省事,直接在用户的.profile文件中设置好也行。
- 解压nginx源文件,进入目录,运行./configure,注意,默认是没有将http_status_stub_module包含进去的。需要加个参数:./configure --with-http_stub_status_module。这个模块能够获取Nginx自上次启动以来的工作状态。引用下原英文说明:This module provides the ability to get some status from nginx.This module is not compiled by default and must be specified using the --with-http_stub_status_module argument to configure when compiling Nginx.
- 启动nginx,此时需要有超级用户权限,理由是nginx/conf下的几个文件,在普通用户执行nginx时候,调用会报错。
nginx的启动和停止,还有平滑启动,我在先前有发了一篇blog,专门贴了一个nginx的控制脚本,参照那个就行了。
后记:
nginx安装时,gcc安装不是必须的,因为系统中自带了gcc(系统安装时候,选择系统安装类型为oem就行了),在/usr/sfw/bin下。顺带提一下,sfw有点像是sunfreeware的简写。www.sunfreeware.com 上面有很多Solaris下会用到的包。但上面的nginx的包,安装好之后,发现它没有把http_status_stub_module模块包含进去,这样,后面如果想配置图形化监控nginx的运行状态,可能会遇到点麻烦。