LNMP架构部署

首先是看的兄弟连的LAMP环境编译视频,在虚拟机上编译了Apache和PHP,学会了在linux下怎么去编译源码。不过兄弟连的视频中系统是CentOS5.5,源码也有十多个,一个一个手动编译起来确实麻烦。

后来在itercast网站按照苏老师的课程《LNMP架构部署》重新动手在CentOS6.4上安装了最新版本的Nginx和PHP。因为使用了yum -y groupinstall "Development Tools"命令,省去了编译一大推库文件的繁琐过程。苏老师的视频讲的还是很清楚的。

我的实验环境在实验室一台打印机服务器(XP)上的VirtualBox虚拟机,打印机服务器设置为每天自动开关机,为了不用每天去开虚拟机,我根据网帖设置了虚拟机开机启动,这样平时只用putty远程SSH连接上虚拟机就好了,虚拟机设置为桥接模式,系统里设置静态的内网IP。因为不能连接上外网,需要将下载好的源码和rpm包等文件传过去,这里用了SSH Secure File Transfer Client,真的很方便,像FTP一样,两端都不需要做任何的配置。

可能是因为我系统和源码包的版本都要高一些,所以遇到了****中没有发生的一些问题,记录下来:

1、PHP编译后后/usr/local/php目录下找不到etc和sbin目录。重新编译后如故,最后发现是编译参数掉了--enable-fpm,这里不得不吐槽下,PHP那个编译参数那么长,照着视频上敲太容易敲错了,最好多检查几遍,不然错误编译一次得浪费好长的时间。

2、因为系统每天重新启动,所以Nginx、Mysql和PHP都要设置为自启动。在/etc/rc.local中设置了,结果经过试验发现只有Mysql服务启动了,其他两个都启动不起来,想来可能是权限引起的问题。几经尝试都没有结果,最后只好写了个shell脚本放在root用户目录下,每天登陆上去手动运行脚本来开启服务。

3、安装好WordPress后到软矿上找了一个比较喜欢的科幻风格的主题,安装时提示“有没有上级目录的写权限?”和“WordPress 需要访问您网页服务器的权限。 如果您忘记了您的登录凭据(如用户名、密码),请联系您的网站托管……”解决方案是更改Nginx主目录的所有者为nobody(默认)。

最后一切正常了,能够在内网其他电脑上正常访问了,挺有成就感,如下图:

LNMP架构部署与Cacti监控安装手记


Cacti监控部署

Cacti监控部署依旧是参照苏老师的****《网站监控基础》这次遇到问题就比上面要多得多。

1、在修改crontab的时候出现警warning: strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. 后来Google发现是PHP设置的问题,在php.ini文件中搜索date.timezone,将分号去掉,=后面加上PRC,我想Shanghai、Chongqing应该都是可以的吧。

2、安装不了php的snmp支持。视频里是安装的php-snmp rpm包,但是实际安装后却在php -m(没有php命令,可以用绝对路径,在php的bin目录下)中看不到snmp。不过最后安装完cacti还是可以正常获取snmp数据,真奇怪。后来看苏老师的另外一个视频是针对编译版php加snmp支持的,需要重新编译php来获得额外的支持模块。

3、没有数据出来,查看Cacti的log发现错误:

POLLER: Poller[0] WARNING: Cron is out of sync with the Poller Interval!  The Poller Interval is '300' seconds, with a maximum of a '300' second Cron, but 359 seconds have passed since the last poll! 而且使用htop查看,CPU几乎一直处于100%的状态。

开始以为是虚拟机时间走的慢的缘故,使用clock --show命令后发现和宿主机的时间是一样的。后来发现用spine可以解决这个问题。于是安装了spine,然后在Cacti里设置了一下,刷新了,果然出数据了!

使用默认的几个监控项目,可以出图啦:

LNMP架构部署与Cacti监控安装手记


这次实验是在防火墙和SELINUX都关闭的情况下进行的,后面要学习使用这两个服务,提高系统的安全性。